powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / посмотреть открытые курсоры
2 сообщений из 27, страница 2 из 2
посмотреть открытые курсоры
    #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
2 сообщений из 27, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / посмотреть открытые курсоры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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