oracle redo record scn與transaction相關block scn關係小記
在 oracle dump redo系列一,我們發現redo record會記錄scn,這個scn到底是什麼呢
和data block的itl上面的scn有什麼關係嗎?
/***********我們dump下表記錄對應的資料塊*********/
alter system dump datafile 10 block 276635;
/********資料塊的trace******************/
--注意:資料塊的scn是寫在資料塊的頭部,也叫資料塊頭,而非itl上
Block dump from cache:
Dump of buffer cache at level 4 for tsn=8, rdba=42219675
Block dump from disk:
buffer tsn: 8 rdba: 0x0284389b (10/276635)
scn: 0x0000.009bfd97 seq: 0x02 flg: 0x04 tail: 0xfd970602
frmt: 0x02 chkval: 0x7d5a type: 0x06=trans data
/******redo record中的scn***************/
scn: 0x0000.009bfd97 seq: 0x02 flg: 0x04 tail: 0xfd970602
小結:redo logfile中的scn就是表資料塊中的scn,這樣oracle就實時掌握對資料塊修改的實時情況
另一個問題:在redo record中也記錄了對undo header block及undo block的scn,它們的scn我想和上面
同理,也是記錄在undo header block和undo block吧,我們dump看下:
/***************先看undo block********************/
* Rec #0x38 slt: 0x03 objn: 458(0x000001ca) objd: 458 tblspc: 0(0x00000000) -- objd: 458即內部表MON_MODS$
* Layer: 11 (Row) opc: 1 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000Ext idx: 0
flg2: 0
*-----------------------------
uba: 0x00c1bddc.01b5.37 ctl max scn: 0x0000.009abe27 prv tx scn: 0x0000.009acfd9
--這裡還標明是事務開始的scn,所以我理解如果有提交還有提交或結束scn
txn start scn: scn: 0x0000.009bfccb logon user: 0 --這就是undo block的scn,這裡準確來說是undo block 撤消記錄條目的scn,因為每個撤消記錄條目會記錄對於真正資料塊不同的操作,可能會對應不同的資料塊或相同的資料塊多條操作
prev brb: 12624014 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x04 ver: 0x01
compat bit: 4 (post-11) padding: 0
op: L itl: xid: 0x004d.000.00000095 uba: 0x00c0207b.01d5.2a
flg: C--- lkc: 0 scn: 0x0000.009bfcc8
KDO Op code: URP row dependencies Disabled
xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x00400c39 hdba: 0x00400c38
itli: 1 ispac: 0 maxfr: 4863
tabn: 0 slot: 56(0x38) flag: 0x2c lock: 0 ckix: 24
ncol: 7 nnew: 6 size: 0
Vector content:
col 1: [ 3] c2 02 33
col 2: [ 1] 80
col 3: [ 3] c2 02 0d
col 4: [ 7] 78 71 03 17 15 10 06
col 5: [ 1] 80
col 6: [ 1] 80
/***************再看看下redo中的undo block的redo部分********************/
第2個改變向量
CHANGE #2 TYP:0 CLS:82 AFN:3 DBA:0x00c1bddc OBJ:4294967295 SCN:0x0000.009bfccb SEQ:1 OP:5.1 ENC:0 RBL:0 ---這就是redo 中的undo block的scn
ktudb redo: siz: 108 spc: 3154 flg: 0x0012 seq: 0x01b5 rec: 0x39
小結:redo的undo block scn與undo block的undo record的scn一致
---再看看undo header block與redo中的undo header block的redo scn的關係
/*********這是undo header block 的trace/
TRN TBL::
index state cflags wrap# uel scn dba parent-xid nub stmt_num cmt
------------------------------------------------------------------------------------------------
0x03 9 0x00 0x009b 0xffff 0x0000.009bfccc 0x00c1bddc 0x0000.000.00000000 0x00000001 0x00000000 1364042105
/*********這是redo中的undo header block redo部分/
REDO RECORD - Thread:1 RBA: 0x000314.0000d941.0010 LEN: 0x015c VLD: 0x01
SCN: 0x0000.009bfd97 SUBSCN: 2 03/23/2013 20:35:48
CHANGE #1 TYP:0 CLS:81 AFN:3 DBA:0x00c01958 OBJ:4294967295 SCN:0x0000.009bfccc SEQ:1 OP:5.2 ENC:0 RBL:0
ktudh redo: slt: 0x0018 sqn: 0x0000009c flg: 0x0012 siz: 108 fbi: 0
uba: 0x00c1bddc.01b5.39 pxid: 0x0000.000.00000000 --這個uba即undo block對應下面的change #2
小結:redo中的undo header block scn與undo header block的scn是一致的
小結:1,日誌redo會同步把data block和undo header|block的scn完整記錄在redo中
2,data block header scn與undo block scn及undo header block scn是一致(測試中發現)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-756936/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SCN的相關解析
- Oracle SCN相關問題學習與測試Oracle
- SCN號與oracle資料庫恢復的關係Oracle資料庫
- RedoLog Checkpoint 和 SCN關係
- (轉)SCN號與oracle資料庫恢復的關係Oracle資料庫
- SCN與資料庫恢復的關係資料庫
- 【檢視】SMON_SCN_TIME檢視--SCN與時間的對應關係
- SCN, Checkpoint 與 oracle資料庫恢復的關係(final)Oracle資料庫
- 【轉載】SCN 備份與恢復的關係
- oracle 學習總結篇三:SCN號與資料庫關閉的關係Oracle資料庫
- 關於oracle SCN 的討論Oracle
- oracle 學習總結篇三:SCN號與資料庫啟動的關係Oracle資料庫
- SCN與oracle啟動Oracle
- 關於SCN的理解(全面)
- 關於scn的理解 (zt)
- Oracle:SCNOracle
- Oracle scnOracle
- 【SCN】Oracle SCN 詳細介紹Oracle
- oracle中一個事務是如何使用redo的以及redo record和change vector的關係Oracle
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- 【SCN】Oracle推薦scn命令參考Oracle
- 探索Oracle SCNOracle
- oracle的SCNOracle
- Oracle timestamp_to_scn and scn_to_timestampOracle
- ORA-600 [2662] Block SCN is ahead of Current SCN 處理方法 說明BloC
- 關於SCN的總結測試
- 關於SCN HEADROOM 和_external_scn_rejection_threshold_hours 的說明OOM
- ORACLE -詳解SCNOracle
- Oracle SCN詳解Oracle
- Oracle Scn 定義Oracle
- ORACLE scn 機制Oracle
- ORACLE SCN 查詢Oracle
- Oracle中的SCNOracle
- 【聽海日誌】之SCN與OracleOracle
- 關於System Change Number(SCN)的常用操作
- Oracle SCN機制解析 (SCN, checkpoint檢查點) - finalOracle
- Oracle System Change Number (SCN) Number 完全筆記Oracle筆記
- oracle的scn及sequenceOracle