Distributed Xaction分析

本文分析了基于db_ora_1765730.trc跟踪文件和awr报告中发现的DistributedXaction锁问题,详细解释了在查询和修改过程中发生的锁类型以及它们如何导致等待现象。通过具体的会话信息和事务信息,揭示了2113和2009两个会话间的锁冲突,并探讨了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结论:分析基于:db_ora_1765730.trc 跟踪文件 & 42212-42213 的awr报告:

BDB数据库创建db的db连接,在查询未完成和修改未完成的时候会发生Distributed Xaction 锁!
1   查询事务的时候添加的锁DX-00000018-00000000mode: S,共享模式
2   修改事务的时候添加的锁DX-00000018-00000000req: X,非共享模式
3   数据库的等待是由于事务的挣用 TX-0093000C-001B2A7C:该挣用时间很短,和持有的dx锁的时间长短没关系,所有看到ora check 看到的ctime 时间很短
4***awr报告发现enq: DX - contention,inactive transaction branch,应该由于以上问题引起的,数据库现在状态相对不够繁忙,如果dx表现明显,cpu会很高!如果发现大量挣用,性能会有问题。
5   怀疑2113会话是引起等待的原因,所有检查2113会话,确认其是否正常。


#### 电商节点4 分布式事务出现现象:
HOLD_SID WAIT_SID TYPE                 HOLD         REQUEST             ID1        ID2      CTIME
-------- -------- -------------------- ------------ ------------ ---------- ---------- ----------
    2113     2009 Distributed Xaction  Share        Exclusive            24          0          3
    
#### 回话信息:
  SID     S# SPID         USERNAME   MACHINE              EVENT                          P123                 WT SQL_ID
----- ------ ------------ ---------- -------------------- ------------------------------ ------------------ ---- ------------------
 2113  63585 1143192      BDB_dbE datawaredb1          SQL*Net more data to client    1413697536/1986/0     0 fjv88byabsqmg                         
 2009   2776 1184022      BDB_dbE datawaredb1          enq: DX - contention           1146617862/24/0       0 c7x2vxncxtsjd    
 
#### 他们之间DX 锁:
      ##########2113 的信息:请求模式mode: S,对电商数据库仅仅查询的操作。
      ----------------------------------------
      SO: 70000030a5d1818, type: 5, owner: 70000030b3ae2f8, flag: INIT/-/-/0x00
      (enqueue) DX-00000018-00000000 DID: 0004-0086-00046CE6
      lv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  res_flag: 0x2
      res: 0x70000030b4a98b8, mode: S, lock_flag: 0x0    #########  资源名称
      own: 0x70000030b3ae2f8, sess: 0x70000030b3ae2f8, proc: 0x70000030cb77c48, prv: 0x70000030b4a98c8
      ---------------------------------------- 
      
      #########2009 的信息:请求模式req: X:对电商数据库做更新操作(验证可)
      ----------------------------------------
      SO: 70000030a5cff90, type: 5, owner: 70000030b3689d8, flag: INIT/-/-/0x00
      (enqueue) DX-00000018-00000000 DID: 0004-00B3-00024761
      lv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  res_flag: 0x2
      res: 0x70000030b4a98b8, req: X, lock_flag: 0x0     ############################# 资源名称 更新锁
      own: 0x70000030b3689d8, sess: 0x70000030b3689d8, proc: 0x70000030fb8eea0, prv: 0x70000030b4a98d8
      ----------------------------------------


####分布式事务:


