ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Kill运行中的JOB的问题

Kill运行中的JOB的问题

原创 Linux操作系统 作者:beatony 时间:2012-12-31 14:50:02 0 删除 编辑
Kill运行中的JOB的问题
 
系统中有一个JOB,由于SQL编写的问题,导致运行了5个多小时还没完,我想把它kill掉。
 
1. 首先我得查看正在跑的JOB有哪些:(为什么要加这个RULE提示呢,因为在你SYS没被分析的时候,直接查询(CBO)是非常慢的。可能在这个视图里查不到结果,但JOB的SESSION确实在跑。)
SELECT /*+ RULE */ * FROM DBA_JOBS_RUNNING;
10g的话可以查dba_scheduler_job_run_details获得更多信息。
接下来找到了这个JOB对应session的SID和对应的OS JOB进程(j000等)的SPID。
select * from gv$process a,gv$session b
where a.addr=b.paddr and b.status='ACTIVE' and b.schemaname='A'
 
2. 然后,在OS上kill对应的SPID$> kill -9 SPID
 
3.过一分钟左右的时间,再次查询gv$session,发现此session还在,SPID变了,
在OS上自动产生了一个j000进程与此session对应。
 
4. 将job设成broken状态(使用dbms_job包来标识你的JOB为broken.
SQL> exec dbms_job.broken(job#,TRUE);
再次 kill -9 SPID。过一分钟左右此session没了,OS也没再产生新的job进程。
( for windows,at the DOS prompt: orakill sid spid )
(for UNIX at the command line > kill -9 spid  )
 
5.将Job queue processes 数目更改为0
SQL:> alter system set job_queue_processes = 0;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22578826/viewspace-751930/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-05-18

  • 博文量
    192
  • 访问量
    456143