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参数也时,并不是预期的结果。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 | 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信息
3.处理方案
1)在应用程序端及时关闭dblink连接会话;
2)在数据库服务器上使用tnsnames.ora配置tns的方式修改dblink连接配置,并且将对应节点vip地址先于其它远端节点VIP写在上方。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)