sql >> Base de Datos >  >> RDS >> Oracle

Conexión de Oracle 21c a SQL Server

Utilice el controlador ODBC de SQL Server con el agente ODBC de servicios heterogéneos de Oracle, DG4ODBC, para conectar Oracle 21c a SQL Server.

  1. Compruebe si su versión de DG4ODBC es de 32 bits o de 64 bits:
    file dg4odbc

    Si el file La salida del comando contiene "ELF LSB de 64 bits ejecutable", o algo similar, DG4ODBC es de 64 bits y necesita usar una versión de 64 bits del controlador ODBC de SQL Server.

    De lo contrario, descargue el controlador ODBC de SQL Server de 32 bits para su plataforma.

  2. Instale, licencie y pruebe el controlador ODBC de SQL Server en la máquina donde está instalado DG4ODBC.

    Para obtener instrucciones de instalación, consulte la documentación del controlador ODBC de SQL Server. Consulte la documentación para ver qué variables de entorno necesita configurar (LD_LIBRARY_PATH , LIBPATH , LD_RUN_PATH o SHLIB_PATH dependiendo de la plataforma y el enlazador).

  3. Cree un archivo de inicio DG4ODBC. Por ejemplo:
    cd $ORACLE_HOME/hs/admin
    cp initdg4odbc.ora initmssql.ora
  4. Asegúrese de que estos parámetros y valores estén presentes en su archivo de inicio:
    HS_FDS_CONNECT_INFO = my_sql_server_odbc_dsn
    HS_FDS_SHAREABLE_NAME = /usr/local/easysoft/unixODBC/lib/libodbc.so
    HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 
    

    Reemplace my_sql_server_odbc_dsn con el nombre de un origen de datos del controlador ODBC de SQL Server que se conecta a la base de datos de destino de SQL Server.

  5. Agregue una entrada a $ORACLE_HOME/network/admin/listener.ora que crea un SID_NAME para DG4ODBC. Por ejemplo:
    SID_LIST_LISTENER =
     (SID_LIST =
       (SID_DESC=
         (SID_NAME=mssql)
         (ORACLE_HOME=oracle_home_directory)
         (PROGRAM=dg4odbc)
         (ENVS=LD_LIBRARY_PATH = /usr/local/easysoft/unixODBC/lib:
                /usr/local/easysoft/lib)
       )
     )
    

    Reemplazar oracle_home_directory con el valor de $ORACLE_HOME .

  6. Agregue una entrada DG4ODBC a $ORACLE_HOME/network/admin/tnsnames.ora que especifica el SID_NAME creado en el paso anterior. Por ejemplo:
    MSSQL=
     (DESCRIPTION=
       (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
       (CONNECT_DATA= (SID=mssql))
       (HS=OK)
     )
  7. Inicie (o reinicie) Oracle Listener:
    cd $ORACLE_HOME/bin
    ./lsnrctl stop
    ./lsnrctl start
  8. Conéctese a su base de datos Oracle en SQL*Plus.
  9. En SQL*Plus, cree un vínculo de base de datos para la base de datos de destino de SQL Server. Por ejemplo:
    CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO
    "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';

    Reemplazar dbuser y contraseña de base de datos con un nombre de usuario y una contraseña válidos para la base de datos SQL Server de destino.

Notas
  • La versión Oracle 21c de DG4ODBC ya no usa SQLDriverConnect para conectarse a una fuente de datos ODBC. Utiliza SQLConnect en cambio, que no es compatible con HS_NLS_NCHAR = UCS2 . Del mismo modo, las conexiones sin DSN no funcionan con SQLConnect .
  • Si su tabla vinculada contiene una columna llamada ROWID, su consulta fallará con el error:
    ORA-02070: database SQLSRV2019 does not support ROWIDs in this context

    Para evitar esto, cambie el nombre de la columna de ROWID a ROWNUM.