alter system set job_queue_processes=0 scope=both;
第一步:查看正在运行的jobs
SQL>select * from dba_jobs_running;
然后确定你要停止的job,这个数据字典对应的job就是下面要执行的过程的第一个参数。
第二步:确定要停掉的job的SID,SERIAL#和系统进程id
select b.SID,b.SERIAL#,c.SPID
from dba_jobs_running a,v$session b,v$process c
where a.sid = b.sid and b.PADDR = c.ADDR
第三步:调用dbms_job的broken函数停止job
SQL> EXEC DBMS_JOB.BROKEN(job#,TRUE);
PL/SQL procedure successfully completed
SQL>commit;
此时这个job还是运行的,可以通过dba_jobs_running查看
第四步:使用alter system kill session 'SID,SERIAL#;杀掉会话。
如果要杀很久,直接使用操作系统命令
kill -9 spid
第五步:调整这个job
第六步:将这个job置为正常状态
SQL> EXEC DBMS_JOB.BROKEN(job#,FALSE);
commit;
此时如果直接提交了的话,可能就会马上执行这个job,如果不想让其再执行了,可以先将这个job remove
例如
SQL> exec dbms_job.remove(job#)
PL/SQL procedure successfully completed
SQL> commit;
alter system set job_queue_processes=200 scope=both;
具体操作过程依据实际情况!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30166973/viewspace-1777935/
,如需转载,请注明出处,否则将追究法律责任。