######2113 事务信息:
      ----------------------------------------
      SO: 7000002fd25f8f8, type: 42, owner: 70000030b3ae2f8, flag: INIT/-/-/0x00
      (branch) trn = 0x700000300ed9320, flg = 0x00, state = 0x00 bno=1 ser=9 evt=2390544
       creator = 0x70000030b3ae2f8 uid = 0x51 serial# = 63585 ttl = 0x0 dtm = 0x0
       2PCrole = (nch = 0x0 flg = 0x0)
       gti: 0xBDB.8195b2aa.19.11.37167399 bid: 0x444344425B31392E31312E33373136373339395D5B312E345D
        ----------------------------------------
        SO: 700000300ed9320, type: 40, owner: 7000002fd25f8f8, flag: INIT/-/-/0x00
        (trans) flg = 0x420001, flg2 = 0x4080000, prx = 0x0, ros = 2147483647 bsn = 0x52 bndsn = 0x52 spn = 0x14ad3
        efd = 3
        DID: 0004-0086-00044A57
        parent xid: 0x0000.000.00000000
        env: (scn: 0x0000.00000000  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: xid: 0x0000.000.00000000  scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
        cev: (spc = 0  arsp = 0  ubk tsn: 0 rdba: 0x00000000  useg tsn: 0 rdba: 0x00000000
              hwm uba: 0x00000000.0000.00  col uba: 0x00000000.0000.00
              num bl: 0 bk list: 0x0)
              cr opc: 0x0 spc: 0 uba: 0x00000000.0000.00
        (gtrid 7000002fcc10558) BDB.8195b2aa.19.11.37167399  ###远程事务信息db名称+事务信息
          #branches = 3, type = 0x2
          branches     =  7000002fd25f8f8, 7000002fd25fa38, 7000002fd25fcb8
          transactions =  700000300ed9320, 700000300ed9320, 700000300ed9320
         branch#0 #refs = 3, #prep'd = 0, flags = 0x0, npi = N
         branch#1 #refs = 3, #prep'd = 0, flags = 0x0, npi = N
         branch#2 #refs = 3, #prep'd = 0, flags = 0x0, npi = N
        (enqueue) TX-0093000C-001B2A7C DID: 0004-0060-000204F0   # 事务锁挣用
        lv: 18 c3 ed 7d 09 5d a5 58 00 00 00 00 00 00 00 00  res_flag: 0x45
        res: 0x70000030b4e0d58, lock_flag: 0x0
        own: 0x70000030a353358, sess: 0x70000030a353358, prv: 0x700000300ed9368
        slk: 0x0
         xga: 0x0, heap: UGA
        Trans IMU st: 0 Pool index 65535, Redo pool 0x700000300ed99f8, Undo pool 0x700000300ed9ae0
        Redo pool range [0x7000002d45f6708 0x7000002d45f6708 0x7000002d45f8f08]
        Undo pool range [0x7000002d45f3f08 0x7000002d45f3f08 0x7000002d45f6708]
      ----------------------------------------


######2009  事务信息:
      ----------------------------------------
      SO: 7000002fd25fa38, type: 42, owner: 70000030b3689d8, flag: INIT/-/-/0x00
      (branch) trn = 0x700000300ed9320, flg = 0x00, state = 0x00 bno=2 ser=10 evt=2390545
       creator = 0x70000030b3689d8 uid = 0x51 serial# = 2776 ttl = 0x0 dtm = 0x0
       2PCrole = (nch = 0x0 flg = 0x0)
       gti: 0xBDB.8195b2aa.19.11.37167399 bid: 0x444344425B31392E31312E33373136373339395D5B312E335D
       branch of
          ----------------------------------------
          SO: 700000300ed9320, type: 40, owner: 7000002fd25f8f8, flag: INIT/-/-/0x00
          (trans) flg = 0x420001, flg2 = 0x4080000, prx = 0x0, ros = 2147483647 bsn = 0x52 bndsn = 0x52 spn = 0x14ad3
          efd = 3
          DID: 0004-0086-00044A57
          parent xid: 0x0000.000.00000000
          env: (scn: 0x0000.00000000  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: xid: 0x0000.000.00000000  scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
          cev: (spc = 0  arsp = 0  ubk tsn: 0 rdba: 0x00000000  useg tsn: 0 rdba: 0x00000000
                hwm uba: 0x00000000.0000.00  col uba: 0x00000000.0000.00
                num bl: 0 bk list: 0x0)
                cr opc: 0x0 spc: 0 uba: 0x00000000.0000.00
          (gtrid 7000002fcc10558) BDB.8195b2aa.19.11.37167399      ###远程事务信息db名称+事务信息
            #branches = 3, type = 0x2
            branches     =  7000002fd25f8f8, 7000002fd25fa38, 7000002fd25fcb8
            transactions =  700000300ed9320, 700000300ed9320, 700000300ed9320
           branch#0 #refs = 3, #prep'd = 0, flags = 0x0, npi = N
           branch#1 #refs = 3, #prep'd = 0, flags = 0x0, npi = N
           branch#2 #refs = 3, #prep'd = 0, flags = 0x0, npi = N
          (enqueue) TX-0093000C-001B2A7C DID: 0004-0060-000204F0   # 事务锁挣用
          lv: 18 c3 ed 7d 09 5d a5 58 00 00 00 00 00 00 00 00  res_flag: 0x45
          res: 0x70000030b4e0d58, lock_flag: 0x0
          own: 0x70000030a353358, sess: 0x70000030a353358, prv: 0x700000300ed9368
          slk: 0x0
           xga: 0x0, heap: UGA
          Trans IMU st: 0 Pool index 65535, Redo pool 0x700000300ed99f8, Undo pool 0x700000300ed9ae0
          Redo pool range [0x7000002d45f6708 0x7000002d45f6708 0x7000002d45f8f08]
          Undo pool range [0x7000002d45f3f08 0x7000002d45f3f08 0x7000002d45f6708]
          ----------------------------------------  
  
######## 应该是等待关系信息:


#### 2113
(enqueue) TX-0093000C-001B2A7C DID: 0004-0060-000204F0
 lv: 18 c3 ed 7d 09 5d a5 58 00 00 00 00 00 00 00 00  res_flag: 0x45
 res: 0x70000030b4e0d58, lock_flag: 0x0
 own: 0x70000030a353358, sess: 0x70000030a353358, prv: 0x700000300ed9368
 slk: 0x0
  xga: 0x0, heap: UGA
 Trans IMU st: 0 Pool index 65535, Redo pool 0x700000300ed99f8, Undo pool 0x700000300ed9ae0
 Redo pool range [0x7000002d45f6708 0x7000002d45f6708 0x7000002d45f8f08]
 Undo pool range [0x7000002d45f3f08 0x7000002d45f3f08 0x7000002d45f6708]




####2009
(enqueue) TX-0093000C-001B2A7C DID: 0004-0060-000204F0    
 lv: 18 c3 ed 7d 09 5d a5 58 00 00 00 00 00 00 00 00  res_flag: 0x45
 res: 0x70000030b4e0d58, lock_flag: 0x0
 own: 0x70000030a353358, sess: 0x70000030a353358, prv: 0x700000300ed9368
 slk: 0x0
  xga: 0x0, heap: UGA
 Trans IMU st: 0 Pool index 65535, Redo pool 0x700000300ed99f8, Undo pool 0x700000300ed9ae0
 Redo pool range [0x7000002d45f6708 0x7000002d45f6708 0x7000002d45f8f08]
 Undo pool range [0x7000002d45f3f08 0x7000002d45f3f08 0x7000002d45f6708]
 
 
##################该事务锁同时被他占用。
    SO: 70000030a296910, type: 4, owner: 70000030cb87068, flag: INIT/-/-/0x00
    (session) sid: 1724 trans: 700000300ed9320, creator: 70000030cb87068, flag: (41) USR/- -/-/-/-/-/-
              DID: 0004-0086-00044A57, short-term DID: 0004-00C4-00005B8F
              txn branch: 7000002fd25fcb8
              oct: 0, prv: 0, sql: 0, psql: 7000002d4a19830, user: 81/BDB_dbENTER
    service name: pub
    O/S info: user: yimx, term: , ospid: 17079, machine: datawaredb1
 
我dump 两份系统状态,该事务锁在不断的变化。。。 


#############################################################################################################
我的测试实验环境:
d10g1: 
   dblink:d11g
   sender:a4 表dba_obects的多倍复制
d11g
   dblink:d10g
   sender:
  
对d11g数据库:dump d10g1 系统状态发现:
   sender用户:
   create table a11 as select * from a4@d10g;  事务未有完成时候发现:
        ----------------------------------------
        SO: 0x82c3447c, type: 5, owner: 0x8371dd68, flag: INIT/-/-/0x00
        (enqueue) DX-00000017-00000000 DID: 0001-0015-00000078
        lv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  res_flag: 0x2
        mode: S, lock_flag: 0x0, lock: 0x82c34490, res: 0x82c6f85c                 ######   mode: S, 
        own: 0x8371dd68, sess: 0x8371dd68, proc: 0x8362ff54, prv: 0x82c6f864
        ----------------------------------------
   delete from from a4@d10g;事务未有完成时候发现:
        ----------------------------------------
        SO: 0x82c343b4, type: 5, owner: 0x8371b5a8, flag: INIT/-/-/0x00
        (enqueue) DX-00000011-00000000 DID: 0001-001A-0002FFBE          
        lv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  res_flag: 0x2
        mode: X, lock_flag: 0x0, lock: 0x82c343c8, res: 0x82c6d43c       ################   mode: X
        own: 0x8371b5a8, sess: 0x8371b5a8, proc: 0x83631c28, prv: 0x82c6d444
        ----------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值