如何正確的殺死Oracle Job

如何正確的殺死Oracle Job

殺Session是最直接最有效的方式,可是記得必定要加immediate,不然你要等Oracle本身回收Session時,你的job才能完全死,你確定不相等,也等不起sql

alter system kill session '980,33237' immediate;

有同窗說殺掉Session後,過一會job本身又啓動了,那是由於你的job又到了執行的時間點,例如你設置的job每5分鐘執行一次,你如今給他殺了,過5分鐘,它本身就又運行了。若是但願它不在運行,job的enabled就不要勾選。服務器

如何正確的殺死Oracle Job

若是你已經按照網上各類攻略殺了一遍,而且session

  1. 在select * from dba_jobs_running中找不到了
  2. 在session裏也找不到這個session了

可是你在plsql developer中的runing job裏還能看到它活着ide

那麼來這裏查一查操作系統

select * from v$scheduler_running_jobs;

一看,它依然活着,你再試試code

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

結果blog

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

alter system kill session '980,33237' immediate;

結果io

ORA-00030:User session ID does not exist.class

感受要瘋了,按照網上的說法,去操做系統上殺?前提是你能連獲得,在客戶現場,你不必定有連Oracle服務器的權限。可是隻要你有sys用戶話,還有一線生機。

執行一下以下兩條語句,以sys dba

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

而後,你再殺一下Session試試,發現能夠了,不報ORA-00030,可是此次千萬記得加上immediate,切記切記!

相關文章
相關標籤/搜索