sql >> Base de Datos >  >> RDS >> Database

Investigación de un error ORA 028513 DG4ODBC

La conexión de Oracle a SQL Server es uno de los casos de uso más comunes para el controlador ODBC de Easysoft SQL Server. Apoyar esta combinación no solo implica brindar asistencia para configurar nuestro controlador. También significa ayudar a resolver los problemas de configuración de Oracle que impiden que Oracle Heterogeneous Services llegue tan lejos como para cargar nuestro controlador.

Recientemente, un cliente del controlador ODBC de SQL Server nos informó el siguiente error:

ORA-28513: internal error in heterogeneous remote agent

El cliente pudo proporcionarnos un registro de rastreo DG4ODBC, que nos dijo dos cosas:

  1. Los archivos de configuración de Oracle (.ora) se configuraron correctamente. Si estos archivos contienen un error (p. ej., un paréntesis extraño o faltante), no se generará ningún registro de seguimiento de DG4ODBC.
  2. DG4ODBC ni siquiera intentaba cargar el administrador de controladores unixODBC.

En situaciones como estas, donde el registro de Oracle DG4ODBC no identifica el problema (normalmente siempre contendrá más información que el error ORA-NNNNN informado por la aplicación), y el registro de ODBC aún no es posible, buscamos strace o truss . Por ejemplo:

  1. Inicie dos sesiones de shell como usuario de Oracle.
  2. En el shell 1, detenga el oyente de Oracle.
  3. Inicie el oyente con este comando:
    strace -f -o /tmp/easysoft.log -s 512 lsnrctl start

    —O—

    truss -wall -rall -o /tmp/easysoft.log lsnrctl start
  4. En el shell 2, inicie SQL*PLus y ejecute una instrucción SQL en el enlace de la base de datos DG4ODBC/SQL Server.
  5. En el shell 2, detenga el oyente de Oracle.

Sin embargo, la herramienta de seguimiento de la biblioteca del sistema (truss en el caso del cliente) todavía no reveló la causa del problema.

Al final, resultó que el cliente estaba configurando el ORA_NLS10 variable de entorno, y un efecto secundario de hacer esto fue evitar que DG4ODBC funcionara. Como no era necesario configurar la variable en esta máquina, desactivarla y eliminarla de un archivo de perfil fue la solución al problema del cliente.