此错误是由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