`
zhanglei_2008
  • 浏览: 26425 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

定时调用存储过程

阅读更多
1.确保Oracle的工作模式允许启动任务队列管理器 
Oracle定时执行“Job Queue”的后台程序是SNP进程,而要启动SNP进程,
首先要确保整个系统的模式是可以启动SNP进程的,这需要以DBA的身份去执行如下命令: 
svrmgrl> alter system enable restricted session; 
或sql> alter system disenable restricted session; 
利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件。
2.将任务加入到数据库的任务队列中 
调用Oracle的dbms_job包中的存储过程,将任务加入到任务队列中: 
dbms_job.submit( job out binary_integer, 
what       in   archar2, 
next_date     in   date, 
interval     in   varchar2, 
no_parse     in   boolean) 
其中: 
●job:输出变量,是此任务在任务队列中的编号; 
●what:执行的任务的名称及其输入参数; 
●next_date:任务执行的时间; 
●interval:任务执行的时间间隔。

3.将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段 
例如,我们已经建立了一个存储过程,其名称为test,在sql/plus中以管理员身份登录,
执行如下命令:(时间间隔参数“1”表示一天执行一次
VARIABLE jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno,'test;',SYSDATE,'SYSDATE+30/(60*24*60)');
commit;
END;

4。想删除该任务,只需运行dbms_job.remove(n)即可,其中n为任务号
BEGIN
dbms_job.remove(:jobno);
commit;
END;

5、查看队列
select * from user_jobs
select * from dba_jobs

Table :user_jobs、dba_jobs
Column:job (任务号)
next_date (下次执行日期)
next_sec (下次执行时间)
failures (失败次数,失败16次则自动终止)
broken (终止标志,Y/N)
6、终止后重启用
exec dbms_job.broken(1,false)

9559980407359221816

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics