powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / посмотреть открытые курсоры
27 сообщений из 27, показаны все 2 страниц
посмотреть открытые курсоры
    #34932747
Ixtiander06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверяю открытые курсоры таким образом:
Код: plaintext
1.
2.
3.
4.
select a.value, s.program, s.username, s.sid, s.serial#
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'
order by  1  desc
что-то их оказывается у некоторых процессов больше, чем должно быть. Как посмотреть, что это за курсоры (SQL)? v$open_cusor не проходит, там не все фактически открытые, а те которые в кэше сессии. А как тогда?
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34932927
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ixtiander06что-то их оказывается у некоторых процессов больше, чем должно быть.Это Вы как определяете , что должно быть?

Ixtiander06Как посмотреть, что это за курсоры (SQL)? v$open_cusor не проходит, там не все фактически открытые, а те которые в кэше сессии. А как тогда?Так свяжите с предыдущим запросом :)
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34933037
хрум-хрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в одной сессии одновременно может быть открыт только один курсор. Все остальные кэшированные.
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34933057
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хрум-хрумв одной сессии одновременно может быть открыт только один курсор. Все остальные кэшированные.RTFM до проподания хруста
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34933062
Дубовая голова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хрум-хрумв одной сессии одновременно может быть открыт только один курсор. Все остальные кэшированные.

Может, и доказательства приведет благородный дон под "серым" ником ?
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34933264
Ixtiander06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jannny Ixtiander06что-то их оказывается у некоторых процессов больше, чем должно быть.Это Вы как определяете , что должно быть?
я знаю логику приложения, знаю что там стоит ограничение, не позволяющее держать открытыми больше 5 курсоров (только не спрашивайте, почему плиз!). Если хочет открыть больше, должен на старый курсор сделать SQLFreeStmt (это не ODBC, но похоже, всё сводится к EXEC SQL close...). Статистики показывают, что открыто 7 курсоров!!!

JannnyТак свяжите с предыдущим запросом :)
??? пардон, шутку не понял :-(
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34933778
Ixtiander06v$open_cusor не проходит, там не все фактически открытые, а те которые в кэше сессии .
это откуда такая инфа?
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34934115
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поподробнее Ixtiander06v$open_cusor не проходит, там не все фактически открытые, а те которые в кэше сессии . это откуда такая инфа?" в том числе и те, которые"
STFF Кэширование курсоров в PL/SQL
RTFM SESSION_CACHED_CURSORS (FAQ)
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34935136
Ixtiander06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic" в том числе и те, которые"

с уточнением согласен :-). А всё же, назад к моему вопросу бы...
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34935176
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ixtiander06А всё же, назад к моему вопросу бы...Может "лишние" - это служебные того приложения. Смотри по тексту курсоров и по трассе.
А вообще непонятно, зачем это копательство :)
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34935719
Ixtiander06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic Ixtiander06А всё же, назад к моему вопросу бы...Может "лишние" - это служебные того приложения. Смотри по тексту курсоров и по трассе.
А вообще непонятно, зачем это копательство :)
не из любви к искусству :-) Есть система, которая нормально работает в продуктивном режиме. Её же установили для тестирования на другой машине. И некоторые процессы вылетают с maximum open cursors exceeded. Посмотрел статистики - вроде действительно больше, чем open_cursors. Но система нормально работает в продукции и там у процессов "правильное" количество open cursors! Вот и копаюсь...

"Служебные курсоры" - это что-то конкретное имеется в виду или абстрактное предположение? И как посмотреть текст - в этом-то и был мой первый вопрос? Если v$open_cursor не катит?
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34935760
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ixtiander06"Служебные курсоры" - это что-то конкретное имеется в виду или абстрактное предположение ? И как посмотреть текст - в этом-то и был мой первый вопрос? Если v$open_cursor не катит?Почему не катит?
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34935861
Ixtiander06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic Ixtiander06"Служебные курсоры" - это что-то конкретное имеется в виду или абстрактное предположение ? И как посмотреть текст - в этом-то и был мой первый вопрос? Если v$open_cursor не катит?Почему не катит?
??? Потому что хочу увидеть действительно одновременно открытые, а не те, которые ещё не выкинуты из кэша
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34935905
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ixtiander06??? Потому что хочу увидеть действительно одновременно открытые, а не те, которые ещё не выкинуты из кэшаМного - не мало.

