檢視oracle連線數的消耗情況
阿新 • • 發佈:2018-12-03
前言
- 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中。具體方法網上搜索。