ORACLE系列腳本3:救命的JOB處理腳本

背景:數據庫出現JOB長期執行不完導致資源耗費過大的情況通過下列預計可以快速定位JOB,快速干預處理,恢復數據庫性能。通過下列語句長期運維?T以上數據庫?個,屢試不爽。

找出正在執行的JOB編號及其會話編號
SELECT SID,JOB FROM DBA_JOBS_RUNNING;

停止該JOB的執行
SELECT SID,SERIAL# FROM V$SESSION WHERE SID='130';
ALTER SYSTEM KILL SESSION '&SID,&SERIAL';
EXEC DBMS_JOB.BROKEN(&JOB,TRUE);

實例分析:
1,查詢正在運行的Job,通過查詢有兩個,和進程佔用較多的是兩個ORACLE進程符合。
SQL> SELECT SID,JOB FROM DBA_JOBS_RUNNING;
SID JOB


    12        116
    16        117

2,查詢正在運行的job的信息
SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12';
SID SERIAL#


    12          4

SQL> SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16';
SID SERIAL#


    16          1

3,利用查詢出來的job信息將job結束掉
SQL> ALTER SYSTEM KILL SESSION '12,4';
System altered.
SQL> ALTER SYSTEM KILL SESSION '16,1';
System altered.
4,如果不希望運行上述job的話,可以將job設置爲broken.
EXEC DBMS_JOB.BROKEN(116,TRUE);
EXEC DBMS_JOB.BROKEN(117,TRUE);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章