Ixtiander06 JannnyТак свяжите с предыдущим запросом :)
??? пардон, шутку не понял :-(Это не была шутка. Если записей больше, чем Вам нужно, то выберите только те, что Вам нужны, а их Вы знаете по первому запросу :)
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34936076
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ixtiander06Потому что хочу увидеть действительно одновременно открытые, а не те, которые ещё не выкинуты из кэшаЗакэшированные PL/SQL-ем курсоры имеют харатерную схему именования bind-переменных
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34936186
????!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic Ixtiander06Потому что хочу увидеть действительно одновременно открытые, а не те, которые ещё не выкинуты из кэшаЗакэшированные PL/SQL-ем курсоры имеют харатерную схему именования bind-переменных

а если нет bind-переменных в запросе.
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34936343
Ixtiander06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JannnyЭто не была шутка. Если записей больше, чем Вам нужно, то выберите только те, что Вам нужны, а их Вы знаете по первому запросу :)
имеется в виду запрос из моего первого постинга? Так он только количество открытых курсоров возвращает :-(. Или я опять чего-то не понял?
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34936374
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ixtiander06 JannnyЭто не была шутка. Если записей больше, чем Вам нужно, то выберите только те, что Вам нужны, а их Вы знаете по первому запросу :)
имеется в виду запрос из моего первого постинга? Так он только количество открытых курсоров возвращает :-(. Или я опять чего-то не понял?

Здравствуйте, Андрей :-)

А почему Вы не можете добавить в исходный запрос
v$open_cursor ?

Вяжете по sid-у сессии и уже потом анализируете тексты курсоров по sql_text для
сессий ...
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34936570
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
????!а если нет bind-переменных в запросе.А много ли найдётся таких, за которые не нужно выдёргивать ноги? :)
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34938363
Ixtiander06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmidek

А почему Вы не можете добавить в исходный запрос
v$open_cursor ?

Вяжете по sid-у сессии и уже потом анализируете тексты курсоров по sql_text для
сессий ...

можно добавить, а можно - как я делал - просто вытащить и посмотреть с ним в - суть дела не меняется:
есть v$sesstat, который показывают число фактически одновременно открытых курсоров, противоречащее тому, что я знаю о логике приложения, но не показывает текст курсоров. И есть v$open_cursor, который показывает SQL курсоров из кэша, про которые я и без него знаю, что такие команды когда-то сессией исполнялись. Вопрос таким образом остаётся...

