Вы здесь

Курсоры

 
with c as (
select c.sid, c.user_name, count(*)
  from v$open_cursor c
group by c.sid, c.user_name
having count(*) > 50) 
select c.*, s.program from c, v$session s
  where c.sid = s.sid
order by 3 desc
 
select count(*) sessions from v$session;
select count(*) processes from v$process;
select count(*) cursors from v$open_cursor;
 
это посмотреть (у меня уперлось не в курсоры а в сессии)
где-то было написано что эти три параметры взаимосвязаны.
а вот нашел - это статья у Тома Кайта AskTom Processes, sessions and open_cursors
 
show parameter processes
processes                            integer     640
 
select count(*) from v$process;
  248
 
==> It is ok now. Parameter processes set max value for operating system processes
 
Parameter Sessions set max. value for session in oracle and should be calculate from parameter processes.
 
Session=(processes * 1.1 ) +5
 
In our case (640 * 1.1) +5 = 709
 
show parameter sessions
sessions                             integer     984
 
–> current number of sessions
select count(*) from v$session;
211
 
==> we are under limit and this is ok.
 
Other parameter could be open_cursors. This parameter set max. number of open cursors per one session.
 
SQL>show parameter cursors
 
500
 
–> This mean that each session could have 500 open cursor. Together it is 300 * 200 = 60 000 cursors.
 
Now we have open
 
SQL>select count(*) from v$open_cursor;
 
COUNT(*)
———-
5460
 
What value set to parameter open_cursors?
 
We can calculate 5460 / 984 = 7,7
 
–> we can set it to 50 which is default value
 
 
 
 
 
 
select  sql_text, count(*) as "OPEN CURSORS", user_name from v$open_cursor
where sid=885
group by sql_text, user_name order by count(*) desc;
 
 
 
Ирина, тот кейс про который говорил на rtdm-ci-db
--открытые курсоры
 
select sid, value from v$sesstat  where statistic# in 
(select statistic# from v$statname  where name='opened cursors current')  and  value>0  order by value desc
--в топе sid 885
 
select sql_id, prev_sql_id, m.* from v$session m where sid in 885
 
 
 
 
____________________________________________________________________________
заявку № 2640398 зарегистрирована успешно.
 
select max(a.value) as highest_open_cur, p.value as max_open_cur
 from v$sesstat a, v$statname b, v$parameter p
   where a.statistic# = b.statistic#
   and b.name = 'opened cursors current'
   and p.name= 'open_cursors'
   group by p.value;
 
 
ALTER SYSTEM SET open_cursors = 500 SCOPE=BOTH;
 
 
show parameter cursor
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cursor_bind_capture_destination      string      memory+disk
cursor_sharing                       string      EXACT
cursor_space_for_time                boolean     FALSE
open_cursors                         integer     300
session_cached_cursors               integer     50
 
 
   select s.username, max(a.value)
   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'
  group by s.username
 
SERNAME                       MAX(A.VALUE)
------------------------------ ------------
                                         11
VZAJCEV                                  16
OACD                                     10
DBSNMP                                  300
SYS                                       1
 

Post new comment

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
6 + 6 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.