Oracle Log 的格式资料整理
2024-08-29 13:37:02
供稿:网友
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