暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库中的Job(一)

站的稳的瘦子 2018-07-16
731

碰到朋友在使用oraclejob,我这边也就整理了一下相关的内容:

Oraclejob 就好像是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了。

由于其中的许多字段都是可以根据英文直接翻译,那就不做解释记录了。

其中的intervalwhat参数,是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的循环算法的时候,还涉及到很对的函数,这里不一一列举,

下面将常用的一些循环算法列出来:

描述

算法实现

每秒

Sysdate+1/(24*60*60)

每分

Sysdate+1/(24*60)

每小时

Sysdate+1/(24)

每天凌晨

Trunc(sysdate+1)

每天中午12

Trunc(sysdate+1)+12/(24)

每周日凌晨

NEXT_DAY(TRUNC(SYSDATE),'星期日')

NEXT_DAY(TRUNC(SYSDATE),'SUNDAY')

此处的使用涉及NLS_DATE_LANGUAGE的字符集设置(21必可以)

TRUNC(NEXT_DAY(SYSDATE,'星期日'))

TRUNC(NEXT_DAY(SYSDATE,'SUNDAY'))

每个月最后一天凌晨

TRUNC(LAST_DAY(SYSDATE))

每个月第一天凌晨

TRUNC(LAST_DAY(SYSDATE) +1)

TRUNC(LAST_DAY(SYSDATE))+1

每个季度第一天凌晨

TRUNC(ADD_MONTHS(SYSDATE,3),'q')

每个季度最后一天凌晨

TRUNC(ADD_MONTHS(SYSDATE,3),'q')-1

……

……


 


文章转载自站的稳的瘦子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论