背景:數據庫出現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);ide
實例分析:
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#code
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);資源