top of page
CerebroSQL

Oracle open cursor

Просмотр информации о открытых курсорах сессиями в СУБД Oracle

Параметр БД open_cursors

Указывает максимальное количество открытых курсоров (дескрипторов частных областей SQL), которые сеанс может иметь одновременно. Вы можете использовать этот параметр, чтобы предотвратить открытие сеансом чрезмерного количества курсоров. Важно установить значение OPEN_CURSORS достаточно высоким, чтобы предотвратить нехватку открытых курсоров в вашем приложении. Число будет варьироваться от одного приложения к другому. Предполагая, что сеанс не открывает количество курсоров, указанное в OPEN_CURSORS, установка этого значения выше, чем это действительно необходимо, не требует дополнительных затрат.

dashboard open cursor

Открытие окна

  • Меню Action - Open cursor

  • В основном окне кликнув по строке "open cursor"

CerebroSQL - open cursor

select a.value,
       s.username,
       nvl(s.OSUSER,'-')||' ('|| nvl(s.MACHINE,'-')||')' US,
       s.sid||':'||s.serial# SS,
       '300' MAX_OPEN
  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
order by a.value desc 

Просмотр подробной информации

Выделить сессию в списке "List session"

CerebroSQL - open cursor details

 

Session information - информация о сессии из v$session

select status,schemaname,osuser,machine,program,logon_time from v$session where sid=$$SID

 

Вкладка "Cursor" список всех курсоров сессии с их состоянием

select SQL_ID, SQL_TEXT, cursor_type from V$OPEN_CURSOR oc where oc.sid=$$SID

Просмотр сведений о SQL запросах

В списке курсоров на вкладке "Cursor" дважды кликнуть по любой строке

CerebroSQL - open cursor details

Структура окна

  • Query text - текст SQL запроса

select SQL_FULLTEXT, HASH_VALUE from v$sql where sql_id='$$SQL_ID'

  • Query plan execute - план выполнения SQL запроса

select * from TABLE(DBMS_XPLAN.DISPLAY_CURSOR('$$SQL_ID'))

  • Event - ожидания сессий при выполнении запроса (данные за последние 10 минут). Информация извлекается из локальной базы данных. Данные собираются системой при включенном режиме Monitoring - Use mode "Real-time" в настройках программы

select count(*) "CountRW",
       c_event
  from  cer_ash_database c
where c_dbname = $$CONNECTALIAS
   and c_dbts>= datetime('now','-600 seconds','localtime')
   and c_dbts< datetime('now','-1 seconds','localtime')
   and c_sql_id="$$SQL_ID"
group by c_event

order by count(*) desc

  • Session list - список сессий выполнивших запрос за последние 10 минут. Информация извлекается из локальной базы данных. Данные собираются системой при включенном режиме Monitoring - Use mode "Real-time" в настройках программы

select c_sid,

       c_serial,

       c_username||'@'||c_machine "hm" 

  from cer_ash_database c

 where c_dbname = "TESTDB2"   

   and c_dbts>= datetime('now','-600 seconds','localtime')           

   and c_dbts< datetime('now','-1 seconds','localtime')       

   and c_sql_id="$$SQL_ID"

group by c_sid||':'||c_serial||'['||c_username||'@'||c_machine||']'

order by c_sid

bottom of page