Dieser Fehler wird dadurch verursacht, dass der Stapel durch nicht behandelte Ausnahmen im pl/SQL-Code abgewickelt wird. Höchstwahrscheinlich führt der Scheduler eine Prozedur mit etwas fehlerhaftem Code aus. (Siehe http://www.techonthenet.com/oracle/errors/ora06512.php)
Das erste, was ist es, die Arbeit zu tun Drop
BEGIN
DBMS_SCHEDULER.DROP_JOB('myjob1');
END;
/
Dann starten Sie Ihre gespeicherte Prozedur (en) und fügen Sie in einigen Ausnahmebehandlung zu untersuchen.
Zum Beispiel Sie könnten einige PL/SQL-Code haben als
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;
folgt Wenn dies von Ihrem Job genannt wurde es in einem ora führen könnte 06512. (Sie wahrscheinlich müssen in einigen Protokollierung/Spuren hinzufügen in auf Ihre PL/SQL die Zeilennummern in den Fehlermeldungen verengen diese nach unten, Sie berichtet wurden, können auch dazu beitragen,
es) Ersetzen mit
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
nicht mehr unbehandelt Ausnahme s sollte nicht mehr zu ora 06512 Fehlern führen und daher wird Ihr Auftrag auf Anforderung gestoppt.
Hier einige gute Informationen über die Ausnahmebehandlung in oracle https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/07_errs.htm
Hoffnung, das hilft.
Können Sie einige Proof of Concept teilen? –
Ich habe die obige Antwort mit einigen Links und einem Beispiel aktualisiert. – Chris
Hier ist ein Beispiel für jemanden mit einem ähnlichen Problem. http://stackoverflow.com/questions/20178030/dbms-scheduler-drop-job-only-if-exists – Chris