2011-03-31 141 views
6

Estoy usando jboss5.1.x, EJB3.0, JPA3.Error en Oracle al usar DBLINK

Estoy tratando de hacer 'seleccionar' la consulta de la vista que está conectada a través de dblink a otra base de datos.

base de datos de origen es Oracle 9, destino dabatase es Oracle 8.

estoy recibiendo este error:

15:27:06,625 WARN [JDBCExceptionReporter] SQL Error: 24777, SQLState: 99999 

15:27:06,625 ERROR [JDBCExceptionReporter] ORA-24777: use of non-migratable database link not allowed 

He encontrado una solución a este error después comprendí que no puedo utilizar dblink durante el uso de XA. Así logré resuelto cambiando el guión dblink a create compartieron enlace de base de datos de la siguiente manera:

CREATE SHARED DATABASE LINK CONNECT TO IDENTIFIED BY AUTHENTICATED BY IDENTIFIED BY USING 

todo funcionaba bien en este entorno de prueba.

Ahora me he movido mi aplicación a entornos de producción, donde la base de datos fuente es Oracle 11 mientras que el destino es todavía Oracle 8.

El truco que utilicé no funcionó esta vez y no pude encontrar una solución. Esta es la nueva excepción que estoy recibiendo:

Caused by: org.hibernate.exception.GenericJDBCException: could not execute query 
    at ....Caused by: java.sql.SQLException: ORA-01012: not logged on 
    ORA-02063: preceding line from TO_VANTIVE 

Gracias por su ayuda,

rayos,

Respuesta

3
ORA-01012: not logged on 

parece sugerir que no se ha configurado correctamente el nuevo enlace y desde la la base de datos ahora es 11g, que puede tener contraseñas que distingan entre mayúsculas y minúsculas y que sería lo primero que se verificaría.

Ponga comillas alrededor de la contraseña en CREATE LINK si el esquema remoto tiene contraseñas que distinguen entre mayúsculas y minúsculas. Por lo tanto

CREATE SHARED DATABASE LINK 
CONNECT TO bob IDENTIFIED BY "MyNewPasswd1" 
AUTHENTICATED BY jim IDENTIFIED BY "JimsPass23" USING 'DB01'; 
+0

dime bob y "MyNewPasswd1" hacen referencia a la base de datos de origen o la de destino? ¿La misma pregunta sobre cardinentals "JimsPass23", "DB01"?Gracias. – rayman

+1

Las contraseñas y los nombres de usuario de ambos usuarios se refieren a la base de datos remota .i.e. no la base de datos en la que creas el enlace, sino la base de datos a la que estás accediendo a través del enlace. – Lunc

+0

Lo intenté .. Recibo el mismo error (el segundo que menciono) – rayman

0

Estaba teniendo el mismo problema aquí con un Oracle 11g (ORA-24777). Realicé una combinación entre una sola tabla (en mi esquema) y una vista (creada por un enlace de base de datos). He ejecutado todo el JBoss datasource en modo XA.

Para que funcione bien, tuve que change the mode of my dblink view. En este caso, es muy importante tener una cláusula AUTHENTICATED BY precisa para evitar que "ORA-01012: no haya iniciado sesión".

0

Asegúrese de que el enlace de DB que está utilizando sea Público y Compartido, si el enlace de DB no es Público y Compartido arrojará una excepción ORA-24777: no se permite el uso de enlace de base de datos no migrable. Pero si intenta ejecutar la misma consulta directamente en DB sin usar ninguna transacción Java o XA, funcionará bien.

1

Tenemos el mismo problema con Weblogic, y la solución es utilizar el controlador XA oracle JDBC.

Cuestiones relacionadas