oracle定时器job用法小结
顾名思义,定时器就是定时来完成某些操作,oracle中的定时器job也是这种用法,在oracle中可以通过定义job来定期执行某个程序。oracle提供内置包DBMS_JOB来执行job的相关操作,比如定义、提交、更改、停止、移除等。 1、创建job 使用submit()过程,这个过程中有5个参数:job、what、next_date、interval、no_parse。 procedure submit( job out binary_integer,what in varchar2,next_date in date,interval in varchar2,no_parse in boolean:= FALSE ); job参数是由submit()过程返回的binary_integer,这个值用来唯一标识一个工作;what参数是将被执行的pl/sql代码块;next_date参数指何时将运行这个工作;interval参数指何时这个工作再次被执行,当interval设置为null时,该job执行结束以后,就被从队列中删除;no_parse参数指此工作在提交或执行时是否应进行语法分析,默认值为false,表示笨pl/sql代码应该立即进行语法分析。 下面是一个实例: DECLARE jobno NUMBER; BEGIN dbms_job.submit(job => jobno,what => 'OVER_PACK.ADD_DEPT(''EDUCATION'',2710);',next_date => trunc(SYSDATE + 1),INTERVAL => 'TRUNC(SYSDATE + 1)'); dbms_output.put_line('job_no = ' || jobno); COMMIT; END; 2、查看job 查看相关的job信息,可查询以下对象:dba_jobs、all_jobs、user_jobs、dba_jobs_running(正在运行的job信息)。 3、运行job 运行job通过dbms_job.run()来立即执行一个指定的工作,这个过程只接收一个参数。 BEGIN dbms_job.run(jobno); -- jobno就是上面定义过的jobno END; 4、更改job BEGIN DBMS_JOB.CHANGE(1,NULL,TRUNC(SYSDATE + 1) + 6 / 24,'SYSDATE+4/24'); END; 5、删除job BEGIN dbms_job.remove(jobno); END; 定义了job之后,最重要的就是不要忘了用dbms_job.run()来运行job,以前我做的时候,就老是忘了执行。下面是一些常用的interval参数设置的雷子: |