Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 reproduce ORA-00031 session marked for kill  [new]
Mudd
Member

Откуда: Днепр
Сообщений: 29
Всем привет. У меня есть пакет, который убивает сессии в БД. Несколько дней назад во время выполнения я получил ORA-00031 session marked for kill. Суть ошибки описано здесь:
http://ora-00031.ora-code.com/
Я хочу написать для неё обработчик. Но я не знаю как воспроизвести эту ошибку. Это нужно чтобы Оракл не мог откатить транзакцию после команды ALTER SYSTEM KILL SESSION.
24 апр 12, 17:08    [12464357]     Ответить | Цитировать Сообщить модератору
 Re: reproduce ORA-00031 session marked for kill  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18399
Обычный raise не подойдет?
24 апр 12, 17:10    [12464375]     Ответить | Цитировать Сообщить модератору
 Re: reproduce ORA-00031 session marked for kill  [new]
Mudd
Member

Откуда: Днепр
Сообщений: 29
andrey_anonymous,

Ну... Это все же больше имитация.

Эх... зря создал, нужно было чуть дольше погуглить:
http://blog.tanelpoder.com/2009/08/13/alter-system-kill-session-and-ora-00031-session-marked-for-kill/
SQL> exec dbms_lock.sleep(100)
And immediately after try to kill that sleeping session from your session
.........
24 апр 12, 17:13    [12464401]     Ответить | Цитировать Сообщить модератору
 Re: reproduce ORA-00031 session marked for kill  [new]
ukku
Member

Откуда: 59
Сообщений: 195
Сделайте долгий апдейт и вызовите kill два раза подряд.
24 апр 12, 17:13    [12464403]     Ответить | Цитировать Сообщить модератору
 Re: reproduce ORA-00031 session marked for kill  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6749
Mudd
Это нужно чтобы Оракл не мог откатить транзакцию после команды ALTER SYSTEM KILL SESSION.

Т.е. оставил неконсистентное состояние?
24 апр 12, 17:23    [12464493]     Ответить | Цитировать Сообщить модератору
 Re: reproduce ORA-00031 session marked for kill  [new]
Mudd
Member

Откуда: Днепр
Сообщений: 29
2 env

Во второй ссылке подробно описано это. ORA-00031 получается если сессия, помеченная на удаление не удаляется в течении 60с. Это происходит если транзакция в сессии не успевает откатиться за это время.
24 апр 12, 17:30    [12464584]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить