概述
Redo Log 是 Oracle 恢復機制的核心,採用區塊式儲存。本文詳細記錄各區塊的偏移量、欄位含義,供核心診斷與工具開發參考。
第 1 區塊
| 偏移量 | 長度 | 說明 |
| 0x00-0x03 | 4 bytes | 未知 |
| 0x04-0x07 | 4 bytes | 日誌檔案區塊大小 |
| 0x08-0x0B | 4 bytes | 日誌檔案區塊總數 |
| 0x0C-0x0E | 3 bytes | 平台識別字串 |
第 2 區塊
| 偏移量 | 長度 | 說明 |
| 0x00-0x03 | 4 bytes | 日誌序列號 |
| 0x04-0x07 | 4 bytes | 日誌檔案區塊號 |
| 0x08-0x0B | 4 bytes | 未知 |
| 0x0C-0x0F | 4 bytes | 未知 |
| 0x10-0x13 | 4 bytes | DBMS 軟體版本號 |
| 0x14-0x17 | 4 bytes | 日誌檔案版本號 |
| 0x18-0x1B | 4 bytes | DBID |
| 0x1C-0x23 | 8 bytes | DB Name |
| 0x24-0x27 | 4 bytes | Control Sequence |
| 0x28-0x2B | 4 bytes | 日誌檔案區塊數 |
| 0x2C-0x2F | 4 bytes | 日誌檔案區塊大小 |
| 0x30-0x31 | 2 bytes | 日誌組序號 |
| 0x32-0x33 | 2 bytes | 檔案類型 |
| 0x5C-0x9A | 63 bytes | 日誌檔案描述 |
| 0x9B | 1 byte | 未知 |
| 0x9C-0x9E | 3 bytes | 下一個可用區塊 |
| 0xA0-0xA3 | 4 bytes | Reset Logs Count |
| 0xA4-0xA7 | 4 bytes | Reset SCN Base |
| 0xA8-0xA9 | 2 bytes | Reset SCN Wrap |
| 0xA4-0xB9 | 22 bytes | Low SCN Number |
| 0xBA-0xBF | 6 bytes | Low SCN Time |
| 0xC0-0xC5 | 6 bytes | Next SCN Number |
| 0xC6-0xCB | 6 bytes | Next SCN Time |
第 3~N 區塊
| 偏移量 | 長度 | 說明 |
| 0x00-0x03 | 4 bytes | 日誌序列號 |
| 0x04-0x07 | 4 bytes | 日誌檔案區塊號 |
| 0x08-0x0B | 4 bytes | LOG 時間 |
| 0x0C-0x0D | 2 bytes | 第一筆記錄偏移量(0 表示無記錄) |
| 0x0E-0x0F | 2 bytes | 未知(推測為 CHKVAL) |
日誌記錄結構
| 偏移量 | 長度 | 說明 |
| 0x00-0x03 | 4 bytes | 記錄長度(含偏移量,用於計算下一筆偏移) |
| 0x04 | 1 byte | VALID 標誌 |
| 0x05 | 1 byte | SubSCN(9i/8i 保留) |
| 0x06-0x07 | 2 bytes | SCN Wrap |
| 0x08-0x0B | 4 bytes | SCN Base |
CHANGE 向量
| 偏移量 | 長度 | 說明 |
| 0x0C | 1 byte | Operation Layer |
| 0x0D | 1 byte | Operation Code |
| 0x0E-0x0F | 2 bytes | Change # CLS |
| 0x10-0x11 | 2 bytes | Change # AFN |
| 0x12-0x13 | 2 bytes | Change # TYPE |
| 0x14-0x17 | 4 bytes | Change # DBA |
| 0x18-0x1D | 6 bytes | Change # SCN |
| 0x1E-... | 變動 | Redo Data |
Operation Layer & Code 對照表
Layer 5: Transaction Undo
- Op Code 3: Rollout a transaction begin
- Op Code 4: Commit transaction / Transaction table update - no undo record
- Op Code 7: Begin transaction / Transaction table update
- Op Code 8: Mark transaction as dead
Layer 11: Row Access
- Op Code 1: Interpret Undo Record
- Op Code 2: Insert Row Piece
- Op Code 3: Drop Row Piece
- Op Code 4: Lock Row Piece
- Op Code 5: Update Row Piece
- Op Code 6: Overwrite Row Piece
- Op Code 7: Manipulate First Column
- Op Code 8: Change forward address
- Op Code 9: Change Cluster key index
- Op Code 10: Set key links
- Op Code 11: Quick Multi-Insert (Insert ... SELECT ...)
- Op Code 12: Quick Multi-Delete
- Op Code 13: Toggle block header flags
應用場景
此結構資訊適用於:
- 自製 Log Miner 類工具解析 Redo
- 損壞 Redo Log 手工恢復
- 核心層級效能分析與追蹤