dbms_scheduler job 的简单管理
来源:互联网 发布:有为有不为,知足知不足 编辑:程序博客网 时间:2024/04/27 13:16
还是上一篇的语句,小改下:
而这时job是不会执行的,需要用enable启用才可以:
而关闭的命令就是disable
我们还可以修改job的属性
运行期也可以改写
需要注意,stop_job命令是停止正在运行的job,如果执行时该job处理间隔期,则stop_job会报错
可以看到,job仍在定时运行,但stop_job会报错,因为每次执行时间很短。 如果想停止定时,要用disable
如果job未启用或未到执行时间,也可以用run_job直接运行一次:
BEGIN dbms_scheduler.drop_job(job_name => 'scheduler_job_test');END;/TRUNCATE TABLE t_job_test;/TRUNCATE TABLE t_job_log;/BEGIN dbms_scheduler.purge_log(job_name => 'scheduler_job_test');END;/CREATE OR REPLACE PROCEDURE p_job_test AS v_code NUMBER; v_err VARCHAR2(500);BEGIN INSERT INTO t_job_test VALUES (SYSDATE, 'dbms_job'); COMMIT;EXCEPTION WHEN OTHERS THEN v_code := SQLCODE; v_err := substrb(SQLERRM, 1, 500); INSERT INTO t_job_log VALUES ('p_scheduler_job_test', SYSDATE, v_code, v_err); NULL;END;/BEGIN dbms_scheduler.create_job(job_name => 'scheduler_job_test', job_type => 'STORED_PROCEDURE', job_action => 'p_job_test', start_date => SYSDATE, repeat_interval => 'FREQ=SECONDLY; INTERVAL=5'/*, enabled => TRUE*/);END;/
我注释了参数 /*, enabled => TRUE*/
这时可以看到
SQL> SELECT state FROM User_Scheduler_Jobs WHERE job_name = 'SCHEDULER_JOB_TEST';STATE---------------DISABLED1 row selected
而这时job是不会执行的,需要用enable启用才可以:
SQL> BEGIN 2 dbms_scheduler.enable('SCHEDULER_JOB_TEST'); 3 END; 4 /PL/SQL procedure successfully completedSQL> select * from t_job_test where rownum <=5;CREATED DES-------------------- --------------------------------------------------2014-08-15 14:27:14 dbms_job1 row selectedSQL> select * from t_job_test where rownum <=5;CREATED DES-------------------- --------------------------------------------------2014-08-15 14:27:18 dbms_job2014-08-15 14:27:14 dbms_job2 rows selected
而关闭的命令就是disable
SQL> BEGIN 2 DBMS_SCHEDULER.DISABLE('SCHEDULER_JOB_TEST'); 3 END; 4 /PL/SQL procedure successfully completedSQL> select count(*) from t_job_test; COUNT(*)---------- 111 row selectedSQL> / COUNT(*)---------- 111 row selectedSQL> / COUNT(*)---------- 111 row selectedSQL> / COUNT(*)---------- 111 row selectedSQL>
我们还可以修改job的属性
TRUNCATE TABLE t_job_test;/TRUNCATE TABLE t_job_log;/exec dbms_scheduler.set_attribute('SCHEDULER_JOB_TEST','repeat_interval','FREQ=MINUTELY; INTERVAL=1; BYSECOND=0,10,20,30,40,50');BEGIN dbms_scheduler.enable('SCHEDULER_JOB_TEST');END;/执行方式有变动:
SQL> select * from t_job_test where rownum <=5;CREATED DES-------------------- --------------------------------------------------2014-08-15 14:31:50 dbms_job2014-08-15 14:31:40 dbms_job2014-08-15 14:32:00 dbms_job3 rows selected
运行期也可以改写
SQL> TRUNCATE TABLE t_job_test;Table truncatedSQL> /Table truncatedSQL> TRUNCATE TABLE t_job_log;Table truncatedSQL> /Table truncatedSQL> exec dbms_scheduler.set_attribute('SCHEDULER_JOB_TEST','repeat_interval','FREQ=MINUTELY; INTERVAL=1; BYSECOND=0,30');PL/SQL procedure successfully completedSQL> select * from t_job_test where rownum <=5;CREATED DES-------------------- --------------------------------------------------2014-08-15 14:33:00 dbms_job2014-08-15 14:33:30 dbms_job2 rows selectedSQL>
需要注意,stop_job命令是停止正在运行的job,如果执行时该job处理间隔期,则stop_job会报错
SQL> TRUNCATE TABLE t_job_test;Table truncatedSQL> /Table truncatedSQL> TRUNCATE TABLE t_job_log;Table truncatedSQL> /Table truncatedSQL> exec dbms_scheduler.stop_job('SCHEDULER_JOB_TEST');begin dbms_scheduler.stop_job('SCHEDULER_JOB_TEST'); end;ORA-27366: 作业 "TEST.SCHEDULER_JOB_TEST" 不在运行ORA-06512: 在 "SYS.DBMS_ISCHED", line 210ORA-06512: 在 "SYS.DBMS_SCHEDULER", line 557ORA-06512: 在 line 1SQL> select * from t_job_test where rownum <=5;CREATED DES-------------------- --------------------------------------------------2014-08-15 14:37:30 dbms_job1 row selected
可以看到,job仍在定时运行,但stop_job会报错,因为每次执行时间很短。 如果想停止定时,要用disable
TRUNCATE TABLE t_job_test;/TRUNCATE TABLE t_job_log;/BEGIN DBMS_SCHEDULER.DISABLE('SCHEDULER_JOB_TEST');END;/
如果job未启用或未到执行时间,也可以用run_job直接运行一次:
SQL> exec dbms_scheduler.run_job('SCHEDULER_JOB_TEST');PL/SQL procedure successfully completedSQL> select * from t_job_test where rownum <=5;CREATED DES-------------------- --------------------------------------------------2014-08-15 14:41:06 dbms_job1 row selectedSQL> exec dbms_scheduler.run_job('SCHEDULER_JOB_TEST');PL/SQL procedure successfully completedSQL> select * from t_job_test where rownum <=5;CREATED DES-------------------- --------------------------------------------------2014-08-15 14:41:06 dbms_job2014-08-15 14:41:22 dbms_job2 rows selectedSQL>
0 0
- dbms_scheduler job 的简单管理
- oracle10g dbms_scheduler.create_job 创建job简单实例
- oracle job,通过DBMS_SCHEDULER.CREATE_JOB来创建,管理也通过DBMS_SCHEDULER这个包来管理
- 简单的 DBMS_SCHEDULER使用,定时器
- DBMS_SCHEDULER 带参数JOB
- dbms_scheduler job raise_events dequeue
- 用dbms_scheduler创建job
- dbms_scheduler job 之外部命令
- 使用DBMS_SCHEDULER创建job参考
- 关于DBMS_SCHEDULER job日志级别LOGGING_LEVEL
- 关于DBMS_SCHEDULER job日志级别LOGGING_LEVEL
- dbms_scheduler包中job(作业)学习
- job control的管理
- oracle的job管理
- oracle job的管理
- DBMS_SCHEDULER包管理计划任务
- DBMS_SCHEDULER包的使用方法
- DBMS_SCHEDULER 的使用
- 非常老的话题 SQLSERVER连接池
- 带历史信息的菜单 清除INI文件内容
- 转:上传文件过大的问题FileUploadBase$SizeLimitExceededException
- Android4.0后EditText样式变成2.3四周带框类型
- POJ 1703 Find them, Catch them 并查集 + 权值
- dbms_scheduler job 的简单管理
- 字符串交换函数
- Java8新特性探究—语法篇
- 拓扑排序模板
- POJ-1466-Girls and Boys(二分图最大独立集)
- 复制转移sharepoint 2010 designer做的list workflow的方法
- gerrit push失败 先解决问题才是王道
- Hive实战之日志分析
- 服务端控件 onclientclick 页面刷新问题