oracle 如何停job
停job就是将job的状态改为broken,然后杀死正在运行的job;将job unbroken可以直接调用exec dbms_job.broken(82,false); 。1.确定要停止的JOB号
select * from dba_jobs_running;
2.Broken你确认的JOB
exec dbms_job.broken(82,true);
selectjob,log_user,broken,last_date,next_date from dba_jobs where job=82;
3.Kill 对应的Oracle Session
select sid,serial# from v$session where sid=144;
alter system kill session 'sid,serial#';
或
SELECT p.spid FROM v$session s, v$process p
WHERE s.paddr = p.addr
AND s.sid = 144;
直接KILL对应的操作系统的SESSION,如果使用ALTER SYSTEM KILL SESSION执行很长时间,其实可以使用OS的命令来快速KILL掉SESSION.
For Windows, at the DOS Prompt: orakill sid spid
For UNIX at the command line> kill –9 spid
4.检查你的JOB是否还在运行,如果还运行,多杀几次
select * from dba_jobs_running;
5.修改完成后,将job的BROKEN状态停止。
exec dbms_job.broken(82,false);
--手动执行job
exec dbms_job.run(82);
--dbms_job.broken过程定义,next_date参数默认为sysdate,如果不写,从broken到unbroken,
--即调用exec dbms_job.broken(82,false);,会运行对应的job。
PROCEDURE dbms_job.broken( job INBINARY_INTEGER,
broken INBOOLEAN,
next_date INDATE DEFAULT SYSDATE );
注意:
调用dbms_job.broken过程,一定要commit;
从broken到unbroken,即调用exec dbms_job.broken(82,false);,会运行对应的job。
[*]--停job过程
[*]SQL> select * from dba_jobs_running;
[*]
[*] SID JOB FAILURES LAST_DATE LAST_SEC THIS_DATE THIS_SEC INSTANCE
[*]---------- ---------- ---------- -------------- ---------------- -------------- ---------------- ----------
[*] 144 82 0 28-8月 -12 17:42:55 28-8月 -12 17:50:45 0
[*]
[*]SQL> exec dbms_job.broken(82,true);
[*]
[*]PL/SQL 过程已成功完成。
[*]
[*]SQL> commit;
[*]
[*]提交完成。
[*]
[*]SQL> SELECT p.spid FROM v$session s, v$process p
[*]2WHERE s.paddr = p.addr
[*]3AND s.sid = 144;
[*]
[*]SPID
[*]------------
[*]4672
[*]
[*]----------------------------#
[*]--使用操作系统命令
[*]C:\Windows\system32>orakill orcl 4672
[*]----------------------------#
[*]
[*]--如果job还在运行,可以多次执行orakill orcl 4672
[*]SQL> select * from dba_jobs_running;
[*]
[*]未选定行
页:
[1]