Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I keep Oracle SQL Developer from closing the DB connection?

Is there any way to keep Oracle SQL Developer from closing my DB connections, or to increase the timeout? Sometimes during a long-running query SQL Dev will just close the connection, leaving my query running on the server but me with no results. If I RDP into the server and run SQL Dev locally it never seems to have this problem.

like image 486
Kevin Babcock Avatar asked Aug 20 '09 22:08

Kevin Babcock


People also ask

How do I keep the connection alive in SQL Developer?

Go to Tools --> Preferences and click "Check connection". It pings the database every 60 seconds, making the session active and avoids idle session disconnects caused by profiles.

How do I increase session timeout in SQL Developer?

Answers. SQL Developer doesn't have a timeout - any timeout you are experiencing will be set at the database level or possibly in a firewall. You can try to use a 'keepalive' as discussed in 2460876 thread.

Does Oracle SQL Between include endpoints?

The SQL BETWEEN Operator The values can be numbers, text, or dates. The BETWEEN operator is inclusive: begin and end values are included.


3 Answers

Answer

It's most likely a firewall between SQL Developer and the database that breaks things. You can solve that from SQL Developer using the SQL Developer Keepalive plugin.

You can also fix this from the Database Server by using the answers by Thomas and David Mann.

Oracle Net can be configured with Dead Connection Detection (SQLNET.EXPIRE_TIME) to workaround this problem. Set EXPIRE_TIME on the database server to a value less than the firewall connection timeout so that DCD keeps the connection to the database alive. See Note 151972.1 "Dead Connection Detection (DCD) Explained"

Original answer

I don't have the answer for this, but I'm experiencing the same problem.

The firewall between my SQL Developer and the database automaticly closes "inactive" sessions. A long running query is according to the firewall an inactive session, so he closes it. I've not, yet, found how to make SQL Developer send packets over a connection with a long running query, so that the firewall doesn't close the connection. And I don't know if this is possible at all.

So I don't think it is a SQL Developer problem, but a firewall issue.

-- UPDATE

There is an extension for SQL Developer that allows you to keep the connections active: http://sites.google.com/site/keepaliveext/

It's not totally finished yet (for example the notification you get states the same timeout no matter what timeout you have specified) but it does the trick. I've not, yet, tested it against the latest SQL Developer pre-release, but it worked with SQL Developer 2.2.x

-- UPDATE

For SQL Developer 4+ you can use: http://scristalli.github.io/SQL-Developer-4-keepalive/

like image 52
DelGurth Avatar answered Oct 03 '22 21:10

DelGurth


Here's another Keep Connection Active extension that might be of use. (The extension mentioned above contains a number of issues that are resolved in this extn.)

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

like image 36
Dr.7 Avatar answered Oct 03 '22 22:10

Dr.7


Also sounds like a firewall problem to me.

You may have some luck with setting EXPIRE_TIME parameter in the server's SQLNET.ORA file. From the documentation:

Use parameter SQLNET.EXPIRE_TIME to specify a the time interval, in minutes, to send a probe to verify that client/server connections are active. Setting a value greater than 0 ensures that connections are not left open indefinitely, due to an abnormal client termination. If the probe finds a terminated connection, or a connection that is no longer in use, it returns an error, causing the server process to exit. This parameter is primarily intended for the database server, which typically handles multiple connections at any one time.

10g Documentation on EXPIRE_TIME

like image 36
David Mann Avatar answered Oct 03 '22 23:10

David Mann