您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關oracle中出現ORA-12005錯誤怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
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錯誤怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。