CftClub.ru
Клуб специалистов ЦФТ-Банк

timeout: distributed transaction waiting for lock

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
kdmitriev
Участник со стажем
Неподтвержденный


Вступление в Клуб: 26.06.2007
СообщениеСр Янв 27, 2010 10:39   timeout: distributed transaction waiting for lock Ответить с цитатой
Полезность: Нет оценки
При выполнении INSERT SELECT * FROM ...@LINK возникает

timeout: distributed transaction waiting for lock

как с этим бороться ?

Как всегда - спасибо, сто грамм и пончик
w00per
Профи
Констанс-Банк
Совладелец


Вступление в Клуб: 17.10.2007
СообщениеСр Янв 27, 2010 11:15    Ответить с цитатой
Полезность: Нет оценки
Цитата:
Когда пользователь выдает предложение SQL, ORACLE пытается заблокировать требуемые ресурсы, чтобы успешно выполнить это предложение. Если запрашиваемые данные удерживаются другой неподтвержденной транзакцией, и эта блокировка сохраняется чрезмерно долгое время, то может возникнуть таймаут, и возвращается следующее сообщение:
ORA-2049: time-out: distributed transaction waiting for lock
Поскольку никакие данные не были модифицированы, такой таймаут не требует никаких действий, и ваше приложение должно продолжать так, как будто был обнаружен захват. Интервал таймаута можно устанавливать посредством параметра инициализации DISTRIBUTED_LOCK_TIMEOUT

_________________
I Lie About Everything.
kdmitriev
Участник со стажем
Неподтвержденный


Вступление в Клуб: 26.06.2007
СообщениеСр Янв 27, 2010 11:29    Ответить с цитатой
Полезность: Нет оценки
w00per пишет:
Цитата:
Когда пользователь выдает предложение SQL, ORACLE пытается заблокировать требуемые ресурсы, чтобы успешно выполнить это предложение. Если запрашиваемые данные удерживаются другой неподтвержденной транзакцией, и эта блокировка сохраняется чрезмерно долгое время, то может возникнуть таймаут, и возвращается следующее сообщение:
ORA-2049: time-out: distributed transaction waiting for lock
Поскольку никакие данные не были модифицированы, такой таймаут не требует никаких действий, и ваше приложение должно продолжать так, как будто был обнаружен захват. Интервал таймаута можно устанавливать посредством параметра инициализации DISTRIBUTED_LOCK_TIMEOUT


я правильно понял ?

EXECUTE_SQL('DISTRIBUTED_LOCK_TIMEOUT')
w00per
Профи
Констанс-Банк
Совладелец


Вступление в Клуб: 17.10.2007
СообщениеСр Янв 27, 2010 11:51    Ответить с цитатой
Полезность: Нет оценки
Нет, либо увеличить значение параметра "DISTRIBUTED_LOCK_TIMEOUT", либо переписать конструкцию "INSERT SELECT * FROM ...@LINK" на цикл по курсору с COMMITом при каждой итерации, либо создать вьюху(а не вставлять записи в таблицу).
_________________
I Lie About Everything.
kdmitriev
Участник со стажем
Неподтвержденный


Вступление в Клуб: 26.06.2007
СообщениеСр Янв 27, 2010 13:00    Ответить с цитатой
Полезность: Нет оценки
w00per пишет:
Нет, либо увеличить значение параметра "DISTRIBUTED_LOCK_TIMEOUT", либо переписать конструкцию "INSERT SELECT * FROM ...@LINK" на цикл по курсору с COMMITом при каждой итерации, либо создать вьюху(а не вставлять записи в таблицу).


примера нет никакого ? Embarassed
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru