測試部門反映內網1.105Oracle資料庫服務無法啟動,還是慣例性的開啟alter_<sid>.log檔案,查看裡面的日誌內容:
Fri Nov 11 11:46:09 2011
Errors in file /u01/app/oracle/admin/center/bdump/center_lgwr_3016.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/u02/oradata/center/redo02_1.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
ORA-00312: online log 2 thread 1: '/u02/oradata/center/redo02.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
這段日誌內容明顯說明資料庫啟動時找不到group 2日誌組的記錄檔redo02.log'redo02_1.log,於是:
cd /u02/oradata/center
ls
果真在此目錄下找不到報錯的記錄檔,問題原因查明,進行相關處理:
重做日誌損壞或者誤刪或者丟失,那麼肯定資料庫不能夠進行完全恢複,會丟失當前重做日誌中的交易資料。
恢複方法需要針對重做日誌組丟失的狀況以及當前在資料庫中的狀態而採用不同的方法進行恢複。
首先檢查重做記錄檔狀態,看看報錯的記錄檔的狀態。
SQL> select * from v$log;
SQL> select * from v$logfile;
針對:丟失非活動紀錄檔案的恢複,非活動紀錄檔案指的是丟失的記錄檔組狀態為’INACTIVE',說明該日誌組已經完成檢查點後丟失的記錄檔,
資料庫不會發生資料丟失,但是千萬不能夠忽視,www.bkjia.com因為當日誌切換到該日誌組時會發生錯誤。
主要方法包括方法一、方法二、方法三。
方法一:通過重建重做記錄檔組
直接刪除丟失的重做記錄檔組,但是刪除後必須保證資料庫的重做日誌組數目不能小於2個。
刪除重做記錄檔組:
SQL> alter database drop logfile group 1;
Database altered.
增加重做記錄檔組:
SQL>alter database add logfile group 1('/u01/oradata/orcl/redo1.log','/u01/oradata/orcl/redo01.log') size 500m;
Database altered.
方法二:通過增加重做記錄檔成員以及刪除丟失的記錄檔
在丟失的重做日誌組中增加同樣大小的REDO檔案,然後刪除丟失的MEMBER。
增加重做記錄檔成員:
SQL> alterdatabase add logfile member '/u01/oradata/orcl/redo01.log' to group 1;
Databasealtered.
刪除丟失的記錄檔:
SQL> alterdatabase drop logfile member '/u01/oradata/orcl/redo1.log';
Database altered.
這種方法只適合丟失的檔案組中至少還有一個成員是可用的,如果丟失的記錄檔所屬的檔案組只有這一個檔案,那麼這種方法是不適合的。
在添加記錄檔時會出錯:
SQL> alterdatabase add logfile member '/u01/oradata1/redo1.log' to group 1;
alter databaseadd logfile member '/u01/oradata1/redo01.log' to group 1
*
ERROR at line 1:
ORA-00313: openfailed for members of log group 1 of thread 1
ORA-00312:online log 1 thread 1: '/u01/oradata/orcl/redo01.log'
ORA-27037:unable to obtain file status
Linux Error: 2:No such file or directory
Additionalinformation: 3