操作系统 windows xp, oracle 10.2.0.1
参考文档:
http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10802/d_sched.htm#1010185
http://space.itpub.net/32496/viewspace-117513
http://haochunpeng.itpub.net/post/385/43335
+-------------------------------+
| PL/SQL Proc Test 1 |
+-------------------------------+
SQL> --创建Procedure 过程已创建。 --确认该用户已经有CREATE JOB权限。 --创建Program: 理解为定义要做什么 PL/SQL 过程已成功完成。 --创建schedule: 理解为定义什么时候做; 此时未定义Start_date PL/SQL 过程已成功完成。 --创建job,调用之前创建的program和schedule PL/SQL 过程已成功完成。 --此时这个job已经开始运行了! ID NAME SQL> SELECT job_name,program_name,schedule_name,start_date,repeat_interval, JOB_NAME PROGRAM_NAME SCHEDULE_NAME START_DATE SQL> begin PL/SQL 过程已成功完成。 SQL> 未选定行 |
+-------------------------------+
| PL/SQL Proc Test 2 |
+-------------------------------+
begin BEGIN begin begin --user_scheduler_jobs显示JOBINSERTTIME 尚未运行,run_count为0,但实际test表已有数据进入,这条数据其实是run_job运行时插入的。 JOB_NAME PROGRAM_NAME SCHEDULE_NAME START_DATE ID NAME --14:30以后再查看,scheduler已经从14:30开始连续执行 TO_CH SQL> select * from test; ID NAME SQL> SELECT job_name,program_name,schedule_name,start_date,repeat_interval, JOB_NAME PROGRAM_NAME SCHEDULE_NAME START_DATE
begin --grant manage scheduler to scott; --想了个办法,修改了attribute的max_runs参数,把这个job停了下来 SQL> SELECT job_name,program_name,schedule_name,start_date,repeat_interval, JOB_NAME PROGRAM_NAME SCHEDULE_NAME START_DATE begin SQL> SELECT job_name,program_name,schedule_name,start_date,repeat_interval, 未选定行 --此时job应该已经结束,再drop_job报错 begin |
+-----------------------------+
| Shell Script. Test |
+-----------------------------+
总结:
(1)Windows平台,在OracleJobSchedulerORA10G服务未启动前,同样的脚本sys用户可以执行,而scott用户无法执行
(2)在OracleJobSchedulerORA10G服务启动后,scott也可以执行bat脚本. OracleJobSchedulerSID Service是用于支持external job的
(3)scott用户要有CREATE EXTERNAL JOB的权限才能够创建type为EXECUTABLE的program
(4)oracle是以os的nobody身份运行job的.如果program的脚本,nobody没有权限执行的话.那么job会运行失败的.
BEGIN begin begin begin
未选定行 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/55472/viewspace-266514/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/55472/viewspace-266514/