此錯誤是由pl/SQL代碼中未處理的異常解除堆棧導致的。調度程序很可能正在執行一個過程,其中包含一些錯誤的代碼。 (見http://www.techonthenet.com/oracle/errors/ora06512.php)
做的第一件事就是放下工作
BEGIN
DBMS_SCHEDULER.DROP_JOB('myjob1');
END;
/
然後開始調查你的存儲過程(S),並添加一些異常處理。
例如,你可能有一些PL/SQL代碼如下
DECLARE pe_ratio NUMBER(3,1);
BEGIN
SELECT price/earnings INTO pe_ratio FROM stocks WHERE symbol = 'XYZ'; -- might cause division-by-zero error
INSERT INTO stats (symbol, ratio) VALUES ('XYZ', pe_ratio); COMMIT;
End;
如果這被稱爲通過你的工作可能導致ORA 06512.(你可能需要在某些記錄/添加的痕跡進入到你的PL/SQL中,你還報道可以幫助錯誤消息)
縮小下來,行號與
DECLARE pe_ratio NUMBER(3,1);
BEGIN
SELECT price/earnings INTO pe_ratio FROM stocks WHERE symbol = 'XYZ'; -- might cause division-by-zero error
INSERT INTO stats (symbol, ratio) VALUES ('XYZ', pe_ratio);
COMMIT;
EXCEPTION -- exception handlers begin
WHEN ZERO_DIVIDE THEN -- handles 'division by zero' error
INSERT INTO stats (symbol, ratio) VALUES ('XYZ', NULL);
COMMIT; ...
WHEN OTHERS THEN -- handles all other errors
ROLLBACK;
END; -- exception handlers and block end here
沒有更多未處理的異常,請更換s應該不會導致更多的錯誤,因此當您的請求時您的工作將停止。
下面是在Oracle https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/07_errs.htm
希望幫助在異常處理一些好的信息。
你能分享一些概念證明嗎? –
我已經通過一些鏈接和示例更新了上面的答案。 – Chris
下面是一個有類似問題的人的例子。 http://stackoverflow.com/questions/20178030/dbms-scheduler-drop-job-only-if-exists – Chris