select to_number('000a','XXXXX') ,to_number('02d','XXXXX'),to_number('00000687','XXXXXXXXX') from dual;
TO_NUMBER('000A','XXXXX') TO_NUMBER('02D','XXXXX') TO_NUMBER('00000687','XXXXXXXX
------------------------- ------------------------ ------------------------------
10 45 1671
select * from v$transaction where xidUSN=10 and xidSLOT =45 and xidSQN=1671;
如果定位sql ,
过下面的语句,可以将dump 文件的xid
转化为FLASHBACK_TRANSACTION_QUERY 的xid
可以用来定义sql语句。
select upper(substr(substr('&&xid',3,instr('&&xid','.')-3),3,2)||substr(substr('&&xid',3,instr('&&xid','.')-3),1,2)||substr(lpad (substr('&&xid',instr('&&xid','.')+1,instr('&&xid','.',1,2)- instr('&&xid','.',1,1)-1),4,'0'),3,2)||substr(lpad (substr('&&xid',instr('&&xid','.')+1,instr('&&xid','.',1,2)- instr('&&xid','.',1,1)-1),4,'0'),1,2)||substr(lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),7,2)||substr(lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),5,2)||substr(lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),3,2)||substr(lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),1,2)) from dual;
用法:
SQL> select upper(substr(substr('&&xid',3,instr('&&xid','.')-3),3,2)||substr(sub
str('&&xid',3,instr('&&xid','.')-3),1,2)||substr(lpad (substr('&&xid',instr('&&x
id','.')+1,instr('&&xid','.',1,2)- instr('&&xid','.',1,1)-1),4,'0'),3,2)||substr
(lpad (substr('&&xid',instr('&&xid','.')+1,instr('&&xid','.',1,2)- instr('&&xid'
,'.',1,1)-1),4,'0'),1,2)||substr(lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),
8,'0'),7,2)||substr(lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),5,2)||
substr(lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),3,2)||substr(lpad(s
ubstr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),1,2)) from dual;
输入 xid 的值: 0x000a.02d.00000687
原值 1: select upper(substr(substr('&&xid',3,instr('&&xid','.')-3),3,2)||subs
tr(substr('&&xid',3,instr('&&xid','.')-3),1,2)||substr(lpad (substr('&&xid',inst
r('&&xid','.')+1,instr('&&xid','.',1,2)- instr('&&xid','.',1,1)-1),4,'0'),3,2)||
substr(lpad (substr('&&xid',instr('&&xid','.')+1,instr('&&xid','.',1,2)- instr('
&&xid','.',1,1)-1),4,'0'),1,2)||substr(lpad(substr('&&xid',instr('&&xid','.',1,2
)+1 ),8,'0'),7,2)||substr(lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),
5,2)||substr(lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),3,2)||substr(
lpad(substr('&&xid',instr('&&xid','.',1,2)+1 ),8,'0'),1,2)) from dual
新值 1: select upper(substr(substr('0x000a.02d.00000687',3,instr('0x000a.02d.
00000687','.')-3),3,2)||substr(substr('0x000a.02d.00000687',3,instr('0x000a.02d.
00000687','.')-3),1,2)||substr(lpad (substr('0x000a.02d.00000687',instr('0x000a.
02d.00000687','.')+1,instr('0x000a.02d.00000687','.',1,2)- instr('0x000a.02d.000
00687','.',1,1)-1),4,'0'),3,2)||substr(lpad (substr('0x000a.02d.00000687',instr(
'0x000a.02d.00000687','.')+1,instr('0x000a.02d.00000687','.',1,2)- instr('0x000a
.02d.00000687','.',1,1)-1),4,'0'),1,2)||substr(lpad(substr('0x000a.02d.00000687'
,instr('0x000a.02d.00000687','.',1,2)+1 ),8,'0'),7,2)||substr(lpad(substr('0x000
a.02d.00000687',instr('0x000a.02d.00000687','.',1,2)+1 ),8,'0'),5,2)||substr(lpa
d(substr('0x000a.02d.00000687',instr('0x000a.02d.00000687','.',1,2)+1 ),8,'0'),3
,2)||substr(lpad(substr('0x000a.02d.00000687',instr('0x000a.02d.00000687','.',1,
2)+1 ),8,'0'),1,2)) from dual
UPPER(SUBSTR(SUB
----------------
0A002D0087060000
SELECT /*+ rule */ UNDO_SQL FROM FLASHBACK_TRANSACTION_QUERY
WHERE XID = '0A002D0087060000';
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8135069/viewspace-631590/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8135069/viewspace-631590/