2012-03-08 5 views
8

Stiamo avendo un problema con troppi processi Oracle essere creato (oltre 2000) quando le connessioni sono limitati a 1.100 (utilizzando C3P0)Relazione tra le sessioni di JDBC e Oracle elabora

Due domande:

  • Qual è la relazione tra un processo Oracle e una connessione JDBC? Viene creato un processo Oracle per ogni sessione? Viene creato uno per ogni JDBC dichiarazione? Nessuna relazione?

  • Hai mai affrontato questo scenario, dove stai creando più processi rispetto alle connessioni JDBC?

Qualsiasi commento sarebbe molto apprezzato.

risposta

2

C'è uno SE ssione per connessione. Sembra che tu abbia una perdita di connessione, da qualche parte stai aprendo una nuova connessione e non si chiude correttamente. Una possibilità è che tu apra, usi e chiudi una connessione all'interno di un blocco try e gestisca un'eccezione in un catch, o che torni presto per qualche altra ragione. In tal caso, è necessario assicurarsi che la chiusura della connessione sia effettuata in finally oppure che non possa accadere, lasciando la connessione (e quindi la sessione) sospesa. Anche l'apertura di due connessioni nello stesso ambito senza una chiusura esplicita può farlo.

Non ho familiarità con C3PO quindi non so come vengono gestite le connessioni, o dove e come viene imposto il limite 1100; se (o tu) disponi di un pool di connessioni e il numero 1100 a cui fai riferimento è la dimensione massima del pool, non sembra che il problema riguardi il limite del pool prima del limite di sessione.

È possibile cercare in v$session per confermare che tutte le sessioni provengono da JDBC e non c'è qualcos'altro che si connette.

0

Forse si desidera verificare se il server funziona in modalità dedicata o condivisa (probabilmente si desidera passare alla modalità condivisa se si desidera ridurre il numero di processi attivi).

È possibile verificare che facendo

select server from v$session 

Maggiori informazioni sull'architettura processo

modalità/Server dedicato http://docs.oracle.com/cd/B19306_01/server.102/b14220/process.htm

Shared

http://docs.oracle.com/cd/B10501_01/server.920/a96521/manproc.htm