Problemas de acceso a datos para orígenes de datos Oracle
Utilice las sugerencias de resolución de problemas para ayudarle a acceder a orígenes de datos Oracle.
¿Qué error encuentra cuando intenta acceder al origen de datos basado en Oracle?
- Se ha especificado un URL de Oracle no válido
- "DSRA0080E: El adaptador del almacén de datos ha recibido una excepción. Consulte el mensaje de excepción original: ORA-00600"
- DSRA8100E: No se ha podido obtener un {0} del origen de datos. Explicación: Consulte linkedException para obtener más información.
- "Error al intentar recuperar el texto del error"
- Se producen errores del cargador de clases al utilizar un controlador Oracle OCI como proveedor JDBC
- "java.lang.UnsatisfiedLinkError:" al conectarse a un origen de datos Oracle
- Se producen errores al hacer referencia a clases Oracle o al conectar con un origen de datos Oracle
- WSVR0016W: La entrada de classpath de Oracle JDBC Thin Driver tiene una variable no válida
- Error de recuperación de transacciones (para orígenes de datos XA)
- El servidor de aplicaciones recibe un error en el archivo SystemOut.log cuando registra el Mbean JDBC Diagnosability
Se ha especificado un URL de Oracle no válido
Este error puede deberse a que se ha especificado incorrectamente un URL en la propiedad de URL del origen de datos de destino.
Examine en la propiedad del URL el objeto de origen de datos de la consola administrativa para asegurarse de que sea correcta.
- Para el controlador ligero: jdbc:oracle:thin:@//hostname:1521/miBaseDatos
- Para el controlador OCI: jdbc:oracle:oci:@tnsname1
"DSRA0080E: El adaptador del almacén de datos ha recibido una excepción. Consulte el mensaje de excepción original: ORA-00600"
Esta excepción puede deberse a que la versión del controlador Oracle JDBC que se está utilizando es anterior a la versión de la base de datos Oracle. Es posible que haya más de una versión del controlador Oracle JDBC configurada en WebSphere Application Server.
Examine la versión del controlador JDBC. Generalmente, se puede determinar la versión consultando la classpath para determinar en qué directorio está situado el controlador.
import java.sql.*;
import oracle.jdbc.driver.*;
class JDBCVersion
{
public static void main (String args[])
throws SQLException
{
// Cargar el controlador Oracle JDBC
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// Obtener una conexión con una base de datos
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@appaloosa:1521:app1","sys","change_on_install");
// Crear el objeto Oracle DatabaseMetaData
DatabaseMetaData meta = conn.getMetaData();
// obtiene información del controlador:
System.out.println("JDBC driver version is " + meta.getDriverVersion());
}
}
Si el controlador y la base de datos son de versiones diferentes, sustituya el controlador JDBC por la versión correcta. Si se han configurado varios controladores, elimine los que estén en el nivel incorrecto.
DSRA8100E: No se ha podido obtener un {0} del origen de datos. Explicación: Consulte linkedException para obtener más información.
Cuando se utiliza Oracle Thin Driver, Oracle crea un error java.sql.SQLException de argumentos no válidos en la llamada si no se especifica ningún nombre de usuario o contraseña cuando se obtiene una conexión. Si aparece este error cuando se ejecuta WebSphere Application Server, el alias no se ha establecido.
Para eliminar la excepción, defina el alias en el origen de datos.
"Error al intentar recuperar el texto del error"
La causa probable de este error es que se está utilizando el controlador Oracle OCI con una propiedad ORACLE_HOME que no se ha establecido o se ha establecido incorrectamente.
Para corregir el error, examine el perfil del usuario bajo el que se ejecuta WebSphere Application Server para comprobar que la variable de entorno $ORACLE_HOME se ha establecido correctamente.
Se producen errores del cargador de clases al utilizar un controlador Oracle OCI como proveedor JDBC
Si configura un controlador Oracle OCI como proveedor JDBC, debe especificar la vía de acceso en la que se hallan almacenadas las bibliotecas nativas. Si no ha especificado la vía de acceso a la biblioteca nativa, la primera vez que intente conectarse utilizando este proveedor se producirán errores del cargador.
Para corregir este problema, en la consola administrativa, pulse Vía de acceso de las bibliotecas nativas.
, seleccione el controlador Oracle OCI y especifique la vía de acceso a las bibliotecas nativas en el campo"java.lang.UnsatisfiedLinkError:" al conectarse a un origen de datos Oracle
Puede que la variable de entorno LIBPATH no se haya establecido o que se haya establecido incorrectamente, si el origen de datos crea un error UnsatisfiedLinkError, y la excepción completa indica que el problema está relacionado con un módulo Oracle.
- Analice el perfil de usuario con el que se ejecuta WebSphere Application Server para verificar que la variable de entorno LIBPATH incluye las bibliotecas Oracle.
Configure la propiedad Java LIBPATH (java.library.path) con la variable de entorno dominio_region_libpath, como control_region_libpath, server_region_libpath, adjunct_region_libpath. Consulte el tema sobre cómo cambiar los valores de las variables a las que se hace referencia en los mensajes BBOM0001I para obtener instrucciones sobre cómo establecer las variables LIBPATH de región.
Se producen errores al hacer referencia a clases Oracle o al conectar con un origen de datos Oracle
Recepción de errores java.lang.NullPointerException al hacer referencia a las clases Oracle o "error interno: oracle.jdbc.oci.OCIEnv" cuando se conecta a un origen de datos Oracle
El problema puede ser que el controlador OCI está utilizándose en una máquina AIX, la variable LIBPATH se ha establecido correctamente, pero no se ha establecido la variable de entorno ORACLE_HOME o se ha establecido incorrectamente. Puede encontrar una excepción similar a cualquiera de las siguientes cuando la aplicación intenta conectarse a un origen de datos Oracle:
Para corregir el problema, examine el perfil del usuario bajo el que se ejecuta WebSphere Application Server para comprobar que la variable de entorno $ORACLE_HOME se ha establecido correctamente, y que $LIBPATH incluya $ORACLE_HOME/lib.
WSVR0016W: La entrada de classpath de Oracle JDBC Thin Driver tiene una variable no válida
Este error se produce cuando no hay ninguna variable de entorno definida para la propiedad ORACLE_JDBC_DRIVER_PATH.
Verifique este problema en la consola administrativa. Vaya a ORACLE_JDBC_DRIVER_PATH.
para verificar que se ha definido la variablePara corregir el problema, pulse Nuevo y defina la variable. Por ejemplo, nombre: ORACLE_JDBC_DRIVER_PATH, valor : c:\oracle\jdbc\lib. Utilice un valor que denomine el directorio del sistema operativo que contiene el archivo ojdbc6.jar (o el archivo ojdbc6_g.jar para habilitar el rastreo de Oracle).
Error de recuperación de transacciones (para orígenes de datos XA)
Problema
WTRN0037W: El servicio de transacción ha encontrado un error en una operación xa_recover.
El recurso era com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@1114a62.
El código de error era XAER_RMERR. El rastreo de la pila de excepciones es el siguiente:
javax.transaction.xa.XAException
at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:726)
at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.recover(WSRdbXaResourceImpl.java:954)
at com.ibm.ws.Transaction.JTA.XARminst.recover(XARminst.java:137)
at com.ibm.ws.Transaction.JTA.XARecoveryData.recover(XARecoveryData.java:609)
at com.ibm.ws.Transaction.JTA.PartnerLogTable.recover(PartnerLogTable.java:511)
at com.ibm.ws.Transaction.JTA.RecoveryManager.resync(RecoveryManager.java:1784)
at com.ibm.ws.Transaction.JTA.RecoveryManager.run(RecoveryManager.java:2241)
Causa
Oracle requiere que servicios como, por ejemplo, el servicio de transacciones de WebSphere Application Server, tengan permisos especiales para realizar las recuperaciones de transacciones.
Solución
grant select on pending_trans$ to public;
grant select on dba_2pc_pending to public;
grant select on dba_pending_transactions to public;
grant execute on dbms_system to < user>;
Usuario es un ID de usuario del servidor de aplicaciones autorizado a realizar la recuperación de transacciones para el origen de datos XA.
Si no ha autorizado a ningún ID de usuario a realizar la recuperación de
transacciones, el servidor de aplicaciones utiliza el alias de inicio de sesión
como ID de usuario para el origen de datos.Este problema se menciona en el error de Oracle: 3979190. Al ejecutar los mandatos anteriores se soluciona el problema.
El servidor de aplicaciones recibe un error en el archivo SystemOut.log cuando registra el Mbean JDBC Diagnosability
E Error al registrar el MBean de capacidad de diagnóstico Oracle JDBC. malformedobjectnameexception: Carácter no válido '' en la parte de valor de la propiedad
Este error se produce durante la conexión inicial con una base de datos Oracle porque el diagnóstico para el MBean no se ha inicializado correctamente.