歸檔模式下的日誌檔案丟失的解決方法

wzhalal發表於2013-06-28
前面介紹了非歸檔模式下日誌檔案丟失的解決方法。

下面幾篇文章介紹歸檔模式下的日誌檔案丟失的解決方法。
本篇介紹歸檔模式下非當前聯機日誌檔案丟失的解決方法。
如果日誌檔案已經歸檔,這種情況下恢復日誌檔案和非歸檔模式下沒什麼差別,只需要重建日誌檔案即可。
如果日誌檔案還沒有歸檔,這種情況下重建日誌檔案要帶有UNARCHIVED關鍵字。注意這種情況下會造成歸檔的斷點,需要做一次全備。

SQL> SELECT NAME,OPEN_MODE,LOG_MODE FROM V$DATABASE;
NAME      OPEN_MODE  LOG_MODE
--------- ---------- ------------
TOMSYAN   READ WRITE ARCHIVELOG

SQL> SELECT GROUP#,SEQUENCE#,STATUS,ARCHIVED FROM V$LOG;
    GROUP#  SEQUENCE# STATUS           ARC
---------- ---------- ---------------- ---
         1          2 INACTIVE         YES
         2          3 INACTIVE         YES
         3          4 CURRENT          NO
SQL> SELECT MEMBER FROM V$LOGFILE WHERE GROUP#=1;
MEMBER
--------------------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\REDO01.LOG
SQL> SHUTDOWN IMMEDIATE
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> HOST DEL C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\REDO01.LOG
SQL> STARTUP
ORACLE 例程已經啟動。
Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             247466884 bytes
Database Buffers          356515840 bytes
Redo Buffers                7135232 bytes
資料庫裝載完畢。
ORA-00313: 無法開啟日誌組 1 (用於執行緒 1) 的成員
ORA-00312: 聯機日誌 1 執行緒 1:
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TOMSYAN\REDO01.LOG'

SQL> SELECT GROUP#,SEQUENCE#,STATUS,ARCHIVED FROM V$LOG;
    GROUP#  SEQUENCE# STATUS           ARC
---------- ---------- ---------------- ---
         1          2 INACTIVE         YES
         3          4 CURRENT          NO
         2          3 INACTIVE         YES
 
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
 
資料庫已更改。
 
如果此處的日誌組1還沒有歸檔,要用下面的語句重建日誌檔案
 
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1;
 
這種情況下,別忘了做一次全備。
 
SQL> ALTER DATABASE OPEN;
資料庫已更改。

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

相關文章