oracle如何查询和停止正在运行的JOB

2025-03-25 07:17:21
推荐回答(1个)
回答(1):

找出正在执行的JOB 编号及其会话编号 SELECT SID,JOB FROM DBA_JOBS_RUNNING; 停止该JOB 的执行 SELECT SID,SERIAL# FROM V$SESSION WHERE SID='&SID'; ALTER SYSTEM KILL SESSION '&SID,&SERIAL'; EXEC DBMS_JOB.BROKEN(&JOB,TRUE); 实例分析: 1,查询正在运行的Job,通过查询有两个,和进程占用较多的是两个ORACLE 进程符合。 SQL> SELECT SID,JOB FROM DBA_JOBS_RUNNING; SID JOB ---------- ---------- 12 116 16 117 2,查询正在运行的job 的信息 SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12'; SID SERIAL# ---------- ---------- 12 4 SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16'; SID SERIAL# ---------- ---------- 16 1 3,利用查询出来的job 信息将job 结束掉 SQL> ALTER SYSTEM KILL SESSION '12,4'; System altered. SQL> ALTER SYSTEM KILL SESSION '16,1'; System altered. 4,如果不希望运行上述job 的话,可以将job 设置为broken. EXEC DBMS_JOB.BROKEN(116,TRUE); EXEC DBMS_JOB.BROKEN(117,TRUE);