数据库job 如何设定执行时间

数据库job 如何设定执行时间,第1张

1、把init.ora中如下两个参数打开

JOB_QUEUE_INTERVAL=60

JOB_QUEUE_PROCESSES=4

job_queue_keep_connections=true

然后重启一个库,如果原来已经打开了则不用这步了

2、示例,以下由sqlplus 来执行,具体参照一下相关的文档

VARIABLE jobno number

BEGIN

DBMS_JOB.SUBMIT(:jobno,

’p_test’

SYSDATE,’SYSDATE + 1/72’)

commit

END

DBMS_JOB.SUBMIT(:jobno,//job号

’your_procedure’,//要执行的过程

trunc(sysdate)+1/24,//下次执行时间

’trunc(sysdate)+1/24+1’//每次间隔时间

)

删除job:dbms_job.remove(jobno)

修改job:dbms_job.what(jobno,what)

修改下次执行时间:dbms_job.next_date(job,next_date)

修改间隔时间:dbms_job.interval(job,interval)

停止job:dbms.broken(job,broken,nextdate)

启动job:dbms_job.run(jobno)

例子:

VARIABLE jobno number

begin

DBMS_JOB.SUBMIT(:jobno,

’Procdemo’,

SYSDATE, ’SYSDATE + 1/720’)

commit

end

——日期计算 算第n周的第一天及最后一天是几号 by keynes

================================================

—— ww的算法为每年 月 日为第一周开始 date+ 为每一周结尾

—— 例如 为第一周的第一天 而第一周的最后一天为 + =

—— 公式 每周第一天 date + 周 *

—— 每周最后一天 date + 周 *

你会发现怎么编排格式都会跑掉

=========================================================================

——日期计算 算第n周的第一天及最后一天是几号 by keynes

=========================================================================

—— ww的算法为每年 月 日为第一周开始 date+ 为每一周结尾

—— 例如 为第一周的第一天 而第一周的最后一天为 + =

—— 公式 每周第一天 date + 周 *

—— 每周最后一天 date + 周 *

—— 如果以ww格式为主 第 周的起迄如下

asdb WF>select to_date( yyyymmdd ) + * to_date( yyyymmdd ) + * from dual

TO_DATE( TO_DATE(

JAN JAN

asdb WF>select to_date( yyyymmdd ) + * to_date( yyyymmdd ) + * from dual

TO_DATE( TO_DATE(

APR APR

Elapsed

—— 验证如下

asdb WF>select to_char(to_date( yyyymmdd ) ww ) as weekn to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as weekn from dual

WEEK WEEK WEEK WEEK

Elapsed

asdb WF>

—— iw的算法为星期一至星期日算一周 且每年的第一个星期一为第一周

—— 例如 为星期六 所以用iw的算法是前年的 周 而 之后才是第一周的开始

—— 公式 每周第一天 next_day(date) + 周 *

—— 每周最后一天 next_day(date) + 周 *

—— 如果以iw格式为主 第 周的起迄如下

asdb WF>select next_day(to_date( yyyymmdd ) MONDAY )+ * as first_day next_day(to_date( yyyymmdd ) MONDAY )+ * as last_day from dual

FIRST_DAY LAST_DAY

JAN JAN

Elapsed

asdb WF>

asdb WF>select next_day(to_date( yyyymmdd ) MONDAY )+ * as first_day next_day(to_date( yyyymmdd ) MONDAY )+ * as last_day from dual

FIRST_DAY LAST_DAY

APR MAY

Elapsed

asdb WF>

—— 验证如下

asdb WF>select to_char(to_date( yyyymmdd ) iw ) as weekn to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as weekn from dual

WEEK WEEK WEEK WEEK

Elapsed

其它

——== 查今天是 本月 的第几周

SELECT TO_CHAR(SYSDATE WW ) TO_CHAR(TRUNC(SYSDATE MM ) WW ) + AS weekOfMon from dual

SELECT TO_CHAR(SYSDATE W ) AS weekOfMon from dual

——== 查今天是 今年 的第几周

select to_char(sysdate ww ) from dual

select to_char(sysdate iw ) from dual

附注

上文所提之iw及ww格式在doc内解释如下

IW = Week of year ( or ) based on the ISO standard

WW = Week of year ( ) where week starts on the first day of the year and continues to the seventh day of the year

lishixinzhi/Article/program/Oracle/201311/18798


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9919106.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存