http://www.cnblogs.com/gkl0818/archive/2009/03/12/1409803.html
我补充了一些
[@more@]Dump file C:oracleadminORCLudumpORA03560.TRC
Thu Mar 12 15:45:29 2009
ORACLE V8.1.7.0.0 - Production vsnsta=0
vsnsql=e vsnxtr=3
Windows 2000 Version 5.1 Service Pack 2, CPU type 586
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
Windows 2000 Version 5.1 Service Pack 2, CPU type 586
Instance name: orcl
Redo thread mounted by this instance: 1
Oracle process number: 16
Windows thread id: 3560, image: ORACLE.EXE
*** 2009-03-12 15:45:29.687
*** SESSION ID:(17.1166) 2009-03-12 15:45:29.671
Start dump data blocks tsn: 0 file#: 1 minblk 60446 maxblk 60446
buffer tsn: 0 rdba: 0x0040ec1e (1/60446)
-- tsn 是表空间号 rdba是相对数据地址(转成二进制 前十位是相对文件号,后22位是数据块号)
scn: 0x0000.0008d355 seq: 0x03 flg: 0x04 tail: 0xd3550603
--SCN为SCN Base=0008,SCN Wrap=d355,seq:scn的变化序列
--尾区版本号为tail: 0xd3550603(tail=SCN Wrap: d355 + type: 0x06+ seq: 0x03)
frmt: 0x02 chkval: 0x3f39 type: 0x06=trans data
-- frmt: 0x02 代表该BLOC是UNDO BLOCK
--flg:标识: 0x01 new block - zeroed data area
0x02 delayed logging change advanced scn/seq
0x04 check value saved -block xor's to zero
0x08 temporary block
Block header dump: 0x0040ec1e
Object id on Block? Y
seg/obj: 0x60f7 csc: 0x00.8d355 itc: 1 flg: O typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
---seg/obj 对象ID值
--csc(SCN at last Block CleanOut): 0x00.8d355表示最后一次块清除(Block CleanOut)时候的SCN
--itc 表示Number of itl slots 对应v$transaction 中的XINDUSN
Itl Xid Uba Flag Lck Scn/Fsc
0x01 xid: 0x0001.022.00000389 uba: 0x008012f0.0186.16 ---- 3 fsc 0x0000.00000000
---xid = XINDUSN+ XINSLOT+XIDSQN V$transaction中的字段)
--uba = 0x008012f0.UBASQN.UBAREC 前面的一个16进制数可以用来计算得到UBAFILE,UBABLK
--DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(TO_NUMBER('0x008012f0','XXXXXXXXXX'))
--dbms_utility.data_block_address_block(to_number('0x008012f0','xxxxxxxx'))
--Lck 应该是锁定的行数
data_block_dump
===============
tsiz: 0xfb8
hsiz: 0x18
pbl: 0x0e4c6c44
bdba: 0x0040ec1e
flag=-----------
ntab=1
nrow=3
frre=-1
fsbo=0x18
fseo=0xe4a
avsp=0xee9
tosp=0xee9
0xe:pti[0] nrow=3 offs=0
0x12:pri[0] offs=0xec3
0x14:pri[1] offs=0xe88
0x16:pri[2] offs=0xe4a
block_row_dump:
tab 0, row 0, @0xec3
tl: 62 fb: --H-FL-- lb: 0x1 cc: 4
col 0: [10] 50 73 79 63 68 6f 6c 6f 67 79
col 1: [14] 49 72 65 6e 65 20 46 72 69 65 64 6d 61 6e
col 2: [15] 46 75 6c 74 6f 6e 20 48 61 6c 6c 20 31 33 33
col 3: [16] 77 61 eb 56 a4 95 4d 5d a1 25 72 a5 e8 21 8d 5d
tab 0, row 1, @0xe88
tl: 59 fb: --H-FL-- lb: 0x1 cc: 4
col 0: [ 7] 48 69 73 74 6f 72 79
col 1: [11] 4a 6f 68 6e 20 57 68 61 6c 65 6e
col 2: [18] 41 70 70 6c 65 67 61 74 65 20 48 61 6c 6c 20 31 34 32
col 3: [16] 1c 69 7d a9 4c 0c 45 a9 9f bb de 31 79 77 29 76
tab 0, row 2, @0xe4a
tl: 62 fb: --H-FL-- lb: 0x1 cc: 4
col 0: [ 7] 45 6e 67 6c 69 73 68
col 1: [13] 4c 79 6e 6e 20 53 61 75 6e 64 65 72 73
col 2: [19] 42 72 65 61 6b 73 74 6f 6e 65 20 48 61 6c 6c 20 32 30 35
col 3: [16] 26 1d a8 2e d8 c1 41 ed ad 73 6a 31 4d 51 76 94
end_of_block_dump
End dump data blocks tsn: 0 file#: 1 minblk 60446 maxblk 60446
--以下是我写的内容 20090921 19:20
Block header dump: 0x01400014
Object id on Block? Y
seg/obj: 0xb9fd csc: 0x00.95655 itc: 3 flg: E typ: 1 - DATA
brn: 0 bdba: 0x1400011 ver: 0x01 opc: 0
inc: 0 exflg: 0
--itc:3表示下面存在三条记录的合计
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0006.019.00000141 0x00804428.0051.1a ---- 2 fsc 0x0000.00000000
0x02 0x0009.001.0000013f 0x00800495.0069.0f C--- 0 scn 0x0000.00093bde
0x03 0x0005.016.00000140 0x008009ed.006c.09 C--- 0 scn 0x0000.00094dbb
----uba:0x00804428、0x00800495、0x008009ed中计算出来的data_block_number_block(...)表示dba_extents.block_id的范围,可以根据查询出来的block_id+blocks(一次性扩展的块数)来查询出对应的segment_name,例如_SYSSMU6$,_SYSSMU9$,_SYSSMU5$,其中的6,9,5就对应的是xid(0006,0009,0005)也就是xidusn(Undo segment number),这样undo segments和v$transaction就联系上了;Lck锁住的记录行数就存放在对应的undo segment的段、块id中;余下两条没有上锁的记录存放在哪里了呢?同理看一下itl能够知道存放在了undo segments的对应地址block_id中了,那么在事务没有完成之前别的用户查询到先前的数据就是存放在这个地址中的;1、但是记录条数存在核对不上的问题?2、没有上锁的记录需要记录在undo segments中么?3、提交事务测试...
data_block_dump,data header at 0x4ea327c
===============
tsiz: 0x1f80
hsiz: 0x18
pbl: 0x04ea327c
bdba: 0x01400014
76543210
flag=--------
ntab=1
nrow=3
frre=2
fsbo=0x18
fseo=0x1f65
avsp=0x1f56
tosp=0x1f56
0xe:pti[0] nrow=3 offs=0
0x12:pri[0] offs=0x1f78 1f78、1f6f分别代表始末含义?如果是scn则表示15-9月 -09 03.12.37.000000000 下午和15-9月 -09 03.12.37.000000000 下午;很靠近计算出来的数据也没有出现问题
0x14:pri[1] offs=0x1f6f
0x16:pri[2] sfll=-1
block_row_dump:
tab 0, row 0, @0x1f78
tl: 8 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 02参照dump算法计算出来的数字
col 1: [ 1] 31
tab 0, row 1, @0x1f6f
tl: 8 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 03
col 1: [ 1] 62
end_of_block_dump
End dump data blocks tsn: 5 file#: 5 minblk 20 maxblk 20
--20090921 19:50提交事务以后dump的变换
seg/obj: 0xb9fd csc: 0x00.95ef3 itc: 3 flg: E typ: 1 - DATA
brn: 0 bdba: 0x1400011 ver: 0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0006.019.00000141 0x00804428.0051.1a --U-状态改变其余未变 2 fsc 0x0000.00095f91
0x02 0x0009.001.0000013f 0x00800495.0069.0f C--- 0 scn 0x0000.00093bde
0x03 0x0005.016.00000140 0x008009ed.006c.09 C--- 0 scn 0x0000.00094dbb
data_block_dump,data header at 0x4ea327c
===============
tsiz: 0x1f80
hsiz: 0x18
pbl: 0x04ea327c
bdba: 0x01400014
76543210
flag=--------
ntab=1
nrow=3
frre=2
fsbo=0x18
fseo=0x1f65
avsp=0x1f56
tosp=0x1f56
0xe:pti[0] nrow=3 offs=0
0x12:pri[0] offs=0x1f78
0x14:pri[1] offs=0x1f6f
0x16:pri[2] sfll=-1
block_row_dump:
tab 0, row 0, @0x1f78
tl: 8 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 02
col 1: [ 1] 31
tab 0, row 1, @0x1f6f
tl: 8 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [ 2] c1 03
col 1: [ 1] 62
end_of_block_dump
End dump data blocks tsn: 5 file#: 5 minblk 20 maxblk 20
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/450962/viewspace-1027197/ ,如需转载,请注明出处,否则将追究法律责任。