Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100622
  • 博文数量: 25
  • 博客积分: 1724
  • 博客等级: 上尉
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-09 10:55
文章分类
文章存档

2014年(1)

2010年(1)

2008年(23)

分类: 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

*** 2008-06-18 09:47:34.031
Start dump data blocks tsn: 0 file#: 1 minblk 28090 maxblk 28090
buffer tsn: 0 rdba: 0x00406dba (1/28090)
scn: 0x0000.000c0a29 seq: 0x01 flg: 0x00 tail: 0x0a290601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump:  0x00406dba
 Object id on Block? Y
 seg/obj: 0x2b1e  csc: 0x00.c0a29  itc: 2  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01
 
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0009.019.000000e5  0x00801ea9.0045.0d  C---    0  scn 0x0000.000b9373
0x02   0x0006.005.000000e0  0x00804605.0051.2c  C---    0  scn 0x0000.000badb9
 
data_block_dump,data header at 0x347105c
===============
tsiz: 0x1fa0
hsiz: 0x26
pbl: 0x0347105c
bdba: 0x00406dba
     76543210
flag=--------
ntab=1
nrow=10
frre=4
fsbo=0x26
fseo=0x1e96
avsp=0x1f56
tosp=0x1f56
0xe:pti[0]    nrow=10    offs=0
0x12:pri[0]    offs=0x1eb6
0x14:pri[1]    offs=0x1eae
0x16:pri[2]    offs=0x1ea6
0x18:pri[3]    offs=0x1e96
0x1a:pri[4]    sfll=5
0x1c:pri[5]    sfll=6
0x1e:pri[6]    sfll=7
0x20:pri[7]    sfll=8
0x22:pri[8]    sfll=9
0x24:pri[9]    sfll=-1
block_row_dump:
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
end_of_block_dump
End dump data blocks tsn: 0 file#: 1 minblk 28090 maxblk 28090

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 这四个值分别对应了四条数据的指针,根据这个指针我们可以找到相应的值。

阅读(1937) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~