Изменить / Предисловие: Этот вопрос был перенесен из SO, так как меня особенно интересует вопрос о тайм-аутах при запросах ссылок на БД. Предоставленный обходной путь от SO несколько нормальный, но мне действительно интересен сам вопрос.
Мотивация:
у меня был один запрос, выполняемый «навсегда» (более 2 дней, пока я не завершил сеанс), который использовал ссылку на базу данных. Проблема, казалось, ORA-02068
заключалась в том, что удаленная база данных стала недоступной и по какой-то пока еще неизвестной причине не было поднято (не обсуждаться здесь), а запрос просто ждал и ждал.
(Запрос выдается заданием dbms_scheduler, которое выполняет процедуру в пакете PL / SQL. Как следствие, задание также зависло. Но это не представляет особого интереса для сути этого вопроса)
Я смоделировал эту ситуацию, переведя одну из моих тестовых БД в режим ожидания и запросив ее по ссылке в базе данных. Как и ожидалось, запрос находился в ожидании, пока он не будет отменен вручную или удаленная БД не будет приостановлена.
Вопрос:
У меня нет контроля над поведением и временем работы удаленной базы данных, поэтому я нахожусь в поиске некоторой возможности установить тайм-аут для запроса, использующего ссылку на базу данных.
Я уже изучил профили (и CPU_PER_CALL
т. Д.), sqlnet.ora
Параметры, добавляя локальные параметры именования непосредственно в строку подключения (например, добавляя (connect_timeout=10)
в определение ссылки на базу данных), выполняя команду с ... for update wait 1
, но они либо работают для занятых или незанятых сеансов, но не для сессий в ожидании.
Поэтому я нахожусь в поиске некоторого параметра на «локальной» стороне ссылки на базу данных, который устанавливает тайм-аут для запросов по ссылкам базы данных.
Некоторое решение, как alter session set xyz
или select ... from a@b "wait 100" --(yes, I know this syntax doesn't exist)
было бы оценено, так как у меня нет прав администратора этих конкретных баз данных.
В настоящее время я использую 10gR2, но через несколько недель обновлюсь до 11gR2, поэтому идеи для любой из этих версий будут полезны.