查询数据库游标上限
SELECT
name,
value
FROM
v$parameter
WHERE
name = 'open_cursors';
修改游标数量
ALTER SYSTEM SET open_cursors = 1000 SCOPE=BOTH;
修改游标数量
ALTER SYSTEM SET open_cursors = 1000 SCOPE=BOTH;
查询每个会话打开的游标数量
SELECT
a.sid,
a.serial#,
a.username,
a.osuser,
COUNT(*) AS open_cursors
FROM
v$session a,
v$open_cursor b
WHERE
a.saddr = b.saddr
GROUP BY
a.sid, a.serial#, a.username, a.osuser
ORDER BY
open_cursors DESC;
select a.value, s.username, s.sid, s.serial#,s.program,s.machine from v$sesstat a, v$statname b, v$session s where a.statistic# = b.statistic# and s.sid=a.sid and b.name = 'opened cursors current' and s.username is not null;
V$OPEN_CURSOR 视图
V$OPEN_CURSOR 视图显示当前会话中所有打开的游标。它的每条记录对应一个打开的游标,并提供与游标相关的详细信息,例如 SQL 文本、用户、游标类型等。
V$STATNAME 和 V$SYSSTAT 视图
V$STATNAME:提供系统中所有统计信息的名称和编号。
V$SYSSTAT:提供这些统计信息的当前值。具体到游标,它包含如 opened cursors current 这样的统计信息,其编号在 V$STATNAME 中可以找到。
最近排查问题发现V$STATNAME 的'opened cursors current'持续增长,但是V$OPEN_CURSOR没有增长,最后发现create statement导致泄漏了
网友评论