博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle中job_type,【学习笔记】Oracle DBMS_SCHEDULER详细介绍与使用案例
阅读量:6361 次
发布时间:2019-06-23

本文共 3509 字,大约阅读时间需要 11 分钟。

天萃荷净

分享一篇关于Oracle DBMS_SCHEDULER详细介绍与使用案例

1.通过DBMS_SCHEDULER.CREATE_JOB直接创建job

SQL> create table t_oracleplus (x_type varchar2(10),x_date date);

表已创建。

SQL> begin

2 DBMS_SCHEDULER.create_job (

3 job_name => 'f_create_job',

4 job_type => 'PLSQL_BLOCK',

5 job_action => '

6 begin

7 insert into t_oracleplus values(''job'',sysdate);

8 commit;

9 end;

10 ',

11 enabled => true,

12 start_date => SYSTIMESTAMP,

13 repeat_interval => 'SYSTIMESTAMP + 1/1440',

14 comments => 'oracleplus_create_job');

15 END;

16 /

SQL> select x_type,to_char(x_date,'yyyy-mm-dd hh24:mi:ss') from t_oracleplus;

X_TYPE TO_CHAR(X_DATE,'YYY

---------- -------------------

job 2012-06-19 19:52:11

job 2012-06-19 19:53:11

job 2012-06-19 19:54:11

这里的使用方法和dbms_jobs有几分类此,不过这个提供了加灵活的使用方法,比如可以执行匿名块,执行操作系统命令等

2.CREATE_JOB结合CREATE_PROGRAM

SQL> create or replace procedure p_oracleplus(in_type in varchar2)

2 is

3 begin

4 insert into t_oracleplus values(in_type,sysdate);

5 commit;

6 end;

7 /

过程已创建。

SQL> begin

2 DBMS_SCHEDULER.CREATE_PROGRAM(

3 program_name => 'x_program',

4 program_action => 'p_oracleplus',

5 program_type => 'STORED_PROCEDURE',

6 number_of_arguments => 1,

7 comments => 'oracleplus_PROGRAM',

8 enabled => false);

9 end;

10 /

PL/SQL 过程已成功完成。

SQL> begin

2 DBMS_SCHEDULER.define_program_argument(

3 program_name => 'x_program',

4 argument_position => 1,

5 argument_type => 'VARCHAR2',

6 default_value => 'program');

7 END;

8 /

PL/SQL 过程已成功完成。

SQL> exec DBMS_SCHEDULER.enable('x_program');

PL/SQL 过程已成功完成。

SQL> begin

2 DBMS_SCHEDULER.create_job(

3 job_name => 's_oracleplus_job',

4 program_name => 'x_program',

5 comments => 's_oracleplus_job',

6 repeat_interval => 'SYSTIMESTAMP + 1/1440',

7 auto_drop => false,

8 enabled => true);

9 end;

10 /

PL/SQL 过程已成功完成。

SQL> select x_type,to_char(x_date,'yyyy-mm-dd hh24:mi:ss') from t_oracleplus;

X_TYPE TO_CHAR(X_DATE,'YYY

---------- -------------------

job 2012-06-19 20:27:11

program 2012-06-19 20:27:09

program 2012-06-19 20:28:09

job 2012-06-19 20:28:11

这里可以看出来CREATE_PROGRAM是把CREATE_JOB中的部分参数给独立出来,使得更加灵活的控制,比如这里的使用从参数

3.CREATE_JOB结合CREATE_PROGRAM和CREATE_SCHEDULE

SQL> exec DBMS_SCHEDULER.drop_job('s_oracleplus_job');

PL/SQL 过程已成功完成。

SQL> truncate table t_oracleplus;

表被截断。

SQL> begin

2 DBMS_SCHEDULER.create_schedule(

3 repeat_interval => 'FREQ=MINUTELY;INTERVAL=1',

4 start_date => sysdate,

5 comments => 'oracleplus_sch',

6 schedule_name => 'X_SCH');

7 end;

8 /

PL/SQL 过程已成功完成。

SQL> begin

2 DBMS_SCHEDULER.create_job(

3 job_name => 't_oracleplus_job',

4 program_name => 'x_program',

5 comments => 't_oracleplus_job',

6 schedule_name => 'X_SCH',

7 auto_drop => false,

8 enabled => true);

9 end;

10 /

PL/SQL 过程已成功完成。

SQL> select x_type,to_char(x_date,'yyyy-mm-dd hh24:mi:ss') from t_oracleplus;

X_TYPE TO_CHAR(X_DATE,'YYY

---------- -------------------

job 2012-06-19 20:39:11

job 2012-06-19 20:37:11

job 2012-06-19 20:38:11

program 2012-06-19 20:39:01

program 2012-06-19 20:40:01

CREATE_SCHEDULE是把执行计划部分从CREATE_JOB独立处理,使得控制力度更大,更加灵活

补充说明:

1.还可以通过创建JOB_CLASS更加灵活的控制资源的使用情况,必须通过修改JOB_CLASS中的resource_consumer_group实现资源控制,service对应到数据库的service可以实现rac中在哪个节点执行等等

2.使用DBMS_SCHEDULER.set_attribute来修改相关属相如:

EXEC DBMS_SCHEDULER.set_attribute('GATHER_STATS_JOB','JOB_CLASS', 'AUTO_TASKS_JOB_CLASS2');

exec dbms_scheduler.set_attribute('WEEKNIGHT_WINDOW','REPEAT_INTERVAL','freq=daily;

byday=MON,TUE,WED,THU,FRI;byhour=2;byminute=0;bysecond=0');

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【学习笔记】Oracle DBMS_SCHEDULER详细介绍与使用案例

转载地址:http://fnima.baihongyu.com/

你可能感兴趣的文章
ubuntu下查看文件md5
查看>>
[ThinkPHP] 输出、模型的使用
查看>>
Python 字典中一键对应多个值
查看>>
罗巴切夫斯基
查看>>
m2014-architecture-webserver->百万记录级mysql数据库及Discuz!论坛优化
查看>>
Java解析器
查看>>
Shape 属性解释
查看>>
Centos6.4 本地yum源配置
查看>>
Spark Standalone模式HA环境搭建
查看>>
加密与认证
查看>>
在Unity中高效工作(下)
查看>>
HLS协议实现
查看>>
转 Android Activity之间动画完整版详解
查看>>
Hadoop2.0构成之HDFS2.0
查看>>
检测php网站是否已经被攻破的方法
查看>>
loadrunner 发送gzip压缩json格式(转)
查看>>
yourphp点击刷新验证码
查看>>
【Java】String,StringBuffer与StringBuilder的区别??
查看>>
RSA体系 c++/java相互进行加签验签--转
查看>>
Struts2自己定义拦截器实例—登陆权限验证
查看>>