恢復重做日誌

楊奇龍發表於2010-05-21

 關閉情況下,非活動日誌組成員全部損壞。此時DBA可以增加新日誌組,刪除原有日誌組,然後開啟資料庫。

1)檢視當前的日誌狀態。
SQL> select group#,thread#,sequence#,status from v$log;
    GROUP#    THREAD#  SEQUENCE# STATUS                                        
---------- ---------- ---------- ----------------                              
         1          1          7 CURRENT                                       
         2          1          5 INACTIVE                                      
         3          1          6 INACTIVE                                      

SQL> select group#,members,sequence#,status from v$log;
    GROUP#    MEMBERS  SEQUENCE# STATUS                                        
---------- ---------- ---------- ----------------                              
         1          1          7 CURRENT                                       
         2          1          5 INACTIVE                                      
         3          1          6 INACTIVE                                      

SQL> col member for a50
SQL> select group#,member,status from v$logfile;
    GROUP# MEMBER                                             STATUS           
---------- -------------------------------------------------- -------          
         3 F:\APP\YANG\ORADATA\ORACL\REDO03.LOG                                
         2 F:\APP\YANG\ORADATA\ORACL\REDO02.LOG                                
         1 F:\APP\YANG\ORADATA\ORACL\REDO01.LOG
                                

2)關閉資料庫,並刪除非活動的日誌 模擬日誌組損壞。                  

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

-----用os命令 刪除日誌組2 ,3兩組
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: 無法開啟日誌組 2 (用於執行緒 1) 的成員
ORA-00312: 聯機日誌 2 執行緒 1: 'F:\APP\YANG\ORADATA\ORACL\REDO02.LOG'

3)在為資料庫新增日誌時 如果和以前的一樣 要先將以前的刪除,之後再新增日誌。否則會報錯。。

SQL> alter database add logfile ('f:\app\yang\oradata\oracl\redo02.log') size 50m;
alter database add logfile ('f:\app\yang\oradata\oracl\redo02.log') size 50m
*
第 1 行出現錯誤:
ORA-01577: 無法新增日誌檔案 'f:\app\yang\oradata\oracl\redo02.log' -
檔案已是資料庫的一部分
SQL> alter database drop logfile group 2;
----刪除後,再新增
資料庫已更改。
SQL> alter database add logfile ('f:\app\yang\oradata\oracl\redo02.log') size 50m;
資料庫已更改。
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-00313: 無法開啟日誌組 3 (用於執行緒 1) 的成員
ORA-00312: 聯機日誌 3 執行緒 1: 'F:\APP\YANG\ORADATA\ORACL\REDO03.LOG'
SQL> alter database drop logfile group 3;
資料庫已更改。
SQL> alter database add logfile ('f:\app\yang\oradata\oracl\redo03.log') size 50m;
資料庫已更改。

3)開啟資料庫
SQL> alter database open;
資料庫已更改。
SQL> select group#,member,type from v$logfile;
    GROUP# MEMBER                                   TYPE                       
---------- ---------------------------------------- -------                    
         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 CURRENT                                       
         2          1          0 UNUSED                                        
         3          1          0 UNUSED                                        
SQL> alter system switch logfile;
系統已更改。
SQL> select group#,members,sequence#,status from v$log;
    GROUP#    MEMBERS  SEQUENCE# STATUS                                        
---------- ---------- ---------- ----------------                              
         1          1          7 ACTIVE                                        
         2          1          8 CURRENT                                       
         3          1          0 UNUSED                                        
SQL> alter system switch logfile;
系統已更改。
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
                                       


 

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

相關文章