Oracle-dblink使用不当

Posted Biubiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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写在上方。

以上是关于Oracle-dblink使用不当的主要内容,如果未能解决你的问题,请参考以下文章

再不解决延迟不当,小心你的内存被打爆

MemoryCache 使用不当导致的一个 BUG

记一次SortedDictionary的不当使用

使用 Obx,得到这个错误:[Get] 检测到 GetX 使用不当

Dispatcher.BeginInvoke()方法使用不当导致UI界面卡死的原因分析

线程优先级使用不当,造成单核CPU跑满