首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle Redo Log 運作機制與管理操作完全手冊

     編輯:Oracle 資料庫基礎

核心概念

  • 目的:記錄所有資料變更,支援實例/介質恢復。
  • Group(組):多個 Member(成員)組成,成員內容完全相同(鏡像)。
  • Member 建議:每組 2-3 個,置於不同物理磁碟/ASM Disk Group。
  • 最少 2 Group,循環覆寫使用。

運作流程

  1. LGWR 背景程序循序寫入 Current Group。
  2. Group 滿 → Log Switch → LGWR 切換至下一 Group。
  3. 觸發 Checkpoint (CKPT):更新資料檔表頭、控制檔 SCN。
  4. 歸檔模式:ARCH 將 Inactive Group 複製至歸檔目的地(ARCH 寫入時 LGWR 不可覆寫該 Group)。

查詢視圖

Group 層級:V$LOG

SELECT group#, sequence#, members, bytes, status, archived FROM v$log;
STATUS含義
CURRENTLGWR 正在寫入
ACTIVE恢復需要、正在歸檔或未歸檔
INACTIVE恢復不需、已歸檔(歸檔模式)
UNUSED新增後從未使用

Member 層級:V$LOGFILE

SELECT * FROM v$logfile;
STATUS含義
(空白)正常使用中
STALE內容不完整(如新增 Member 尚未同步)
INVALID無法存取(路徑錯誤、磁碟故障)
DELETED已標記刪除

管理操作

新增/刪除 Group

-- 新增 Group 4,雙 Member
ALTER DATABASE ADD LOGFILE GROUP 4 
  ('/u01/oradata/orcl/redo04a.log', '/u02/oradata/orcl/redo04b.log') SIZE 100M;

-- 刪除 Group 4(需 INACTIVE/UNUSED、已歸檔)
ALTER DATABASE DROP LOGFILE GROUP 4;

限制:CURRENT/ACTIVE/未歸檔 Group 不可刪。需 ALTER SYSTEM SWITCH LOGFILE 切換後再刪。

新增/刪除 Member

-- 給 Group 1 新增 Member
ALTER DATABASE ADD LOGFILE MEMBER '/u03/oradata/orcl/redo01c.log' TO GROUP 1;

-- 刪除 Member
ALTER DATABASE DROP LOGFILE MEMBER '/u03/oradata/orcl/redo01c.log';

限制:每 Group 至少 1 Member;CURRENT Group Member 不可刪;ACTIVE/未歸檔 Member 不可刪。

常見錯誤處理

ERROR at line 1:
ORA-00362: log member required to form valid logfile in group 4
ORA-01517: log member: '.../redo041.log'

原因:Group 4 其他 Member 狀態異常(INVALID/STALE)。
解決:連續 ALTER SYSTEM SWITCH LOGFILE 幾次,讓 Group 4 狀態轉為正常,再嘗試刪除。

結語

Redo Log 是恢復核心。日常運維重點:監控 V$LOG 狀態流轉、確保 Member 多路徑冗餘、歸檔不延遲、定期檢查 Member 可讀性。變更操作務必在低峰執行,並備份控制檔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved