聯機日誌損壞恢復實驗

pxbibm發表於2014-05-05

Oracle聯機日誌分為三種狀態,current(當前的)、 active(活動的) 、inactive(非活動的) 
當日志丟失或者損壞時,我們如何來修復這三種狀態的日誌。我們透過一些實驗來講解下。

1、首先我們來修復(inactive)狀態的,即非當前日誌而且歸檔。
我們可以透過 Alter database clear logfile group n(n為要修復的日誌group號)來建立一個新的日誌檔案。
如果該日誌還沒有歸檔,我們需要使用
SQL>Alter database clear unarchived logfile group 2
我們可以透過下面命令查詢日誌的狀態和日誌group號。

SQL> select group#,members,status from v$log;

    GROUP#    MEMBERS STATUS
---------- ---------- --------------------------------
         1          1 CURRENT
         2          1 INACTIVE
         3          1 ACTIVE


2、如果是當前日誌損壞(current)且是活動的(active ),我們就不能使用clear logfile的命令來修復了,丟失當前日誌組則可能意味著丟失資料
如果有備份,可以採用備份進行不完全恢復
如果沒有備份,可能只能用_allow_resetlogs_corruption=true來進行強制恢復了,但是,不建議使用oracle 隱式引數_allow_resetlogs_corruption=true,只有在迫不得已的時候使用。
做下面的實驗前先備份資料庫。(以防萬一)一定要備份!!!
SQL>alter system set _ALLOW_RESETLOGS_CORRUPTION = true scope=spfile;

RMAN>statup mount
RMAN>recover database using backup controlfile until cancel;
根據提示,恢復到最後提示要當前的日誌組時,輸入cancel
SQL>alter database open resetlogs;
----------------------------------------------------------------------------------------------
pxboracle@live.com
2014.05.05 21:19
share you knowledge with the world.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1154557/,如需轉載,請註明出處,否則將追究法律責任。

相關文章