oracle数据库定时任务

不久前,做的项目中需要用到定时任务(有两种实现方式:应用程序,数据库。),决定采用数据库的定时任务。关于数据库定时任务的资料,网上有很多文章,但当自己在设计时,并没有仅通过一篇文章就解决问题。于是决定综合网上资料和自己的项目,写一篇oracle数据库自带的job来实现定时任务。

一、定时任务的创建、启动、修改、停止、删除

1、首先需创建一存储过程,然后让定时任务按照设定的时间和时间间隔去执行存储过程。

variable jobno number;——系统会自动分配一个任务号jobno(在此段代码执行完成后,即可显示出jobno,如22)
dbms_job.submit(:jobno, ——自动分配的jobno号 ,前边必须有:号 
         your_procedure;',——需执行的存储过程, ';'不能省略 varchar类型
        next_date, ——下次执行时间  date类型
        'interval' ,——每次间隔时间,interval以天为单位 varchar类型(interval的参数问题,可参见第二部分)

no_parse——可不配置 布尔类型

); 

no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE 指示此PL/SQL代码在它第一次执行时应进行语法分析, 而FALSE指示本PL/SQL代码应立即进行语法分析。

上述执行完成后,会显示

PL/SQL procedure successfully completed
jobno
---------
22

如:

variable jobno numberb;

begin

dbms_job.submit(:jobno,'proce_receivedOrder;',sysdate,'TRUNC(sysdate) + 1 +14 / (24)'); (每天14点执行)

commit;
end;

2、启动定时任务

执行如下代码:

begin 
dbms_job.run(
22);(此处22为,第一步执行后,显示出来的jobno)
commit;
end;

3、查看定时任务

select job, next_date, next_sec, failures, broken from user_jobs;

如果信息正确,即创建成功。

4、修改定时任务:

1) 修改要执行的操作: dbms_job.what(jobno, what);  
2) 修改下次执行时间:dbms_job.next_date(jobno, next_date);  
3) 修改间隔时间:dbms_job.interval(jobno, interval);

如:

begin

dbms_job.next_date (22, TRUNC(sysdate) + 1 +14 / (24) );

commit;

end;

5、停止和删除定时任务

1)停止: dbms_job.broken(jobno, broken, nextdate); –broken为boolean值 

如:

begin

dbms_job.broken(22,true,sysdate);
commit;

end;

2)删除:dbms_job.remove(jobno); 

如:

begin

dbms_job.remove(22);
commit;

end;

二、interval参数

1:每分钟执行 TRUNC(sysdate,'mi') + 1/(24*60)

2:每天定时执行

例如:每天的凌晨1点1分1秒执行TRUNC(sysdate) + 1 +1/(24)+1/24/60+1/24/60/60
3:每周定时执行
例如:每周一凌晨1点执行

TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天

TRUNC(next_day(sysdate,'星期一'))+1/24
4:每月定时执行
例如:每月1日凌晨1点执行
TRUNC(LAST_DAY(SYSDATE))+1+1/24
5:每季度定时执行
例如每季度的第一天凌晨1点执行
TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
6:每半年定时执行
例如:每年7月1日和1月1日凌晨1点
ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
7:每年定时执行
例如:每年1月1日凌晨1点执行
ADD_MONTHS(trunc(sysdate,'yyyy'), 12)+1/24

8.每个小时的第15分钟运行

例如:8:15,9:15,10:15…:

trunc(sysdate,'hh')+(60+15)/(24*60)。

注:TRUNC(for dates) 函数一些说明

TRUNC函数按一定格式截取日期的值。 
语法如下: 
TRUNC(date[,fmt]) 其中fmt参数可无,默认为截取天
1)按年截取显示当年第一天
select  TRUNC(sysdate,'yyyy')  from dual 
2)按月截尾 显示当年当月第一天
select  TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'mm')  from dual 
3)按日截尾 显示当年当月当日
select  TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'dd')  from dual 
4)按时截尾 显示当年当月当日当时0分0秒
select  TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'hh')  from dual 
5)按分截尾 显示当年当月当日当时当分0秒
select  TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-dd hh:mi'),'mi')  from dual 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用IDEA插件自动生成代码时,可以通过以下步骤来配置生成Oracle数据库的代码: 1. 首先,确保已经在Maven项目的pom.xml文件中添加了Oracle数据库的JDBC驱动依赖。 2. 确认你已经安装了IDEA MyBatis Plugins插件。该插件可以帮助你自动生成实体类和mapper.xml文件。 3. 打开IDEA并进入项目根目录,找到src/main/resources目录。在该目录下,创建一个mybatis-config.xml文件。 4. 在mybatis-config.xml文件中,配置你的数据库连接信息和其他相关设置。例如,指定Oracle数据库的驱动类、URL、用户名和密码。 5. 在你的Maven项目中,找到pom.xml文件,添加必要的依赖,例如MyBatis和MyBatis Generator插件。 6. 在pom.xml文件中,配置MyBatis Generator插件的插件设置,以及生成代码的目标位置和其他配置。 7. 运行Maven命令来执行MyBatis Generator插件,它将会根据配置生成代码文件[2]。 8. 一旦生成代码完成,你将会在指定的目标位置看到生成的实体类和mapper.xml文件。 通过以上步骤,你就可以配置IDEA插件来自动生成Oracle数据库的代码了。记得根据你的具体情况调整配置文件和插件设置,并确保数据库连接信息的正确性。 另外,如果你想定制JavaTypeResolver来使得数据库的smallint类型在生成的实体类中为Integer类型,可以参考MyBatis Generator的官方文档来了解如何自定义JavaTypeResolver来满足你的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值