千家信息网

Oracle如何查看已被使用的open_cursors&session_cached_cursors

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍Oracle如何查看已被使用的open_cursors&session_cached_cursors,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!查看当前ses
千家信息网最后更新 2026年10月31日Oracle如何查看已被使用的open_cursors&session_cached_cursors

这篇文章主要介绍Oracle如何查看已被使用的open_cursors&session_cached_cursors,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

查看当前session已使用的最大open cursor数 和cached cursor数:
SELECT 'session_cached_cursors' PARAMETER,
LPAD (VALUE, 5) VALUE,
DECODE (VALUE, 0, ' n/a', TO_CHAR (100 * USED / VALUE, '990') || '%')
USAGE
FROM (SELECT MAX (S.VALUE) USED
FROM V$STATNAME N, V$SESSTAT S
WHERE N.NAME = 'session cursor cache count'
AND S.STATISTIC# = N.STATISTIC#),
(SELECT VALUE
FROM V$PARAMETER
WHERE NAME = 'session_cached_cursors')
UNION ALL
SELECT 'open_cursors',
LPAD (VALUE, 5),
TO_CHAR (100 * USED / VALUE, '990') || '%'
FROM ( SELECT MAX (SUM (S.VALUE)) USED
FROM V$STATNAME N, V$SESSTAT S
WHERE N.NAME IN ('opened cursors current',
'session cursor cache count')
AND S.STATISTIC# = N.STATISTIC#
GROUP BY S.SID),
(SELECT VALUE
FROM V$PARAMETER
WHERE NAME = 'open_cursors');
注:如果查询的session open cursor到达100% client就很可能报错ORA-01000

查看session open cursor的具体程式、open cursor数量:
SELECT a.inst_id,
a.sid,
a.USERNAME,
a.SCHEMANAME,
a.OSUSER,
a.machine,
a.TERMINAL,
a.LOGON_TIME,
a.PROGRAM,
a.STATUS,
b.name,
b.used
FROM gv$session a,
(SELECT n.inst_id,
sid,
n.name,
s.VALUE used
FROM gv$statname n, gv$sesstat s
WHERE n.name IN ('opened cursors current',
'session cursor cache count')
AND s.statistic# = n.statistic#
AND n.inst_id = s.inst_id) b
WHERE a.sid = b.sid
AND a.inst_id = b.inst_id
AND b.name <> 'session cursor cache count'
ORDER BY b.used DESC;

查看session open cursor的具体SQL(此方法是联合v$open_cursor得出的结果,可能有不准确。但session最多open_cursors的SQL一定是在运行结果中)
SELECT distinct a.inst_id,
a.sid,
a.USERNAME,
a.SCHEMANAME,
a.OSUSER,
a.machine,
a.TERMINAL,
a.LOGON_TIME,
a.PROGRAM,
a.STATUS,
b.name,
b.used,c.sql_id
FROM gv$session a,
(SELECT n.inst_id, sid, n.name, s.VALUE used
FROM gv$statname n, gv$sesstat s
WHERE n.name IN
('opened cursors current',
'session cursor cache count')
AND s.statistic# = n.statistic# and n.inst_id=s.inst_id ) b,v$open_cursor c
WHERE a.sid = b.sid and a.inst_id = b.inst_id and a.sid=c.sid and c.CURSOR_TYPE in('OPEN','OPEN-PL/SQL','OPEN-RECURSIVE')
and b.name <> 'session cursor cache count'
order by b.used desc;

以上是"Oracle如何查看已被使用的open_cursors&session_cached_cursors"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

内容 篇文章 结果 最大 价值 兴趣 小伙 小伙伴 数量 是在 更多 此方法 知识 程式 行业 资讯 资讯频道 频道 参考 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 西安纸贵互联网科技有限公司 致骋互联网科技 互联网与未来科技 贷财互联网科技 科技互联网公司logo 睿民互联网科技 互联网科技博客 滨湖区互联网智能科技产品供应 海南购全球互联网科技 深圳市运趣互联网科技有限公司 团飞科技与伯堂互联网服务平台 汽车互联网创新科技园 互联网对科技的发展 互联网科技快讯热点 新氧科技和美国互联网有关系吗 艺电能源互联网科技有限公司招聘 长沙渺峰互联网科技有限公司 互联网的黑科技实验室 科技互联网企业在行动 武汉亿视互联网科技有限公司 深圳科技互联网 互联网科技排名 天下捷融互联网科技 齐家互联网科技有限公司 注册互联网科技公司经营范围大全 深圳市罗太互联网科技有限公司 互联网第三次科技革命特征 深圳互联网科技的发展 互联网营销推广黑科技 安徽九吞吴互联网科技有限公司
0