Verwenden Sie den SQL Server-ODBC-Treiber mit dem ODBC-Agenten für heterogene Dienste von Oracle, DG4ODBC, um Oracle 21c mit SQL Server zu verbinden.
- Überprüfen Sie, ob Ihre Version von DG4ODBC 32-Bit oder 64-Bit ist:
file dg4odbc
Wenn die
file
Die Ausgabe des Befehls enthält „ELF 64-Bit LSB Executable“ oder etwas Ähnliches, DG4ODBC ist 64-Bit und Sie müssen eine 64-Bit-Version des SQL Server-ODBC-Treibers verwenden.Andernfalls laden Sie den 32-Bit-SQL-Server-ODBC-Treiber für Ihre Plattform herunter.
- Installieren, lizenzieren und testen Sie den SQL Server ODBC-Treiber auf dem Rechner, auf dem DG4ODBC installiert ist.
Installationsanweisungen finden Sie in der Dokumentation zum SQL Server-ODBC-Treiber. Sehen Sie in der Dokumentation nach, welche Umgebungsvariablen Sie festlegen müssen (
LD_LIBRARY_PATH
,LIBPATH
,LD_RUN_PATH
oderSHLIB_PATH
je nach Plattform und Linker). - Erstellen Sie eine DG4ODBC-Init-Datei. Beispiel:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- Stellen Sie sicher, dass diese Parameter und Werte in Ihrer Init-Datei vorhanden sind:
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
Ersetzen Sie my_sql_server_odbc_dsn mit dem Namen einer SQL Server-ODBC-Treiberdatenquelle, die eine Verbindung zur SQL Server-Zieldatenbank herstellt.
- Fügen Sie einen Eintrag zu
$ORACLE_HOME/network/admin/listener.ora
hinzu die einen SID_NAME für DG4ODBC erstellt. Beispiel: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) ) )
Ersetzen Sie oracle_home_directory mit dem Wert von
$ORACLE_HOME
. - Fügen Sie einen DG4ODBC-Eintrag zu
$ORACLE_HOME/network/admin/tnsnames.ora
hinzu die den im vorherigen Schritt erstellten SID_NAME angibt. Beispiel:MSSQL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=mssql)) (HS=OK) )
- Starten (oder starten) Sie den Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Verbinden Sie sich mit Ihrer Oracle-Datenbank in SQL*Plus.
- Erstellen Sie in SQL*Plus einen Datenbanklink für die SQL Server-Zieldatenbank. Beispiel:
CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';
Ersetzen Sie dbuser und dbpasswort mit einem gültigen Benutzernamen und Kennwort für die SQL Server-Zieldatenbank.
Notizen
- Die Oracle 21c-Version von DG4ODBC verwendet
SQLDriverConnect
nicht mehr um eine Verbindung zu einer ODBC-Datenquelle herzustellen. Es verwendetSQLConnect
stattdessen, wasHS_NLS_NCHAR = UCS2
nicht unterstützt . Ebenso funktionieren DSN-lose Verbindungen nicht mitSQLConnect
. - Wenn Ihre verknüpfte Tabelle eine Spalte namens ROWID enthält, schlägt Ihre Abfrage mit folgendem Fehler fehl:
ORA-02070: database SQLSRV2019 does not support ROWIDs in this context
Um dies zu umgehen, ändern Sie den Namen der Spalte von ROWID in ROWNUM.