このエラーは、pl/SQLコードで未処理の例外によってスタックが解放されたために発生します。ほとんどの場合、スケジューラは不正なコードを含むプロシージャを実行しています。
まず最初に行うには、
BEGIN
DBMS_SCHEDULER.DROP_JOB('myjob1');
END;
/
は、その後、あなたのストアドプロシージャ(複数可)調査を開始し、いくつかの例外処理に追加し、ジョブを落としている(http://www.techonthenet.com/oracle/errors/ora06512.phpを参照してください)。
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コードを持っているかもしれません。例えば
これを絞り込むために、あなたの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
これ以上の未処理の例外とそれを交換してください06512エラーが発生しなくなり、要求されたときにジョブが停止します。
は、ここでの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