PL/SQL–>定时调度job

好久没写技术文件笔记了,最近工作中恰好遇到的Oracle如何使用plsql创建定时器。刚好整理做下笔记!

我们使用的数据库大部分是oracle、mysql、db2、sql server等数据库,在使用oracle最匹配的工具plsql的时候,如果用plsql创建定时器呢?下面我简单介绍使用工具创建定时器的方法。

工具/原料



plsql工具,需要连接到某个数据库

方法/步骤



通过plsql查看tables、views等文件夹,找到定时器对应的DBMS_Jobs文件夹。

1



在文件夹或者在已有的定时器上右键 new... 创建一个新的job(定时器)



2



输入红色选中的必输参数。What里面是一些存储过程,可以是一个或者多个。多个之间用分好;隔开,可以数据一下注释说明,格式“/存过说明/。点击应用即可保存。点击View SQL可以查看job对应的sql脚本。

3



如果想查看一些脚本,处理通过打开文件夹的方式,也可以使用更方便的sql语句进行查看。

SELECT * FROM dba_jobs;

注意,如果next_date是4000-1-1表示这个脚本已经是停止状态。

4



如果想查询某个存储过程对应的哪个job可以通过dba_jobs表中what字段根据条件查询查看job.



dba_jobs中的job字段对应的值就和DBMS_Jobs中对应的数字是一致的,可以对信息进行修改更新。

9882215_5370792D9E9FEF4F1183B287EF11EF52



这里需要注意的是:



Job这里不用填
What: pw_sbtz_gisdata_procedure;  请注意后面的“;”,一定不能少  Next date:sysdate
Interval: TRUNC(next_day(sysdate,'星期一'))+1/24
后面的不用填写,只需要填写上面三个,填写完成后点击“Apply”就可以了
1、代表每个星期一凌晨一点   TRUNC(next_day(sysdate,'星期一'))+1/24



2、每天午夜12点            ''TRUNC(SYSDATE + 1)''



3、每天早上8点30分         ''TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)''



4、每星期二中午12点         ''NEXT_DAY(TRUNC(SYSDATE ), ''''TUESDAY'''' ) + 12/24''
5、每个月第一天的午夜12点    ''TRUNC(LAST_DAY(SYSDATE ) + 1)''
6、每个季度最后一天的晚上11点 ''TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ''Q'' ) -1/24''
7、每星期六和日早上6点10分    ''TRUNC(LEAST(NEXT_DAY(SYSDATE, ''''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)



8、每分钟执行
Interval => TRUNC(sysdate,'mi') + 1/ (24*60)   或
Interval => sysdate+1/1440

评论

此博客中的热门博文

Google:尽快修复《精灵宝可梦Go》权限访问问题

于谦真是一个窝囊废吗?-PingWest 品玩

他们黑了 Twitter CEO 的 Twitter 账号,只是为了证明自己