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

Conexión de Oracle a SQL Server a través de una conexión segura

El controlador ODBC de SQL Server le permite conectar Oracle en plataformas Linux y UNIX a SQL Server o SQL Azure. Si decide cifrar la conexión de red de sus aplicaciones cliente a SQL Server, o si está usando SQL Azure, debe usar la versión TLS del controlador, que se incluye en la distribución del controlador ODBC de SQL Server.

Si no utiliza la versión TLS del controlador ODBC de SQL Server para conectarse a una instancia de SQL Server que se ha configurado para solicitar una conexión cifrada, obtendrá este error:

Client unable to establish connection: SSL requested but not supported

Si ya está utilizando el controlador ODBC de Easysoft SQL Server con Oracle:

  1. En la fuente de datos de SQL Server a la que apunta HS_FDS_CONNECT_INFO en su initSID.ora , realice las siguientes modificaciones:
    1. Alterar el Driver de:
      Driver = Easysoft ODBC-SQL Server

      a:

      Driver = Easysoft ODBC-SQL Server SSL
    2. Agregue estas líneas:
      Encrypt = Yes
      TrustServerCertificate = Yes
  2. Si apunta a la biblioteca de controladores en lugar de a la biblioteca del Administrador de controladores en initSID.ora , modifica el HS_FDS_SHAREABLE_NAME valor para:
    install_dir/easysoft/sqlserver/lib/libessqlsrv_ssl.so
  3. Reinicie la escucha de Oracle.

Si es un usuario nuevo:

  1. Instale y obtenga la licencia del controlador ODBC de SQL Server en la máquina donde está instalado Oracle.

    Para obtener instrucciones de instalación, consulte la documentación del controlador ODBC.

    Nota Necesita el administrador de controladores unixODBC instalado en su máquina. La distribución de Easysoft incluye una versión de unixODBC Driver Manager con la que se ha probado el controlador ODBC de Easysoft SQL Server. El programa de instalación del controlador Easysoft le ofrece la opción de instalar unixODBC.

  2. Cree una fuente de datos ODBC en /etc/odbc.ini que se conecte a la base de datos de SQL Server a la que desea acceder desde Oracle®. Por ejemplo:
    [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. Utilice isql para probar la nueva fuente de datos. Por ejemplo:
    cd /usr/local/easysoft/unixODBC/bin
    ./isql.sh -v SQLSERVER_SAMPLE
    

    Cuando se le solicite, escriba "ayuda" para mostrar una lista de tablas. Para salir, presione regresar en una línea de aviso vacía.

    Si no puede conectarse, consulte este artículo para obtener ayuda.

  4. Cree un archivo de inicio DG4ODBC. Para hacer esto, cambie a hs/admin subdirectorio. Por ejemplo:
    cd $ORACLE_HOME/product/11.2.0/xe/hs/admin
    

    Crea una copia del archivo initdg4odbc.ora . Nombre el nuevo archivo initmssql.ora .

  5. Asegúrese de que estos parámetros y valores estén presentes en su archivo de inicio:
    HS_FDS_CONNECT_INFO = var>my_mssql_odbc_dsn
    

    Reemplace my_mssql_odbc_dsn con el nombre de un origen de datos del controlador ODBC de SQL Server que se conecta a la instancia de destino de SQL Server. Por ejemplo

    HS_FDS_CONNECT_INFO = "SQLSERVER_SAMPLE"
    
  6. Comente la línea que habilita el seguimiento de DG4ODBC. Por ejemplo:
    #HS_FDS_TRACE_LEVEL = <trace_level>
    
  7. Añadir una entrada a 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)
         (PROGRAM=dg4odbc)
       )
     )
    
  8. Agregue una entrada DG4ODBC a tnsnames.ora que especifica el SID_NAME creado en el paso anterior. Por ejemplo:
    MSSQL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521))
        (CONNECT_DATA =
          (SID = mssql)
        )
        (HS = OK)
      )
    

    Reemplazar oracle_host con el nombre de host de su máquina Oracle®.

  9. Inicie (o reinicie) Oracle® Listener. Por ejemplo:
    lsnrctl stop
    lsnrctl start
    
  10. Conéctese a su base de datos Oracle® en SQL*Plus.
  11. En SQL*Plus, cree un enlace de base de datos para la instancia de destino de SQL Server. Por ejemplo:
    CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO
    "my_sqlserver_user" IDENTIFIED by "my_password" USING 'mssql';
    SELECT * from suppliers@mssqllink
    
Notas
  • Si tiene problemas para conectarse a SQL Server desde Oracle®, habilite el rastreo DG4ODBC y verifique los archivos de rastreo escritos en hs/log directorio. Para habilitar el rastreo DG4ODBC, agregue la línea HS_FDS_TRACE_LEVEL = DEBUG a initmssql.ora y luego inicie/reinicie Oracle® listener. Si el log El directorio no existe, créalo. Por ejemplo:
    mkdir log
    chmod +w log