Foren

Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

thumbnail
Edwin Espinoza Zevallos, geändert vor 15 Jahren.

Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 77 Beitrittsdatum: 13.02.09 Neueste Beiträge
Hola a todos,

Tengo un problema grave tanto en la base de datos de Oracle y la aplicación Liferay. Cada vez que sale el error tengo que "matar" a las sesiones de cursores abiertos. Al salir éste error no puedo hacer nada en la herrameinta Liferay,hasta no "matar" las sesiones de cursores abiertos en la base de datos oracle.

sé que es un bug, pero hay alguna manera de solucionar éste inconveniente?

bug:
http://issues.liferay.com/browse/LPS-2428

Otra consulta. ¿Puedo desabilitar el counter.connection.heartbeat.job.interval = 60?, y si fuese asi que implica? hay algún problema?, por otro lado al momento de "matar" los cursores abiertos en la BD, me obliga a reiniciar el app server que tengo en weblogic.porque si no sigo teniendo el mismo problema en la herramienta Lifera.

Espero su pronta ayuda,

Saludos,
Edwin Espinoza.

error en el .log.


####<Apr 13, 2009 12:16:52 AM GMT-03:00> <Notice> <Stdout> <bahq94> <Foro_01> <org.springframework.scheduling.quartz.SchedulerFactoryBean#4e5a5622_Worker-2> <<WLS Kernel>> <> <> <1239592612756> <000000> <00:16:52,752 ERROR [JobWrapper:70] com.liferay.portal.kernel.job.JobExecutionException: java.sql.SQLException: ORA-01000: maximum open cursors exceeded

com.liferay.portal.kernel.job.JobExecutionException: java.sql.SQLException: ORA-01000: maximum open cursors exceeded

at com.liferay.counter.service.persistence.ConnectionHeartbeatJob.execute(ConnectionHeartbeatJob.java:54)
at com.liferay.portal.job.JobWrapper.execute(JobWrapper.java:63)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: java.sql.SQLException: ORA-01000: maximum open cursors exceeded

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1037)
at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:830)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1687)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1653)
at weblogic.jdbc.wrapper.Statement.execute(Statement.java:400)
at com.liferay.counter.service.persistence.ConnectionHeartbeatJob.sendHeartbeat(ConnectionHeartbeatJob.java:71)
at com.liferay.counter.service.persistence.ConnectionHeartbeatJob.execute(ConnectionHeartbeatJob.java:51)
... 3 more>
####<Apr 13, 2009 12:46:52 AM GMT-03:00> <Notice> <Stdout> <bahq94> <Foro_01> <org.springframework.scheduling.quartz.SchedulerFactoryBean#4e5a5622_Worker-5> <<WLS Kernel>> <> <> <1239594412744> <000000> <00:46:52,740 ERROR [JobWrapper:70] com.liferay.portal.kernel.job.JobExecutionException: java.sql.SQLException: ORA-01000: maximum open cursors exceeded
thumbnail
Julio Camarero, geändert vor 15 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Liferay Legend Beiträge: 1668 Beitrittsdatum: 15.07.08 Neueste Beiträge
Hola Edwin,

respecto al primer bug que indicas, decirte que ya está solucionado y por tanto estará sin problemas en la versión 5.2.3 (saldrá en un plazo de 2 semanas).

un saludo!

Julio Camarero
Liferay España
thumbnail
Edwin Espinoza Zevallos, geändert vor 15 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 77 Beitrittsdatum: 13.02.09 Neueste Beiträge
Gracias Julio!!

Por otro lado, sabes si puedo bajarlo el bug desde el repositorio? o hay alguna otra solución alternativa?, es que necesitamos con suma urgencia, nuestro proyecto estaba a punto de salir ONLINE,pero cuando hicimos la pruebas con varios usuarios y administradores salio este inconveniente emoticon.

Desde ya muchas gracias!!

