我们可以查看表记录是存放在哪个数据块里,通过以下语句:select dbms_rowid.rowid_block_number(rowid) from tablename,接下来,我们查询当前连接的spid信息.select p.spid,s.username from v$process p inner join v$session s on p.addr=s.paddr
这样我们就可以在udump目录下找到当前连接的trace文件信息了。接下来,对数据块进行dump.alter system dump datafile block .在trace中生成的信息如下。
第一部分如下:
buffer tsn: 0 rdba: 0x0040d9b2 (1/55730)
scn: 0x0000.0005951e seq: 0x02 flg: 0x06 tail: 0x951e0602
frmt: 0x02 chkval: 0xd3e0 type: 0x06=trans data
Block header dump: 0x0040d9b2
rdba代表块号,scn代表块的SCN号,seq,代表在块的状态,一般FF代表块是坏的,一般在offset 0X14的位置,BBED工具就是通功强行修改这
个位置的数据来达到改变块的状态。flg,代表块的标志位。tail用来检查一致性的值,frmg代表块的格式,在oracle 8i以上,一般为02
chkval,数据块的校验位,在db_block_checksum设为true有效。type,代表块的类型。
第二部分:
seg/obj: 0xc0c9 csc: 0x00.58d5a itc: 2 flg: O typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0004.000.00000040 0x008000cc.004e.13 --U- 2 fsc 0x0000.00058d9d
0x02 0x0005.020.00000035 0x008009eb.002f.04 --U- 5 fsc 0x0000.0005951e
seg/boj代表块的对像号。csc代表最后一次block cleanout SCN号,itc代表块的transaction slot最大数
typ代表数据块的类型。itl代表当前对块进行操作的事务编号,xid代表该事务的事务号,UBA代表该事务
对应的undo block address.flg代表事务状态。u代表未提交,c代表提交,T代表活动的。LCK代表事务影响的
行数。FSC代表在事务提交时生成的SCN号。FCL和FNX在auto segment space management总为0