Oracle游标超过上限排查

2024-07-30  本文已影响0人  weaponxx

查询数据库游标上限

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导致泄漏了
上一篇 下一篇

猜你喜欢

热点阅读