SELECT username, COUNT(username) AS connection_count
FROM v$session
WHERE username IS NOT NULL
GROUP BY username;
关键解析:
-
数据来源 (
FROM v$session
):-
v$session
是Oracle数据库的动态性能视图,记录当前所有会话(连接)的信息,包括用户、状态、机器等。
-
-
过滤条件 (
WHERE username IS NOT NULL
):-
排除无用户名的会话(如后台进程),仅统计实际用户建立的连接。
-
-
分组统计 (
GROUP BY username
):-
按用户名分组,统计每个用户的连接数。
-
-
聚合函数 (
COUNT(username)
):-
计算每个用户名对应的会话数量。由于已过滤NULL,
COUNT(username)
与COUNT(*)
在此处效果相同.
-
USERNAME CONNECTION_COUNT
----------------------------
APP_USER 15
ADMIN 5
REPORT 3
查看总连接数(不分组):
SELECT COUNT(*) AS total_connections
FROM v$session
WHERE username IS NOT NULL;
包含会话状态筛选(如仅统计活跃连接):
SELECT username, COUNT(username) AS active_connections
FROM v$session
WHERE username IS NOT NULL AND status = 'ACTIVE'
GROUP BY username;