Oracle JOB异常中断原因分析



标题: Oracle JOB异常中断原因分析

作者: lōττéry ©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]


注释:
  今天研发同事找我确认PKG_WMS.proc_TaskMain存储的job是否还在运行,竟发现dba_jobs.NEXT_DATE= 4000/1/1 .如下看看究竟原因吧~


JOB信息:

SQL> select JOB,SCHEMA_USER,LAST_DATE,LAST_SEC,NEXT_DATE,NEXT_SEC,BROKEN, FAILURES, INTERVAL,WHAT from dba_jobs where WHAT like 'PKG_WMS.%';
 
 JOB    SCHEMA_USER   LAST_DATE   LAST_SEC     NEXT_DATE   NEXT_SEC    BROKEN    FAILURES   INTERVAL           WHAT                                                         
---------- ------------------------------ ------------------------------ ----------- -- -- -- ----------------------------
 1543      fws        2015/7/13   13:00:57     4000/1/1    00:00:00    Y          16     sysdate+1/1440   PKG_WMS.proc_TaskMain;   


参数:
BROKEN    :   中断标记   , 'N启动、Y中断'   --> DBMS_JOBS.BROKEN(job_id,TRUE/FALSE); 停止/启动job,随后需要COMMIT;否则设置失效
FAILURES   : 错误次数
last_date job上次成功执行的时间
next_date job下次执行的时间   ( 受last_date和interval的影响 )
total_time job运行的总时间   ( 每次运行的时间累加 )
this_date job正在执行的时间   ( 如果查询时job正在执行则有值   )


*** 分析:
*** 若定时任务what存储过程调用出现异常 (例如:空间不足、存储过程本身编写问题..)
*** job会自动尝试 16次连续失败后再 将broken状态改为Y,并将next-date改为 “4000-1-1”,只能 手动exec  dbms_job.run(:id);来启动job;
    譬如:存储过程p1,随便注释begin/end行, 体现语法问题,job会正常按照p1存储过程的job运行16次,再broken中断job,
         若到10次,存储过程更改为正确状态,错误次数将改为0,job改为正常;

*** 判断问题方法
1、手动call存储来判断是什么问题,若call 存储时未报错,说明之前该存储有问题过,job尝试运行已超过16次 ,需要手动exec  dbms_job.run(:id);启动job;
2、查看alert日志,oracle job异常会记录到告警日志;


尝试启动...

SQL> begin
  2     dbms_job.run(1543);
  3    end;
  4  /

ORA-12011: 无法执行 1 作业
ORA-06512: 在 "SYS.DBMS_IJOB", line 648
ORA-06512: 在 "SYS.DBMS_JOB", line 284
ORA-06512: 在 line 2
 
SQL>  


报错,再看下alert 内容(方案2):
1、
ORA-12012 : 自动执行作业 1543 出错
ORA-12899 : 列 "FWS"."RECODE_ERROR_MSG"."ERROR_MSG" 的值太大 (实际值 : 704, 最大值: 500 )
ORA-06512 : 在 " FWS .PROC_WRITEERRMSG" , line 22
ORA-06512 : 在 " FWS . PKG_WMS " , line 132
ORA-01688 : 表 FWS .RECODE_ERROR_MSG 分区 SYS_P6181 无法通过 8192 (在表空间 TBS_WMS_CITY_JK_DATA 中) 扩展
ORA-06512 : 在 " FWS .PROC_WRITEERRMSG" , line 22
ORA-06512 : 在 " FWS . PKG_WMS " , line 514
ORA-01688 : 表 FWS .RECODE_ERROR_MSG 分区 SYS_P6181 无法通过 8192 (在表空间 TBS_WMS_CITY_JK_DATA 中) 扩展
ORA-06512 : 在 " FWS .PROC_WRITEERRMSG" , line 22
ORA-06512 : 在 " FWS . PKG_WMS " , line 502
ORA-01400 : 无法将 NULL 插入 (" FWS "."BILL_RECEIPT_CITY"."CREATOR" )
ORA-06512 : 在 line 1
ORA-1688 : unable to extend table  FWS .RECODE_ERROR_MSG partition SYS_P6181 by 128 in   tablespace TBS_WMS_CITY_JK_DATA
ORA-1688 : unable to extend table  FWS .RECODE_ERROR_MSG partition SYS_P6181 by 8192 in  tablespace TBS_WMS_CITY_JK_DATA
ORA-1688 : unable to extend table  FWS .RECODE_ERROR_MSG partition SYS_P6181 by 128 in   tablespace TBS_WMS_CITY_JK_DATA
ORA-1688 : unable to extend table  FWS .RECODE_ERROR_MSG partition SYS_P6181 by 8192 in  tablespace TBS_WMS_CITY_JK_DATA
2、 
ORA-12012: 自动执行作业 26 出错
ORA-06550: 第 1 行, 第 96 列:
PLS-00905: 对象 LOTTERY.P_LOCK_CHECK_HD 无效
ORA-06550: 第 1 行, 第 96 列:
PL/SQL: Statement ignored
Mon Jul 13 14:39:55 2015
Errors in file /u01/app/oracle/diag/rdbms/bjcc/ccem01/trace/ccem01_j001_36869.trc:

 
按照alert log 解决即可..
***1、空间不足是因为 RECODE_ERROR_MSG表每天1亿数据量增加导致..truncate table  RECODE_ERROR_MSG即可; 表暴涨原因  Oracle 归档暴涨分析 
***2、自己测试将存储置失效的报错信息;
 
 


  【源于本人笔记】 若有书写错误,表达错误,请指正...



此条目发表在  Oracle   分类目录。将固定连接 加入收藏夹。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28602568/viewspace-1731805/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28602568/viewspace-1731805/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值