oracle中出现ORA

55次阅读
没有评论

共计 2200 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章给大家分享的是有关 oracle 中出现 ORA-12005 错误怎么办的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

Oracle Job ORA-12005 错误的解决

—– 发现两个数据库每天晚上 23:00 分都有警告日志的报错信息:

ORACLE_HOME = /oracle/oracle/product/10.2.0/db_2

System name:  HP-UX

Node name:  crm2db1

Release:  B.11.31

Version:  U

Machine:  ia64

Instance name: tjcrm2

Redo thread mounted by this instance: 1

Oracle process number: 5104

Unix process pid: 16600, image: oracle@crm2db1 (J002)

*** SERVICE NAME:(SYS$USERS) 2013-09-21 23:00:01.532

*** SESSION ID:(4803.7857) 2013-09-21 23:00:01.532

*** 2013-09-21 23:00:01.532

ORA-12012: 自动执行作业 2289 出错

ORA-12005: 不能安排过去时间的自动刷新

—— 查看相关的 job

select job,log_user,schema_user,what,LAST_DATE,LAST_SEC,THIS_DATE,THIS_SEC,NEXT_DATE,NEXT_SEC,INTERVAL from dba_jobs where job=2289;

  JOB LOG_USER  SCHEMA_USER  WHAT  LAST_DATE  LAST_SEC  THIS_DATE  THIS_SEC  NEXT_DATE  NEXT_SEC  INTERVAL

———- ——— ————– ——————– ———— —————- ———— —————- ———— —————- ——————————

  2289 INST  INST  begin  22-SEP-13  00:02:12  22-SEP-13  23:00:00  TRUNC(SYSDATE + 1) – 1/24

  DELETE_KEY_INFO;

    end;

发现 interval 是 TRUNC(SYSDATE + 1) – 1/24。在视图 all_jobs 中,以下列的含义为:   

(a)LAST_DATE:Date on which this job last successfully executed——job 成功执行的完毕时间  

(b)LAST_SEC:Same as LAST_DATE. This is when the last successful execution started.--上次成功执行的开始时间   ~

(c)THIS_DATE:Date that this job started executing (usually null if not executing)——没有 job 在执行的时候,该字段为空。若有 job 正在运行,这个时间是 job 的开始执行时间。

(d)THIS_SEC:Same as THIS_DATE. This is when the last successful execution started. 

(e)NEXT_DATE:Date that this job will next be executed——job 下次执行时间。 

(f)NEXT_SEC:Same as NEXT_DATE. This is when the last successful execution started。 

(g)INTERVAL:A date function, evaluated at the start of execution, becomes next NEXT_DATE 

—— 原因分析:

job 执行的时候是 21-SEP-13 23:00:00 因此计划出下一次的执行时间为 trunc(21-SEP-13 23:00:00 +1) -1/24= 还是等于 21-SEP-13 23:00:00 但执行 job 后时间已经是 22-SEP-13  00:02:12,这时数据库

发现下一次执行的时间小于现在的时间。所以报错。但是 job 已经执行成功。

—— 解决方案:

修改 INTERVAL 使下一次执行的时候大于当前执行后的时间。

EXEC dbms_ijob.interval(job,interval)

exec dbms_ijob.interval(2289,’TRUNC(SYSDATE + 1)+ 23/24’);  ===== 在 sys 用户下执行其它用户下的 job 时,用 dbms_ijob

commit;

exec dbms_ijob.next_date(2289,to_date( 2013-09-23 23:00:00 , yyyy-mm-dd hh34:mi:ss

commit;

感谢各位的阅读!关于“oracle 中出现 ORA-12005 错误怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计2200字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)