全部博文(25)
分类: Oracle
2008-06-23 09:20:49
这一节通过转储trace文件来看前几节操作的块的详细内容。
转储块数据,使用这条命令
alter system dump datafile 12 block 28090;
系统已更改。
在相应的目录下找出trace文件
一般trace文件都存放在$ORACLE_BASE/admin/SID/udump目录下,这里我们找到刚刚转储的文件o9i_ora_300.trc
打开这个文件,列出部分内容:
Dump file c:\oracle\admin\o9i\udump\o9i_ora_300.trc
Wed Jun 18 09:12:17 2008
ORACLE V9.2.0.4.0 - Production vsnsta=0
vsnsql=12 vsnxtr=3
Windows 2000 Version 5.1 Service Pack 2, CPU type 586
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
Windows 2000 Version 5.1 Service Pack 2, CPU type 586
Instance name: o9i
Redo thread mounted by this instance: 1
Oracle process number: 10
Windows thread id: 300, image: ORACLE.EXE
tsiz: 0x1fa0 块大小,转为10进制是8096
hsiz: 0x26 头大小,转为10进制是38
tab 0, row 0, @0x1eb6
tl: 8 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 02
col 1: [ 1] 32
tab 0, row 1, @0x1eae
tl: 8 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 02
col 1: [ 1] 32
tab 0, row 2, @0x1ea6
tl: 8 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 02
col 1: [ 1] 32
tab 0, row 3, @0x1e96
tl: 8 fb: --H-FL-- lb: 0x0 cc: 2
col 0: [ 2] c1 02
col 1: [ 1] 33
这写数据表示了每条记录的每个列内数据 ,红色字体标识出来的全部一样,说明这四行数据完全相同,只有第四条记录(蓝色标识)的那一列不同,为什么呢?
查询表中的数据确定答案
select * from test.t;
A1 A2
---------- ----------
1 2
1 2
1 2
1 3
相信看了这个查询结果,我们都能明白了,前3行数据完全一样,第四行数据中第2列与前三行不同。
这里的c1 02 代表 1,32代表2,33代表3。
再来说说黄色字体,表示当前块的第一个tab,四行数据,同时标识出了当前这行数据的指针。
@0x1eb6,@0x1eae,@0x1ea6,@0x1e96;7862,7854,7846,7830 这四个值分别对应了四条数据的指针,根据这个指针我们可以找到相应的值。