Подтвердить что ты не робот

Как я могу заставить Oracle SQL Developer закрыть соединение с БД?

Есть ли способ удержать Oracle SQL Developer от закрытия моих соединений с БД или увеличить тайм-аут? Иногда во время длительного запроса SQL Dev просто закрывает соединение, оставляя мой запрос на сервере, но у меня нет никаких результатов. Если я RDP на сервер и запускаю SQL Dev локально, у него никогда не возникает этой проблемы.

4b9b3361

Ответ 1

Это не похоже на проблему с разработчиком SQL, но я никогда не сталкивался с этим. Вы уверены, что это не что-то еще, как ваша сеть? Что произойдет, если вы подключаетесь из SQL plus со своего рабочего стола.

Ответ 2

У меня нет ответа для этого, но у меня такая же проблема.

Брандмауэр между моим SQL Developer и базой данных автоматически закрывает "неактивные" сеансы. Длительный запрос в соответствии с брандмауэром - неактивный сеанс, поэтому он закрывает его. Я еще не нашел, как заставить SQL Developer отправлять пакеты через соединение с длинным запросом, чтобы брандмауэр не закрывал соединение. И я не знаю, возможно ли это вообще.

Поэтому я не думаю, что это проблема SQL Developer, но проблема с брандмауэром.

- UPDATE

Существует расширение для SQL Developer, которое позволяет поддерживать активные соединения: http://sites.google.com/site/keepaliveext/

Он еще не полностью закончен (например, уведомление, которое вы получаете, содержит один и тот же тайм-аут независимо от того, какой тайм-аут вы указали), но он делает трюк. Я еще не тестировал его против последнего выпуска SQL Developer, но он работал с SQL Developer 2.2.x

- UPDATE

Для SQL Developer 4+ вы можете использовать: http://scristalli.github.io/SQL-Developer-4-keepalive/

Ответ 3

Здесь может быть использовано другое расширение Active Connection Active. (Упомянутое выше расширение содержит ряд проблем, которые разрешены в этом extn.)

http://sites.google.com/site/keepconnext/

Ответ 4

Также звучит как проблема с брандмауэром.

Возможно, вам повезло с параметром EXPIRE_TIME в файле SQLNET.ORA сервера. Из документации:

Используйте параметр SQLNET.EXPIRE_TIME, чтобы указать промежуток времени в минутах, чтобы отправить пробник, чтобы проверить, что соединения клиент/сервер активны. Установка значения, превышающего 0, гарантирует, что соединения не будут оставаться открытыми на неопределенный срок из-за аномального завершения клиента. Если зонд находит завершенное соединение или соединение, которое больше не используется, оно возвращает ошибку, в результате чего процесс сервера завершается. Этот параметр предназначен в первую очередь для сервера базы данных, который обычно обрабатывает несколько подключений в любой момент времени.

10g Документация по EXPIRE_TIME

Ответ 5

В качестве временного решения на стороне "Data Grid" вы найдете вкладку "DBMS Output", включите вывод СУБД и установите частоту опроса в удобное время.

Ответ 6

наш DBA, похоже, нашел решение для этого:

2,2. Если между экземпляром OC4J и базой данных имеется брандмауэр Брандмауэр может отключить неактивные подключения jdbc к серверу базы данных. Однако экземпляр OC4J не может обнаружить, что брандмауэр отключил соединение с базой данных. Oracle Network можно настроить с помощью обнаружения мертвых соединений (SQLNET.EXPIRE_TIME), чтобы обойти эту проблему. Установите EXPIRE_TIME на сервере базы данных на значение, меньшее времени ожидания подключения брандмауэра, чтобы DCD поддерживал соединение с базой данных. См. Примечание 151972.1 "Обнаружение мертвого соединения (DCD)". Поскольку это настройка, настроенная на сервере базы данных, а не на уровне среднего уровня, она будет применяться ко всем соединениям с базой данных (OCI и тонким JDBC). Альтернативные решения: - Отключить или увеличить параметр тайм-аута простоя брандмауэра. или - Настройте параметр Постоянное время TCP в базе данных и на серверах среднего уровня до значения, меньшего, чем тайм-аут соединения брандмауэра. После установки времени сохранения TCP, машины будут посылать повторно нулевой пакет после указанных минут, чтобы поддерживать связь. Поскольку пакет отправляется каждый раз во время ожидания простоя брандмауэра, соединение не закрывается.