|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|||||||||||
ORA-01000: maximum open cursors exceeded в процедуре где курсоры явно не открываються18.11.2014, 16:13. Показов 13207. Ответов 5
Метки нет (Все метки)
Кратко: оракл выдаёт указанную ошибку в процедуре которая не открывает явно курсоров и вообще пытаеться сделать execute immediate 'insert into x select * from y'.
Сваливаеться не сразу, а обычно если процедура поработала часов 10 притом зачастую это попадает на время активного использования сервера другими пользователями. Ошибка не пропадёт пока не перезапустить ide (со слов админов), тоесть я так понимаю пока не завершить сессию если вызвать процедуру повторно то она снова свалиться с той же ошибкой на той же таблице несмотря на то что был rollback как-будто и впрямь какой-то ресурс удерживает сессия .... Если подробно то: Кликните здесь для просмотра всего текста
Есть задача переноса данных из таблиц x в arch_x с некоторыми правилами.
Работает примерно так: 1) Процедура заполняет таблицу buffer данными по id записей которые надо архивировать. COMMIT; 2)Используя DBMS_PARALLEL_EXECUTE создаёться задача, разбиваеться на чанки и в parallel вызываеться для ~50 таблиц где каждый поток вызывает процедуру которая делает просто
После выполнения задача удаляеться. 3)Выполняеться та же процедура что и выше но для одной особенной таблички, её особенность в том что на неё есть FK у остальных поэтому в ней данные архивируються в последнюю очередь и вот на ней иногда выскакивает эта ошибка именно на первой части, тоесть прямо на строке
Куда копать?
0
|
|||||||||||
| 18.11.2014, 16:13 | |
|
Ответы с готовыми решениями:
5
java.sql.SQLException: ORA-00020: maximum number of processes exceeded ORA-01000 maximum open cursors maximum user count exceeded |
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
| 18.11.2014, 17:35 [ТС] | |
|
Всё оказалось проще, поймал админов за руку после того как ошибка произошла и запретил отключать сессию.
Посмотрел - и впрямь 298 из 300 доступных открыто курсоров. Похоже днём при большой активности юзеров действительно не хватает курсоров для моей архивации (она многопоточная, ей надо побольше ресурсов всё же).
0
|
|
| 18.11.2014, 17:52 | |
|
хорошо тебе. есть кого ловить. а мне все самому приходится делать.
select count(*) sessions from v$session; select count(*) processes from v$process; select count(*) cursors from v$open_cursor; это посмотреть (у меня уперлось не в курсоры а в сессии) где-то было написано что эти три параметры взаимосвязаны. а вот нашел - это статья у Тома Кайта AskTom Processes, sessions and open_cursors Добавлено через 57 секунд Hi, when you got this error always check trace file. In my trace file was this error: ORA-00020: maximum number of processes (2000) exceeded So what does mean? 1) This error is related to parameter processes. SQL> show parameter processes NAME TYPE VALUE ———————————— processes integer 2000 –> It it max value current value: select count(*) from v$process; COUNT(*) ———- 1122 ==> It is ok now. Parameter processes set max value for operating system processes Parameter Sessions set max. value for session in oracle and should be calculate from parameter processes. Session=(processes * 1.1 ) +5 In our case (2000 * 1.1) +5 = 2205 SQL> show parameter sessions NAME TYPE VALUE ———————————— ———– —————————— sessions integer 2205 –> current number of sessions select count(*) from v$session; COUNT(*) ———- 1122 ==> we are under limit and this is ok. Other parameter could be open_cursors. This parameter set max. number of open cursors per one session. SQL>show parameter cursors NAME TYPE VALUE ———————————— ———– —————————— open_cursors integer 500 –> This mean that each session could have 500 open cursor. Together it is 2205 * 500 = 1102500 cursors. Now we have open SQL>select count(*) from v$open_cursor; COUNT(*) ———- 18319 What value set to parameter open_cursors? We can calculate 18319 / 2205 = 8.3 –> we can set it to 50 which is default value
2
|
|
|
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||
| 18.11.2014, 18:26 [ТС] | ||
|
0
|
||
| 18.11.2014, 18:49 | |
|
перепостил содержимое старой статейки кайта, т.к. на сайте страница изменилась и ничего не понятно.
короче эти три параметра как то взаимосвязаны и изменять их надо вместе. и базу рестартовать надо. я это делал ночью, когда никто не работает.
0
|
|
| 18.11.2014, 18:49 | |
|
Maximum recursion depth exceeded in comparison
Maximum execution time of 30 seconds exceeded Ошибка: Maximum call stack size exceeded Maximum execution time of 180 seconds exceeded Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|
|
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.
Решение:
Создан документ со следующими. . .
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить сумму и количество положительных элементов массива, расположенных в четных строках.
Решение:
Создан документ с. . .
|
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности.
. . .
|