oracle inside(9)

作业是一个存贮程序,它被安排在特定的时间运行,或者在特定的事件发生后运行。
9.1 DBMS_JOB 包
DBMS_JOB 包是将作业提交到作业队列。作业队列是一个保存安排的作业的地方。通过作业队列,可以安排这
些作业执行的时间以及执行的频度,还可以查找当前的关于当前运行的作业、终止的队列、作业调度的信息或其他
作业的信息。
过 程 名 描述
BROKEN 禁止作业运行,如果代码被标记为损坏,Oracle 将不执行它
CHANGE 修改指定作业的详细资料,如作业描述、作业运行时间或作业执行的间隔
INTERVAL 修改指定作业执行的间隔
NEXT_DATE 修改指定作业下一次执行的时间
REMOVE 从队列中删除特定的作业
RUN 强制执行特定的作业
SUBMIT 将作业提交给作业队列
WHAT 修改特定作业的作业描述
9.2 使用后台进程
Oracle 不是为每个用户调度或运行作业而运行同样的多个程序,从而浪费大量的资源;而是提供了SNP(快照
刷新进程)后台进程,这些后台进程共享相同的函数和代码,这使它们能够监控可能的并发执行的 Oracle 进程。
SNP 的一个关键功能是:作业失败而不降低数据库的性能;而且,SNP 进程按用户指定的时间间隔监控作业,
PL/SQL 高级编程
第 35 页 共 35 页
启动所有需要执行的进程,然后等待下一个时间间隔。
Oracle 最多可提供 10 个SNP 进程,它们被标识为 SNP0 到 SNP9。一些参数在文件init.ora 中定义。
SNP 参数
参 数 取值范围 默认值 描 述
JOB_QUEUE_PROCESS 0 — 10 0 决定为每个实例启动的后台进程数
JOB_QUEUE_INTERVAL 1 — 3600 60 SNP搜索要执行的作业的时间间隔(以
秒为单位)
JOB_QUEUE_KEEP_CONNECTIONS TRUE/FALSE FALSE
如果为TRUE,则在作业完成之前所有的
数据库连接都保持打开;否则,根据需
要打开和关闭连接
注意:每一个作业使用一个进程,因此不能有跨越多个进程执行的作业。如果JOB_QUEUE_PROCESS 被
设置为0(默认值),则作业不能执行。一定要在init.ora中修改此参数。
9.3 执行作业
执行作业的方法有两种:
1) 通过将作业提交到作业队列中实现定时执行;
2) 立刻执行。
9.3.1 使用SUBMIT 将作业提交给作业队列
PROCEDURE SUBMIT(
job_name OUT BINARY_INTEGER,
job_to_submit IN VARCHAR2,
next_run IN DATE DEFAULT SYSDATE,
interval IN VARCAHR2 DEFAULT NULL,
job_parsing IN BOOLEAN DEFAULT FALSE,
instance IN BINARY_INTEGER DEFAULT ANY_INSTANCE,
force IN BOOLEAN DEFAULT FALSE);
原文地址:https://www.cnblogs.com/Mayvar/p/wanghonghua_201108021114.html