【翻译自mos文章】job 不能自动运行--这是另外一个mos文章,本文章有13个解决方法
2014-07-11 23:30
459 查看
job 不能自动运行--这是另外一个mos文章
参考原文:
Jobs Not Executing Automatically (Doc ID 313102.1)
适用于:
Oracle Database - Enterprise Edition - Version 9.2.0.3 to 10.2.0.4 [Release 9.2 to 10.2]
Information in this document applies to any platform.
症状:
job已经很长时间没有自动运行了。
如果强制执行(exec dbms_job.run(<enter here job number>);), 这些job是能成功执行的。
原因:
按照如下步骤检查job无法自动执行的原因:
1) instance处于RESTRICTED SESSIONS 模式?
select instance_name,logins from v$instance;
If logins=RESTRICTED, then:
alter system disable restricted session;
--->注意,正常情况下,logins应该返回: ALLOWED
2)JOB_QUEUE_PROCESSES=0
show parameter job_queue_processes
一定要让job_queue_processes这个参数大于零。
3)隐含参数_SYSTEM_TRIG_ENABLED=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';
如果 _system_trig_enabled=false, 那么执行如下命令改为true
alter system set "_system_trig_enabled"=TRUE scope=both;
4)job 被broken了 ?
select job,broken from dba_jobs where job=<job_number>;
如果job被broken了,那么请检查alert日志和trace file 来诊断broken的原因。
5)job 带commit关键字了?
一定要保证 commit 出现在submit job之后
DECLARE X NUMBER;
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; --->注意:这个COMMIT一定得有。
END;
/
如果强制执行job是ok的(比如这么执行 exec dbms_jobs.run(<job_no>);),那么很可能是缺少一个commit
6)os 已经启动超过497天
检查数据库服务器操作系统是否已经启动超过497天。
对于linux,unix而言,请使用uptime来检查。
如果uptime的结果大于497天,并且job不能自动执行,那么就遇到了未公开的bug3427424(Jobs may stop running after 497 days uptime)
该bug 在9026 和10gR2上被修复(fix)
7)dba_jobs_running
检查dba_jobs_running视图确认,该job是否依然在运行。
8) LAST_DATE and NEXT_DATE (在dba_jobs这个视图中)
检查相关job的 LAST_DATE 和 NEXT_DATE 列的内容。
select Job,Next_date,Last_date from dba_jobs where job=<job_number>;
如果NEXT_DATE 是正常的,但是LAST_DATE 是null的,那么该job 永远不会自动执行。
9) NEXT_DATE and INTERVAL(在dba_jobs这个视图中)
检查 NEXT_DATE 是否随interval 的设置在变化
select Job,Interval,Next_date,Last_date from dba_jobs where job=<job_number>;
10)对JOB_QUEUE_PROCESSES切换值
停止并重启cjq 进程
alter system set job_queue_processes=0 ;
--<等待一会以保证cjq进程停止>
alter system set job_queue_processes=4 ;
参考bug2649244 (该bug 在9015, 9203, 10201中被修复)
11)检查不成功的shutdown
一个shutdown immediate 可能被取消(conceled),因为active session 阻止 database 的关闭。
请检查alert 日志,查看最后两次的shutdown immediate,是否有如下的信息:
SHUTDOWN: Active sessions prevent database close operation
请参考:
Note 434690.1 - Database Jobs Do Not Run After a Failed 'Shutdown Immediate'
12) DBMS_IJOB (该package 未在文档上记载)
Either restart the database or try the following:
exec dbms_ijob.set_enabled(true);
Ref: Bug 3505718 (Closed, Not a Bug)
13)检查 视图 DBA_SCHEDULER_GLOBAL_ATTRIBUTE 的 CURRENT_OPEN_WINDOW 属性值
If a window is open ,close it (e.g.):
ATTRIBUTE_NAME VALUE
--------------------------------- ----------------------------
CURRENT_OPEN_WINDOW WEEKNIGHT_WINDOW
SQL> exec DBMS_SCHEDULER.close_window ('WEEKNIGHT_WINDOW');
解决方案:
不再翻译。该解决方案是针对os已经启动126天之后,job就无法自动运行的。
参考原文:
Jobs Not Executing Automatically (Doc ID 313102.1)
适用于:
Oracle Database - Enterprise Edition - Version 9.2.0.3 to 10.2.0.4 [Release 9.2 to 10.2]
Information in this document applies to any platform.
症状:
job已经很长时间没有自动运行了。
如果强制执行(exec dbms_job.run(<enter here job number>);), 这些job是能成功执行的。
原因:
按照如下步骤检查job无法自动执行的原因:
1) instance处于RESTRICTED SESSIONS 模式?
select instance_name,logins from v$instance;
If logins=RESTRICTED, then:
alter system disable restricted session;
--->注意,正常情况下,logins应该返回: ALLOWED
2)JOB_QUEUE_PROCESSES=0
show parameter job_queue_processes
一定要让job_queue_processes这个参数大于零。
3)隐含参数_SYSTEM_TRIG_ENABLED=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';
如果 _system_trig_enabled=false, 那么执行如下命令改为true
alter system set "_system_trig_enabled"=TRUE scope=both;
4)job 被broken了 ?
select job,broken from dba_jobs where job=<job_number>;
如果job被broken了,那么请检查alert日志和trace file 来诊断broken的原因。
5)job 带commit关键字了?
一定要保证 commit 出现在submit job之后
DECLARE X NUMBER;
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; --->注意:这个COMMIT一定得有。
END;
/
如果强制执行job是ok的(比如这么执行 exec dbms_jobs.run(<job_no>);),那么很可能是缺少一个commit
6)os 已经启动超过497天
检查数据库服务器操作系统是否已经启动超过497天。
对于linux,unix而言,请使用uptime来检查。
如果uptime的结果大于497天,并且job不能自动执行,那么就遇到了未公开的bug3427424(Jobs may stop running after 497 days uptime)
该bug 在9026 和10gR2上被修复(fix)
7)dba_jobs_running
检查dba_jobs_running视图确认,该job是否依然在运行。
8) LAST_DATE and NEXT_DATE (在dba_jobs这个视图中)
检查相关job的 LAST_DATE 和 NEXT_DATE 列的内容。
select Job,Next_date,Last_date from dba_jobs where job=<job_number>;
如果NEXT_DATE 是正常的,但是LAST_DATE 是null的,那么该job 永远不会自动执行。
9) NEXT_DATE and INTERVAL(在dba_jobs这个视图中)
检查 NEXT_DATE 是否随interval 的设置在变化
select Job,Interval,Next_date,Last_date from dba_jobs where job=<job_number>;
10)对JOB_QUEUE_PROCESSES切换值
停止并重启cjq 进程
alter system set job_queue_processes=0 ;
--<等待一会以保证cjq进程停止>
alter system set job_queue_processes=4 ;
参考bug2649244 (该bug 在9015, 9203, 10201中被修复)
11)检查不成功的shutdown
一个shutdown immediate 可能被取消(conceled),因为active session 阻止 database 的关闭。
请检查alert 日志,查看最后两次的shutdown immediate,是否有如下的信息:
SHUTDOWN: Active sessions prevent database close operation
请参考:
Note 434690.1 - Database Jobs Do Not Run After a Failed 'Shutdown Immediate'
12) DBMS_IJOB (该package 未在文档上记载)
Either restart the database or try the following:
exec dbms_ijob.set_enabled(true);
Ref: Bug 3505718 (Closed, Not a Bug)
13)检查 视图 DBA_SCHEDULER_GLOBAL_ATTRIBUTE 的 CURRENT_OPEN_WINDOW 属性值
If a window is open ,close it (e.g.):
ATTRIBUTE_NAME VALUE
--------------------------------- ----------------------------
CURRENT_OPEN_WINDOW WEEKNIGHT_WINDOW
SQL> exec DBMS_SCHEDULER.close_window ('WEEKNIGHT_WINDOW');
解决方案:
不再翻译。该解决方案是针对os已经启动126天之后,job就无法自动运行的。
相关文章推荐
- 【翻译自mos文章】job 不能自己主动执行--这是另外一个mos文章,本文章有13个解决方法
- 【翻译自mos文章】job 不能自动执行的解决方法
- 【翻译自mos文章】job 不能自己主动运行的解决方法
- 【翻译自mos文章】在一次失败的 'Shutdown Immediate'之后,数据库job 不能运行。
- 【翻译自mos文章】怎么样kill 一个被挂起的自动物化视图刷新job?
- [翻译自mos文章]提交的一个job 不运行
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- 【转自MOS中文文章】自动停止数据库(dbshut)在 OL 7 的 systemd 中不能运行 (文档 ID 2364833.1)
- eclipse运行时不能自动保存的解决方法
- 【翻译自mos文章】在db 12c 单机中不能注册ACFS为自动启动
- 卸载时候出现: windows installer 程序有问题。此安装需要的dll不能运行 的一个解决方法
- 【翻译自mos文章】在一次失败的 'Shutdown Immediate'之后,数据库job 不能执行。
- 【翻译自mos文章】得到正在运行job的 session id
- eclipse(Mars)在运行Maven项目时,不能自动编译,解决方法如下:
- 【翻译自mos文章】当并行事务恢复进程在运行时,禁用并行事务恢复的方法
- MSDTC不能启动的一个解决方法
- 安装WinXP Service Pack 2 后, IIS不能运行的解决方法
- 2003系统下不能运行asp程序的彻底解决方法
- windows2003不能自动分配USB移动硬盘盘符的解决方法
- MYSQL不能从远程连接的一个解决方法