То ли я ломлюсь в открытую дверь, то ли эта тема никого до сих пор не интересовала, что удивительно :-(
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34938736
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ixtiander06И есть v$open_cursor, который показывает SQL курсоровскажем так, его часть, но если это Вас устраивает...

Ixtiander06И есть v$open_cursor, который показывает SQL курсоров из кэшаА Вы понимаете, что сейчас открытый курсор также входит в понятие "курсоров из кеша"?...

Ixtiander06можно добавить, а можно - как я делал - просто вытащить и посмотреть с ним в - суть дела не меняется:Что есть "посмотреть с ним"?
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #34939147
Ixtiander06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JannnyА Вы понимаете, что сейчас открытый курсор также входит в понятие "курсоров из кеша"?...
да.
Это уже 20-й постинг, я наверное очень плохо обьясняю чего хочу. Ещё раз: v$sesstat говорит: в настоящий момент открыто Х курсоров. Я хочу посмотреть их - и только их - тексты.

Jannny Ixtiander06можно добавить, а можно - как я делал - просто вытащить и посмотреть с ним в - суть дела не меняется:Что есть "посмотреть с ним"?
сорри! Должно было быть так:
как я делал - просто вытащить SID и посмотреть с ним в V$OPEN_CURSOR - суть дела не меняется
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
посмотреть открытые курсоры
    #40022114
CrazyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Позвольте воскресить из мёртвых сей пост, но я всё уже перерыл и не понимаю.
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

Сессия изредка крашится по ORA-01000: maximum open cursors exceeded
Лимит как у тракториста - триста.

Кешироваться больше 50ти - не может, если я правильно понимаю
session_cached_cursors 50
Код: plsql
1.
2.
3.
SELECT name, value
FROM v$parameter
WHERE NAME = 'session_cached_cursors'



Сейчас открыто уже 197
opened cursors current 197
Код: plsql
1.
2.
3.
4.
5.
SELECT b.name, a.value
FROM v$sesstat a, v$statname b
WHERE a.statistic# = b.statistic#  
AND b.name = 'opened cursors current'
AND SID = 10523



Как мне посмотреть их SQL-код, опознать их как либо? Я вижу только sql_id закешированных
46 строк, всего одна задублирована
Код: plsql
1.
2.
3.
4.
SELECT sql_id, COUNT(1)
FROM v$open_cursor 
WHERE sid = 10523
GROUP BY sql_id



opened cursors current растёт, а закешированные держаться в пределах 50-ти
Везде где читал сказано: количество открытых курсоров в v$sesstat, но как понять, какой из них не закрывается (остаётся открытым и накапливается) - не сказано нигде.


Заранее спасибо.
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #40022115
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazyDiamond,

Код: plsql
1.
select * from v$sql;

?
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #40022127
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazyDiamond


opened cursors current растёт, а закешированные держаться в пределах 50-ти
Везде где читал сказано: количество открытых курсоров в v$sesstat, но как понять, какой из них не закрывается (остаётся открытым и накапливается) - не сказано нигде.


Ты бы помедитировал/почитал что opened cursors и cached cursors это часы и трусы:

OPEN_CURSORS sets the maximum number of cursors each session can have open , per session.
SESSION_CACHED_CURSORS sets the number of cached closed cursors each session can have.

SY.
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #40022376
CrazyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oragraf
CrazyDiamond,

Код: plsql
1.
select * from v$sql;

?



А каким образом воспользоваться v$sql, если мне нужны не закрытые курсоры сессии?
Код: plsql
1.
SELECT sql_id, sql_address FROM v$session WHERE SID = 13


Этот запрос мне возвращает null и 00. Других полей для связки с v$sql я не вижу.
...
Рейтинг: 0 / 0
посмотреть открытые курсоры
    #40022676
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazyDiamond,

пример курсоров
с3 открыт но для него нет parse
для с1 было два parse
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
SQL> set serveroutput on
SQL> declare
  2   procedure pcc(p_txt varchar2) is
  3      v_cc_open integer;
  4   begin
  5      SELECT a.value
  6      INTO v_cc_open
  7      FROM v$sesstat a, v$statname b
  8      WHERE a.statistic# = b.statistic#  AND b.name = 'opened cursors current' AND SID = sys_context('USERENV','SID');
  9      dbms_output.put_line(p_txt||' '||v_cc_open);
 10   end;
 11  begin
 12   pcc('before block');
 13   declare
 14    v_c1 integer;
 15    v_c2 integer;
 16    v_c3 integer;
 17   begin
 18    v_c1:=dbms_sql.open_cursor;
 19    pcc('open c1');
 20    v_c2:=dbms_sql.open_cursor;
 21    pcc('open c2');
 22    v_c3:=dbms_sql.open_cursor;
 23    pcc('open c3');
 24    --
 25    dbms_sql.parse(v_c1,'select * from emp',2);
 26    dbms_sql.parse(v_c2,'update dept set dname=dname',2);
 27    dbms_sql.parse(v_c1,'select * from dual',2);
 28    --как связать открытые курсоры (v_с1,v_c2,v_c3) с командами?
 29    dbms_sql.close_cursor(v_c1);
 30    pcc('close c1');
 31    dbms_sql.close_cursor(v_c2);
 32    pcc('close c2');
 33  --  dbms_sql.close_cursor(v_c3);
 34  --  pcc('close c3');
 35    null;
 36   end;
 37   -- с моей точки зрения сдесь все (v_с1,v_c2,v_c3) курсоры закрытые
 38   pcc('after block');
 39  end;
 40  /
before block 4
open c1 5
open c2 6
open c3 7
close c1 6
close c2 5
after block 5

PL/SQL procedure successfully completed.

SQL> /
before block 5
open c1 6
open c2 7
open c3 8
close c1 7
close c2 6
after block 6

PL/SQL procedure successfully completed.

SQL>



"переполнение" открытых курсоров часто бывает при рекурсивных вызовах ф-ций/процедур

....
stax
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / посмотреть открытые курсоры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]