Назад | Перейти на главную страницу

Настройка сообщений поддержки активности для связи с клиентом TOAD

У меня есть сценарий, когда долгие простаивающие сеансы 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. Существует относительно немного программ, реализующих поддержку активности ...


Вопросы

  1. Могу я использовать это Техника KeepAliveTime на клиентских машинах Windows или, возможно, на сервере?
    (кто-нибудь пробовал?)
    • Есть ли какой-нибудь другой способ сохранить эти соединения TOAD активными (с любого конца связи)?

Я нашел это на сайте 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