Saludos,
Edwin Espinoza.
thumbnail
Julio Camarero, geändert vor 15 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Liferay Legend Beiträge: 1668 Beitrittsdatum: 15.07.08 Neueste Beiträge
Hola Edwin,

tú mismo puedes ver los cambios que se aplicaron en la tab "all" del LSP que pusiste más arriba.
O también en este enlace: http://issues.liferay.com/browse/LPS-2428?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

También está en el repositorio, tanto de la rama 5.1.x, la rama 5.2.x y trunk. Esto también lo puedes comprobar en la misma tab que te he dicho donde se indica cuales son los backport que se han realizado.

Un saludo!

Julio Camarero
Liferay España
thumbnail
Edwin Espinoza Zevallos, geändert vor 15 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 77 Beitrittsdatum: 13.02.09 Neueste Beiträge
Muchas gracias Julio!!

Bajé del repositorio los 2 .java y lo compilé y luego lo puse en mi proyecto. Ahora ya no tengo el problema de los "excedidos de cursores abiertos" en mi la base de datos Oracle.

Te debo muchas emoticon emoticon

Saludos,
Edwin Espinoza.
David Lozano, geändert vor 14 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

New Member Beiträge: 5 Beitrittsdatum: 03.02.09 Neueste Beiträge
Buenas!

¿Sabemos algo de la nueva versión 5.2.3?
Nosotros intentamos parchear con vuestra solución, pero nos sigue dando problemas igualmente y decidimos esperar la nueva versión... A ver si nos dais buenas noticias!

Muchas gracias!
thumbnail
Edwin Espinoza Zevallos, geändert vor 14 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 77 Beitrittsdatum: 13.02.09 Neueste Beiträge
Hola David!

En mi caso me baje del repositorio el fix y luego tuve que hacer algo extra, ya que mi red interna tiene un firewall que mataba las conexiones a las base de datos cada 1 hora( 60 minutos), y tuve que ajustar el heartbeat ( counter.connection.heartbeat.job.interval=50 ) menor que 60 minutos y con ese ajutes hoy en dia no tengo niungun problema emoticon.

Espero que te ayude!!

Saludos,
Edwin Espinoza.
thumbnail
Julio Camarero, geändert vor 14 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Liferay Legend Beiträge: 1668 Beitrittsdatum: 15.07.08 Neueste Beiträge
Hola,

solo indicar que ya está disponible la versión 5.2.3 en la sección de descargas.

un saludo!

Julio Camarero
Liferay España
thumbnail
Edwin Espinoza Zevallos, geändert vor 14 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 77 Beitrittsdatum: 13.02.09 Neueste Beiträge
buenos dias Julio!!

Como siempre gracias nuevamente!!

Te comento, tenemos online un foro obviamente hecho con liferay y uno de los errores que teniamos muy frecuentemente era:
ORA-01000: maximum open cursors exceeded, encontramos el fix,pero nuevamente seguimos con el mismo problema,pero sucede cada semana.. con la version 5.2.3 se soluciona este problema?pero si corregimos el bug, segun los primeros post de este thread ? a esto le agregamos que nuestra base de datos oracle tiene como un maximo de 200 cursores abiertos y segun me parece que hay algo mas que corregir?

por otro lado en el .log estoy viendo errores como: "could not load an entity"

Otra consulta: no puedo hacer el hot deploy? osea quiero subir un nuevo tema, y que este se cambie en el momento. Hasta ahora me copia dentro del dominio y me dice: "se ha subido con exito",pero no me lo REGISTRA para que quede publicado.alguna idea?

En el nuevo liferay 5.2.3 se cambio algo a nivel de base de datos? o simplemente "reemplanzando" el nuevo .war quedaria todo solucionado?

Cualquier ayuda será Bienvenida ...
ahh y este es el foro es de aqui(Argentina): http://www.movistar.com.ar/foro

Saludos,
Edwin Espinoza.
thumbnail
Julio Camarero, geändert vor 14 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Liferay Legend Beiträge: 1668 Beitrittsdatum: 15.07.08 Neueste Beiträge
Hola Edwin,

