IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

使用Oracle正则表达式监控应用到数据库的连接情况

NinGoo.net 2009-10-19 23:26:18 累计浏览 4,347 次
本机暂存

    Oracle从10g开始支持正则表达式,在一些特殊的应用场景下,可以发挥超乎想象的便利。

    通过v$session,可以监控应用服务器到数据库的连接的情况。假设应用服务器的名字都是有规律的,典型的如字母+数字+.+后缀的格式,例如app123.idc1表示位于idc1机房的app应用的123机器。当然,机器名的规则要根据具体的场景来分析得出,本文以上述规则来演示如何利用正则表达式来得到每组不同的应用服务器到数据库的连接情况。

    对于数据库来说,可能有多组不同的应用服务器需要连接。典型的监控指标可以包括:每组应用服务器的机器数,每组应用服务器当前总的连接数,每组应用服务器中单台最大的连接数,每组应用服务器中单台最少的连接数。通过如下的sql语句,使用正则表达式,可以轻松获取上述四个指标:

以下是代码片段:

select b.machine,
         count(*) machine_nums,
         b.cnt total_sessions,
         max(a.cnt) max_sessions,
         min(a.cnt) min_sessions
from
    (select machine,count(*) cnt
       from v$session
      group by machine) a,
    (select regexp_replace(regexp_replace(machine,'[0-9]','#'),'#+','#') machine,
            count(*) cnt
       from v$session
      group by  regexp_replace(regexp_replace(machine,'[0-9]','#'),'#+','#')
     ) b
where regexp_replace(regexp_replace(a.machine,'[0-9]','#'),'#+','#')=b.machine
group by b.machine,b.cnt

以下是代码片段:

MACHINE        MACHINE_NUMS TOTAL_SESSIONS MAX_SESSIONS MIN_SESSIONS
--------------- ----------- -------------- ------------ ------------
db#.idc#                  1            22            22           22
test#.idc#                2            10             5            5
appa#.idc#               30           166            10            5
appb#.idc#               17            18             2            1

    上面的sql中,使用了正则表达式函数REGEXP_REPLACE将数字替换成#,以方便对同组应用的机器进行分组统计。只要根据相应的规则进行修改,就可以适用到不同的场景。然后利用该sql固定时间如五分钟来采集数据,就可以得到趋势展示,绘成图形,直观的分析应用服务器到数据库的连接情况。

同分类推荐文章

  1. 第七章 事务 (2026-04-07 08:00:00)
  2. 第六章:分区 (2026-03-29 08:00:00)
  3. Neko Master: 从 0 到 1K+ Star 的 Vibe Coding 实践 (2026-03-01 08:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. Oracle MTS模式下 进程地址与会话信息 (累计阅读 14,307)
  2. 那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼 (累计阅读 6,824)
  3. 正则表达式 — QQ微信、优酷前端 邮箱正则表达式验证 Bug (累计阅读 6,584)
  4. grep 正则表达式选项要记得转义 (累计阅读 6,523)
  5. 性能测试工具sysbench简介 (累计阅读 5,961)
  6. 大于2GB的Listener.log和运行超过198天的主机上的Oracle实例 (累计阅读 5,803)
  7. 仅仅只备份是不够的 (累计阅读 5,760)
  8. Oracle Database 12c 新特性 - Native Top N 查询 (累计阅读 5,684)
  9. ORACLE最大可以存储多少数据量 (累计阅读 5,664)
  10. Oracle DBA的学习进阶成长树-从初出茅庐到高瞻远瞩 (累计阅读 5,542)