通過dbms_scheduler執行一個外部job時出現錯誤

warehouse發表於2010-01-16
鬱悶的job執行問題...[@more@]

在c:temp下寫了一個檔案dbrman.bat,內容如下:

rman target / cmdfile=dbbak.sql log=dbbak.txt append

執行時錯誤如下:

SQL> exec dbms_scheduler.run_job('my_job_dbbak');
BEGIN dbms_scheduler.run_job('my_job_dbbak'); END;

*
第 1 行出現錯誤:
ORA-27369: 型別為 EXECUTABLE 的作業失敗, 退出程式碼: 函式不正確。
ORA-06512: 在 "SYS.DBMS_ISCHED", line 150
ORA-06512: 在 "SYS.DBMS_SCHEDULER", line 441
ORA-06512: 在 line 1

網上搜了一下大部分都說由於服務OracleJobSchedulerORCL沒有啟動,可這個服務實際已經啟動了,嘗試吧dbrman.bat內容修改為

dir c: >c:tempa.txt和exp test1/test1 file=c:tempa.dmp log=c:tempa.log 都可以成功執行,於是斷定是指令碼rman target / cmdfile=dbbak.sql log=dbbak.txt append自身的問題,搜尋了一下dbbak.txt 發現位於E:oracleproduct10.2.0db_1database下:

E:oracleproduct10.2.0db_1database>dir dbbak.txt
驅動器 E 中的卷沒有標籤。
卷的序列號是 F6E5-4B31

E:oracleproduct10.2.0db_1database 的目錄

01/16/2010 08:37 PM 46,758 dbbak.txt
1 個檔案 46,758 位元組
0 個目錄 4,000,104,448 可用位元組

E:oracleproduct10.2.0db_1database>

問題已經清楚了,指令碼里面缺少絕對路徑,調整如下:

rman target / cmdfile=c:tempdbbak.sql log=dbbak.txt append

之後成功執行:

SQL> exec dbms_scheduler.run_job('my_job_dbbak');

PL/SQL 過程已成功完成。

SQL>

而且在上面測試的過程中OracleJobSchedulerORCL始終都沒有啟動,所以說在呼叫外部job時OracleJobSchedulerORCL也不是必須要啟動的

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1030628/,如需轉載,請註明出處,否則將追究法律責任。

相關文章