Можно ли каким-то образом запретить Oracle SQL Developer закрывать мои соединения с БД или увеличить тайм-аут? Иногда во время долгого выполнения запроса SQL Dev просто закрывает соединение, оставляя мой запрос на сервере, но без результатов. Если я подключаюсь к серверу по RDP и запускаю SQL Dev локально, такой проблемы не возникает.
У меня нет ответа на этот вопрос, но я столкнулся с той же проблемой.
Брандмауэр между моим 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/
Здесь'с другой сохранить активное расширение связи, которая может быть использована. (Расширение упомянутых выше, содержит ряд вопросов, которые решаются в данном внутр.)
Также похоже на проблему с брандмауэром.
Возможно, вам повезет с установкой параметра EXPIRE_TIME в файле SQLNET.ORA сервера. Из документации:
Используйте параметр SQLNET.EXPIRE_TIME для указания временного интервала в минутах для отправки запроса, чтобы убедиться, что соединения клиент/сервер активны. Установка значения больше 0 гарантирует, что соединения не останутся открытыми на неопределенное время из-за аномального завершения работы клиента. Если зонд обнаруживает прерванное соединение или соединение, которое больше не используется, он возвращает ошибку, заставляя серверный процесс завершить работу. Этот параметр в первую очередь предназначен для сервера базы данных, который обычно обрабатывает несколько соединений в одно и то же время.
Это не похоже на проблему с SQL developer, конечно, я никогда с этим не сталкивался. Вы уверены, что это не что-то другое, например, ваша сеть? Что произойдет, если вы подключитесь к SQL plus с рабочего стола.
наши дБА, похоже, нашли решение этой:
2.2. При наличии брандмауэра между экземпляром &амп OC4J; базы данных Брандмауэр может упасть неактивных соединений JDBC к серверу базы данных. Однако OC4J инстанции не может обнаружить, что брандмауэр истекло время ожидания подключения к базе данных. В Oracle net может быть настроен с мертвой обнаружение соединения (заменить sqlnet.EXPIRE_TIME) чтобы обойти эту проблему. Набор EXPIRE_TIME на сервере базы данных меньше, чем время ожидания подключения брандмауэра, так что ОКД держит связь с живой базе. См. Примечание На " 151972.1;обнаружение связи (ДКД) объяснил, что". Поскольку этот параметр настроен на сервере базы данных, а не на среднего уровня, она будет применяться для всех подключений к базе данных (OCI и JDBC для тонких). Альтернативные решения: