Ora10g: ORA-00060 тупик обнаружен

Иногда может случиться, что две сессии должны быть подошел к блокировки при попытке изменить те же данные (запись на уровне или уровне таблицы). В не-параллельных и / или имеет целью не пойти, потому что приложения, как правило, минимально, чтобы избегать или, по крайней мере, в тестировании опытной и обнаружены и исправлены. Дело в том, что даже если вы планируете, чтобы избежать их можно произвести. В большинстве случаев решения сами по себе в конце сессии для принятия изменений окон, даже не мы понимаем. В других редких случаях неразрешимые круговой завалы происходят, "тупиков", где вы в конечном итоге делает откат транзакции и создает запись в файле предупреждение:

ORA-00060: тупик обнаружено.Дополнительная информация в файле / opt/oracle/admin/XXX/udump/XXX_ora_28205.trc

Если мы обратимся файл трассировки найти более подробную информацию: сессии участвуют, объект, запись, проверить его причин, и т.д. ... Я включил части образца файла. В первой части файла, который заседании мы будем страдать отката (выделены жирным шрифтом) и ниже мы видим круговой блок (где ожидается 1706 к 1693, и наоборот):

 ...
*** Название действия: () 27/01/2011 08:07:36.110
*** Имя модуля: (Servicio.exe) 27/01/2011 08:07:36.110
*** Имя службы: (SYS $ USERS) 27/01/2011 08:07:36.110
*** ID сессии: (1693 703. 30) 27/01/2011 08:07:36.110
ТУПИК обнаружено (ORA-00060)
[Сделка Deadlock]
После не тупик ошибка ORACLE.Это тупик из-за ошибки пользователя при разработке приложений или выходящих из неправильного специальных SQL. Следующая информация может помочь в определении тупик: тупиковый граф: --------- окон (S )-------- --------- Официант (ы) --- Название ресурса процесса сессии ------ провел провел ждет процесс сессии ждет TX-00090022-1693 00173f07 X 21 X 82 TX-00030014-1706 0013a2dd 21 1693 X 1706 х 82 строк ждал на: Сессия 1706: объект - идентификатор = 0000CF1C - AAAM8cAA5AAACX + ААР (objn словарь - 53020, файл - 57, блок - 9726, слот - 5) сессия 1693: объект - идентификатор = 0000CF1C - AAAM8cAA5AAACX + AAI (objn словарь - 53020, файл - 57, блок - 9726, слот - 8) ... 

С помощью этой информации мы можем знать, какие именно объекты и записи / S является источником споров.Если это то, что повторяется в цикле может помочь применение ответственность за предоставление вам более подробную информацию (в дополнение к консультации) для разрешения. Чтобы узнать, какие записи в таблице, что:

  1. Convertimoобъект десятичной SA, указывающую конечный Hex (0000CF1C-> 53 020)
  2. Получить имя объекта словаря данных:
    SELECT владельца, object_name, object_type dba_objects откуда object_id = 53020;
  3. Обратитесь к таблице ищет записи получить идентификатор:
    SELECT * FROM таблица WHERE идентификатор = '+ AAAM8cAA5AAACX ААР''

Чуть дальше файл также можно видеть, что консультации привели в тупик и другой информации, число "ждет" на сессии в вопрос и т.д. ...

Все это забавляет меня, потому что иногда комментировать испортил разработчики просят нас, чтобы проверить Есть блоков среди пользователей, поскольку они имеют то, что не так быстро, как никогда.В отличие от нас также есть очень нетерпеливые пользователи, которые близки к мешок их применения ... Если вы поймали во времени, я пришел, чтобы спросить, Вы смотрите на это не оборачиваясь, если он существует и мнение сессии блокирующие работает ... Если это так и придется ждать, "вы говорите? Первый раз, когда вы объяснить, что это предмет, второй раз вы помните и третий пойти на кофе ...