如何确定db-link session的两端一致性是一个比较麻烦的事情,事实上Oracle本身也需要通过一致性来确定是否处于相同事务。

由于db-link会话即使是查询语句也会在发起端起用global transaction,并且在回滚段中进行标记,这为我们寻找匹配提供了依据。

x$k2gte视图提供了全局性事务,包含了从本地发出以及接收的db-link transaction

SQL> desc x$k2gte
Name                                      Null?    Type
—————————————– ——– ———————-

ADDR                                               RAW(4)
INDX                                               NUMBER
INST_ID                                            NUMBER
K2GTIFMT                                           NUMBER
K2GTITLN                                           NUMBER
K2GTIBLN                                           NUMBER
K2GTITID_ORA                                       VARCHAR2(64)  —全局事务id
K2GTITID_EXT                                       RAW(64)
K2GTIBID                                           RAW(64)
K2GTECNT                                           NUMBER
K2GTDSES                                           RAW(4)   ==> Session address
K2GTDBRN                                           RAW(4)
K2GTDXCB                                           RAW(4)
K2GTERCT                                           NUMBER
K2GTDPCT                                           NUMBER
K2GTDFLG                                           NUMBER
K2GTETYP                                           NUMBER

ADDR    INDX    INST_ID    K2GTIFMT    K2GTITLN    K2GTIBLN    K2GTITID_ORA    K2GTITID_EXT    K2GTIBID    K2GTECNT    K2GTDSES    K2GTDBRN    K2GTDXCB    K2GTERCT    K2GTDPCT    K2GTDFLG    K2GTETYP
1    09E66BE8    0    1    306206    54    2    DB10G.REGRESS.RDBMS.DEV.US.ORACLE.COM.df72d41.9.4.5885    44423130472E524547524553532E5244424D532E4445562E55532E4F5241434C452E434F4D2E646637326434312E392E342E35383835    0000    1    5CB771AC    5BA88CA4    5BA5D184    1    0    0    0

我们在本地库和远程库分别查询通过k2gtitid_ora进行关联就可以获得匹配的Session Address,建立起Session之间的关联。




Related posts

coded by nessus
分享:  DeliciousGReader鲜果豆瓣CSDN网摘
Trackback

2 comments untill now

  1. [Blocked by CFC] Firebird @ 2010-12-07 15:14

    在两端的x$k2gte视图中,使用dblink一端的基表视图每发出一条SQL存在两条同事务ID的记录,这两条记录不同INDX和k2gtibln,这两条记录不同在于一条是真实的客户端发布,另一条这是DBLINK的创建用户信息;而在目标数据库上,存在同事务的一条记录,这条记录记录的是创建dblink所有者的记录信息。这里所说的信息,通常指v$session中的结果。

  2. dynamited@marcus.fashioned” rel=”nofollow”>.…

    ñïàñèáî….

Add your comment now

无觅相关文章插件