重做日誌管理

wpgy發表於2019-01-17

計算機操作的檔案越大,系統的效率越低,因此,日誌檔案應該儘可能地小,但檔案過小又會導致日誌檔案頻繁切換,引發完全檢查點,導致系統掛起

所謂的重做日誌維護或修復,就是將有問題的重做日誌組或日誌成員刪掉,之後再重建它們。可以操作重做日誌組也可以操作成員,通常建議操作日誌組。

新增日誌組:
SQL> ALTER DATABASE ADD LOGFILE
('/u01/app/oracle/onlinelog/redo_01a.log', '/u02/app/oracle/onlinelog/redo_01b.log')
SIZE 100M;

刪除日誌組:
SQL> ALTER DATABASE DROP LOGFILE GROUP 4;

ASM 應用中為重做日誌組新增新成員:
由於使用 ASM 自動管理檔案,所以只需要指定 ASM 磁碟組,不需要指定檔案路徑和檔名,如果指定具體檔案路徑和檔名也是可以的
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+ASM_RCY' REUSE TO GROUP 1;
如下圖:


online redolog 檔案狀態:
空白:表示該檔案正在使用
stale:表示該檔案中的內容是不完全的
invalid:表示該檔案不可以被訪問
deleted:表示該檔案已不再有用了

刪除日誌成員:
SQL> ALTER DTABASE DROP LOGFILE MEMBER '/u01/app/oracle/onlinelog/redo_01.log';
不能刪除當前組的成員,如果要刪除,應先使用 ALTER SYSTEM SWITCH LOGFILE 命令進行切換;
如果要刪除剛剛加入的狀態為 invalid 的成員,正常的操作方法可能需要發若干個 ALTER SYSTEM SWITCH LOGFILE  命令多次進行切換,要等很久,比較快捷的方法是:先關閉資料庫,在開啟資料庫,這時候就可以順利刪除了。

每個日誌組至少有一個成員才能正常工作

清除 online redo logfile
有時不能用刪除重建的方式來維護日誌組,如:資料庫中只有兩個日誌組或崩潰的日誌檔案屬於當前日誌組。在這種情況下,如果資料庫是開啟的話,由於一個聯機日誌檔案崩潰使得歸檔活動不能正常進行,最終導致資料庫被掛起。
此時可以使用如下命令來重新初始化聯機重做日誌檔案:
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 組號;
如果崩潰的日誌檔案已經不能歸檔(組內所有成員都壞了),可以在以上命令中使用 UNARCHIVED 關鍵詞來清除已崩潰的重做日誌檔案,從而避免對它們進行歸檔,其命令格式如下:
SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 組號;
注:執行了以上命令中的任何一個,都將導致 Oracle 資料庫以前的備份失效,所以接下來應該做一個全備份。

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

相關文章