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
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