2015-04-09 1 views
1

Возможно ли, что тупик в Oracle не будет откатываться назад, в котором мы должны вручную очистить тупик?Может ли овертайк не откидываться назад?

Я прочитал в документации Oracle, он говорит:

Oracle Database автоматически обнаруживает тупики и решает их откат одно заявления участвующего в тупике, выпустив один набор конфликтующих блокировок строк.

Мой вопрос: может ли быть сценарий, когда этого не происходит?

+1

Посмотрите, поможет ли это http://stackoverflow.com/a/28455397/3989608 и это http://lalitkumarb.wordpress.com/2014/02/25/понимание-оракул-тупик/ –

+0

@LalitKumarB спасибо. это была хорошая статья, и теперь у меня есть лучшее понимание об этом. – k9yosh

ответ

2

Возможно ли, что Тупик не откатывается назад, в котором мы должны вручную очистить Тупик.

Ну, это не то, что все операции откатываются назад. Oracle автоматически обнаруживает тупик, бросает ORA-00060: deadlock detected while waiting for resource и откатывает одну из транзакций, вовлеченных в тупик, которые Oracle решил в качестве жертвы. Предыдущие успешные транзакции не откатываются. Даже после ошибки тупика, если вы совершили фиксацию, будет выполнена предыдущая успешная транзакция. В это время транзакция другого сеанса также будет успешной, и вы можете выполнить фиксацию.

Тупики автоматически очищаются - вам не нужно их очищать.

Подробный пример см. На этом answer. Вы можете воспроизвести с помощью простого тестового примера, как показано здесь: Understanding Oracle Deadlock

+0

Oracle не будет откатывать всю транзакцию. Он будет ТОЛЬКО откат самого последнего оператора SQL транзакции. Транзакция остается открытой. – ibre5041

+0

Да. Как я уже сказал, предыдущие успешные транзакции не откатываются. –

+0

Но предыдущая успешная транзакция не совпадает с предыдущей успешной заявкой. – ibre5041

Смежные вопросы