将dump文件xid转化为v$transaction xid

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_QUERYxid

可以用来定义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';

from:http://space.itpub.net/8135069/viewspace-631590

你可能感兴趣的:(transaction)