每天1点执行的oracle JOB样例

DECLARE

X NUMBER;

BEGIN

SYS.DBMS_JOB.SUBMIT

( job => X,

what => 'ETL_RUN_D_Date;',

next_date => to_date('2009-08-26 01:00:00','yyyy-mm-dd hh24:mi:ss'),

interval => 'trunc(sysdate)+1+1/24',

no_parse => FALSE

);

SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));

COMMIT;

END;

/

以上是明确指定每天的1点执行此job,如果指定是每天中午12点执行interval需要指定为'trunc(sysdate)+1+12/24',如果仅仅指定interval为一天,这样当你手工用dbms_job.run(job)去运行一次时,job每天的执行时间是会改变的,如果你想job每天在固定时间执行,可以参考上面的例子.[@more@]

初始化相关参数job_queue_processes

alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000 ;job_queue_interval = 10 //调度作业刷新频率秒为单位

job_queue_process 表示oracle能够并发的job的数量,可以通过语句

show parameter job_queue_process;

来查看oracle中job_queue_process的值。当job_queue_process值为0时表示全部停止oracle的job,可以通过语句

ALTER SYSTEM SET job_queue_processes = 10;

来调整启动oracle的job。

相关视图:

dba_jobs

all_jobs

user_jobs

dba_jobs_running 包含正在运行job相关信息

-------------------------

提交job语法:

begin

sys.dbms_job.submit(job => :job,

what => 'P_CLEAR_PACKBAL;',

next_date => to_date('04-08-2008 05:44:09', 'dd-mm-yyyy hh24:mi:ss'),

interval => 'sysdate+ 1/360');

commit;

end;

/

-------------------------

创建JOB

variable jobno number;

begin

dbms_job.submit(:jobno, 'P_CRED_PLAN;',SYSDATE,'SYSDATE+1/2880',TRUE);

commit;

运行JOB

SQL> begin

dbms_job.run(:job1);

end;

/

删除JOB

SQL> begin

dbms_job.remove(:job1);

end;

/

DBA_JOBS

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

字段(列) 类型 描述

JOB NUMBER 任务的唯一标示号

LOG_USER VARCHAR2(30) 提交任务的用户

PRIV_USER VARCHAR2(30) 赋予任务权限的用户

SCHEMA_USER VARCHAR2(30) 对任务作语法分析的用户模式

LAST_DATE DATE 最后一次成功运行任务的时间

LAST_SEC VARCHAR2(8) 如HH24:MM:SS格式的last_date日期的小时,分钟和秒

THIS_DATE DATE 正在运行任务的开始时间,如果没有运行任务则为null

THIS_SEC VARCHAR2(8) 如HH24:MM:SS格式的this_date日期的小时,分钟和秒

NEXT_DATE DATE 下一次定时运行任务的时间

NEXT_SEC VARCHAR2(8) 如HH24:MM:SS格式的next_date日期的小时,分钟和秒

TOTAL_TIME NUMBER 该任务运行所需要的总时间,单位为秒

BROKEN VARCHAR2(1) 标志参数,Y标示任务中断,以后不会运行

INTERVAL VARCHAR2(200) 用于计算下一运行时间的表达式

FAILURES NUMBER 任务运行连续没有成功的次数

WHAT VARCHAR2(2000) 执行任务的PL/SQL块

CURRENT_SESSION_LABEL RAW MLSLABEL 该任务的信任Oracle会话符

CLEARANCE_HI RAW MLSLABEL 该任务可信任的Oracle最大间隙

CLEARANCE_LO RAW MLSLABEL 该任务可信任的Oracle最小间隙

NLS_ENV VARCHAR2(2000) 任务运行的NLS会话设置

MISC_ENV RAW(32) 任务运行的其他一些会话参数

--------------------------

描述 INTERVAL参数值

每天午夜12点 'TRUNC(SYSDATE + 1)'

每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'

每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'

每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'

每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'

每星期六和日早上6点10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

--------------------------

1:每分钟执行

Interval => TRUNC(sysdate,'mi') + 1/ (24*60)

Interval => sysdate+1/1440

2:每天定时执行

例如:每天的凌晨1点执行

Interval => TRUNC(sysdate) + 1 +1/ (24)

3:每周定时执行

例如:每周一凌晨1点执行

Interval => TRUNC(next_day(sysdate,'星期一'))+1/24

