Oracle任务调度之DMBS_JOB

原文地址: https://www.jianshu.com/p/28f86d6a4bdc

DBMS_JOB是对任务队列进行调度和管理的包

  • DBMS_JOB已经废除,由DBMS_SCHEDULER取代,推荐使用DBMS_SCHEDULER
  • 你应该要撤销用户对DBMS_JOB的包执行权限来禁止DBMS_JOB的使用

1. 安全模型

使用DBMS_JOB不需要特别的系统权限,只有jobs的拥有者才能对jobs进行修改或删除. 只有procedures的拥有者或直接被授权对该procedures可执行的用户才能执行该procedures,而通过roles来间接获取执行执行权限的用户无法执行该procedures

DBMS_JOB支持jobs的多实例执行,默认是每个实例都能执行jobs,但是只有一个实例能够执行某个具体的job,你也可以通过将某个job绑定到特定的instance来强制执行instance binding.

2. DBMS_JOB的使用

2.1 查看任务

任务相关的表子在user_jobs中,因此可以通过sql查询语句区去查看相关信息,如下:

select job,what,next_date,next_sec,failure,broken from user_jobs;

显示结果类似如下:

JOB NEXT_DATE NEXT_SEC FAILURES B
1 11-JAN-18 19:05:35 0 N

说明当前任务队列中有一个任务,下一次执行的时间为11号的19:05:35.

2.2 提交job

DBMS_JOB.SUBMIT ( 
   job       OUT BINARY_INTEGER,
   what      IN  VARCHAR2,
   next_date IN  DATE DEFAULT sysdate,
   interval  IN  VARCHAR2 DEFAULT 'null',
   no_parse  IN  BOOLEAN DEFAULT FALSE,
   instance  IN  BINARY_INTEGER DEFAULT any_instance,
   force     IN  BOOLEAN DEFAULT FALSE);
  • 在语句后面加COMMIT会将job提交到job queue;
  • what和interval的类型是字符串,需要用引号.
  • what中的语句最后要加分号(;).

instance和force是用来控制instance和job的绑定关系,instance的默认值为0,表示任何的instance都能执行该job,force默认为false,表示设置的instance必须要处于running,否则会报错.

一般使用只管job,what,next_date和interval就够了.

示例:

VARIABLE jobno number;
BEGIN
   DBMS_JOB.SUBMIT(:jobno, 
      'dbms_ddl.analyze_object(''TABLE'',
      ''DQUON'', ''ACCOUNTS'', 
      ''ESTIMATE'', NULL, 50);' 
      SYSDATE, 'SYSDATE + 1');
   COMMIT;
END;
/

interval详解

interval必须是未来的时间,下面列举一些合法的时间:

Interval Description
'sysdate + 7' Run once a week.
'next_day(sysdate,''TUESDAY'')' Run once every Tuesday.
'null' Run only once.

如果interval为null,则job在执行完成后会被自动从队列中删除.

2.3 删除job

DBMS_JOB.REMOVE (job IN  BINARY_INTEGER );

从job队列中删除指定任务,已经在运行中的任务不会被停止

需要COMMIT

2.4 修改job

以下修改都需要COMMIT才能生效.

修改多个属性:

DBMS_JOB.CHANGE ( 
   job       IN  BINARY_INTEGER,
   what      IN  VARCHAR2,
   next_date IN  DATE,
   interval  IN  VARCHAR2,
   instance  IN  BINARY_INTEGER DEFAULT NULL,
   force     IN  BOOLEAN DEFAULT FALSE);

修改inverval(运行周期):

DBMS_JOB.INTERVAL ( 
   job       IN  BINARY_INTEGER,
   interval  IN  VARCHAR2);

修改next_date(下次运行时间):

DBMS_JOB.NEXT_DATE ( 
   job       IN  BINARY_INTEGER,
   next_date IN  DATE);

修改what(运行内容):

DBMS_JOB.WHAT ( 
   job       IN  BINARY_INTEGER,
   what      IN  VARCHAR2);

2.5 启动job

DBMS_JOB.RUN ( 
   job       IN  BINARY_INTEGER,
   force     IN  BOOLEAN DEFAULT FALSE);

该命令立刻执行任务并重新计算next_date.

也会将未加入job queue中的job加入其中.

2.6 停止job

DBMS_JOB.BROKEN ( 
   job       IN  BINARY_INTEGER,
   broken    IN  BOOLEAN,
   next_date IN  DATE DEFAULT SYSDATE);
  • 如果对正在执行中的job执行BROKEN会失效,因为job执行结束后会重置job状态成正常. 所以选择未在运行中的job来执行BROKEN
  • 需要COMMIT

Reference

  1. DBMS_JOB
  2. USER_JOBS
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342