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.
- 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.
- 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
oSHLIB_PATH
dependiendo de la plataforma y el enlazador). - Cree un archivo de inicio DG4ODBC. Por ejemplo:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- 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.
- 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
. - 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) )
- Inicie (o reinicie) Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Conéctese a su base de datos Oracle en SQL*Plus.
- 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. UtilizaSQLConnect
en cambio, que no es compatible conHS_NLS_NCHAR = UCS2
. Del mismo modo, las conexiones sin DSN no funcionan conSQLConnect
. - 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.