Конфигурация Oracle для поддержания брандмауэра открытым для длительных транзакций БД

У меня есть приложение EAR, работающее на WAS и подключающееся к oracle db для запуска хранимого процесса.

Теперь сохраненный процесс занимает много времени для запуска. Таким образом, межсетевой экран между WAS и сервером-оракулом закрывается через 30 минут. Существует ли конфигурация оракула, которая позволит брандмауэру оставаться открытым? Увеличение таймаута здесь не вариант.

1 ответ

Решение

Если брандмауэр закрывает соединение из-за неактивности, вы можете установить параметр sqlnet.orasqlnet.expire_time на сервере пинговать клиента каждые N минут. Обычно это используется для обнаружения мертвых соединений, чтобы сервер мог определить, что клиентское приложение умерло при открытом соединении. Но это может помешать брандмауэру решить, что соединение слишком долго неактивно. Если, с другой стороны, брандмауэр просто запрещает подключения, которые длятся дольше 30 минут, независимо от бездействия, этот параметр не окажет никакого влияния.

Архитектурно, вы действительно хотите, чтобы ваше приложение выполняло 30-минутный вызов хранимой процедуры? Казалось бы, более уместно для приложения сделать вызов, который отправляет задание, которое выполняет хранимую процедуру асинхронно. Затем веб-приложение может периодически опрашивать базу данных, чтобы увидеть, выполняется ли задание, если вы хотите отобразить какой-либо индикатор выполнения для пользователя.

Другие вопросы по тегам