共計(jì) 2200 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。
這篇文章給大家分享的是有關(guān) oracle 中出現(xiàn) ORA-12005 錯(cuò)誤怎么辦的內(nèi)容。丸趣 TV 小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。
Oracle Job ORA-12005 錯(cuò)誤的解決
—– 發(fā)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)每天晚上 23:00 分都有警告日志的報(bào)錯(cuò)信息:
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: 自動(dòng)執(zhí)行作業(yè) 2289 出錯(cuò)
ORA-12005: 不能安排過(guò)去時(shí)間的自動(dòng)刷新
—— 查看相關(guān)的 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;
發(fā)現(xiàn) interval 是 TRUNC(SYSDATE + 1) – 1/24。在視圖 all_jobs 中,以下列的含義為:
(a)LAST_DATE:Date on which this job last successfully executed——job 成功執(zhí)行的完畢時(shí)間
(b)LAST_SEC:Same as LAST_DATE. This is when the last successful execution started.--上次成功執(zhí)行的開始時(shí)間 ~
(c)THIS_DATE:Date that this job started executing (usually null if not executing)——沒有 job 在執(zhí)行的時(shí)候,該字段為空。若有 job 正在運(yùn)行,這個(gè)時(shí)間是 job 的開始執(zhí)行時(shí)間。
(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 下次執(zhí)行時(shí)間。
(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 執(zhí)行的時(shí)候是 21-SEP-13 23:00:00 因此計(jì)劃出下一次的執(zhí)行時(shí)間為 trunc(21-SEP-13 23:00:00 +1) -1/24= 還是等于 21-SEP-13 23:00:00 但執(zhí)行 job 后時(shí)間已經(jīng)是 22-SEP-13 00:02:12,這時(shí)數(shù)據(jù)庫(kù)
發(fā)現(xiàn)下一次執(zhí)行的時(shí)間小于現(xiàn)在的時(shí)間。所以報(bào)錯(cuò)。但是 job 已經(jīng)執(zhí)行成功。
—— 解決方案:
修改 INTERVAL 使下一次執(zhí)行的時(shí)候大于當(dāng)前執(zhí)行后的時(shí)間。
EXEC dbms_ijob.interval(job,interval)
exec dbms_ijob.interval(2289,’TRUNC(SYSDATE + 1)+ 23/24’); ===== 在 sys 用戶下執(zhí)行其它用戶下的 job 時(shí),用 dbms_ijob
commit;
exec dbms_ijob.next_date(2289,to_date( 2013-09-23 23:00:00 , yyyy-mm-dd hh34:mi:ss
commit;
感謝各位的閱讀!關(guān)于“oracle 中出現(xiàn) ORA-12005 錯(cuò)誤怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!