la migración de la 5.2.2 a la 5.2.3 es muy sencilla. Sólo tienes que desplegar la nueva versión apuntando a la misma base de datos y automáticamente se ejecutará al arrancar el proceso de upgrade (que probablemente tenga algún cambio en base de datos, aunque no tengas que preocuparte por ello)

De todas formas, haz copias de todo antes de hacer el upgrade por si acaso,

un saludo!

Julio Camarero
Liferay España
thumbnail
Edwin Espinoza Zevallos, geändert vor 14 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 77 Beitrittsdatum: 13.02.09 Neueste Beiträge
Gracias Julio!!

Probaré la nueva versión. a ver si se soluciona el problema que tengo emoticon .

saludos,
Edwin Espinoza.
thumbnail
Diego Alejandro Palmeira, geändert vor 14 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 29 Beitrittsdatum: 22.05.08 Neueste Beiträge
Hola,

Hay alguna recomendación oficial de Liferay sobre el número de cursores que debe configurarse?

Muchas gracias
thumbnail
Edwin Espinoza Zevallos, geändert vor 14 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 77 Beitrittsdatum: 13.02.09 Neueste Beiträge
Hola Diego!

En mi caso la base de datos tiene un maximo de 200 cursores abiertos y segun los DBA en nuestro contexto es lo mejor,aunque el problema que tuvimos en un inicio fue que muchas conexiones no se cerraban( en 1 dia tenia que matar todas las sesiones abiertas), con el fix que lo baje del repositorio de liferay aparentemente se soluciono,pero sigo teniendo el mismo problema,aunque ahora lo hacemos cada 1 semana(creo que algunos statement no se cierran) me imagino que tengo que aumentar el número de cursores abiertos, y mi pregunta tambien es: Qué numero de cursores abiertos es recomendable??.

Saludos,
Edwin Espinoza.
thumbnail
Diego Alejandro Palmeira, geändert vor 14 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 29 Beitrittsdatum: 22.05.08 Neueste Beiträge
Hola Edwin,

Efectivamente, necesitamos saber cuántos cursores poner. Nosotros lo tenemos configurado a 300 de momento.

Un saludo
Diego
MARIA JESUS AREVALO, geändert vor 10 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

New Member Beiträge: 4 Beitrittsdatum: 28.05.13 Neueste Beiträge
No sé si es que soy muy torpe pero no sé qué fichero decargarme para solucionar este error sin necesidad de cambiar de versión. Necesitamos salir a producción ya y no tenemos tiempo de cambiar de versión. Estamos en la 5.2.2.

También me gustaría saber, ya por curiosidad, a qué se debe este error. Gracias.
thumbnail
Manuel de la Peña, geändert vor 10 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 62 Beitrittsdatum: 06.07.11 Neueste Beiträge
Hola María Jesús

