2012-03-08 21 views
8

Estamos teniendo un problema con demasiados procesos de Oracle se está creando (más de 2.000) cuando las conexiones se limitan a 1.100 (utilizando C3P0)Relación entre sesiones JDBC y Oracle procesa

Dos preguntas:

  • ¿Cuál es la relación entre un proceso de Oracle y una conexión JDBC? ¿Se creó un proceso de Oracle para cada sesión? ¿Se ha creado uno para cada declaración JDBC ? Sin relación alguna?

  • ¿Alguna vez ha enfrentado este escenario, en el que está creando más procesos que las conexiones JDBC?

Cualquier comentario sería muy apreciado.

Respuesta

2

hay uno se ssion por conexión. Esto parece que tienes una fuga de conexión, en algún lugar estás abriendo una nueva conexión y no cerrando correctamente. Una posibilidad es que abra, use y cierre una conexión dentro de un bloque try y maneje una excepción en un catch, o que regrese temprano por alguna otra razón. Si es así, debe asegurarse de que el cierre de la conexión se realiza en finally o puede no suceder, dejando la conexión (y por lo tanto la sesión) colgando. Abrir dos conexiones en el mismo ámbito sin un cierre explícito en el medio también puede hacer esto.

No estoy familiarizado con C3PO, así que no sé cómo se manejan las conexiones, o dónde y cómo se impone su límite de 1100; si (o usted) tiene un grupo de conexiones y el 1100 al que se refiere es el tamaño de grupo máximo, entonces esto no suena como el problema ya que golpearía el límite del grupo antes del límite de la sesión.

Puede consultar v$session para confirmar que todas las sesiones provienen de JDBC, y no hay nada más que se pueda conectar.

Cuestiones relacionadas