может ли такое быть ?

guest.sql
Дата: 07.12.2012 09:44:48
Чтобы со стороны клиента запустился запрос, произошел fetch (не всех) строк, на клиенте не закрывается явно эта выборка, но при этом через какое-то время в v$open_cursor у данной сессии этого запроса нет ?
orawish
Дата: 07.12.2012 13:44:04
guest.sql
Чтобы со стороны клиента запустился запрос, произошел fetch (не всех) строк, на клиенте не закрывается явно эта выборка, но при этом через какое-то время в v$open_cursor у данной сессии этого запроса нет ?

запросто. например, ошибка on-fetch, которую клиент обработал в стиле
ну и похер, закрою курсор
orawish
Дата: 07.12.2012 13:48:22
например,
select 1/decode(rownum,1001,0,rownum) a from obj;
andreymx
Дата: 07.12.2012 13:52:52
клиент может кешировать фетч
ты прочитал строку, а он сразу блок из 50 строк
V$OPEN_CUSOR
Дата: 07.12.2012 15:27:02
guest.sql,

v$open_cursor - это не открытые, а закешированные курсоры.
Возможно, он был из кэша вытеснен.

Подробности тут
борщ бруевич
Дата: 07.12.2012 15:37:12
V$OPEN_CUSOR
guest.sql,

v$open_cursor - это не открытые, а закешированные курсоры.
Возможно, он был из кэша вытеснен.

Подробности тут

Не читай эту статью, там пфегня написана.
guest.sql
Дата: 07.12.2012 15:39:39
andreymx
клиент может кешировать фетч
ты прочитал строку, а он сразу блок из 50 строк

" произошел fetch (не всех) строк" и подразумевался именно "блочный" fetch, т.е. считался массив строк из результирующего набора, но не все строки.
V$OPEN_CUSOR
Дата: 07.12.2012 15:47:04
борщ бруевич
там пфегня написана

А поподробнее?
Серафимный Шестикрыл
Дата: 07.12.2012 16:45:05
V$OPEN_CUSOR
v$open_cursor - это не открытые, а закешированные курсоры.


SQL> var x0 refcursor
SQL> var x1 refcursor
SQL> var x2 refcursor
SQL> var x3 refcursor
SQL> var x4 refcursor
SQL> var x5 refcursor
SQL> var x6 refcursor
SQL> var x7 refcursor
SQL> var x8 refcursor
SQL> var x9 refcursor
SQL> begin
  2   open :x0 for 'select * from dual';
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> begin
  2   open :x1 for 'select * from dual';
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> begin
  2   open :x2 for 'select * from dual';
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> begin
  2   open :x3 for 'select * from dual';
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> begin
  2   open :x4 for 'select * from dual';
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> begin
  2   open :x5 for 'select * from dual';
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> begin
  2   open :x6 for 'select * from dual';
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> begin
  2   open :x7 for 'select * from dual';
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> begin
  2   open :x8 for 'select * from dual';
  3  end;
  4  /
begin
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1 
ORA-01000: maximum open cursors exceeded 
ORA-00604: error occurred at recursive SQL level 1 
ORA-01000: maximum open cursors exceeded 
ORA-01000: maximum open cursors exceeded 
ORA-06512: at line 2 


SQL> exec close :x0

PL/SQL procedure successfully completed.

SQL> select count(*) from v$open_cursor
  2  where sid = SYS_CONTEXT('USERENV', 'SID')
  3  /

  COUNT(*)                                                                      
----------                                                                      
        12                                                                      

SQL> select count(*),cursor_type from v$open_cursor
  2  where sid = SYS_CONTEXT('USERENV', 'SID')
  3  group by cursor_type;

  COUNT(*) CURSOR_TYPE                                                          
---------- ----------------------------------------------------------------     
         1 SESSION CURSOR CACHED                                                
         8 OPEN                                                                 
         1 OPEN-RECURSIVE                                                       
         2 DICTIONARY LOOKUP CURSOR CACHED