Puedes probar a comparar ambas clases en los fuentes de la 5.2.2 (http://sourceforge.net/projects/lportal/files/Liferay%20Portal/5.2.2/liferay-portal-src-5.2.2.zip/download) y la 5.2.3 (http://sourceforge.net/projects/lportal/files/Liferay%20Portal/5.2.3/liferay-portal-src-5.2.3.zip/download), y ver el fix que se hizo.
La clase a modificar está en portal-impl: com/liferay/counter/service/persistence/ConnectionHeartbeatJob.java

Recuerdo haber resuelto este problema en un proyecto anterior recompilando el código del portal con dicho fix aplicado.

Si utilizas un bundle, tendrás que sustituir el JAR donde está esa clase. Si usas un entorno de extensión, recompila y despliega de nuevo, se generará el portal con los cambios aplicados.

De todas maneras, como dijo Julio, en la versión 5.2.3 se encuentra resuelto y los upgradeProcess entre versiones deberían ser muy sencillos de aplicar. Os recomendamos actualizaros a dicha versión en cuanto podáis.

Saludos!
MARIA JESUS AREVALO, geändert vor 10 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

New Member Beiträge: 4 Beitrittsdatum: 28.05.13 Neueste Beiträge
Manuel de la Peña:
Hola María Jesús

Puedes probar a comparar ambas clases en los fuentes de la 5.2.2 (http://sourceforge.net/projects/lportal/files/Liferay%20Portal/5.2.2/liferay-portal-src-5.2.2.zip/download) y la 5.2.3 (http://sourceforge.net/projects/lportal/files/Liferay%20Portal/5.2.3/liferay-portal-src-5.2.3.zip/download), y ver el fix que se hizo.
La clase a modificar está en portal-impl: com/liferay/counter/service/persistence/ConnectionHeartbeatJob.java

Recuerdo haber resuelto este problema en un proyecto anterior recompilando el código del portal con dicho fix aplicado.

Si utilizas un bundle, tendrás que sustituir el JAR donde está esa clase. Si usas un entorno de extensión, recompila y despliega de nuevo, se generará el portal con los cambios aplicados.

De todas maneras, como dijo Julio, en la versión 5.2.3 se encuentra resuelto y los upgradeProcess entre versiones deberían ser muy sencillos de aplicar. Os recomendamos actualizaros a dicha versión en cuanto podáis.

Saludos!



Manuel, muchísimas gracias por responder tan rápido. Haré lo que dices. El problema de no cambiar de versión todavía es que encargamos a una empresa la modificación de algunos portlets entre ellos el de login, y no sabemos (yo llevo muy poco en este proyecto) hassta donde afecta, así es que queremos salir a producción ya y poco a poco ir viendo las posibles consecuencias de la subida de versión.

Gracias.
MARIA JESUS AREVALO, geändert vor 10 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

New Member Beiträge: 4 Beitrittsdatum: 28.05.13 Neueste Beiträge
Manuel, tengo otra preguntita. He comparado los dos ficheros como dices y veo claro el cambio, pero también he visto que, precisamente la clase que importas en la 5.2.3 "jdbc.DataAccess" también está modificada. Supongo que tengo que sustituir los dos, no? Hay algún fichero más implicado en el cambio?

Gracias.
thumbnail
Edwin Espinoza Zevallos, geändert vor 10 Jahren.

RE: Excedió el máximo de cursores abiertos en oracle - Liferay 5.2.2

Junior Member Beiträge: 77 Beitrittsdatum: 13.02.09 Neueste Beiträge
MARIA JESUS AREVALO:
Manuel, tengo otra preguntita. He comparado los dos ficheros como dices y veo claro el cambio, pero también he visto que, precisamente la clase que importas en la 5.2.3 "jdbc.DataAccess" también está modificada. Supongo que tengo que sustituir los dos, no? Hay algún fichero más implicado en el cambio?

Gracias.


Hola María,

En su momento, nosotros, logramos solucionar el problema tan solo reemplazando el ConnectionHeartbeatJob.java y DataAccess.java (5.2.2) por los de ConnectionHeartbeatJob.java y DataAccess.java (5.2.3), una vez realizado lo anterior, recompilas el proyecto con el fix y ya quedaría solucionado.

Cuál fue el problema? Si miras el ConnectionHeartbeatJob.java(5.2.2) , justo en la linea: statement.execute(_SELECT_RELEASE), ahí lo deja abierto, nunca lo libera. Es decir, nunca cierra el statement, por lo tanto, estos cursores quedan abiertos y se van acumulando con la actividad del portal...Como Oracle tiene configurado un máximo número de cursores abiertos, Pum! Sale el error de: java.sql.SQLException: ORA-01000: maximum open cursors exceeded.

En la version 5.2.3 , justo debajo de: statement.execute(_SELECT_RELEASE) agregaron el metodo: DataAccess.cleanUp(statement); con el cual sí se cierra de manera explícita el objeto Statement. Al menos eso es lo que entendí. Espero que te ayude.

Saludos!