ORACLEDBMSjob包的使用方法.docx

ORACLEDBMSjob包的使用方法.docx

ID:50669538

大小:48.90 KB

页数:9页

时间:2020-03-07

ORACLEDBMSjob包的使用方法.docx_第1页
ORACLEDBMSjob包的使用方法.docx_第2页
ORACLEDBMSjob包的使用方法.docx_第3页
ORACLEDBMSjob包的使用方法.docx_第4页
ORACLEDBMSjob包的使用方法.docx_第5页
资源描述:

《ORACLEDBMSjob包的使用方法.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、ORACLEDBMS_Job包的使用方法一、概述1.确保Oracle的工作模式允许启动任务队列管理器Oracle定时执行“JobQueue”的后台程序是SNP进程,而要启动SNP进程,首先要确保整个系统的模式是可以启动SNP进程的,这需要以DBA的身份去执行如下命令:svrmgrl>altersystemenablerestrictedsession;或sql>altersystemdisenablerestrictedsession;利用如上命令更改系统的会话方式为disenablerestricted,为SNP的

2、启动创造条件。2.确保Oracle的系统已经配置了任务队列管理器的启动参数SNP的启动参数位于Oracle的初始化文件中,该文件放在$ORACLE_HOME/dbs路径下,如果Oracle的SID是myora8的话,则初始化文件就是initmyora8.ora,在文件中对SNP启动参数的描述部分如下:job_queue_process=njob_queue_interval=N第一行定义SNP进程的启动个数为n。系统缺省值为0,正常定义范围为0~36,根据任务的多少,可以配置不同的数值。第二行定义系统每隔N秒唤醒该进

3、程一次。系统缺省值为60秒,正常范围为1~3600秒。事实上,该进程执行完当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒。如果该文件中没有上面两行,请按照如上配置添加。配置完成后,需要重新启动数据库,使其生效。注意:如果任务要求执行的间隔很短的话,N的配置也要相应地小一点。3.将任务加入到数据库的任务队列中调用Oracle的dbms_job包中的存储过程,将任务加入到任务队列中:dbms_job.submit(joboutbinary_integer,what       in   archar

4、2,next_date    in   date,interval     in   varchar2,no_parse     in   boolean)其中:●job:输出变量,是此任务在任务队列中的编号;●what:执行的任务的名称及其输入参数;●next_date:任务执行的时间;●interval:任务执行的时间间隔。下面详细讨论一下dbms_job.submit中的参数interval。严格地讲,interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行

5、结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。将任务加入到任务队列之前,要确定执行任务的数据库用户,若用户是scott,则需要确保该用户拥有执行包dbms_job的权限;若没有,需要以DBA的身份将权利授予scott用户:svrmgrl>grantexecuteondbms_jobtoscott;4.将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段例如,我们已经建立了一个存储过程,其名称为my_job,在sql/plus中以scott用户身份登录,执行

6、如下命令:sql>variablennumber;sql>begindbms_job.submit(:n‘my_job;’,sysdate,‘sysdate+1/360’);commit;end;/系统提示执行成功。使用job=>:n也可Sql>print:n;系统打印此任务的编号,例如结果为300。如上,我们创建了一个每隔4分钟执行一次的任务号为300的任务。可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况:sql>selectjob,next_date,next_sec,failures,

7、brokenfromuser_jobs;执行结果如下:jobnext_datenext_secfailuresbroken3002000/10/1011:45:150N这表示任务号为300的任务,下一次将在2000/10/1011:45:15执行,此任务的执行失败记录为0次。注意:当执行job出现错误时,Oracle将其记录在日志里,失败次数每次自动加1。当执行失败次数达到16时,Oracle就将该job标志为broken。此后,Oracle不再继续执行它,直到用户调用过程dbms_job.broken,重新设置为n

8、otbroken,或强制调用dbms_job.run来重新执行它。除了以上我们讨论的submit存储过程之外,Oracle还提供了其他许多存储过程来操作任务。例如:dbms_job.change、dbms_job.what、dbms_job.interval可以用来修改提交的任务。要想删除该任务,只需运行dbms_job.remove(n)即可

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。