Перепечатываю с блога Oracle Logbook
В последней строке результата значение 210 это именно то значение в которое необходимо установить параметр SESSION_CACHED_CURSORS.
Необходимо время от времени мониторить состояние и корректировать параметр, но не переусердствуйте, память сервера используется и для других процессов.
Версия для Oracle 11g с использованием LISTAGG, отображает какие usernames сколько курсоров используют:
select max(value)
from v$sesstat natural join v$statname
where name = 'session cursor cache count';
-- How to finding maximum session_cached_cursors
select session_cached_cursors * 30+30 Cached_Cursors_Rounded,
sessions_count
from (
select trunc(value/30) SESSION_CACHED_CURSORS,
count(*) sessions_count
from V$sesstat natural join v$statname
where name = 'session cursor cache count'
group by trunc(value/30) order by 1
);
CACHED_CURSORS_ROUNDED SESSIONS_COUNT
---------------------- --------------
30 223
60 32
90 15
120 6
150 2
180 3
210 5
7 rows selected.
В последней строке результата значение 210 это именно то значение в которое необходимо установить параметр SESSION_CACHED_CURSORS.
Необходимо время от времени мониторить состояние и корректировать параметр, но не переусердствуйте, память сервера используется и для других процессов.
Версия для Oracle 11g с использованием LISTAGG, отображает какие usernames сколько курсоров используют:
set linesize 254
col sessions format a30
col usernames format a70
select session_cached_cursors * 30+30 Cached_Cursors_Rounded,
sessions_count,
sessions,
usernames
from (
select SESSION_CACHED_CURSORS,
sum(sessions_count) sessions_count,
LISTAGG(sessions, ',') WITHIN GROUP (ORDER BY sessions) sessions,
LISTAGG(username || '(' || user_cnt || ')', ',') WITHIN GROUP (ORDER BY sessions) usernames
from (
select trunc(value/30) SESSION_CACHED_CURSORS,
count(*) sessions_count,
username,
LISTAGG(sid, ',') WITHIN GROUP (ORDER BY sid) sessions,
count(username) user_cnt
--LISTAGG(username, ',') WITHIN GROUP (ORDER BY sid) usernames
from v$sesstat ss natural join v$statname sn
natural join v$session s
where name = 'session cursor cache count'
group by trunc(value/30), username
)
group by SESSION_CACHED_CURSORS
)
order by SESSION_CACHED_CURSORS;
Apply new SESSION_CACHED_CURSORS
SQL> alter system set session_cached_cursors=210 scope = spfile; shutdown immediate; startup;
Комментариев нет:
Отправить комментарий