免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1809 | 回复: 1
打印 上一主题 下一主题

Kill运行中的JOB的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-19 16:55 |只看该作者 |倒序浏览

系统中有一个JOB,由于SQL编写的问题,导致运行了5个多小时还没完,我想把它kill掉。
1. 首先我得查看正在跑的JOB有哪些:
SELECT /*+ RULE */ * FROM DBA_JOBS_RUNNING;
为什么要加这个RULE提示呢,因为在你SYS没被分析的时候,直接查询(CBO)是非常慢的。可能在这个视图里查不到结果,但JOB的SESSION确实在跑。10g的话可以查dba_scheduler_job_run_details获得更多信息。
接下来找到了这个JOB对应session的SID和对应的OS JOB进程(j000等)的SPID。
CODE:
select * from gv$process s,gv$session gn  where s.ADDR=gn.PADDR and gn.STATUS='ACTIVE' and gn.SCHEMANAME='A'
2. 然后,在OS上kill对应的SPID

CODE:
$> kill -9 SPID
3. 过一分钟左右的时间,再次查询gv$session,发现此session还在,SPID变了,在OS上自动产生了一个j000进程与此session对应。
4. 将job设成broken状态,再次 kill -9 SPID。过一分钟左右此session没了,OS也没再产生新的job进程。
5. 问题来了,虽然此时session和OS进程都没有与此JOB相关的东东存在,但此JOB的运行时间(total_time)仍在不停增加。
6. 尝试解决方法:
(1)重启cjq0这个进程 无效
(2)重启DB 无效
如何解决这个total_time不停增加的问题呢?
重建JOB!



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/46451/showart_1134084.html

论坛徽章:
0
2 [报告]
发表于 2008-08-23 13:44 |只看该作者
来看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP