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

Conectando Oracle ao SQL Server por meio de uma conexão segura


O driver ODBC do SQL Server permite que você conecte o Oracle em plataformas Linux e UNIX ao SQL Server ou SQL Azure. Se você decidir criptografar a conexão de rede de seus aplicativos cliente para o SQL Server ou estiver usando o SQL Azure, precisará usar a versão TLS do driver, que está incluída na distribuição do driver ODBC do SQL Server.

Se você não usar a versão TLS do driver ODBC do SQL Server para se conectar a uma instância do SQL Server que foi configurada para solicitar uma conexão criptografada, você receberá este erro:
Client unable to establish connection: SSL requested but not supported

Se você já estiver usando o driver ODBC do Easysoft SQL Server com Oracle:
  1. Na fonte de dados do SQL Server apontada por HS_FDS_CONNECT_INFO em seu initSID.ora , faça as seguintes alterações:
    1. Alterar o Driver de:
      Driver = Easysoft ODBC-SQL Server

      para:
      Driver = Easysoft ODBC-SQL Server SSL
    2. Adicione estas linhas:
      Encrypt = Yes
      TrustServerCertificate = Yes
  2. Se você apontar para a biblioteca de drivers em vez da biblioteca do Gerenciador de drivers em initSID.ora , altere o HS_FDS_SHAREABLE_NAME valor para:
    install_dir/easysoft/sqlserver/lib/libessqlsrv_ssl.so
  3. Reinicie o ouvinte Oracle.

Se você for um novo usuário:
  1. Instale e licencie o driver ODBC do SQL Server na máquina em que o Oracle está instalado.
    Para obter instruções de instalação, consulte a documentação do driver ODBC.

    Observação Você precisa do gerenciador de driver unixODBC instalado em sua máquina. A distribuição Easysoft inclui uma versão do unixODBC Driver Manager com a qual o driver ODBC do Easysoft SQL Server foi testado. O programa de instalação do driver Easysoft oferece a opção de instalar o unixODBC.
  2. Crie uma fonte de dados ODBC em /etc/odbc.ini que se conecte ao banco de dados SQL Server que você deseja acessar do Oracle®. Por exemplo:
    [SQLSERVER_SAMPLE]
    Driver                 = Easysoft ODBC-SQL Server SSL
    Server                 = my_machine\SQLEXPRESS
    User                   = my_domain\my_user
    Password               = my_password
    # If the database you want to connect to is the default
    # for the SQL Server login, omit this attribute
    Database               = Northwind
    Encrypt                = Yes
    TrustServerCertificate = Yes
  3. Use o isql para testar a nova fonte de dados. Por exemplo:
    cd /usr/local/easysoft/unixODBC/bin
    ./isql.sh -v SQLSERVER_SAMPLE
    

    No prompt, digite "help" para exibir uma lista de tabelas. Para sair, pressione return em uma linha de prompt vazia.

    Se você não conseguir se conectar, consulte este artigo para obter assistência.
  4. Crie um arquivo init DG4ODBC. Para fazer isso, mude para o hs/admin subdiretório. Por exemplo:
    cd $ORACLE_HOME/product/11.2.0/xe/hs/admin
    

    Crie uma cópia do arquivo initdg4odbc.ora . Nomeie o novo arquivo initmssql.ora .
  5. Certifique-se de que esses parâmetros e valores estejam presentes em seu arquivo init:
    HS_FDS_CONNECT_INFO = var>my_mssql_odbc_dsn
    

    Substitua my_mssql_odbc_dsn com o nome de uma fonte de dados do driver ODBC do SQL Server que se conecta à instância do SQL Server de destino. Por exemplo
    HS_FDS_CONNECT_INFO = "SQLSERVER_SAMPLE"
    
  6. Comente a linha que permite o rastreamento DG4ODBC. Por exemplo:
    #HS_FDS_TRACE_LEVEL = <trace_level>
    
  7. Adicione uma entrada a 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)
         (PROGRAM=dg4odbc)
       )
     )
    
  8. Adicione uma entrada DG4ODBC a tnsnames.ora que especifica o SID_NAME criado na etapa anterior. Por exemplo:
    MSSQL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521))
        (CONNECT_DATA =
          (SID = mssql)
        )
        (HS = OK)
      )
    

    Substitua oracle_host com o nome do host de sua máquina Oracle®.
  9. Inicie (ou reinicie) o Oracle® Listener. Por exemplo:
    lsnrctl stop
    lsnrctl start
    
  10. Conecte-se ao seu banco de dados Oracle® no SQL*Plus.
  11. No SQL*Plus, crie um link de banco de dados para a instância do SQL Server de destino. Por exemplo:
    CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO
    "my_sqlserver_user" IDENTIFIED by "my_password" USING 'mssql';
    SELECT * from suppliers@mssqllink
    
Observações
  • Se você tiver problemas para se conectar ao SQL Server a partir do Oracle®, habilite o rastreamento DG4ODBC e verifique os arquivos de rastreamento gravados no hs/log diretório. Para habilitar o rastreamento DG4ODBC, adicione a linha HS_FDS_TRACE_LEVEL = DEBUG para initmssql.ora e, em seguida, inicie/reinicie o ouvinte Oracle®. Se o log diretório não existe, crie-o. Por exemplo:
    mkdir log
    chmod +w log