如何正确的杀死Oracle Job

如何正确的杀死Oracle Job

杀Session是最直接最有效的方式,但是记得一定要加immediate,否则你要等Oracle自己回收Session时,你的job才能死彻底,你肯定不想等,也等不起

alter system kill session '980,33237' immediate;

有同学说杀掉Session后,过一会job自己又启动了,那是因为你的job又到了执行的时间点,例如你设置的job每5分钟执行一次,你现在给他杀了,过5分钟,它自己就又运行了。如果希望它不再运行,job的enabled就不要勾选。
在这里插入图片描述

如果你已经按照网上各种攻略杀了一遍,并且

  1. 在select * from dba_jobs_running中找不到了
  2. 在session里也找不到这个session了

但是你在plsql developer中的runing job里还能看到它活着

那么来这里查一查

select * from v$scheduler_running_jobs;

一看,它依然活着,你再试试

begin
    DBMS_JOB.BROKEN(2877536,true);
    commit;
end;

结果

ORA-23421:job number 2877536 is not a jon in the job queye

alter system kill session '980,33237' immediate;

结果

ORA-00030:User session ID does not exist.

感觉要疯了,按照网上的说法,去操作系统上杀?前提是你能连得到,在客户现场,你不一定有连Oracle服务器的权限。但是只要你有sys用户话,还有一线生机。

执行一下如下两条语句,以sys dba

ALTER INDEX I_JOB_JOB REBUILD ONLINE;
ALTER INDEX I_JOB_NEXT REBUILD ONLINE;

然后,你再杀一下Session试试,发现可以了,不报ORA-00030,但是这次千万记得加上immediate,切记切记!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值