问题描述
10g的SCHEDULER的一个重要的功能是可以调用操作系统命令或SHELL脚本。而在10g以前,这个功能只能通过外部存储过程来实现。
专家解答
下面是一个简单的例子,首先编辑一个test.sh脚本:
#!/usr/bin/ksh echo abc >> /home/xxx/a.txt
注意,#!/usr/bin/ksh是必须的,否则JOB运行会出现ORA-27369错误。
给这个shell设置执行权限:
$ chmod 744 test.sh
下面就可以在数据库中建立PROGRAM:
SQL> BEGIN 2 DBMS_SCHEDULER.CREATE_JOB( 3 JOB_NAME => 'J_TEST', 4 JOB_TYPE => 'EXECUTABLE', 5 JOB_ACTION => '/home/xxx/test.sh', 6 ENABLED => TRUE, 7 AUTO_DROP => TRUE); 8 END; 9 / PL/SQL PROCEDURE successfully completed. SQL> SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'J_TEST'; no ROWS selected SQL> COL JOB_NAME FORMAT A30 SQL> SELECT TO_CHAR(LOG_DATE, 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'), 2 JOB_NAME, 3 STATUS 4 FROM DBA_SCHEDULER_JOB_RUN_DETAILS 5 WHERE JOB_NAME = 'J_TEST'; TO_CHAR(LOG_DATE,'YYYY-MM-DDHH24:MI: JOB_NAME STATUS ------------------------------------ ------------------------------ ---------------------- 2012-03-12 18:41:16.275361 +08:00 J_TEST SUCCEEDED
检查shell运行信息:
SQL> EXIT Disconnected FROM Oracle DATABASE 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production WITH the Partitioning, OLAP, DATA Mining AND REAL Application Testing options [xxx@hpserver2 ~]$ more a.txt abc [xxx@hpserver2 ~]$ ls -l a.txt -rw-r--r-- 1 xxx oinstall 4 Mar 12 18:41 a.txt
通过这个简单的方法,就可以实现操作系统命令的调用。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。