查询Oracle进程数和会话数

查询Oracle进程数和会话数

𝓓𝓸𝓷 Lv6

统计Oracle数据库进程和会话数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
col name for a15 
col value for a15
select
p.name,
p.value,
r.max_utilization
from
v$resource_limit r,
v$parameter p
where
r.resource_name = p.name
and p.name in ('processes', 'sessions');

v$resource_limit视图中的max_utilization参数可获取数据库启动以来的最大会话连接数.


set linesize 200 pagesize 200
col username for a15
col machine for a25
col osuser for a15

select distinct sysdate,
osuser,
username,
machine,
status,
count(username) over(partition by username, status) user_status_count,
count(username) over(partition by username) user_count,
count(osuser) over() session_count,
count(sysdate) over() process_count
from (select sysdate,
s.osuser,
decode(osuser,
'oracle',
'oracle',
'',
'OracleProcess',
s.username) username,
s.machine,
s.status,
p.program
from v$session s
right join v$process p
on (s.paddr = p.addr))
order by username;



set linesize 200 pagesize 200
col username for a15
col machine for a25
col osuser for a15
col max_session for a10
col max_process for a10

select distinct sysdate,
osuser,
username,
machine,
status,
count(username) over(partition by username, status) user_status_count,
count(username) over(partition by username) user_count,
count(osuser) over() session_count,
count(sysdate) over() process_count,
ps.value max_session,
pp.value max_process
from (select sysdate,
s.osuser,
decode(osuser,
'oracle',
'oracle',
'',
'OracleProcess',
s.username) username,
s.machine,
s.status,
p.program
from v$session s
right join v$process p
on (s.paddr = p.addr)),
v$parameter pp,
v$parameter ps
where pp.name = 'processes'
and ps.name = 'sessions'
order by username;


SELECT (SELECT Round((SELECT Count(*)
FROM v$process) / value * 100)
FROM v$parameter
WHERE name = 'processes') p,
(SELECT Round((SELECT Count(*)
FROM v$session) / value * 100)
FROM v$parameter
WHERE name = 'sessions') s
FROM dual;


set linesize 200 pagesize 200
col username for a15
col machine for a25
col osuser for a15
col max_session for a10
col max_process for a10

select distinct sysdate,
nvl(osuser,'N/A') osuser,
username,
nvl(machine,'N/A') machine,
nvl(status,'N/A') status,
count(username) over(partition by username, status) user_status_count,
count(username) over(partition by username) user_count,
count(osuser) over() session_count,
count(sysdate) over() process_count,
ps.value max_session,
pp.value max_process
from (select sysdate,
s.osuser,
decode(osuser,
'oracle',
'oracle',
'',
'OracleProcess',
s.username) username,
s.machine,
s.status,
p.program
from v$session s
right join v$process p
on (s.paddr = p.addr)),
v$parameter pp,
v$parameter ps
where pp.name = 'processes'
and ps.name = 'sessions'
order by username;



---统计进程数

select sysdate,s.osuser, decode(osuser,'oracle','OracleProcess','','OtherProcess',s.username) username,s.machine,s.program,p.spid,s.paddr,p.addr,s.sql_id from v$process p left join v$session s on (s.paddr = p.addr);


select sysdate,s.osuser,decode(substr(s.program,1,7),'oracle@','OracleProcess','','OtherProcess',s.username) username,s.machine,count(*) from v$process p left join v$session s on (s.paddr = p.addr)
group by sysdate,s.osuser,decode(substr(s.program,1,7),'oracle@','OracleProcess','','OtherProcess',s.username),s.machine


select sysdate,osuser,username,machine,sn count,sum(sn) over(partition by username) user_count,sum(sn) over() all_process from (
select sysdate,s.osuser, decode(osuser,'oracle','OracleProcess','','OtherProcess',s.username) username,s.machine,count(*) sn from v$process p left join v$session s on (s.paddr = p.addr)
group by sysdate,s.osuser, decode(osuser,'oracle','OracleProcess','','OtherProcess',s.username),s.machine);



---统计会话数

select PID,SPID,addr,USERNAME,PROGRAM from v$process;

select sid,serial#,PADDR,SADDR,USERNAME,PROGRAM,machine from v$session where paddr='&addr';
  • Title: 查询Oracle进程数和会话数
  • Author: 𝓓𝓸𝓷
  • Created at : 2024-06-12 20:23:30
  • Updated at : 2025-08-26 09:43:00
  • Link: https://www.zhangdong.me/oracle-session-process.html
  • License: This work is licensed under CC BY-NC-SA 4.0.
评论