1, 第一個塊(offset=0x0)
0x00 - 0x03: 未知
0x04 - 0x07: 日志文件的塊大小
0x08 - 0x0b: 日志文件的塊數
0x0c - 0x0e: 平台標識串
2, 第二個塊(offset = block_size)
0x00 - 0x03: 日志序列號
0x04 - 0x07: 日志文件塊號
0x08 - 0x0b: 未知
0x0b - 0x0f: 未知
0x10 - 0x13: DBMS軟件版本號
0x14 - 0x17: 日志文件版本號
0x18 - 0x1b: DBID
0x1c - 0x23: DB Name
0x24 - 0x27: Control Sequence
0x28 - 0x2b: 日志文件的塊數
0x2c - 0x2f: 日志文件的塊大小
0x30 - 0x31: 日志組序號
0x32 - 0x33: 文件類型
0x5c - 0x9a: 日志文件說明
0x9b - 0x9b: 未知
0x9c - 0x9e: 下一個可用塊(Next Avaiable Block)
0xa0 - 0xa3: Reset Logs Count
0xa4 - 0xa7: Reset SCN Base
0xa8 - 0xa9: Reset SCN Wrap
0xa4 - 0xb9: Low SCN Number
0xba - 0xbf: Low SCN Time
0xc0 - 0xc5: Next SCN Number
0xc6 - 0xcb: Next SCN Time
3, 第3-n個BLOCK
0x00 - 0x03: 日志序列號
0x04 - 0x07: 日志文件塊號
0x08 - 0x0b: LOG時間
0x0c - 0x0d: 第一條記錄的偏移, 0表示沒有記錄
0x0e - 0x0f: 未知(應當是CHKVAL之類的)
<<日志記錄>>
{
0x00 - 0x03: 日志記錄長度, 加上第一條記錄的偏移為第二條記錄的偏移
0x04 - 0x04: VALID標志
0x05 - 0x05: SubSCN (Oracle 9i, 8i保留)
0x06 - 0x07: SCN Wrap
0x08 - 0x0b: SCN Base
<
{
0x0c - 0x0c: Operation Layer
0x0d - 0x0d: Operation Code
0x0e - 0x0f: Change # CLS
0x10 - 0x11: Change # AFN
0x12 - 0x13: Change # TYPE
0x14 - 0x17: Change # DBA
0x18 - 0x1d: Change # SCN
0x1e - ....: Redo Data
}
}
4, Operation Layer & Operation Code
Layer = 5 (Transaction Undo)
Op Code = 3 (Rollout a transaction begin)
= 4 (Commit transaction/Transaction table update - no undo record)
= 7 (Begin transaction/Transaction table update)
= 8 (Mark transaction as dead)
Layer = 11 (Row Access)
Op Code = 1 Interpret Undo Record
= 2 Insert Row PIEce
= 3 Drop Row PIEce
= 4 Lock Row PIEce
= 5 Update Row PIEce
= 6 Overwrite Row PIEce
= 7 Manipulate First Column
= 8 Change forward address
= 9 Change Cluster key index
= 10 Set key links
= 11 Quick Multi-Insert (Insert ... select ...)
= 12 Quick Multi-Delete
= 13 Toggle block header flags