- 爱易网页
-
数据库教程
- oracle的数据块学习兼学习trac资料分析
日期:2014-05-16 浏览次数:20546 次
oracle的数据块学习兼学习trac文件分析
今天学习了oracle的数据块的相关知识,这里再兼谈下trac文件的分析,
1 创建一个表:
SQL> create table block_test
2 (id varchar2(4) primary key,
3 name varchar2(20))
4 tablespace test;
Table created
SQL> insert into block_test values (’0001′,’TOM’);
1 row inserted
SQL> commit;
Commit complete
我们建立了一个数据表block_test ,并向其中插入了一条数据。想要看这个表中的数据是怎么样在oracle中存储的,首先要找到这条数据库存储在哪个数据文件上,哪个数据块中。
查找数据块地址:
SQL> select id,name,rowid from block_test;
ID NAME ROWID
—- ——————– ——————
0001 TOM AAAOJuAANAAAATCAAA
SQL>select dbms_rowid.rowid_relative_fno(’AAAOJuAANAAAATCAAA’) file_num,
dbms_rowid.rowid_block_number(’AAAOJuAANAAAATCAAA’) block_num from dual;
file_num block_num
—————————— ——————————
8 1218
由此得知这条记录存储在数据中的标号为8的数据文件的第2523个块中。
导出data block结构:
SQL> alter system dump datafile 8 block 1218;
System altered
2 这个时候,可以先看下trc文件放在什么地方,
show parameter dump
这里我的是放在oracle\udump下,
按时间顺序找出这个trc文件。
3 注意,这里插一下,我们可以直接打开这个trc文件去看,而不是去用分析工具去分析这个文件,本文最后会再说如何用工具去分析这个trac文件:
打开这个TRAC文件后,发现如下:
Start dump data blocks tsn: 14 file#: 13 minblk 1218 maxblk 1218
buffer tsn: 14 rdba: 0x034004c2 (13/1218)
scn: 0x0000.00d323eb seq: 0x05 flg: 0x06 tail: 0x23eb0605
frmt: 0x02 chkval: 0xc1e1 type: 0x06=trans data
Block header dump: 0x034004c2
Object id on Block? Y
seg/obj: 0xe26e csc: 0x00.d323e2 itc: 2 flg: O typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0004.01a.000031e9 0x008073ae.183a.30 --U- 1 fsc 0x0000.00d323eb
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
data_block_dump,data header at 0x40c025c
===============
tsiz: 0x1fa0
hsiz: 0x14
pbl: 0x040c025c
bdba: 0x034004c2
76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x1f94
avsp=0x1f80
tosp=0x1f80
0xe:pti[0] nrow=1 offs=0
0x12:pri[0] offs=0x1f94
block_row_dump:
tab 0, row 0, @0x1f94
tl: 12 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 4] 30 30 30 31
col 1: [ 3] 54 4f 4d
end_of_block_dump
解析下;
tsn:data block所在表空间序号
file#: data block所在数据文件序号
minblk:dump的开始块号
maxblk:dump的终止块号
rdba:数据块地址
scn:scn号
seq:序列号
tail:保持一致性 lower scn + type + seq
frmt: oracle8以上为2
chkval:可选择的校验值
type:block的类型
itc: itl slots的个数,此时多少个事务在对本data block进行操作
flg: 0=on the freelist
fsl: itl tx freelist slot
fnx: dba of next block on freelist
Itl:interested transaction list index