1. 程式人生 > >檢視oracle連線數的消耗情況

檢視oracle連線數的消耗情況

前言

  • 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|

[email protected]| 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| [email protected] (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中。具體方法網上搜索。