Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 что если не закрывать курсор в pl/sql  [new]
Ornaldo
Member

Откуда:
Сообщений: 221
Допустим вывалился экспешин и курсор не закрылся, что тогда?
7 июн 13, 07:25    [14403486]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
Изя Кацман
Member

Откуда: Великий Эксперимент
Сообщений: 2019
Ето зависит от того, как он был открыт, камрад
Приведи пример
7 июн 13, 09:45    [14403976]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
ten
Member

Откуда: Екатеринбург
Сообщений: 1672
Ornaldo,
А что именно и в каком контексте интересует?
7 июн 13, 10:00    [14404095]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
ну словишь рано или поздно ' ora-01000 maximum open cursors exceeded'
7 июн 13, 10:12    [14404171]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
и как результат select id into sdf from alsdf не пройдёт.
7 июн 13, 10:13    [14404174]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
Изя Кацман
Member

Откуда: Великий Эксперимент
Сообщений: 2019
Shtock
ну словишь рано или поздно ' ora-01000 maximum open cursors exceeded'
Ну да, а тем временем множество таких же сессий пожрут всю память, отпущенную для работы БД
И вся база встанет в позу "поиск тапочек под диваном" :(
7 июн 13, 10:43    [14404415]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
А вот здесь Open cursor paranoia интересуются,
"Is there really no way that closing open cursors in the exception handler is useful?"
7 июн 13, 11:05    [14404636]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
ten
Member

Откуда: Екатеринбург
Сообщений: 1672
Viewer,
Например, если не производить закрытие курсора, то это дырка в безопасности.
7 июн 13, 11:21    [14404773]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
ten
Viewer,
Например, если не производить закрытие курсора, то это дырка в безопасности.

Спасибо, нашёл... Dangling Cursor Snarfing - Database Security
7 июн 13, 11:38    [14405004]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Shtock
ну словишь рано или поздно ' ora-01000 maximum open cursors exceeded'

любители тотального динамикэскуэля приплывают туда достаточно быстро, при наличии даже одной дырочки типа сабж.
7 июн 13, 12:31    [14405531]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
Viewer
ten
Viewer,
Например, если не производить закрытие курсора, то это дырка в безопасности.

Спасибо, нашёл... Dangling Cursor Snarfing - Database Security
В 11g - DBMS_SQL access denied. Прикрыли лавочку
7 июн 13, 12:36    [14405563]     Ответить | Цитировать Сообщить модератору
 Re: что если не закрывать курсор в pl/sql  [new]
Гламурный черт
Member

Откуда:
Сообщений: 181
orawish
Shtock
ну словишь рано или поздно ' ora-01000 maximum open cursors exceeded'

любители тотального динамикэскуэля приплывают туда достаточно быстро, при наличии даже одной дырочки типа сабж.


Сильно зависит от того, как именно излишествуют.

SQL> select value
  2  from v$mystat a, v$statname b
  3  where a.statistic# = b.statistic#
  4  and b.name = 'opened cursors current'
  5  /

     VALUE                                                                      
----------                                                                      
         2                                                                      

SQL> 
SQL> DECLARE
  2   rc sys_refcursor;
  3  BEGIN
  4   OPEN rc FOR 'SELECT * FROM dual';
  5   RAISE NO_DATA_FOUND;
  6  END;
  7  /
DECLARE
*
ERROR at line 1:
ORA-01403: no data found 
ORA-06512: at line 5 


SQL> 
SQL> select value
  2  from v$mystat a, v$statname b
  3  where a.statistic# = b.statistic#
  4  and b.name = 'opened cursors current'
  5  /

     VALUE                                                                      
----------                                                                      
         2                                                                      

SQL> 
SQL> DECLARE
  2   c INTEGER;
  3  BEGIN
  4   c := DBMS_SQL.OPEN_CURSOR;
  5   RAISE NO_DATA_FOUND;
  6  END;
  7  /
DECLARE
*
ERROR at line 1:
ORA-01403: no data found 
ORA-06512: at line 5 


SQL> 
SQL> select value
  2  from v$mystat a, v$statname b
  3  where a.statistic# = b.statistic#
  4  and b.name = 'opened cursors current'
  5  /

     VALUE                                                                      
----------                                                                      
         3                                                                      


P.S. Туда гораздо быстрее приплывают любители не закрывать курсоры на стороне Java в сочетании с connection pool
7 июн 13, 12:46    [14405613]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить