У меня есть сценарий, когда долгие простаивающие сеансы TOADSoft связь клиента с сервером Oracle кажется прерванной из-за тайм-аута промежуточного межсетевого экрана с полным состоянием.
Эти сеансы могут простаивать несколько часов!
Недопустимо увеличивать тайм-аут на брандмауэре глобально и
конечно, он не поддерживает более длительные тайм-ауты для определенных потоков.
Я исправил эту проблему для неактивных соединений PuTTY;
это позволяет настраиваемый keep-alive.
Но я еще не обнаружил такой поддержки в программном обеспечении TOAD.
Немного взглянув на общесистемные конфигурации, я обнаружил эту деталь Microsoft TechNet на Настройка Keep-Alives для всей системы это предполагает работу с KeepAliveTime и связанные переменные реестра.
HKLM \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ KeepAliveTime
Это похоже на Конфигурация всей системы Linux для использования общесистемного keep-alive.
Но это требует, чтобы программы использовали setsockopt()
и запросить сохранение активности (верно?).
Помните, что поддержка keepalive, даже если она настроена в ядре, не является поведением по умолчанию в Linux. Программы должны запрашивать контроль активности для своих сокетов с помощью интерфейса setsockopt. Существует относительно немного программ, реализующих поддержку активности ...
Я нашел это на сайте Dell и подтвердил, что он работает (под Toad 11.5.0.56): Есть ли у Toad настройки keep alive / interval time / ping, чтобы сеть не превышала таймаут? (49507)
Подводя итог - включите вывод в окне вывода СУБД, щелкнув значок красной кнопки слева от строки меню вывода СУБД (он станет зеленым). Вы можете получить доступ к этому на вкладке DBMS Output рядом с вкладкой Data Grid или через View -> DBMS Output.
Это также автоматически включит опрос. По моему опыту, вам нужен как вывод СУБД и Опрос включен для поддержания соединения.
У вас есть доступ по SSH? Вы можете настроить SSH-туннель и отправить через него SQL-сообщение.
ЖАБА: сервер (или tnsnames) становится localhost, порт прослушивания - это какой-то случайный порт, например 12346
PuTTY: перенаправление портов. порт источника: 12346, пункт назначения: $ REMOTE_IP: 1521. Оставьте его как локальный порт.
Убедитесь, что вы включили поддержку активности TCP в PuTTY через раздел Connection.
Установите значение SQLNET.EXPIRE_TIME в sqlnet.ora.
Вот что руководство Oracle говорит по этому поводу:
Цель
Использовать параметр SQLNET.EXPIRE_TIME
чтобы указать интервал времени в минутах для отправки зондирования, чтобы убедиться, что соединения клиент / сервер активны. Установка значения больше 0 гарантирует, что соединения не будут оставаться открытыми на неопределенный срок из-за ненормального завершения работы клиента. Если зонд обнаруживает прерванное соединение или соединение, которое больше не используется, он возвращает ошибку, в результате чего серверный процесс завершается. Этот параметр в первую очередь предназначен для сервера базы данных, который обычно обрабатывает несколько подключений одновременно.
Ограничения на использование этой функции обнаружения разорванного соединения:
По умолчанию: 0
Минимальное значение: 0
Рекомендуемое значение: 10
пример
SQLNET.EXPIRE_TIME=10