4:每月定时执行

例如:每月1日凌晨1点执行

Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

5:每季度定时执行

例如每季度的第一天凌晨1点执行

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

6:每半年定时执行

例如:每年7月1日和1月1日凌晨1点

Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24

7:每年定时执行

例如:每年1月1日凌晨1点执行

Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24

JOB不运行的检查步骤:

ORACLE有一种定时调度机制,用dbms_job包来管理。

设置的JOB就是不运行,搞得的郁闷,

最好执行了这个才搞定exec dbms_ijob.set_enabled(true);

下面提供一个checklist用于检查job异常的原因:

1) Instance in RESTRICTED SESSIONS mode?

Check if the instance is in restricted sessions mode:

select instance_name,logins from v$instance;

If logins=RESTRICTED, then:

alter system disable restricted session;

^–Checked!

2) JOB_QUEUE_PROCESSES=0

Make sure that job_queue_processes is > 0

show parameter job_queue_processes

^–Checked!

3) _SYSTEM_TRIG_ENABLED=FALSE

Check if _system_enabled_trigger=false

col parameter format a25

col value format a15

select a.ksppinm parameter,b.ksppstvl value from x$ksppi a,x$ksppcv b

where a.indx=b.indx and ksppinm=’_system_trig_enabled’;

If _system_trig_enabled=false, then

alter system set“_system_trig_enabled”=TRUE scope=both;

^–Checked!

4) Is the job BROKEN?

select job,broken from dba_jobs where job=;

If broken, then check the alert log and trace files to diagnose the issue.

^–Checked! The job is not broken.

5) Is the job COMMITted?

Make sure a commit is issued after submitting the job:

BEGIN

SYS.DBMS_JOB.SUBMIT

(

job => X

,what =>‘dbms_utility.analyze_schema

(”SCOTT”,”COMPUTE”,NULL,NULL,NULL);’

,next_date => to_date(’08/06/2005 09:35:00′,’dd/mm/yyyy hh24:mi:ss’)

,no_parse => FALSE

);

COMMIT;

END;

/

If the job executes fine if forced (i.e., exec dbms_jobs.run();), then likely a commit

is missing.

^–Checked! The job is committed after submission.

6) UPTIME > 497 days

Check if the server (machine) has been up for more than 497 days:

For SUN, use‘uptime’OS command.

If uptime>497 and the jobs do not execute automatically, then you are hitting unpublished bug 3427424

(Jobs may stop running after 497 days uptime) which is fixed in 9206 and A102

^–Checked! The server in this case has been up 126 days only

7) DBA_JOBS_RUNNING

Check dba_jobs_running to see if the job is still running:

select * from dba_jobs_running;

^–Checked! The job is not running.

LAST_DATE and NEXT_DATE

Check if the last_date and next_date for the job are proper:

select Job,Next_date,Last_date from dba_jobs where job=;

^–NEXT_DATE is porper, however LAST_DATE is null since the job never executes automatically.

9) NEXT_DATE and INTERVAL

Check if the Next_date is changing properly as per the interval set in dba_jobs:

select Job,Interval,Next_date,Last_date from dba_jobs where job=;

^–This is not possible since the job never gets executed automatically.

10) Toggle value for JOB_QUEUE_PROCESSES

Stop and restart CJQ process(es)

alter system set job_queue_processes=0 ;

alter system set job_queue_processes=4 ;

Ref: Bug 2649244 (fixed by: 9015, 9203, 10201)

^–Done but did not help

11) DBMS_IJOB(Non-documented):

Last ditch effort.

Either restart the database or try the following:

exec dbms_ijob.set_enabled(true);

Ref: Bug 3505718 (Closed, Not a Bug)

Done but did not help

These are the most common causes for this behavior.

Solution

The solution ended up to be the server (machine) uptime.

Even though it was up for only 126 days, after the server was rebooted all jobs were able to execute automatically.

To implement the solution, please execute the following steps:

1. Shutdown all applications, including databases.

2. Shutdown the server (machine)

3. Restart all applications, including databases.

4. Check that jobs are executing automatically.

from metalink docs:313102.1

