2009-08-20 20 views
29

Esiste un modo per impedire a Oracle SQL Developer di chiudere le connessioni DB o aumentare il timeout? A volte durante una query a esecuzione prolungata SQL Dev chiuderà semplicemente la connessione, lasciando la mia query in esecuzione sul server ma senza risultati. Se I RDP nel server ed eseguo SQL Dev localmente non sembra mai avere questo problema.Come posso impedire a Oracle SQL Developer di chiudere la connessione DB?

+0

Domanda correlata con la soluzione per SQL Developer 4: http://stackoverflow.com/questions/12999811/when-sql-developer-is-idle-i-lose-my-connection – Vadzim

risposta

7

Questo non sembra un problema con lo sviluppatore SQL, ma non l'ho mai incontrato. Sei sicuro che non sia qualcos'altro, come la tua rete? Cosa succede se ci si connette da SQL Plus dal desktop.

+0

Tipo di ritardo nel contrassegnare questa risposta, ma sì, era un problema di rete. –

+0

@KevinBabcock Qual'era il problema di rete che dovevi affrontare qui? – theCodeMachine

+0

Possiedo Toad e Oracle SQL Developer, Oracle SQL Developer è sempre disconnesso e tenta di connettersi, è molto fastidioso, nel frattempo Rospo mantiene la connessione tutto il giorno. Ora devo lasciare Toad per ragioni di lavoro :( –

26

Non ho la risposta per questo, ma sto vivendo lo stesso problema.

Il firewall tra il mio sviluppatore SQL e il database chiude automaticamente le sessioni "inattive". Una query di lunga esecuzione è in base al firewall una sessione inattiva, quindi la chiude. Non ho ancora trovato come rendere SQL Developer inviare pacchetti su una connessione con una query lunga, in modo che il firewall non chiuda la connessione. E non so se questo è possibile.

Quindi non penso che sia un problema di SQL Developer, ma un problema di firewall.

- UPDATE

Esiste un'estensione per SQL Developer che consente di mantenere i collegamenti attivi: http://sites.google.com/site/keepaliveext/

Non è del tutto ancora finito (ad esempio la notifica che si ottiene stati lo stesso timeout no importa quale timeout hai specificato) ma fa il trucco. Non ho, tuttavia, testato contro l'ultima SQL Developer pre-release, ma ha funzionato con SQL Developer 2.2.x

- UPDATE

Per gli sviluppatori SQL 4+ è possibile utilizzare: http://scristalli.github.io/SQL-Developer-4-keepalive/

+0

Ho provato l'estensione keep-alive http://sites.google.com/site/keepaliveext/ funziona esattamente come previsto, grazie! –

+0

Sembra non lavorando su 4.0 – ATorras

+3

Una versione funzionante per SQL Developer 4.0: https://bitbucket.org/scristalli/sql-developer-4-keepalive/overview –

8

Anche per me sembra un problema con il firewall.

Potrebbe essere un po 'di fortuna impostare il parametro EXPIRE_TIME nel file SQLNET.ORA del server. Dalla documentazione:

Utilizzare il parametro SQLNET.EXPIRE_TIME per specificare un intervallo di tempo, in minuti, per inviare un probe per verificare che le connessioni client/server siano attive. L'impostazione di un valore maggiore di 0 garantisce che le connessioni non vengano lasciate aperte indefinitamente, a causa di una terminazione anomala del client. Se il probe trova una connessione terminata o una connessione che non è più in uso, restituisce un errore, causando l'uscita del processo del server. Questo parametro è principalmente destinato al server di database, che in genere gestisce più connessioni contemporaneamente.

10g Documentation on EXPIRE_TIME

+0

Ho testato con successo l'efficacia di questo parametro Grazie! –

5

Come soluzione temporanea ad esso, al fianco di 'Data Grid' troverete la scheda 'Output DBMS', girare uscita DBMS e impostare la frequenza di polling per un tempo gradevole .

+0

Bel suggerimento ... I non so cosa intendi con "Data Grid" ma l'ho trovato in 'Visualizza> Output Dmbs' (ALT, V, D). –

11

Ecco un'altra estensione Keep Connection Active che potrebbe essere utile. (L'estensione menzionata sopra contiene una serie di problemi risolti in questa estensione.)

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

+1

Il lavoro su una porta è quasi completo, dettagli qui: http: // siti. google.com/site/keepconnext/ –

2

nostro DBA sembra aver trovato una soluzione a questo:

2.2. Se è presente un firewall tra l'istanza OC4J & il Database Il firewall potrebbe eliminare connessioni jdbc inattive al server di database. Tuttavia, l'istanza OC4J non è in grado di rilevare che il firewall ha interrotto la connessione al database. Oracle Net può essere configurato con Dead Connection Detection (SQLNET.EXPIRE_TIME) per risolvere il problema. Impostare EXPIRE_TIME sul server database su un valore inferiore al timeout della connessione firewall in modo che DCD mantenga in vita la connessione al database. Vedere la nota 151972.1 "Rilevazione connessione morta (DCD) spiegata". Poiché si tratta di un'impostazione configurata sul server di database, non sul midtier, verrà applicata per tutte le connessioni di database (OCI e JDBC sottile). Soluzioni alternative: - Disabilita o aumenta il parametro di timeout di inattività del firewall. o - Configurare l'impostazione del tempo di Keepalive TCP sul database e sui server midtier su un valore inferiore al timeout della connessione del firewall. Dopo aver impostato il tempo di Keepalive TCP, le macchine invieranno ripetutamente un pacchetto nullo dopo i minuti specificati per mantenere attive le connessioni. Poiché il pacchetto viene inviato ogni volta all'interno del timeout di inattività del firewall, la connessione non verrà chiusa.

Problemi correlati