Oracle JOB异常中断原因分析

发表于:2018-4-26 09:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:lōττéry    来源:ITPUB

  注释
  今天研发同事找我确认 PKG_WMS.proc_TaskMain 存储的 job 是否还在运行,竟发现 dba_jobs.NEXT_DATE=4000/1/1,如下看看究竟原因吧~
  JOB 信息:
  参数:
  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、自己测试将存储置失效的报错信息;




上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号