ITPub博客

首页 > 数据库 > Oracle > kill job

kill job

原创 Oracle 作者:身影单行just 时间:2015-08-20 20:23:48 0 删除 编辑
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博客 ” ,链接:http://blog.itpub.net/30166973/viewspace-1777935/,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle角色与权限
下一篇: RAID
请登录后发表评论 登录
全部评论

注册时间:2015-03-17

  • 博文量
    14
  • 访问量
    31905