我通过pl/sql developer,
或者,编程 sys.dbms_job.broken(job => 1, broken => true)
来设置job为broken,当时的确是成功的,这个job的确被broken了。但是,过了几分钟后,这个job又自动变为了broken = false请大家帮我分析分析,是什么原因?
或者,编程 sys.dbms_job.broken(job => 1, broken => true)
来设置job为broken,当时的确是成功的,这个job的确被broken了。但是,过了几分钟后,这个job又自动变为了broken = false请大家帮我分析分析,是什么原因?
/******************************************************************************
PURPOSE: 自动潮流计算Job的建立与更改
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2003-10-17 Fred Zhang 1. Created this procedure.
******************************************************************************/
jobno Integer;
jobid Integer;
Begin
Select job Into jobid From all_jobs Where what='AUTO_CLJS;';
dbms_job.Change(jobid,'AUTO_CLJS;',To_Date(To_Char(Sysdate,'yyyy-mm-dd')||' '||V_timestr,'yyyy-mm-dd hh24:mi:ss'),'trunc(sysdate,''mi'')+1');
Commit;
v_jobno:=jobid;
v_msg:='恭喜你!自动计算设定已经成功更改!';
Exception When No_Data_Found Then
dbms_job.submit(jobid,'AUTO_CLJS;',To_Date(To_Char(Sysdate,'yyyy-mm-dd')||' '||V_timestr,'yyyy-mm-dd hh24:mi:ss'),'trunc(sysdate,''mi'')+1');
Commit;
v_jobno:=jobid;
v_msg:='恭喜你!自动计算已经成功设定!';
End Auto_Cljs_Job;
CREATE OR REPLACE PROCEDURE Auto_Cljs_Job_Start_Stop (result OUT VARCHAR2) IS
tmpVar NUMBER;
/******************************************************************************
PURPOSE: 自动潮流计算Job的启动与停止
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2003-10-18 Fred Zhang 1. Created this procedure.
******************************************************************************/
jobid INTEGER;
job_status VARCHAR2(1);
BEGIN
SELECT job,broken INTO jobid,job_status FROM all_jobs WHERE what='AUTO_CLJS;';
IF job_status='N' THEN
dbms_job.broken(jobid,TRUE);
COMMIT;
result:='恭喜你!自动计算设定已经停止!';
ELSE
dbms_job.broken(jobid,FALSE);
COMMIT;
result:='恭喜你!自动计算设定已经开始!';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
result:='对不起,你还没有设定此Job!';
WHEN OTHERS THEN
NULL;
END Auto_Cljs_Job_Start_Stop;
/
只不过是非关键,这里没有写而已。
但是,如果通过手动或者其他事件调用执行了作业,
那么broken会自动变为false,标记为作业有效。
-------------------------
奇怪的是,没有手动或者其他事件调用执行了该作业,
但是几分钟后,该作业的broken会自动变为false,标记为作业有效。
直接用dbms_job.remove 得了。