Завершення сеансів Oracle, Інші СУБД, Бази даних, статті








Рекомендовано для:

  • Oracle Database 8i
  • Oracle Database 9i R1
  • Oracle Database 9i R2
  • Oracle Database 10g R1
  • Oracle Database 10g R2
  • Oracle Database 11g R1
 

У деяких ситуаціях потрібно примусово завершити користувальницький сеанс. Наприклад, потрібно виконати якісь адміністративні роботи на сервері.


Стаття включає три розділи:



  • Ідентифікація сеансів, які потрібно завершити
  • Завершення активних сеансів
  • Завершення неактивних сеансів

При завершенні сеансу, транзакції цього сеансу відкочуються і всі ресурси (такі як, блокування та області пам’яті) звільняються і стають доступними для інших сеансів.


Завершення поточного сеансу з використанням SQL пропозиції ALTER SYSTEM KILL SESSION. Наступний приклад, завершує сеанс з SID рівним 7 і серійним номером 15:


ALTER SYSTEM KILL SESSION “7,15”;

Ідентифікація сеансу який потрібно завершити


Для ідентифікації сеансу, який потрібно завершити, вказується номер індексу і серійний номер. Для ідентифікації індексу (SID) і серійного номера виконується запит до подання V $ SESSION.


Наступний запит вибирає всі сеанси користувача TEST:


SELECT SID, SERIAL#
FROM V$SESSION
WHERE USERNAME = “TEST”;
SID SERIAL# STATUS
—– ——— ——–
7 15 ACTIVE
12 63 INACTIVE

Сеанс зі статусом ACTIVE – це сеанс, який виконує SQL інструкції і звертається до сервера Oracle. Сеанс зі статусом INACTIVE – якщо не виконується інструкція SQL або немає звернень до сервера.


Завершення активних сеансів


Якщо користувач виконує SQL інструкції, звертається до сервера Oracle, тобто його сеанс має статус ACTIVE, і його сеанс примусово завершений, то користувач негайно отримає повідомлення про помилку:


ORA-00028: your session has been killed


Якщо, після отримання повідомлення про помилку користувач намагається зберегти будь-які дані або виконує SQL пропозицію, то Oracle поверне помилку:


ORA-01012: not logged on


Якщо активний сеанс не може бути перерваний (наприклад, виконується відкат транзакції або йдуть операції введення / виводу в мережі), то, сеанс не зможе бути перерваний до його завершення. В цьому випадку, сеанс тримає всі ресурси, до свого завершення. Додатково, сеанс виконує пропозицію ALTER SYSTEM, перед завершенням очікує 60 секунд, і вже потім завершується. Якщо сеанс не завершується після закінчення 60 секунд, то користувач ініціює завершення сеансу отримує повідомлення, про те, що сеанс “позначено” на завершення. Сеанс, позначений на видалення, в поданні V $ SESSION має статус KILLED і значення в поле SERVER відмінне від PSEUDO.


Завершення неактивних сеансів


Якщо сеанс має статус INACTIVE, коли він переривається, повідомлення про помилку:


ORA-00028: your session has been killed


не повертається користувачеві негайно. Повідомлення повертається, як тільки користувач спробує використовувати розірваний сеанс.
Як тільки неактивний сеанс припинений, STATUS в поданні V $ SESSION виглядає як KILLED. Рядок припиненого сеансу видаляється з представлення V $ SESSION, відразу ж після того, як користувач зробить спробу використовувати сеанс знову і отримає повідомлення про помилку ORA-00028.


У наступному прикладі, припиняється неактивний сеанс. Першим кроком робиться вибірка з уявлення V $ SESSION, для визначення SID та номери сеансу, потім сеанс переривається.


SELECT SID, SERIAL#, STATUS, SERVER
FROM V$SESSION
WHERE USERNAME = “TEST”;
SID SERIAL# STATUS SERVER
—– ——– ——— ———
7 15 INACTIVE DEDICATED
12 63 INACTIVE DEDICATED
2 rows selected.
ALTER SYSTEM KILL SESSION “7,15”;
Statement processed.
SELECT SID, SERIAL#, STATUS, SERVER
FROM V$SESSION
WHERE USERNAME = “TEST”;
SID SERIAL# STATUS SERVER
—– ——– ——— ———
7 15 KILLED PSEUDO
12 63 INACTIVE DEDICATED
2 rows selected.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*