电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2154 人浏览分享

Oracle定时Job的创建方式和运行监控讲解

[复制链接]
2154 0
本帖最后由 zhaorong 于 2018-2-2 12:04 编辑

一、定时JOB的创建方式(按版本)

方式一:10G之前sys.dbms_job.submit()
方式二:10G之后sys.Dbms_Scheduler.create_job()

二、JOB的运行监控:

10G之前需要监控job运行的话需要自己创建job运行日志表,并在JOB执行之前后
对日志表进行操作,记录必要的信息,10G之后可以使用自带的job运行日志概要表与明细表。

--查看所创建的JOB信息

SELECT * FROM User_Scheduler_Jobs;

--查询JOB运行日志,不管成功失败都会记录,包括停止JOB,
不同权限查询可以不同,比如DBA,示例如下:

SELECT * FROM user_scheduler_job_log;--当前用户的
SELECT * FROM dba_scheduler_job_log;--dba角色


--查看JOB运行详细日志

SELECT * FROM user_scheduler_job_run_details;


三、JOB的删除

Begin
DBMS_JOB.remove(‘job号’);
End;


如果不知道job号的情况下,查询表user_jobs或者dba_jobs 的what字段值,
可以根据当初创建job时指向的执行包体过程名 称内容找到对应的job号。

完整示例如下:

  1. BEGIN
  2.   sys.Dbms_Scheduler.create_job
  3.     (
  4.     JOB_NAME          => 'UPDATE_DEMOT', --JOB的名称,自定义
  5.    JOB_TYPE          => 'STORED_PROCEDURE', --可以PL/SQL块、
  6. 包体带过程、操作系统命令、shell脚本文件,见下方说明
  7.    JOB_ACTION        => 'ADDDEMOT', --JOB运行指定的内容,根据JOB_TYPE的不同而不同
  8.     JOB_CLASS         => 'DEFAULT_JOB_CLASS',  --任务关联的class  
  9.    START_DATE        => SYSDATE,  --JOB开始生效时间
  10.    END_DATE          => NULL,     --指定JOB失效时间,不设置则按照REPEAT_INTERVAL
  11. 参数设置的周期重复执行,直到达到设置的MAX_RUNS或MAX_FAILURES值。
  12.     REPEAT_INTERVAL   => 'FREQ=SECONDLY;INTERVAL=5',  --JOB执行周期,FREQ
  13. 关键字用来指定间隔的时间周期,可选参数有:YEARLY, MONTHLY, WEEKLY, DAILY,
  14. HOURLY, MINUTELY, and SECONDLY,分别表示年、月、周、日、时、分、秒等单位。
  15.     ENABLED          => TRUE,  --JOB是否激活,自启动,默认为false,表示必须手动才会执行
  16.     AUTO_DROP         => FALSE, --JOB达到某些条件将自动删除(任务已过期;
  17. 任务最大运行次数已达MAX_RUNS的设置值;任务未指定REPEAT_INTERVAL参数,仅运行一次)
  18.     COMMENTS          => '新JOB创建测试'
  19.     );
  20. END;
复制代码



PS:

JOB_TYPE有如下属性选择: 对应的JOB_ACTION也不一样
PLSQL_BLOCK :表示任务执行的是一个PL/SQL匿名块。

STORED_PROCEDURE :表示任务执行的是Oracle过程(含PL/SQL PRO
CEDURE和Java PROCEDURE),本例中正是指定这一参数值。

EXECUTABLE :表示任务执行的是一个外部程序,比如说操作系统命令。
CHAIN :表示任务执行的是一个CHAIN。



您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.