2.一次对block的dump过程:
# m4 b& u( l: Y' ~ PHP code:
% D& K b' }" f7 Z SQL> create table t9 (a varchar(10));, c. T5 t9 e9 U
Table created.9 a+ s9 B, P/ K B' U% y0 x3 I
SQL> insert into t9 values('a');
' i; J7 v; D8 K- D6 z8 y' Y# W 1 row created.
* q9 X+ {* w& E* t+ m SQL> commit;# [" h3 p1 K, K" N1 `! }
Commit complete.
* l$ K6 ^$ D/ ]/ ^1 R r SQL> set serveroutput on( Y* Q2 o! q* M
SQL> exec show_space('T9');
- J; Y* h/ \: C/ N$ Z Free Blocks.............................13 n/ W7 m2 o, p7 P& i
Total Blocks............................8* n1 M9 y( V( _ p0 r
Total Bytes.............................655368 G: l* ]# w/ n4 y
Unused Blocks...........................6$ v h' I/ ^: @! t9 L
Unused Bytes............................49152/ |& y: K0 Q) K1 w( N
Last Used Ext FileId....................31 {+ s% A( T' ]5 d& z, f
Last Used Ext BlockId...................1217 P' s5 t* N# \) R6 n0 ?
Last Used Block.........................2
0 h1 V/ ?7 o, X1 l2 C) q5 ? PL/SQL procedure successfully completed.
& @, i* u$ d* v SQL> alter system dump datafile 3 block 122;
; E* F5 i: @. J/ Y System altered.# x7 i0 I3 b# e8 d: e6 t4 U
SQL> select * from v$tablespace;+ H4 A/ z: m% B6 R) A
TS# NAME INC
3 U& [4 U( k7 V! J$ z! k ---------- ------------------------------ ---
# S! e- O$ ]: ^6 I( Q 0 SYSTEM YES
% w1 @; v( \2 {/ R2 Y9 Y3 D) p 1 UNDOTBS1 YES; D9 c! R2 f S. o5 e
8 USERS YES
* r0 y5 I' h: f 18 TEMP1
. u8 I* k* ]& _" V Trace 文件:; b! {) V. V; P) z
*** 2004-07-25 15:48:01.000* B5 t. T+ c- x ?' X6 O( F x8 \
Start dump data blocks tsn: 8 file#: 3 minblk 122 maxblk 122! J( v. c& U9 L' G9 N) y% E4 F
buffer tsn: 8 rdba: 0x00c0007a (3/122), U7 \% j$ h6 j& v5 S1 N
scn: 0x0000.0068d716 seq: 0x01 flg: 0x02 tail: 0xd7160601
- a( t% D/ C+ K8 T: H frmt: 0x02 chkval: 0x0000 type: 0x06=trans data# ^, a% _7 v1 ]; \! A
Block header dump: 0x00c0007a
- }: u" n i) b; ~# o8 [) \9 c Object id on Block? Y
$ u G% K2 j) n* L seg/obj: 0x806d csc: 0x00.68d714 itc: 2 flg: O typ: 1 - DATA
. Q6 c5 N' e9 ` fsl: 0 fnx: 0x0 ver: 0x01
6 z5 o B, k+ e: Y/ J+ I1 e Itl Xid Uba Flag Lck Scn/Fsc
) C2 O1 K0 ~2 @ 0x01 0x0004.00b.00000fac 0x00801885.008c.56 --U- 1 fsc 0x0000.0068d716& F5 ?- ^+ K+ o m: u) g: `8 }
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000, E$ a6 `6 ]0 g" `( x, I" {
data_block_dump,data header at 0x552105c" h7 t- h/ T* F/ R" e: {; p3 a
===============# p; m- J1 h$ N, U- \7 ]( I
tsiz: 0x1fa0
0 q0 a: ^1 S5 q4 g" Y hsiz: 0x14
; b5 K5 s/ x O" |1 ] M pbl: 0x0552105c
" K i1 C. Y# X. B- H* C) F bdba: 0x00c0007a
$ U1 Z7 h& d) v7 l }& r 765432100 P/ R0 ?4 B, v
flag=--------2 H4 l8 V( k6 k
ntab=1+ q) e: T* P( l8 K
nrow=1$ D5 M, B* p, y0 J: J8 M
frre=-1
0 x7 Q. \* m n fsbo=0x14
6 D/ O$ l2 F9 o2 a, Y, z$ C: K fseo=0x1f9b" w4 n, {, m) w5 E
avsp=0x1f83
( j0 Z; H* c; W+ c1 l tosp=0x1f83' ^' h* ^$ |/ L0 O
0xe:pti[0] nrow=1 offs=0
3 n, K$ c3 p1 u" [% ^ 0x12:pri[0] offs=0x1f9b
: W1 P8 S5 C- |; ~) J: } block_row_dump:% O9 _1 |4 ]0 N0 d" \, B# J
tab 0, row 0, @0x1f9b
% |) Y$ ~! y# {9 `: f8 F9 ]7 A6 D3 O tl: 5 fb: --H-FL-- lb: 0x1 cc: 1
( {5 j3 V: w/ c+ [ col 0: [ 1] 61
& ^& W4 d; l5 m/ M2 R* K end_of_block_dump
/ r3 j# ?3 Y. ?% [ End dump data blocks tsn: 8 file#: 3 minblk 122 maxblk 122. P: S0 ]; H2 \ G4 ^- G9 K
3.先介绍数据块中搜罗的3种头信息:0 P! ^8 C! S& O% [6 Y
首先,数据块是经由过程data block buffer cache完成读和写操作的,所以它供给了20bytes的Cache Header和4bytes的 Tail给Cache,用来篡夺和打点。. Z8 J! O+ @" Y& K( X8 k1 J
第2部门是为Transaction层供给的Header信息。它一共占有了48bytes,搜罗24bytes的节制信息,和一系列的Interested Transaction Slot (ITS)。5 O5 Y5 I* A+ m
剩下的部门都叫Data Area,用来存储用户数据。Data Area也搜罗data header,和row data及残剩空间。可是Cluster blocks, table blocks, index block的data header,row data结构是不不异的,这里首要介绍table blocks. |