利用Oracle数据库的JobQueue实现定时操作

王朝oracle·作者佚名  2008-05-19
宽屏版  字体: |||超大  

1、确保Oracle的工作模式允许启动队列管理器(SNP进程)

SVRMGRL Alter System Enable Restricted Session;

或 SQL Alter System Disenable Restricted Session;

2、确保Oracle已配置任务队列管理器的启动参数

initSID.ora中:

job_queue_process=n(0);(0-36)个进程

job_queue_interval=N(60);(1-3600)秒唤醒

3、将任务加入数据库的任务队列中

DBMS_JOB.Submit (

job out binary_integer, (任务号)

what in varchar2, (执行任务的名称及入参)

next_date in date, (任务执行的时间)

interval in varchar2, (任务执行的间隔。null:执行一次;sysdate+m:周期性,每隔m天执行)

no_parse in boolean

)

同时

grant execute on dbms_job to ...;

4、将要执行的任务,为存储过程等PL/SQL程序段

SQL variable n number;

SQL begin

2 dbms_job.submit(n, 'my_job', sysdate, 'sysdate + 1/360');

3 commit;

4 end

5 /

SQL print :n;

5、查看Job

Table :user_jobs、dba_jobs

Column:job (任务号)

next_date (下次执行日期)

next_sec (下次执行时间)

failures (失败次数,失败16次则自动终止)

broken (终止标志,Y/N)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有