, ,

KILL SESSION и DISCONNECT SESSION

среда, 22 июля 2009 г. Оставить комментарий

Решил разобраться каким способом более “правильно” убивать сессию, и какую при этом получит ошибку клиент.

  с активной транзакцией без активной транзакции

ALTER SYSTEM KILL SESSION 'integer1, integer2';

Сессия помечается, как killed.

Ожидается активность от клиента. Если клиент проявляет активность, то ему возвращаются ошибки.


ORA-00028: your session has been killed
ORA-01012: not logged on

Сессия помечается, как killed.

Ожидается активность от клиента. Если клиент проявляет активность, то ему возвращаются ошибки.


ORA-00028: your session has been killed
ORA-01012: not logged on

ALTER SYSTEM KILL SESSION 'integer1, integer2' IMMEDIATE; Сессия убивается.
Если клиент проявляет активность, то ему возвращаются ошибки.

ORA-03113: end-of-file on communication channel
ORA-03114: not connected to ORACLE

Сессия убивается.
Если клиент проявляет активность, то ему возвращаются ошибки.

ORA-03113: end-of-file on communication channel
ORA-03114: not connected to ORACLE

ALTER SYSTEM DISCONNECT SESSION 'integer1, integer2' POST_TRANSACTION; Ожидается ответ пользователя. Клиент может продолжить работать в той сессии с той же транзакцией(продолжить изменять данные). Если клиент выполнит commit, то данные будут зафиксированы. После этого клиент будет отсоединен, сессия будет завершена.
Если клиент после этого проявит активность, то ему будут возращены ошибка.

ORA-03114: not connected to ORACLE

Сессия помечается, как killed.

Ожидается активность от клиента. Если клиент проявляет активность, то ему возвращаются ошибки.


ORA-00028: your session has been killed
ORA-01012: not logged on

ALTER SYSTEM DISCONNECT SESSION 'integer1, integer2' IMMEDIATE; Клиент будет отсоединен, сессия будет завершена.
Если клиент проявляет активность, то ему возвращаются ошибки.

ORA-03113: end-of-file on communication channel
ORA-03114: not connected to ORACLE

Клиент будет отсоединен, сессия будет завершена.
Если клиент проявляет активность, то ему возвращаются ошибки.

ORA-03113: end-of-file on communication channel
ORA-03114: not connected to ORACLE

ALTER SYSTEM DISCONNECT SESSION 'integer1, integer2' POST_TRANSACTION IMMEDIATE; Опция IMMEDIATE игнорируется. Ожидается ответ пользователя. Клиент может продолжить работать в той сессии с той же транзакцией(продолжить изменять данные). Если клиент выполнит commit, то данные будут зафиксированы. После этого клиент будет отсоединен.
Если клиент после этого проявит активность, то ему будут возращены ошибка.

ORA-03114: not connected to ORACLE
Клиент будет отсоединен, сессия будет завершена.
Если клиент проявляет активность, то ему возвращаются ошибки.

ORA-03113: end-of-file on communication channel
ORA-03114: not connected to ORACLE

Одним цветом выделены ячейки, когда результат команды одинаков.

Подробнее можно почитать здесь.SQL Statements: ALTER SESSION to ALTER SYSTEM, 3 of 3

Резюме: если надо быстро и надежно убить сессию, то для этого идеально подходит команда ALTER SYSTEM KILL SESSION 'integer1, integer2' IMMEDIATE;



0 коммент. »

Оставьте Ваш комментарий