Oracle (block clean out) oracle的塊清除
Clean out有2種: fast commit cleanout
delayed block cleanout
[@more@]delayed block cleanout
1,如果一個事務(transaction)修改不超過10%buffer cache的資料塊時,oracle做的是fast commit cleanout。
2,如果一個事務(transaction)修改的塊超過10% buffer cache,那麼"超過的塊"就執行delayed block cleanout,
3,在事務commit前,修改的資料塊已經寫入硬碟,當發生commit時,oracle並不會把block重新讀入記憶體來做cleanout,這樣成本太高.
而是把cleanout留到下一次對此塊的訪問(select,update)時完成。
2,如果一個事務(transaction)修改的塊超過10% buffer cache,那麼"超過的塊"就執行delayed block cleanout,
3,在事務commit前,修改的資料塊已經寫入硬碟,當發生commit時,oracle並不會把block重新讀入記憶體來做cleanout,這樣成本太高.
而是把cleanout留到下一次對此塊的訪問(select,update)時完成。
下面我們來簡單看一下這兩種情況:
--搭建環境
SQL> show parameter db_cache;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_cache_size big integer 58720256
--只需更改50M/10=5M的資料量就會觸發DELAY CLEAN OUT
SQL> create table t2 (id int ,col1 char(2000),col2 char(2000),col3 char(2000),col4 char(1000));
表已建立。
--1行一個塊,
SQL> insert into t2 select object_id,object_name,'1','1','1' from all_objects where rownum <=1000;
已建立1000行。
SQL> commit;
SQL> select * from (
2 select rownum rn, id,dbms_rowid.rowid_relative_fno(rowid) "file#",dbms_rowid.rowid_block_number(rowid) "block#" from t2 )
3 where rn=1 or rn=1000;
RN ID file# block#
---------- ---------- ---------- ----------
1 7559 8 36
1000 14700 8 1160
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_cache_size big integer 58720256
--只需更改50M/10=5M的資料量就會觸發DELAY CLEAN OUT
SQL> create table t2 (id int ,col1 char(2000),col2 char(2000),col3 char(2000),col4 char(1000));
表已建立。
--1行一個塊,
SQL> insert into t2 select object_id,object_name,'1','1','1' from all_objects where rownum <=1000;
已建立1000行。
SQL> commit;
SQL> select * from (
2 select rownum rn, id,dbms_rowid.rowid_relative_fno(rowid) "file#",dbms_rowid.rowid_block_number(rowid) "block#" from t2 )
3 where rn=1 or rn=1000;
RN ID file# block#
---------- ---------- ---------- ----------
1 7559 8 36
1000 14700 8 1160
--fast clean out 快速塊清除
SQL> update t2 set id=id,col1=col1,col2='c',col3='c',col4='c' where id='7559'; --第36塊
1 ROWS UPDATED
SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubarec from v$transaction;
XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBAREC
-------- ---------- ---------- ---------- ---------- ----------
10 22 339 2 41167 11
SQL> COMMIT;
提交成功
SQL> alter system dump datafile 8 block 36;
系統已更改。
Start dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
buffer tsn: 8 rdba: 0x02000024 (8/36)
scn: 0x0000.000b21db seq: 0x01 flg: 0x00 tail: 0x21db0601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000024
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b21db itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x2000021 ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.02b.00000152 0x0080a0c5.002a.2a C--- 0 scn 0x0000.000b218f
0x02 0x000a.016.00000153 0x0080a0cf.002a.0b ---- 1 fsc 0x0000.00000000
|
|
----這裡的FLAG已經清除
data_block_dump,data header at 0x3171064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03171064
bdba: 0x02000024
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x2 cc: 5
col 0: [ 3] c2 4c 3c
col 1: [2000]
2f 31 30 30 37 36 62 32 33 5f 4f 72 61 43 75 73 74 6f 6d 44 61 74 75 6d 43
6c 6f 73 75 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ... 資料內容部分省略
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
1 ROWS UPDATED
SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubarec from v$transaction;
XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBAREC
-------- ---------- ---------- ---------- ---------- ----------
10 22 339 2 41167 11
SQL> COMMIT;
提交成功
SQL> alter system dump datafile 8 block 36;
系統已更改。
Start dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
buffer tsn: 8 rdba: 0x02000024 (8/36)
scn: 0x0000.000b21db seq: 0x01 flg: 0x00 tail: 0x21db0601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000024
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b21db itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x2000021 ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.02b.00000152 0x0080a0c5.002a.2a C--- 0 scn 0x0000.000b218f
0x02 0x000a.016.00000153 0x0080a0cf.002a.0b ---- 1 fsc 0x0000.00000000
|
|
----這裡的FLAG已經清除
data_block_dump,data header at 0x3171064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03171064
bdba: 0x02000024
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x2 cc: 5
col 0: [ 3] c2 4c 3c
col 1: [2000]
2f 31 30 30 37 36 62 32 33 5f 4f 72 61 43 75 73 74 6f 6d 44 61 74 75 6d 43
6c 6f 73 75 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ... 資料內容部分省略
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
--delay clean out 延時塊清除
SQL> update t2 set id=id,col1=col1,col2='c',col3='c',col4='c'; --8M的更新資料
已更新1000行。
SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubarec from v$transaction;
XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBAREC
---------- ---------- ---------- ---------- ---------- ----------
3 8 470 2 6788 1
SQL> COMMIT;
提交成功
SQL> alter system dump datafile 8 block 36; --大於db_cache_size 10%的塊
系統已更改。
SQL> alter system dump datafile 8 block 1160; --小於db_cache_size 10%的塊
系統已更改。
Start dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
buffer tsn: 8 rdba: 0x02000024 (8/36)
scn: 0x0000.000b2b52 seq: 0x01 flg: 0x02 tail: 0x2b520601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000024
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b21db itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x2000021 ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.02b.00000152 0x0080a0c5.002a.2a C--- 0 scn 0x0000.000b218f
0x02 0x0003.008.000001d6 0x0080129d.0043.01 --U- 1 fsc 0x0000.000b2b52
|
|
----大於10%的塊未被清除
data_block_dump,data header at 0x3321064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03321064
bdba: 0x02000024
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x2 cc: 5
col 0: [ 3] c2 4c 3c
col 1: [2000]
2f 31 30 30 37 36 62 32 33 5f 4f 72 61 43 75 73 74 6f 6d 44 61 74 75 6d 43
6c 6f 73 75 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
,,, ,,,
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
Start dump data blocks tsn: 8 file#: 8 minblk 1160 maxblk 1160
buffer tsn: 8 rdba: 0x02000488 (8/1160)
scn: 0x0000.000b2b5d seq: 0x01 flg: 0x00 tail: 0x2b5d0601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000488
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b2b5d itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x200040a ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.02b.00000152 0x0080a0ce.002a.6a C--- 0 scn 0x0000.000b218f
0x02 0x0003.008.000001d6 0x00801a84.004a.01 C--- 0 scn 0x0000.000b2b52
|
|
----小於10%的塊被清除
data_block_dump,data header at 0x3321064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03321064
bdba: 0x02000488
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x0 cc: 5
col 0: [ 3] c3 02 30
col 1: [2000]
2f 33 39 32 39 37 38 38 39 5f 42 79 74 65 43 6f 6d 70 6f 6e 65 6e 74 52 61
73 74 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 1160 maxblk 1160
--再次訪問這些塊時,會被清除
SQL> set autot on
SQL> select count(*) from t2;
COUNT(*)
----------
1000
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T2'
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
1265 consistent gets
0 physical reads
15600 redo size --產生很多的REDO資訊,用於塊清除
376 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> /
COUNT(*)
----------
1000
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T2'
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
1005 consistent gets
0 physical reads
0 redo size --再訪問就沒有REDO了
376 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
--再來看清除的資料塊資訊
SQL> alter system dump datafile 8 block 36;
系統已更改。
SQL> alter system dump datafile 8 block 1160;
系統已更改。
Start dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
buffer tsn: 8 rdba: 0x02000024 (8/36)
scn: 0x0000.000b3059 seq: 0x01 flg: 0x02 tail: 0x30590601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000024
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b2c2a itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x2000021 ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0008.000.000001d7 0x00800761.003e.01 C--- 1 fsc 0x0000.000b3059
0x02 0x0003.008.000001d6 0x0080129d.0043.01 C--- 0 scn 0x0000.000b2b52
|
|
----大於10%的塊也被清除成功
data_block_dump,data header at 0x3321064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03321064
bdba: 0x02000024
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x0 cc: 5
col 0: [ 3] c2 4c 3c
col 1: [2000]
2f 31 30 30 37 36 62 32 33 5f 4f 72 61 43 75 73 74 6f 6d 44 61 74 75 6d 43
6c 6f 73 75 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
Start dump data blocks tsn: 8 file#: 8 minblk 1160 maxblk 1160
buffer tsn: 8 rdba: 0x02000488 (8/1160)
scn: 0x0000.000b305a seq: 0x01 flg: 0x00 tail: 0x305a0601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000488
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b305a itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x200040a ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0008.000.000001d7 0x00801ec8.0046.01 C--- 0 scn 0x0000.000b3059
0x02 0x0003.008.000001d6 0x00801a84.004a.01 C--- 0 scn 0x0000.000b2b52
|
|
----小於10%的塊不變
data_block_dump,data header at 0x3321064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03321064
bdba: 0x02000488
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x0 cc: 5
col 0: [ 3] c3 02 30
col 1: [2000]
2f 33 39 32 39 37 38 38 39 5f 42 79 74 65 43 6f 6d 70 6f 6e 65 6e 74 52 61
73 74 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 1160 maxblk 1160
已更新1000行。
SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubarec from v$transaction;
XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBAREC
---------- ---------- ---------- ---------- ---------- ----------
3 8 470 2 6788 1
SQL> COMMIT;
提交成功
SQL> alter system dump datafile 8 block 36; --大於db_cache_size 10%的塊
系統已更改。
SQL> alter system dump datafile 8 block 1160; --小於db_cache_size 10%的塊
系統已更改。
Start dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
buffer tsn: 8 rdba: 0x02000024 (8/36)
scn: 0x0000.000b2b52 seq: 0x01 flg: 0x02 tail: 0x2b520601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000024
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b21db itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x2000021 ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.02b.00000152 0x0080a0c5.002a.2a C--- 0 scn 0x0000.000b218f
0x02 0x0003.008.000001d6 0x0080129d.0043.01 --U- 1 fsc 0x0000.000b2b52
|
|
----大於10%的塊未被清除
data_block_dump,data header at 0x3321064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03321064
bdba: 0x02000024
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x2 cc: 5
col 0: [ 3] c2 4c 3c
col 1: [2000]
2f 31 30 30 37 36 62 32 33 5f 4f 72 61 43 75 73 74 6f 6d 44 61 74 75 6d 43
6c 6f 73 75 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
,,, ,,,
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
Start dump data blocks tsn: 8 file#: 8 minblk 1160 maxblk 1160
buffer tsn: 8 rdba: 0x02000488 (8/1160)
scn: 0x0000.000b2b5d seq: 0x01 flg: 0x00 tail: 0x2b5d0601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000488
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b2b5d itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x200040a ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.02b.00000152 0x0080a0ce.002a.6a C--- 0 scn 0x0000.000b218f
0x02 0x0003.008.000001d6 0x00801a84.004a.01 C--- 0 scn 0x0000.000b2b52
|
|
----小於10%的塊被清除
data_block_dump,data header at 0x3321064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03321064
bdba: 0x02000488
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x0 cc: 5
col 0: [ 3] c3 02 30
col 1: [2000]
2f 33 39 32 39 37 38 38 39 5f 42 79 74 65 43 6f 6d 70 6f 6e 65 6e 74 52 61
73 74 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 1160 maxblk 1160
--再次訪問這些塊時,會被清除
SQL> set autot on
SQL> select count(*) from t2;
COUNT(*)
----------
1000
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T2'
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
1265 consistent gets
0 physical reads
15600 redo size --產生很多的REDO資訊,用於塊清除
376 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> /
COUNT(*)
----------
1000
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T2'
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
1005 consistent gets
0 physical reads
0 redo size --再訪問就沒有REDO了
376 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
--再來看清除的資料塊資訊
SQL> alter system dump datafile 8 block 36;
系統已更改。
SQL> alter system dump datafile 8 block 1160;
系統已更改。
Start dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
buffer tsn: 8 rdba: 0x02000024 (8/36)
scn: 0x0000.000b3059 seq: 0x01 flg: 0x02 tail: 0x30590601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000024
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b2c2a itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x2000021 ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0008.000.000001d7 0x00800761.003e.01 C--- 1 fsc 0x0000.000b3059
0x02 0x0003.008.000001d6 0x0080129d.0043.01 C--- 0 scn 0x0000.000b2b52
|
|
----大於10%的塊也被清除成功
data_block_dump,data header at 0x3321064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03321064
bdba: 0x02000024
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x0 cc: 5
col 0: [ 3] c2 4c 3c
col 1: [2000]
2f 31 30 30 37 36 62 32 33 5f 4f 72 61 43 75 73 74 6f 6d 44 61 74 75 6d 43
6c 6f 73 75 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 36 maxblk 36
Start dump data blocks tsn: 8 file#: 8 minblk 1160 maxblk 1160
buffer tsn: 8 rdba: 0x02000488 (8/1160)
scn: 0x0000.000b305a seq: 0x01 flg: 0x00 tail: 0x305a0601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x02000488
Object id on Block? Y
seg/obj: 0x739d csc: 0x00.b305a itc: 2 flg: E typ: 1 - DATA
brn: 0 bdba: 0x200040a ver: 0x01
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0008.000.000001d7 0x00801ec8.0046.01 C--- 0 scn 0x0000.000b3059
0x02 0x0003.008.000001d6 0x00801a84.004a.01 C--- 0 scn 0x0000.000b2b52
|
|
----小於10%的塊不變
data_block_dump,data header at 0x3321064
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x03321064
bdba: 0x02000488
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x42d
avsp=0x419
tosp=0x419
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x42d
block_row_dump:
tab 0, row 0, @0x42d
tl: 7019 fb: --H-FL-- lb: 0x0 cc: 5
col 0: [ 3] c3 02 30
col 1: [2000]
2f 33 39 32 39 37 38 38 39 5f 42 79 74 65 43 6f 6d 70 6f 6e 65 6e 74 52 61
73 74 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 2: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 3: [2000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
col 4: [1000]
63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
... ...
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
end_of_block_dump
End dump data blocks tsn: 8 file#: 8 minblk 1160 maxblk 1160
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/703656/viewspace-1008650/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Block Cleanouts 塊清除OracleBloC
- oracle block cleanout塊清除_延遲塊清除OracleBloC
- oracle 塊延遲清除(delayed block cleanout) 理解OracleBloC
- oracle 塊清除Oracle
- oracle壞塊Block CorruptionsOracleBloC
- Oracle資料塊blockOracleBloC
- oracle的塊 db_block_sizeOracleBloC
- 【BLOCK】Oracle 塊管理常用SQLBloCOracleSQL
- oracle corrupt block壞塊處理OracleBloC
- oracle block資料塊itl小記OracleBloC
- 【BLOCK】Oracle壞塊處理命令參考BloCOracle
- Block Change Tracking (Oracle 塊修改跟蹤)BloCOracle
- oracle block資料塊結構之itcOracleBloC
- oracle block資料塊結構續(一)OracleBloC
- zt_oracle block資料塊精講OracleBloC
- oracle block_size 為非標準塊的時候OracleBloC
- oracle dump blockOracleBloC
- oracle block type!OracleBloC
- ORACLE BLOCK DUMPOracleBloC
- oracle hot blockOracleBloC
- Oracle 塊修改跟蹤 (Block Change Tracking) 說明OracleBloC
- Oracle RMAN備份中對壞塊(corrupt block)的處理OracleBloC
- ORACLE 使用records_per_block降低表資料塊熱塊機率OracleBloC
- oracle block header_tail資料塊頭與資料塊尾OracleBloCHeaderAI
- BBED (Oracle Block Brower and EDitor Tool) :資料塊修復工具OracleBloC
- 使用10203事件來跟蹤oracle塊清除事件Oracle
- oracle 的 BLOCK CHANGE TRACKINGOracleBloC
- oracle block的深入研究OracleBloC
- Oracle Log Block SizeOracleBloC
- Oracle Find block in ASMOracleBloCASM
- oracle block 格式 (zt)OracleBloC
- oracle block phisical address to block#OracleBloC
- git clean清除未跟蹤檔案Git
- Oracle Data block 的物理結構OracleBloC
- Oracle 的 data block研讀(二)OracleBloC
- Oracle BBED(block browse and editor)OracleBloC
- 清除oracle的recyclebin回收站Oracle
- 塊清除的理解