當前日誌組全部損壞的恢復

楊奇龍發表於2010-05-21

        當前日誌組是指在被後臺程式LGWR寫入事務變化的日誌組。如果在關閉狀態下,當前日誌組全部損壞或出現介質失敗,那麼資料庫不能重啟。

1)檢視當前的日誌組狀態。

SQL> select group#,member,type,status from v$logfile;

    GROUP# MEMBER                                   TYPE    STATUS             
---------- ---------------------------------------- ------- -------            
         3 F:\APP\YANG\ORADATA\ORACL\REDO03.LOG     ONLINE                     
         2 F:\APP\YANG\ORADATA\ORACL\REDO02.LOG     ONLINE                     
         1 F:\APP\YANG\ORADATA\ORACL\REDO01.LOG     ONLINE                     

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

    GROUP#    MEMBERS  SEQUENCE# STATUS                                        
---------- ---------- ---------- ----------------                              
         1          1          7 ACTIVE                                        
         2          1          8 ACTIVE                                        
         3          1          9 CURRENT
       

2)在關閉狀態下,刪除日誌組以模擬當前日誌組全部損壞。                                

SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。

-----刪除當前日誌組。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area  535662592 bytes                                      
Fixed Size                  1334380 bytes                                      
Variable Size             142607252 bytes                                      
Database Buffers          385875968 bytes                                      
Redo Buffers                5844992 bytes                                      
資料庫裝載完畢。

ORA-00313: 無法開啟日誌組 3 (用於執行緒 1) 的成員
ORA-00312: 聯機日誌 3 執行緒 1: 'F:\APP\YANG\ORADATA\ORACL\REDO03.LOG'

3)當在關閉情況下,當前日誌組所有日誌成員全部出現介質損壞時,因為資料檔案和控制檔案處於一致狀態,所以我們只需使用RECOVER DATABASE UNTIL CANCEL 命令執行基於取消的不完全的恢復。然後使用RESETLOGS 方式開啟資料庫

SQL> recover database until cancel
完成介質恢復。
SQL> alter database open resetlogs;

資料庫已更改。

SQL> select group#,member,type,status from v$logfile;

    GROUP# MEMBER                                   TYPE    STATUS             
---------- ---------------------------------------- ------- -------            
         3 F:\APP\YANG\ORADATA\ORACL\REDO03.LOG     ONLINE                     
         2 F:\APP\YANG\ORADATA\ORACL\REDO02.LOG     ONLINE                     
         1 F:\APP\YANG\ORADATA\ORACL\REDO01.LOG     ONLINE                     

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

    GROUP#    MEMBERS  SEQUENCE# STATUS                                        
---------- ---------- ---------- ----------------                              
         1          1          1 CURRENT                                       
         2          1          0 UNUSED                                        
         3          1          0 UNUSED
                                        

注意:別忘了 備份全資料庫。

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

相關文章