碰到朋友在使用oracle的job,我这边也就整理了一下相关的内容:
Oracle的job 就好像是Windows的定时任务一样。能够为你在指定的时间里执行相应的操作。
Job的创建语法如下,当然如果使用了DBMS,那么也可以通过DBMS进行可视化的创建操作。
语法:
declare variable job number; begin sys.dbms_job.submit( job => :job, --唯一编码,这个值用来唯一标识一个工作 what => 'prc_name;', --执行的存储过程的名字 next_date => to_date('22-11-201309:09:41', 'dd-mm-yyyy hh24:mi:ss'), --何时将运行这个工作。 interval =>'sysdate+1/86400'), --每天24*60*60秒运行一次,即一秒钟运行prc_name过程一次 no_parse=>'false'; --指示此工作在提交时或执行时是否应进行语法分析——true,默认值false。指示此PL/SQL代码在它第一次执行时应进行语法分析,而FALSE指示本PL/SQL代码应立即进行语法分析。 commit; end; |
相关的job信息查询:
select * from dba_jobs; select * from all_jobs; select * from user_jobs; select * from dba_jobs_running; |
想使用job,知道下面的参数配置就可以简单实现:
在Job的使用过程中,只要知道其中的几个主要参数的意思,那就可以正常使用Job了。
由于其中的许多字段都是可以根据英文直接翻译,那就不做解释记录了。
其中的interval和what参数,是job的最主要参数。
What参数表示的是存储过程,可以是存储过程的名字,也可以是存储过程的具体实现。 而interval,则需要具体的是说说: Interval表示的是一种循环计算方法。那么这种计算方法是什么样子呢? 举个简单的例子: 譬如说: 1.每秒执行一次指定的存储过程 Sysdate+1/(24*60*60) 2.每分钟执行一次指定的存储过程 Sysdate+1/(24*60) 3.每小时执行一次指定的存储过程 Sysdate+1/24 通过上面的3个例子,我们可以看出来 Sysdate表示当前时间,而后面的1表示的是一天的意思。 那如果说,我想每天的午夜12点执行呢? 是不是就是sysdate+1呢? 发现,时间不对,那这里就需要引用一个函数TRUNC();此函数的使用方法另行查阅。 Trunc(sysdate+1) 我们看到,测试的时间是2018/7/13.没有具体的时间了。那我们在测试一个每天的中午12点。 Trunc(sysdate+1)+1/2 这样一对比,那就OK了! 其实在设置interval的循环算法的时候,还涉及到很对的函数,这里不一一列举, 下面将常用的一些循环算法列出来:
|




