查看oracle连接数的消耗情况

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sayyy/article/details/81477311

前言

  • oracle 12c
  • linux 7.0
  • PL/SQL 11.0.2
  • oracle中的连接数量是有限的。如果有程序一直消耗连接数量,则连接数量就会耗尽。

数据库允许的最大连接数

select value from v$parameter where name ='processes';

查看当前的数据库连接数

select count(*) from v$process ;

查看连接消耗情况

默认情况下,oracle记录了机器名(hostname),而没有记录ip。所以,只能知道每个机器消耗了多少连接(弊端:如果hostname重名时,视作一台机器)。

查询:客户端设备标识、客户端程序、oracle用户名、消耗的连接数量

select  b.MACHINE, b.PROGRAM, b.USERNAME, count(*) from v$process a, v$session b 
where a.ADDR = b.PADDR and  b.USERNAME is not null   
group by  b.MACHINE, b.PROGRAM, b.USERNAME 
order by count(*) desc

执行上面查询,得到如下结果:
|-| MACHINE| PROGRAM| USERNAME| COUNT(*)|
|-|-|-|-|
|1| MACHINE NAME 1| JDBC Thin Client| USERNAME1| 904|
|2| MACHINE NAME 1| JDBC Thin Client| USERNAME2| 60|
|3| MACHINE NAME 1| JDBC Thin Client| USERNAME3| 55|
|4| CentOS7-Oracle| oracle@CentOS7-Oracle| USERNAME1| 18|
|5| MACHINE NAME 2| JDBC Thin Client| USERNAME4| 10|
|8| WORKGROUP\DESKTOP-59RQDEQ| plsqldev.exe| USERNAME1| 4|
|9| WorkGroup\ADMINI| plsqldev.exe| USERNAME1| 4|
|11| MACHINE NAME 3| oraagent.bin@jsfwdb1 (TNS V1-V3)| USERNAME5| 2|

  • MACHINE列:机器名。windows,计算机名。linux,hostname。
  • PROGRAM列:程序名。JDBC Thin Client是oracle jdbc驱动。plsqldev.exe是PL/SQL。
  • USERNAME列:oracle用户名。jdbc程序连接时使用的oracle用户名。

其它

  • 每台设备的名称必须唯一,否则,无法确切的知道连接来自哪台设备。
  • 尽量为每个应用提供一个账户名(酌情处理,账户名多了,也是不好维护的)。同一台设备上,有多个应用时,可以通过帐户名区分。
  • oracle默认没有在session中记录ip。但是可以通过trigger将ip记录到session中。具体方法网上搜索。

猜你喜欢

转载自blog.csdn.net/sayyy/article/details/81477311
今日推荐