Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Conectando o Oracle 21c ao SQL Server


Use o driver ODBC do SQL Server com o agente ODBC de serviços heterogêneos da Oracle, DG4ODBC, para conectar o Oracle 21c ao SQL Server.
  1. Verifique se sua versão do DG4ODBC é de 32 bits ou 64 bits:
    file dg4odbc

    Se o file A saída do comando contém "ELF 64-bit LSB executável" ou algo semelhante, DG4ODBC é de 64 bits e você precisa usar uma versão de 64 bits do driver ODBC do SQL Server.
    Caso contrário, baixe o driver ODBC do SQL Server de 32 bits para sua plataforma.
  2. Instale, licencie e teste o driver ODBC do SQL Server na máquina em que o DG4ODBC está instalado.
    Para obter instruções de instalação, consulte a documentação do driver ODBC do SQL Server. Consulte a documentação para ver quais variáveis ​​de ambiente você precisa definir (LD_LIBRARY_PATH , LIBPATH , LD_RUN_PATH ou SHLIB_PATH dependendo da plataforma e do vinculador).
  3. Crie um arquivo init DG4ODBC. Por exemplo:
    cd $ORACLE_HOME/hs/admin
    cp initdg4odbc.ora initmssql.ora
  4. Certifique-se de que esses parâmetros e valores estejam presentes em seu arquivo init:
    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 
    

    Substitua my_sql_server_odbc_dsn com o nome de uma fonte de dados do driver ODBC do SQL Server que se conecta ao banco de dados SQL Server de destino.
  5. Adicione uma entrada a $ORACLE_HOME/network/admin/listener.ora que cria um SID_NAME para DG4ODBC. Por exemplo:
    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)
       )
     )
    

    Substitua oracle_home_directory com o valor de $ORACLE_HOME .
  6. Adicione uma entrada DG4ODBC a $ORACLE_HOME/network/admin/tnsnames.ora que especifica o SID_NAME criado na etapa anterior. Por exemplo:
    MSSQL=
     (DESCRIPTION=
       (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
       (CONNECT_DATA= (SID=mssql))
       (HS=OK)
     )
  7. Inicie (ou reinicie) o Oracle Listener:
    cd $ORACLE_HOME/bin
    ./lsnrctl stop
    ./lsnrctl start
  8. Conecte-se ao seu banco de dados Oracle no SQL*Plus.
  9. No SQL*Plus, crie um link de banco de dados para o banco de dados SQL Server de destino. Por exemplo:
    CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO
    "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';

    Substitua dbuser e dbpassword com um nome de usuário e senha válidos para o banco de dados SQL Server de destino.
Observações
  • A versão Oracle 21c do DG4ODBC não usa mais SQLDriverConnect para se conectar a uma fonte de dados ODBC. Ele usa SQLConnect em vez disso, que não suporta HS_NLS_NCHAR = UCS2 . Da mesma forma, conexões sem DSN não funcionam com SQLConnect .
  • Se sua tabela vinculada contiver uma coluna chamada ROWID, sua consulta falhará com o erro:
    ORA-02070: database SQLSRV2019 does not support ROWIDs in this context

    Para contornar isso, altere o nome da coluna de ROWID para ROWNUM.