Gebruik de SQL Server ODBC-driver met Oracle's Heterogene Services ODBC-agent, DG4ODBC, om Oracle 21c te verbinden met SQL Server.
- Controleer of uw versie van DG4ODBC 32-bits of 64-bits is:
file dg4odbc
Als het
file
de uitvoer van de opdracht "ELF 64-bit LSB executable" of iets dergelijks bevat, DG4ODBC is 64-bit en u moet een 64-bits versie van het SQL Server ODBC-stuurprogramma gebruiken.Download anders het 32-bits SQL Server ODBC-stuurprogramma voor uw platform.
- Installeer, licentieer en test het SQL Server ODBC-stuurprogramma op de computer waarop DG4ODBC is geïnstalleerd.
Zie de documentatie van het SQL Server ODBC-stuurprogramma voor installatie-instructies. Raadpleeg de documentatie om te zien welke omgevingsvariabelen u moet instellen (
LD_LIBRARY_PATH
,LIBPATH
,LD_RUN_PATH
ofSHLIB_PATH
afhankelijk van het platform en de linker). - Maak een DG4ODBC init-bestand. Bijvoorbeeld:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- Zorg ervoor dat deze parameters en waarden aanwezig zijn in uw init-bestand:
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
Vervang my_sql_server_odbc_dsn met de naam van een SQL Server ODBC-stuurprogrammagegevensbron die verbinding maakt met de doel-SQL Server-database.
- Voeg een item toe aan
$ORACLE_HOME/network/admin/listener.ora
dat maakt een SID_NAME voor DG4ODBC. Bijvoorbeeld: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) ) )
Vervang oracle_home_directory met de waarde van
$ORACLE_HOME
. - Voeg een DG4ODBC-item toe aan
$ORACLE_HOME/network/admin/tnsnames.ora
die de SID_NAME specificeert die in de vorige stap is gemaakt. Bijvoorbeeld:MSSQL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=mssql)) (HS=OK) )
- Start (of herstart) de Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Maak verbinding met uw Oracle-database in SQL*Plus.
- Maak in SQL*Plus een databasekoppeling voor de doel-SQL Server-database. Bijvoorbeeld:
CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';
Vervang dbuser en dbwachtwoord met een geldige gebruikersnaam en wachtwoord voor de doel-SQL Server-database.
Opmerkingen
- De Oracle 21c-versie van DG4ODBC gebruikt niet langer
SQLDriverConnect
om verbinding te maken met een ODBC-gegevensbron. Het gebruiktSQLConnect
in plaats daarvan, die geen ondersteuning biedt voorHS_NLS_NCHAR = UCS2
. Evenzo werken DSN-loze verbindingen niet metSQLConnect
. - Als uw gekoppelde tabel een kolom met de naam ROWID bevat, mislukt uw zoekopdracht met de fout:
ORA-02070: database SQLSRV2019 does not support ROWIDs in this context
Om dit te omzeilen, wijzigt u de naam van de kolom van ROWID in ROWNUM.