Använd SQL Server ODBC-drivrutinen med Oracles Heterogeneous Services ODBC-agent, DG4ODBC, för att ansluta Oracle 21c till SQL Server.
- Kontrollera om din version av DG4ODBC är 32-bitars eller 64-bitars:
file dg4odbc
Om
file
kommandots utdata innehåller "ELF 64-bitars LSB-körbar", eller något liknande, DG4ODBC är 64-bitars, och du måste använda en 64-bitarsversion av SQL Server ODBC-drivrutinen.Annars laddar du ner 32-bitars SQL Server ODBC-drivrutinen för din plattform.
- Installera, licensiera och testa SQL Server ODBC-drivrutinen på maskinen där DG4ODBC är installerat.
För installationsinstruktioner, se SQL Server ODBC-drivrutinens dokumentation. Se dokumentationen för att se vilka miljövariabler du behöver ställa in (
LD_LIBRARY_PATH
,LIBPATH
,LD_RUN_PATH
ellerSHLIB_PATH
beroende på plattform och länk). - Skapa en DG4ODBC init-fil. Till exempel:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- Se till att dessa parametrar och värden finns i din init-fil:
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
Ersätt my_sql_server_odbc_dsn med namnet på en SQL Server ODBC-drivrutinsdatakälla som ansluter till SQL Server-måldatabasen.
- Lägg till en post i
$ORACLE_HOME/network/admin/listener.ora
som skapar en SID_NAME för DG4ODBC. Till exempel: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) ) )
Ersätt oracle_home_directory med värdet
$ORACLE_HOME
. - Lägg till en DG4ODBC-post i
$ORACLE_HOME/network/admin/tnsnames.ora
som anger SID_NAME som skapades i föregående steg. Till exempel:MSSQL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=mssql)) (HS=OK) )
- Starta (eller starta om) Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Anslut till din Oracle-databas i SQL*Plus.
- Skapa en databaslänk för SQL Server-måldatabasen i SQL*Plus. Till exempel:
CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';
Ersätt dbuser och dbpassword med ett giltigt användarnamn och lösenord för SQL Server-måldatabasen.
Anteckningar
- Oracle 21c-versionen av DG4ODBC använder inte längre
SQLDriverConnect
för att ansluta till en ODBC-datakälla. Den använderSQLConnect
istället, som inte stöderHS_NLS_NCHAR = UCS2
. På samma sätt fungerar inte DSN-lösa anslutningar medSQLConnect
. - Om din länkade tabell innehåller en kolumn med namnet ROWID, kommer din fråga att misslyckas med felet:
ORA-02070: database SQLSRV2019 does not support ROWIDs in this context
För att kringgå detta, ändra namnet på kolumnen från ROWID till ROWNUM.