zoukankan      html  css  js  c++  java
  • Oracle-dblink使用不当


    1. 故障现象

    RAC集群上统计到会话数量相差非常大,而且每个数据库服务器节点发起的会话竟然高达400+。

    -- 查询会话数信息
    select /*+ rule */  inst_id,count(*) cnt from gv$session group by inst_id;
    
    select /*+ rule */  inst_id,username,machine,count(*) cnt from gv$session
    group by inst_id,username,machine
    order by 4;


    2. 分析原因

    1) 检查这些会话存在一个共同的地方是使用dblink,于是检查dblink的信息,发现使用dblink连接时首选了上面的一个连接串的实例,尽管加入load_balance参数也时,并不是预期的结果。

    SELECT /*+ ORDERED */
     S.KSUSEMNM "O_HOSTNAME",S.KSUSEPID "O_SPID",--操作dblink用户信息
     G.K2GTITID_ORA "O_TXID",
     S.INDX "S_SID",S.KSUSESER "S_SERIAL#",--dblink session信息
     DECODE(BITAND(KSUSEIDL, 11),
                   1,
                   'ACTIVE',
                   0,
                   DECODE(BITAND(KSUSEFLG, 4096), 0, 'INACTIVE', 'CACHED'),
                   2,
                   'SNIPED',
                   3,
                   'SNIPED',
                   'KILLED') "S_STATUS",
                    S.KSUUDNAM "DBLINK_USER"
      FROM SYS.X$K2GTE G, SYS.X$KTCXB T, SYS.X$KSUSE S
     WHERE G.K2GTDXCB = T.KTCXBXBA
       AND G.K2GTDSES = T.KTCXBSES
       AND S.ADDR = G.K2GTDSES;

    -- dblink信息

    image


    3.处理方案

    1)在应用程序端及时关闭dblink连接会话;

    2)在数据库服务器上使用tnsnames.ora配置tns的方式修改dblink连接配置,并且将对应节点vip地址先于其它远端节点VIP写在上方。

  • 相关阅读:
    pt-tcp-model
    (转)从史上八大MySQL宕机事故中学到的经验
    pt-query-digest
    DNS生效时间
    Python之uuid模块
    一个IO的传奇一生
    Python之Queue模块
    利用freemarker 静态化网页
    FreeMarker教程
    模板引擎freemarker的简单使用教程
  • 原文地址:https://www.cnblogs.com/binliubiao/p/12516741.html
Copyright © 2011-2022 走看看