0
点赞
收藏
分享

微信扫一扫

达梦数据库查看用户连接,资源限制


SQL如下:

WITH
a AS
(
SELECT
user_name,
count(*) current_connect
FROM
v$sessions
WHERE
CONN_TYPE <> 'BACKGROUND'
AND user_name NOT IN ('SYS', 'SYSDBA', 'SYSREP', 'DMHS', 'SYSSSO')
and user_name not like 'P\_%' escape '\'
group by
user_name
)
,
b AS
(
select
NAME AS USERNAME ,
case when to_char(SESS_PER_USER)=0 then 'UNLIMITED' else to_char(SESS_PER_USER) end as SESS_PER_USER,
case when SESS_PER_USER =0 then 'please add user session limit' else SESS_PER_USER end as max_limit
from
SYS.SYSUSERS ,
SYSRESOURCES AS RSCS,
SYSOBJECTS AS SYSOB
where
SYS.SYSUSERS.ID = RSCS.ID
AND SYSOB.ID =SYS.SYSUSERS.ID --注意:普通用户去掉此关联条件查询,DBA用户保留,使用普通用户查询时,SESS_PER_USER列值只能查询自己的信息
AND SYSOB.TYPE$ ='UR'
AND SYSOB.SUBTYPE$ ='USER'
AND SYSOB.NAME NOT IN ('SYS', 'SYSDBA', 'SYSREP', 'DMHS', 'SYSSSO', 'SYSAUDITOR')
)
select
user_name ,
current_connect ,
SESS_PER_USER as sess_limit,
case when pct_or_attention=0 then 'please add you session max_limit' else pct_or_attention * 100
|| '%' end pct_or_attention,
max_failover_pct
|| '%' max_failover_pct,
'There is a risk that after one node goes down, the other surviving nodes will not be able to carry the connection' as falover_flag
from
(
SELECT
a.user_name ,
a.current_connect ,
b.SESS_PER_USER ,
case when b.max_limit <> 'please add user session limit' then round(a.current_connect / b.max_limit, 4) else 0 end as PCT_OR_ATTENTION,
0 as max_failover_pct
FROM
a,
b
WHERE
a.user_name = b.username ORDER BY A.USER_NAME
);

举报

相关推荐

0 条评论