Oracle 定時Job報錯ORA-04068 ORA-06508
今早檢查月底Job執行情況,發現一個Job執行失敗,錯誤如下:
ORA-04068: existing state of packages
ORA-04068: existing state of packages has been discarded
ORA-04065: not executed, altered or dropped stored procedure "US.STAT_SC"
ORA-06508: PL/SQL: could not find program unit being called: "US.STAT_SC"
ORA-06512: at line 20 has been discarded
ORA-04068: existing state of packages has been discarded
ORA-04065: not executed, altered or dropped stored procedure "US.STAT_SC"
ORA-06508: PL/SQL: could not find program unit being called: "US.STAT_SC"
ORA-06512: at line 20 has been discarded
檢查該job的JOB_ACTION,內容如下:
begin
...
proc_1(yer,mon);
...
stat_sc(yer,mon);
...
end;
其中 proc_1 就是為了後面的統計而準備資料,由於資料量比較大,採用了drop table後再 create table 的方式生成中間表。而後面stat_sc之類的procedure都是基於那些drop掉再create的表。由於後面儲存過程都是依賴於 proc_1 中所涉及的表,同時當前的儲存過程的狀態為available,那麼當 proc_1 中的表被drop掉後,則後面的儲存過程馬上被設定為unavailable,即使這時再重新建立了相應的表,此時後面的儲存過程也不會自動地設定為available(因為其不會自行編譯),除非人工進行編譯該儲存過程。
到了這裡,問題應該清楚了,解決辦法有三:
1、在 proc_1 中不採用drop再create的方式;
2、在後面依賴的procedure中,透過execute immediate 方式執行相關表的sql;
3、把 proc_1 單獨放到一個Job中執行,這個方法最簡單,唯一需要注意的是時間順序。
悲劇了,這個job的所有事情都得手動做了,時間點和其他報表還不一致,導致報表之間資料有出入。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-712524/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫定時器JobOracle資料庫定時器
- Oracle透過job定時建立表Oracle
- oracle 定義jobOracle
- 使用oracle job定時傳送email郵件OracleAI
- Oracle 定時任務job實際應用Oracle
- Oracle定時任務(DBMS_Job)詳解Oracle
- XXL-JOB定時任務框架(Oracle定製版)框架Oracle
- oracle系統包——dbms_job用法(oracle定時任務)Oracle
- Oracle:建立JOB定時執行儲存過程Oracle儲存過程
- mysql 定時指令碼(event),類似oracle的jobMySql指令碼Oracle
- Oracle Job 定時執行設定例項[final]Oracle
- oracle job使用方法--實現定時任務Oracle
- ora-04068 ora-06508 已丟棄程式包 的當前狀態
- DBMS_JOB.SUBMIT 建立job定時排程MIT
- 利用oracle job定時向某個表插入資料Oracle
- oracle--job執行報錯--ORA-01031Oracle
- dbms_job 定時計劃
- ORACLE JOB INTERVAL引數設定Oracle
- ORA-04068,ORA-04065,ORA-06508 PL/SQL: could not find program unit being calledSQL
- Oracle 11g報錯"ORA-12012: error on job ORACLE_OCM.MGMT_CONFIG_JOB_2_1"OracleError
- oracle定時任務dbms_job與dbms_scheduler使用方法Oracle
- 使用JOB定時備份資料庫資料庫
- 採用job定時執行recover datafile
- Oracle Scheduler Job未能按時啟動Oracle
- 記錄一次定時器報錯定時器
- dbms_job包的應用:在Oracle中實現定時操作(轉)Oracle
- oracle jobOracle
- 使用Elastic Job的時候報“Job conflict with register center”,如何處理?AST
- dbms_scheduler設定job執行報錯 ORA-06553: PLS-306
- oracle安裝由於sga設定大報錯Oracle
- 儲存過程ORA-04068之錯誤解析儲存過程
- oracle建立定時任務之dbms_jobOracle
- oracle建立job並執行jobOracle
- oracle job用法Oracle
- oracle job管理Oracle
- oracle dg報錯Oracle
- oracle emctl 報錯Oracle
- Grails整合Quartz外掛實現定時任務(Job)AIquartz