powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как бороться с зависшими соединениями?
8 сообщений из 8, страница 1 из 1
Как бороться с зависшими соединениями?
    #32027225
mmoroz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди! Подскажите как бороться с зависшими соединениями.
Что реально происходит:
Юзера работают, работают, создают всякие отчеты (простые и сложные), затем случайно запускается одновременно несколько тяжелых задач. Естественно все начинает тормозить. Дольше кто-то из юзеров не выдерживает пытки ожиданием и через CTRL-ALT-DEL вырубает свою программу. В большинстве случаем соединение этого пользователя (со статусом ACTIVE) самостоятельно дорабатывает до конца и благополучно отстреливается. Но некоторые продолжают жить со статусом ACTIVE бог знает сколько времени. Хотя реально процедуры рабатуют макимум 5 мин.
Как правило подвисает на следующем операторе:
INSERT INTO tbl SELECT ...
Причем никаких блокировок для этого соединения вроде бы нет.
В ручную эти соединения убить можно (добрые люди подсказали через ORAKILL, а то ALTER SYSTEM KILL SESSION только помечает на удаление ).

Подскажите что надо настроить на сервере, чтобы такие соединения отстреливать автоматом (параметр sqlnet.expire_time = 1)?

PS: не знаю важно ли это, но вставка строк идет во временную таблицу (CREATE GLOBAL TEMPORARY TABLE tbl(...) ON COMMIT PRESERVE ROWS)

Заранее благодарен.
...
Рейтинг: 0 / 0
Как бороться с зависшими соединениями?
    #32027300
Alexandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пож. что такое ORAKILL в вашем сообщении ?
...
Рейтинг: 0 / 0
Как бороться с зависшими соединениями?
    #32027303
mmoroz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OraKill.exe програмка (в NT находится в каталоге BIN оракла). Позволяет грохать все процессы (соединения) оракла по ID процесса.
...
Рейтинг: 0 / 0
Как бороться с зависшими соединениями?
    #32027340
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
INSERT INTO tbl SELECT
Сия конструкция на языке Оракла называеться DIRECT LOAD INSERT. И она обладает, если не ошибаюсь, определенной спецификой. Допустим, вовсе не обязательно что, результат этого "дайрект-лоада" будет соответствовать тому, если вы откроете курсор, потом все "выфетьчеете оттуда", последовательно по записи всавите в tbl а потом "коммтните" транзакцию. Советую подетельнее ознакомиться с доками /Oracle8i Server, Release 8.1.x/Oracle8i Concepts/Direct-Load INSERT/.
Хотя это все додумки, которые могут ничего не дать.
Но все равно удачи вам mmoroz, the oracle processes slayes!
...
Рейтинг: 0 / 0
Как бороться с зависшими соединениями?
    #32027457
mmoroz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот копался и обнаружил такую штуку:
-при просмотре v$transaction я увидел, что на зависшую сессию приходятся
ДВЕ ТРАНЗАКЦИИ!!!
Как это такое может быть (какова рашифровка по v$transaction)?
PS:Сервак 2*CPU
на всякий случай привожу результат SELECTA из V$TRANSACTION (для зависшей сессии)
\nADDR XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK
-------- ------ ------- ------ ------ ------
041469F0 2 37 10157 2 593
04146D60 2 16 10155 2 595

UBASQN UBAREC STATUS START_SCNB START_SCNW
------ ------ ------ ---------- ----------
16204 5 ACTIVE 14130236 0
16204 1 ACTIVE 14130237 0

START_UEXT START_UBAFIL START_UBABLK START_UBASQN
---------- ------------ ------------ ------------
97 2 592 16204
97 2 594 16204

START_UBAREC SES_ADDR FLAG SPA REC NOU PTX
------------ -------- -------- --- --- --- ---
4 03EB0BF0 7683 NO NO NO NO
1 03EB0BF0 67112483 NO YES NO NO

PRV_XIDUSN PRV_XIDSLT PRV_XIDSQN PTX_XIDUSN
---------- ---------- ---------- ----------
0 0 0 0
2 37 10157 0

PTX_XIDSLT DSCN-B DSCN-W USED_UBLK USED_UREC
---------- -------- ------ --------- ---------
0 14129634 0 2 12
0 14129634 0 2 2

LOG_IO PHY_IO CR_GET CR_CHANGE
--------- ------ ------ ---------
194701402 97 1088 59908176
194701332 0 2 59908099
...
Рейтинг: 0 / 0
Как бороться с зависшими соединениями?
    #32027589
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вдаваясь в подробности всего этого аутпута скажу, что в одной сессии могут преспокойно жить теоретически неограниченное ко-во транзакций. Называеться эта вещь автономные транзакции (Autonomous Transactions). Читаеться тут: PL/SQL User's Guide and Reference
/Interaction with Oracle/Using Autonomous Transactions ну и чегото там еще написано в оракл-концептсах. Идея их в том, что из одной транзакции можно открыть другую, из этой другой еще одну и тд. Мэйн транзакции приостанавливает свою работу пока не завершиться дочерняя (автономная) транзакция.
...
Рейтинг: 0 / 0
Как бороться с зависшими соединениями?
    #32027591
mmoroz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В данном случае автономные транзакции не используются.

А по поводу вывода к таблице v$transaction насторожила следующая штука:
-в столбце REC (рекурсивная транзакция) для одной транзакции стоит YES, а для другой NO, причем из v$session ссылка идет только одну из этих транзакций, вторая делает непонятно, что!!!
...
Рейтинг: 0 / 0
Как бороться с зависшими соединениями?
    #32028057
mmoroz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наконец, то добил эту гадину!!!
Итак обнаружил следующую вещь:
-как только я с временных таблиц, в которые производится insert, убрал все constraints, так сразу зависания insert пропали (уже 5 дней работает)
При constaraint зависания происходили (1 в 2 дня)

Вот вопрос: это у меня Oracle8i так глючит (8.1.5 на NT2000) или это такая особенность временных таблиц?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как бороться с зависшими соединениями?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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