从undo块dump中查看操作数据的rowid

下面从dump的undo块中截取的undo record

*-----------------------------
* Rec #0x33  slt: 0x01  objn: 120296(0x0001d5e8)  objd: 120296  tblspc: 11(0x0000000b)
*       Layer:  11 (Row)   opc: 1   rci 0x32   
Undo type:  Regular undo   Last buffer split:  No 
Temp Object:  No 
Tablespace Undo:  No 
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo 
op: 0x02  ver: 0x01  
compat bit: 4 (post-11) padding: 1
op: C  uba: 0x00c31bdf.4e1f.32
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x028f97b3  hdba: 0x028f97b2
itli: 2  ispac: 0  maxfr: 4858
tabn: 0 slot: 99(0x63) flag: 0x2c lock: 0 ckix: 9
ncol: 2 nnew: 1 size: 0
col  1: [20]  cc ec bd f2 ca d0 bb e3 b5 ea cd a8 b4 f3 d2 a9 b7 bf 20 20
 
*-----------------------------
* Rec #0x34  slt: 0x01  objn: 120296(0x0001d5e8)  objd: 120296  tblspc: 11(0x0000000b)
………………

objd: 120296       对应ROWID中的DATA_OBJECT_ID#

bdba: 0x028f97b3  对应ROWID中的rfile#,block#

slot: 99(0x63)     对应ROWID中的ROW#

select to_number('028f97b3','xxxxxxxx') from dual; --42964915
select dbms_utility.data_block_address_block(42964915) "block",
 dbms_utility.data_block_address_file(42964915)  "file" from dual;
--1021875   10

通过如下计算:

obj#=120296=11101 010111 101000=29 23 40=d X o,补足成6位base64编码,左边填0,也就是A,结果为AAAdXo

rfile#=10=1010=10=K,补足成3位,得到AAK

block#=1021875=11 111001 011110 110011=3 57 30 51=D 5 e z,补足成6位,得到AAD5ez

row#=99=1 100011=1 35=B j,3位ABj

合起来就是AAAdXoAAKAAD5ezABj

这个也正是我修改的那一行数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值