oracle定时器job的使用
对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作。但是,Oracle定时器Job时间的处理上,千变万化,今天我把比较常用写法汇总如下:
在总结之前,先把Job的参数一一说明一下
1.创建job 创建完job后名字显示的是jobno 可用于启动和删除job
declare
job_OpAutoDta pls_integer;
begin
sys.dbms_job.submit(job =>job_OpAutoDta, --job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作
what => 'wsbs_job_produce_test;', --what参数是将被执行的PL/SQL代码块,这里过程要带分号 ;
next_date => to_date('04-08-2018 00:01:00', 'dd-mm-yyyy hh24:mi:ss'),--next_date参数指识何时将运行这个工作。写Job的时候可以不指定该值,不指定值的时候创建job会立即执行
interval => 'sysdate+1'); --interval参数何时这个工作将被重执行,其中Interval这个值是决定Job何时,被重新执行的关键
commit;
end;
2.运行job
begin
dbms_job.run(job_OpAutoDta);--job
end;
3.查询job
--查询所有的job 查询到的job的id 可用来删除job
select * from dba_jobs
--查询正在运行的job
select * from dba_jobs_running
4.删除job
begin
dbms_job.remove(jobno); --jobno即查询出来的job id
commit;
end;
5.常用的日期Interval
Internal参数是一个表示Oracle合法日期表达式的字符串。这个日期字符串的值在每次任务被执行时算出,算出的日期表达式有两种可能,要么是未来的一个时间要么就是null。这里要强调一点:很多开发者都没有意识到next_date是在一个任务开始时算出的,而不是在任务成功完成时算出的。
当任务成功完成时,系统通过更新任务队列目录表将前面算出的next_date值置为下一次任务要运行的时间。当由interval表达式算出next_date是null时,任务自动从任务队列中移出,不会再继续执行。因此,如果传递一个null值给interval参数,则该任务仅仅执行一次。
sysdate+1/24 --这个是间隔一个小时
sysdate+1 --这个是间隔一天
sysdate+7 --这个是间隔一个星期
'TRUNC(SYSDATE + 1)' 每天午夜12点
'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)' 每星期二中午12点
'TRUNC(LAST_DAY(SYSDATE ) + 1)' 每个月第一天的午夜12点
'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24' 每个季度最后一天的晚上11点
'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'
6每半年定时执行 如:每年7月1日和1月1日凌晨2点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24
6.
- 8、相关的几个JOB操作
- 删除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);7
1,查询正在运行的Job,通过查询有两个,和进程占用较多的是两个ORACLE进程符合。
SQL> SELECT SID,JOB FROM DBA_JOBS_RUNNING;
SID JOB
---------- ----------
12 116
16 117
2,查询正在运行的job的信息
SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12';
SID SERIAL#
---------- ----------
12 4
SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16';
SID SERIAL#
---------- ----------
16 1
3,利用查询出来的job信息将job结束掉
SQL> ALTER SYSTEM KILL SESSION '12,4';
System altered.
SQL> ALTER SYSTEM KILL SESSION '16,1';
System altered.
4,如果不希望运行上述job的话,可以将job设置为broken.
EXEC DBMS_JOB.BROKEN(116,TRUE);
EXEC DBMS_JOB.BROKEN(117,TRUE);
oracle定时器job的使用的更多相关文章
- oracle定时器在项目中的应用
业务需求: 现在业务人员提出了一个需求: 在项目中的工作流,都要有一个流程编号,此编号有一定的规则: 前四五位是流程的字母缩写,中间是8位的日期,后面五位是流水码,要求流水码每天从00001开始.即: ...
- oracle 定时器调用存储过程
转载请说明出处:http://t22011787.iteye.com/blog/1112745 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; se ...
- oracle定时器,调用存储过程,定时从n张表中取值新增到本地一张表中
--创建新增本地数据库的存储过程create or replaceprocedure pro_electric_record as begin insert into electric_met ...
- Oracle定时器调用存储过程
1. 创建表 create table job_table(run_time date); 2. 创建存储过程 create or replace procedure job_proc is begi ...
- Oracle 定时器
我的代码 declare job number; begin dbms_job.submit( JOB=>job, what=>'addBytime;',// 这里要写分号,不然容易出错. ...
- oracle定时器
/* 每10秒钟执行一次 插入一条时间 */ -- 创建table create table tab_time( current_time timestamp ); -- 创建存储过程 create ...
- Oracle定时器执行多线程
what里面加下面代码强制执行多线程 begin execute immediate 'alter session force parallel dml parallel 16'; pkg_s ...
- oracle定时器执行一遍就不执行或本就不执行
转:http://blog.csdn.net/qq_23311211/article/details/76283689 以sqlplus/ assysdba进入sql命令模式,使用sql:select ...
- oracle中job定时器任务
对于DBA来说,经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作.但是,Oracle定时器Job时间的处理上,千变万化,今天我把比较常用 ...
随机推荐
- 第十五篇:关于TCP通信程序中数据的传递格式
前言 在之前的回射程序中,实现了字符串的传递与回射.幸运的是,字符串的传递不用担心不同计算机类型的大小端匹配问题,然而,如果传递二进制数据,这就是一个要好好考虑的问题.在客户端和服务器使用不同的字节序 ...
- 深刻理解 React (一) ——JSX和虚拟DOM
版权声明:本文由左明原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/155 来源:腾云阁 https://www.qclou ...
- URLSearchParams 接口定义处理 URL 参数串
基本使用方法如下 /* * URLSearchParams属性 * @语法:new URLSearchParams(parameter); */ (function(){ var str = &quo ...
- 【BZOJ2164】采矿 树链剖分+线段树维护DP
[BZOJ2164]采矿 Description 浩浩荡荡的cg大军发现了一座矿产资源极其丰富的城市,他们打算在这座城市实施新的采矿战略.这个城市可以看成一棵有n个节点的有根树,我们把每个节点用1到n ...
- ios获取设备手持方向——电子罗盘
转:http://book.51cto.com/art/201411/457105.htm 2014-11-15 19:07 张亚飞/崔巍 中国铁道出版社 字号:T | T 综合评级: 想读() 在 ...
- 微信小程序 --- 动画
动画的基本使用: 旋转动画 缩放动画 偏移动画 倾斜动画 矩阵动画 动画API:wx.createAnimation(object) 示例:创建一个点击的动画 <view class=" ...
- zeptojs使用及介绍,手机端为什么一定要用zeptojs?
zepto是和jQuery和类似的框架,由于jQuery内置了很多解决浏览器兼容性的代码,导致jQuery过于臃肿,对于移动端来说,不需要太过于考虑浏览器的兼容,所以就诞生zeptojs. 总的来说: ...
- 【MySQL】为什么不要问我DB极限QPS/TPS
为什么不要问我DB极限QPS/TPS 背景 相信很多开发都会有这个疑问,DB到底可以支撑多大的业务量,如何去评估?对于这个很专业的问题,DBA也没有办法直接告诉你,更多的都是靠经验提供一个看似靠谱的结 ...
- Jenkins构建时提示maven版本问题
在使用Jenkins进行项目构建的时候出现下面问题 [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were enc ...
- hello gradle
首先下载和安装gradle可以参考官网下载地址,建议下载带有源码和文档的,以便后期查阅. 下载完以后打开终端输入gradle -v有如下信息输出,表示安装成功: bogon:gradle scott$ ...