如何kill掉RMAN備份進程

題記:最近客戶的一套訂購數據庫經常會因爲數據及業務壓力太大,在RMAN進行全備或是增備時,而此時業務有大量要處理時,系統資源就會被耗盡,會影響到業務的正常,所以常有時需要先終止掉RMAN備份,這裏提供了我在處理過程中的方法,希望大家喜歡!

本文的目的就是在緊急狀態下,需要立即終止正在進行的RMAN備份進程。

####查看RMAN備份進度,才40%

select sid,
       serial#,
       context,
       sofar,
       totalwork,
       round (sofar / totalwork * 100, 2) "%_complete"
  from v$session_longops
 where     opname like 'RMAN%'
       and totalwork != 0
       and opname not like '%aggregate%'
       and sofar <> totalwork;
       SQL> select sid,
  2         serial#,
  3         context,
  4         sofar,
  5         totalwork,
  6         round (sofar / totalwork * 100, 2) "%_complete"
  7    from v$session_longops
  8   where     opname like 'RMAN%'
  9         and totalwork != 0
 10         and opname not like '%aggregate%'
 11         and sofar <> totalwork;

       SID    SERIAL#    CONTEXT      SOFAR  TOTALWORK %_complete
---------- ---------- ---------- ---------- ---------- ----------
       381      57130          1   10735600   27000832      39.76

SQL>

 

(1)查看RMAN分配的各個通道的進程號
SQL>

     SELECT sid, spid, client_info 
     FROM v$process p, v$session s 
     WHERE p.addr = s.paddr 
     AND client_info LIKE '%rman%';
  
       SID SPID       CLIENT_INFO
---------- ------------------------ -------------------------
       525 26244      rman channel=t1
      1023 26245      rman channel=t2
       699 26246      rman channel=t3

 

(2)根據第(1)中得到的進程號,終止RMAN備份
注:這裏既要kill 掉RMAN備份腳本的PID,也要kill 掉RMAN中分配的各個通道的PID
subsdb1:~ # ps -ef | grep 26244
oracle   26244 26224  7 17:12 ?        00:01:49 oraclesubsdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root      9877  9603  0 17:34 pts/11   00:00:00 grep 26244
subsdb1:~ # kill -9 26244
subsdb1:~ # ps -ef | grep 26245
oracle   26245 26224  5 17:12 ?        00:01:13 oraclesubsdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root      9968  9603  0 17:35 pts/11   00:00:00 grep 26245
subsdb1:~ # kill -9 26245
subsdb1:~ # ps -ef | grep 26246
oracle   26246 26224  4 17:12 ?        00:01:03 oraclesubsdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root     10009  9603  0 17:35 pts/11   00:00:00 grep 26246
subsdb1:~ # kill -9 26246
subsdb1:~ # ps -ef | grep rman
oracle   26224 25962  0 17:11 pts/3    00:00:03 rman target / nocatalog
root     10061  9603  0 17:35 pts/11   00:00:00 grep rman
subsdb1:~ # kill -9 26224
subsdb1:~ # ps -ef | grep rman
root     10102  9603  0 17:36 pts/11   00:00:00 grep rman
subsdb1:~ # ps -ef | grep 26246
root     10213  9603  0 17:36 pts/11   00:00:00 grep 26246

此時RMAN備份操作已經被終止。查看(1)中的SQL語句時,結果爲空。

說明:如果單單kill掉RMAN的進程號,那麼RMAN備份並沒有停止,而是要連channel進程也一起掉纔可以!

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