相关资料中说明事务标识的构成方式为xid=usn.slot.(sqn+1),这三部分组合起来唯一标识系统内的事务。
1,通过xid获取usn/slot/sqn方式如下:
注意:
*字节序问题;
*sqn没有+1
select xid,xidusn,xidslot,xidsqn from v$transaction;
0A001B0034DE0000 10 27 56884
with v as(select '08002A0071CA0000' xid from dual)
select to_number(substr(v.xid,3,2)||substr(v.xid,1,2),'xxxx') usn,
to_number(substr(v.xid,7,2)||substr(v.xid,5,2),'xxxx') slot,
to_number(substr(v.xid,15,6)||substr(v.xid,13,2)||substr(v.xid,11,2)||substr(v.xid,9,2),'xxxxxxxxxx') sqn
from v;
USN SLOT SQN
10 27 56884
2,在v$lock中,使用id1/id2来标识事务。其中:id1的高四字节为回滚段号,低四字节为槽号,id2为序号,分别与v$transaction中XIDUSN, XIDSLOT, XIDSQN对应。
select sid,id1,id2 from v$lock where type='TX';
81 1572909 664
with v as (select 1572909 id1,664 id2 from dual)
sel