Oracle: установить время ожидания запроса - PullRequest
4 голосов
/ 16 декабря 2009

У меня есть программа PL / SQL, которая делает запрос к базе данных AS400 через Transparent Gateway. Иногда AS400 не отвечает на запрос (могут быть проблемы с сетью), и программа PL / SQL зависает.

Существует ли какой-либо метод для установки времени ожидания для запроса Oracle, чтобы по истечении определенного промежутка времени возникало исключение?

1 Ответ

4 голосов
/ 16 декабря 2009

Вы пытались установить параметр HS_FDS_CONNECT_PROPERTIES в файле инициализации прозрачного шлюза AS400?

На время ожидания 2 минуты:

HS_FDS_CONNECT_PROPERTIES="timeout='120'"

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

Профиль ресурса может использоваться для установки ограничений на все виды использования в любом конкретном сеансе - одним из доступных ограничений ресурса является время соединения.

Например, вы можете создать профиль as400_tg_profile и назначить ему максимальное время соединения 2 минуты:

create profile as400_tg_profile limit connect_time 2;

... тогда вы можете назначить этот профиль пользователю, выполняющему запрос:

alter user as400_tg_user profile as400_tg_profile;

Существует множество вариантов создания профиля, и есть много способов назначить профиль конкретному пользователю, поэтому вам следует прочитать документацию.

Вы также можете изучить использование Oracle Resource Manager для создания групп ресурсов и профилей ресурсов, если вам необходимо динамически назначать определенные ограничения ресурсов - это дает вам детальный контроль над ресурсами для отдельных сеансов.

Документация Oracle действительно хороша для этого - для начала прочитайте:

http://www.oracle.com/technology/products/manageability/database/pdf/twp03/twp_oracle%20database%2010g%20resource%20manager.pdf

Для более подробной информации:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/dbrm.htm#ADMIN027

Это одна из тех функций, которую проще использовать в Enterprise Manager, но быстрый пример PL / SQL приведен в:

http://www.dba -oracle.com / job_scheduling / resource_manager.htm

...