oracle block的深入研究
oracle block的深入研究
為了深入的研究oracle block,頭都整大了。
1、建立環境。
connect system/******
create table test (name varchar(10),age number(3));
insert into test values('lee',30);
insert into test values('jhon',57);
2、為了先避免一些實在看不懂的東西出現,所以這時候重啟資料庫。清乾淨BUFFER中的資料。
3、DUMP檔案的資料塊。
SQL> select segment_name,block_id,blocks from dba_extents where segment_name='TE
ST';
SEGMENT_NAME BLOCK_ID BLOCKS
--------------------------------------------------------------------------------
TEST 11721 8
SQL> alter system dump datafile 1 block min 11721 block max 11728;
System altered.
4、看跟蹤檔案:
這裡省略了部分塊,這顯示一個帶資料的塊的內容,請注意,這個塊號是11725,也就是說之前的4個塊,11721到11724是全部沒有資料的,加入的資料也會存在這個塊或者之後的塊了,這是因為這個空間,我配置的是segment space management auto,段空間自動管理,前4個塊是用來放置段空間管理用的。
Start dump data blocks tsn: 9 file#: 8 minblk 11721 maxblk 11728
buffer tsn: 9 rdba: 0x02002dcd (8/11725)
scn: 0x0000.0018d626 seq: 0x01 flg: 0x06 tail: 0xd6260601
frmt: 0x02 chkval: 0xb1d4 type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00000000079C6000 to 0x00000000079C8000
0079C6000 0000A206 02002DCD 0018D626 06010000 [.....-..&.......]
0079C6010 0000B1D4 00000001 0000DCA2 0018BFA1 [................]
0079C6020 00000000 00320002 02002DC9 001E0004 [......2..-......]
0079C6030 000002B3 00800015 00230237 00002001 [........7.#.. ..]
0079C6040 0018D626 002B0008 00000333 0080073E [&.....+.3...>...]
0079C6050 001D028E 00008000 0018B465 00000000 [........e.......]
0079C6060 00000000 00060100 001EFFFF 1F391F57 [............W.9.]
0079C6070 00001F39 1F8E0006 1F781F83 1F621F6D [9.........x.m.b.]
0079C6080 00001F57 00000000 00000000 00000000 [W...............]
0079C6090 00000000 00000000 00000000 00000000 [................]
Repeat 497 times
0079C7FB0 00000000 00000000 2C000000 6A040201 [...........,...j]
0079C7FC0 026B6361 002C3DC1 686A0402 C1026E6F [ack..=,...jhon..]
0079C7FD0 02002C3A 6F686A04 3AC1026E 0402002C [:,...jhon..:,...]
0079C7FE0 6E6F686A 2C3AC102 6A040200 026E6F68 [jhon..:,...jhon.]
0079C7FF0 002C3AC1 656C0302 29C10265 D6260601 [.:,...lee..)..&.]
Block header dump: 0x02002dcd
Object id on Block? Y
seg/obj: 0xdca2 csc: 0x00.18bfa1 itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x2002dc9 ver: 0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0004.01e.000002b3 0x00800015.0237.23 --U- 1 fsc 0x0000.0018d626
0x02 0x0008.02b.00000333 0x0080073e.028e.1d C--- 0 scn 0x0000.0018b465
data_block_dump,data header at 0x79c6064
===============
tsiz: 0x1f98
hsiz: 0x1e
pbl: 0x079c6064
bdba: 0x02002dcd
76543210
flag=--------
ntab=1
nrow=6
frre=-1
fsbo=0x1e
fseo=0x1f57
avsp=0x1f39
tosp=0x1f39
0xe:pti[0] nrow=6 offs=0
0x12:pri[0] offs=0x1f8e
0x14:pri[1] offs=0x1f83
0x16:pri[2] offs=0x1f78
0x18:pri[3] offs=0x1f6d
0x1a:pri[4] offs=0x1f62
0x1c:pri[5] offs=0x1f57
block_row_dump:
tab 0, row 0, @0x1f8e
tl: 10 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 3] 6c 65 65
col 1: [ 2] c1 29
tab 0, row 1, @0x1f83
tl: 11 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 4] 6a 68 6f 6e
col 1: [ 2] c1 3a
tab 0, row 2, @0x1f78
tl: 11 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 4] 6a 68 6f 6e
col 1: [ 2] c1 3a
tab 0, row 3, @0x1f6d
tl: 11 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 4] 6a 68 6f 6e
col 1: [ 2] c1 3a
tab 0, row 4, @0x1f62
tl: 11 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 4] 6a 68 6f 6e
col 1: [ 2] c1 3a
tab 0, row 5, @0x1f57
tl: 11 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 4] 6a 61 63 6b
col 1: [ 2] c1 3d
end_of_block_dump
5、然後,查詢下這個表,確保這個表被儲存到BUFFER中。
6、DUMP出快取記憶體中的BLOCK。
SQL> connect / as sysdba
Connected.
SQL> alter session set events 'immediate trace name set_tsn_p1 level TS#+1';這裡的TS#+1,其實就是上面的tsn: 9+1,就是10.
Session altered.
SQL> alter session set events 'immediate trace name buffer level 0x02002dcd';這裡的0x02002dcd是上面看出來的,就是RDBA,也就是BDBA。
Session altered.
7、兩份跟蹤檔案內容比對,後面的資料部分是一樣的,所以這裡只列舉了頭部分。
從BUFFER中DUMP出來的:
Dump of buffer cache at level 10 for tsn=9, rdba=33566157
BH (000007FF15BE8F48) file#: 8 rdba: 0x02002dcd (8/11725) class: 1 ba: 000007FF15986000
set: 3 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 20
dbwrid: 0 obj: 56482 objn: 56482 tsn: 9 afn: 8
hash: [22fc4e70,22fc4e70] lru: [15be90d8,15be8eb8]
ckptq: [NULL] fileq: [NULL] objq: [15be9148,15be8f28]
st: XCURRENT md: NULL tch: 3
flags: only_sequential_access
LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
buffer tsn: 9 rdba: 0x02002dcd (8/11725)
scn: 0x0000.0018d626 seq: 0x01 flg: 0x06 tail: 0xd6260601
frmt: 0x02 chkval: 0xb1d4 type: 0x06=trans data
從檔案中DUMP出來的:
Start dump data blocks tsn: 9 file#: 8 minblk 11721 maxblk 11728
buffer tsn: 9 rdba: 0x02002dcd (8/11725)
scn: 0x0000.0018d626 seq: 0x01 flg: 0x06 tail: 0xd6260601
frmt: 0x02 chkval: 0xb1d4 type: 0x06=trans data
請仔細比對,BUFFER中,塊頭增加了很多內容,這裡還是分別列舉,具體含義還不清楚:
set: 3
blksize: 8192
bsi: 0
set-flg: 2
pwbcnt: 20
dbwrid: 0 這個似乎是DBWR的程式號。
obj: 56482 這是object_id
objn: 56482 這是object_id
tsn: 9 tablespace的TS號
afn: 8 datafile的檔案號
hash: [22fc4e70,22fc4e70] 資料塊的HASH值
lru: [15be90d8,15be8eb8]
ckptq: [NULL]
fileq: [NULL]
objq: [15be9148,15be8f28]
st: XCURRENT 這個和查詢有關,好像是為了解決查詢和DML併發處理用的,還有一個是CR和READING。
md: NULL
tch: 3
flags: only_sequential_access
LRBA: [0x0.0.0]
HSCN: [0xffff.ffffffff]
HSUB: [65535]
其他的確實不知道了,還在學習中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9606200/viewspace-745697/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入研究Block捕獲外部變數和__block實現原理BloC變數
- oracle dump blockOracleBloC
- oracle block type!OracleBloC
- ORACLE BLOCK DUMPOracleBloC
- oracle hot blockOracleBloC
- Oracle (block clean out) oracle的塊清除OracleBloC
- oracle block phisical address to block#OracleBloC
- oracle 的 BLOCK CHANGE TRACKINGOracleBloC
- Oracle Log Block SizeOracleBloC
- Oracle Find block in ASMOracleBloCASM
- oracle block 格式 (zt)OracleBloC
- Oracle Data block 的物理結構OracleBloC
- Oracle 的 data block研讀(二)OracleBloC
- oracle的塊 db_block_sizeOracleBloC
- 物理備份是以block來區別邏輯備份的(os block或oracle block) ?BloCOracle
- Oracle Block Cleanouts 塊清除OracleBloC
- oracle壞塊Block CorruptionsOracleBloC
- Oracle資料塊blockOracleBloC
- Oracle BBED(block browse and editor)OracleBloC
- 【BLOCK】Oracle 塊管理常用SQLBloCOracleSQL
- Oracle索引分裂(Index Block Split)Oracle索引IndexBloC
- 初識oracle block系列(一)OracleBloC
- Oracle Block Change Tracking功能OracleBloC
- (轉)oracle dump block格式說明OracleBloC
- oracle10g data block structureOracleBloCStruct
- 啟用oracle block change trackingOracleBloC
- oracle corrupt block壞塊處理OracleBloC
- oracle實驗記錄 (block cleanout)OracleBloC
- oracle判斷block corruption的依據是啥?OracleBloC
- Oracle10g 五種不同的block sizeOracleBloC
- RMAN備份效率之-oracle block internal(block 內部結構分解)OracleBloC
- Block學習①--block的本質BloC
- 深入研究JavaScript的Module模式JavaScript模式
- Oracle Data block 的物理結構-體系架構OracleBloC架構
- Oracle效能最佳化之提升block的效率(轉)OracleBloC
- css深入研究CSS
- oracle block資料塊itl小記OracleBloC
- iOS block巢狀block中weakify的使用iOSBloC巢狀