ITPub博客

首页 > 数据库 > Oracle > [20241127]如何知道事务是包含dblink的情况.txt

[20241127]如何知道事务是包含dblink的情况.txt

原创 Oracle 作者:lfree 时间:2024-11-27 21:06:08 0 删除 编辑

[20241127]如何知道事务是包含dblink的情况.txt

--//工作需要,我需要知道某个事务里面是否涉及dblink,当简单的sql语句包含dblink时,会同步scn,导致产生小量日志。
--//我需要知道某个事务是否涉及dblink,测试看看。

1.环境:
SCOTT@book01p> @ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

create public database link "loopback"
connect to scott
identified by "book"
using '127.0.0.1/book01p';
--//没有其他主机,使用loopback地址。

2.测试:
--//session 1:
SCOTT@book01p> create table deptx as select * from dept;
Table created.

SCOTT@book01p> select * from deptx@loopback where deptno=20;
    DEPTNO DNAME                          LOC
---------- ------------------------------ -------------
        20 RESEARCH                       DALLAS

--//session 2:
SYS@book01p> @ trans
SYS@book01p> @ pr
==============================
SID                           : 22
SERIAL#                       : 33275
TRANS_USERNAME                : SCOTT
PROGRAM                       : SQLPLUS@CENTTEST (TNS V1-V3)
TADDR                         : 0000000077170488
SES_ADDR                      : 000000007BC6A1C8
USED_UBLK                     : 1
USED_UREC                     : 1
0xFLAG                        :    421603
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
STATUS                        : ACTIVE
STATUS2                       : ACTIVE
START_DATE                    : 2024-11-27 16:30:34
XIDUSN                        : 1
XIDSLOT                       : 13
XIDSQN                        : 1978
XID                           : 01000D00BA070000
PRV_XID                       : 0000000000000000
PTX_XID                       : 0000000000000000
PL/SQL procedure successfully completed.
--//0xFLAG =  421603,感觉从这个标识确定是否包含dblink。

--//session 1:
SCOTT@book01p> commit;
Commit complete.

SCOTT@book01p> update deptx set LOC=lower(loc) where deptno=20;
1 row updated.

--//session 2:
SYS@book01p> @ trans
SYS@book01p> @ pr
==============================
SID                           : 22
SERIAL#                       : 33275
TRANS_USERNAME                : SCOTT
PROGRAM                       : SQLPLUS@CENTTEST (TNS V1-V3)
TADDR                         : 0000000077170488
SES_ADDR                      : 000000007BC6A1C8
USED_UBLK                     : 1
USED_UREC                     : 1
0xFLAG                        :      1E03
STATUS                        : ACTIVE
STATUS2                       : ACTIVE
START_DATE                    : 2024-11-27 16:33:58
XIDUSN                        : 7
XIDSLOT                       : 8
XIDSQN                        : 1989
XID                           : 07000800C5070000
PRV_XID                       : 0000000000000000
PTX_XID                       : 0000000000000000
PL/SQL procedure successfully completed.
--//0xFLAG = 1E03, 是否前面的42可以作为dblink事务标识。

--//session 1:
SCOTT@book01p> select * from deptx@loopback where deptno=20;
    DEPTNO DNAME                          LOC
---------- ------------------------------ -------------
        20 RESEARCH                       dallas

--//session 2:
SYS@book01p> @ pr
==============================
SID                           : 22
SERIAL#                       : 33275
TRANS_USERNAME                : SCOTT
PROGRAM                       : SQLPLUS@CENTTEST (TNS V1-V3)
TADDR                         : 0000000077170488
SES_ADDR                      : 000000007BC6A1C8
USED_UBLK                     : 1
USED_UREC                     : 1
0xFLAG                        :    421E03
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
STATUS                        : ACTIVE
STATUS2                       : ACTIVE
START_DATE                    : 2024-11-27 16:33:58
XIDUSN                        : 7
XIDSLOT                       : 8
XIDSQN                        : 1989
XID                           : 07000800C5070000
PRV_XID                       : 0000000000000000
PTX_XID                       : 0000000000000000
PL/SQL procedure successfully completed.
--//视乎前面42表示dblink事务。

--//简单测试一下,感觉情况就是这样,0xFLAG的前面42标识就是dblink相关事务。
--//有空在11g测试看看。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3051408/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969299