このエラーは、pl/SQL コードの未処理の例外によってスタックがアンワインドされたことが原因で発生します。ほとんどの場合、スケジューラは不正なコードを含むプロシージャを実行しています。( http://www.techonthenet.com/oracle/errors/ora06512.phpを参照)
まずは仕事を辞める
BEGIN
DBMS_SCHEDULER.DROP_JOB('myjob1');
END;
/
次に、ストアド プロシージャの調査を開始し、いくつかの例外処理を追加します。
たとえば、次のような 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
未処理の例外が原因で 06512 エラーが発生することはなくなるため、要求時にジョブが停止します。
オラクルの例外処理に関する良い情報があり
ます https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/07_errs.htm
それが役立つことを願っています。