oracle查看job运行,oracle job使用详解及job不运行的检查方法相关推荐

  1. oracle查看视图定义语句_oracle视图详解

    Oracle 视图详解 一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的.视图只有逻辑定义.每次使用的时候,只是重新执行 ...

  2. Oracle 11g R2+RAC+ASM+redhat安装详解1

    Oracle RAC是Oracle Real Application Cluster的简写,官方中文文档一般翻译为"真正应用集群",它一般有两台或者两台以上同构计算机及共享存储设备 ...

  3. oracle itl解析,oracle数据块dump文件中ITL详解

    oracle数据块dump文件中ITL详解 dump出Oracle block后,可以看到事物槽,包含有事物槽号(ITL),XID,UBA,FLAG,LCK,SCN. 本文主要讨论FLAG标记的规则, ...

  4. oracle rac 环境配置文件,学习笔记:Oracle RAC spfile参数文件配置案例详解

    天萃荷净 rac中的spfile探讨,记录一下Oracle RAC搭建完成后关于spfile参数文件的配置案例,与更改RAC环境中参数文件的方法 今天朋友的的rac,因为被同事做数据库升级,分别在两个 ...

  5. oracle 误删除表数据,Oracle误删除表数据后的数据恢复详解

    Oracle误删除表数据后的恢复详解 测试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_rete ...

  6. oracle中imp命令详解,ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对照...

    ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间 ...

  7. Oracle创建表语句(Create table)语法详解及示例

    Oracle创建表语句(Create table)语法详解及示例   创建表(Create table)语法详解 1. ORACLE常用的字段类型ORACLE常用的字段类型有 VARCHAR2 (si ...

  8. oracle回滚断查询,Oracle回滚段使用查询代码详解

    大批量执行DML语句造成回滚段大量占用,又回退操作,如何直观查询数据回滚情况? 单机环境 查询回滚执行进度 sql;"> select /*+ rule */s.sid,r.name ...

  9. 抢鲜体验:Oracle 19C单实例数据库安装步骤详解

    抢鲜体验:Oracle 19C单实例数据库安装步骤详解 原创: 李宏达 数据和云 今天 作者:李宏达,云和恩墨北区交付工程师. 大家一直期待的 Oracle Database 19c 今天已经提供公开 ...

  10. 视频教程-Oracle数据库从入门到实用教程详解-Oracle

    Oracle数据库从入门到实用教程详解 全栈工程师,2010年从事软件开发以及软件教育培训工作,至今将近十余年,在项目的开发,设计,到管理上积累了丰富的实战经验,教学风格上通俗易懂,问题解答环节一对一 ...

最新文章

  1. 祝贺《WCF邮件通信系统》在高阳市场研究汇编第五期发表
  2. 设计模式学习2:单例模式
  3. xcode编辑时闪退的问题解决
  4. 文巾解题 190. 颠倒二进制位
  5. apache的rewrite规则无法加载问题
  6. 20-forEach循环语句
  7. Win7下硬盘安装Redhat双系统
  8. Ubuntu下安装OpenSSH Server并在客户端远程连接Ubuntu
  9. Windows 下音频数据采集和播放
  10. WPF几个核心类的类层次结构
  11. Android之MVC模式
  12. 视频截取软件哪个好用?免费的视频截取软件分享
  13. 从高德地图获取城市地铁线路+站点
  14. 空芯线圈电感计算公式
  15. 电脑检测工具eve_检测电脑硬件的软件(系统硬件检测工具)
  16. Arduino - Debugging on the Arduino IDE 2.0
  17. 网易2018实习生招聘笔试题
  18. 怎样快速实现整篇文档中英互译?这里有简单的方法
  19. 英文外链博客资源40个
  20. 解决org.apache.rat:apache-rat-plugin:0.8:check (default) on project hbase: Too many unapproved license

热门文章

  1. Python3语言详解
  2. oracle 验证 lob 坏块,Oracle LOB坏块处理
  3. Office EXCEL 创建图片超链接打不开怎么办 Excel打开图片提示发生了意外错误怎么办
  4. 中国民营500强企业爬取数据展示
  5. 混沌算法 matlab,混沌算法优化BAS算法
  6. Nature | 基于深度神经网络和改进的片段测序方法从头预测蛋白质结构
  7. Java异常处理中throw与throws的用法区别
  8. pikachu靶场学习1
  9. 小卡,功能强大– M.2格式的工业通讯
  10. BZOJ2101 [Usaco2010 Dec]Treasure Chest 藏宝箱