Brug SQL Server ODBC-driveren med Oracles Heterogeneous Services ODBC-agent, DG4ODBC, til at forbinde Oracle 21c til SQL Server.
- Tjek, om din version af DG4ODBC er 32-bit eller 64-bit:
file dg4odbc
Hvis
file
kommandoens output indeholder "ELF 64-bit LSB eksekverbar", eller noget lignende, DG4ODBC er 64-bit, og du skal bruge en 64-bit version af SQL Server ODBC-driveren.Ellers skal du downloade 32-bit SQL Server ODBC-driveren til din platform.
- Installer, licenser og test SQL Server ODBC-driveren på den maskine, hvor DG4ODBC er installeret.
For installationsinstruktioner, se SQL Server ODBC-driverdokumentationen. Se dokumentationen for at se, hvilke miljøvariabler du skal indstille (
LD_LIBRARY_PATH
,LIBPATH
,LD_RUN_PATH
ellerSHLIB_PATH
afhængig af platform og linker). - Opret en DG4ODBC init-fil. For eksempel:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- Sørg for, at disse parametre og værdier er til stede 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
Erstat my_sql_server_odbc_dsn med navnet på en SQL Server ODBC-driverdatakilde, der forbinder til SQL Server-måldatabasen.
- Tilføj en post til
$ORACLE_HOME/network/admin/listener.ora
der opretter en SID_NAME for DG4ODBC. For eksempel: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) ) )
Erstat oracle_home_directory med værdien
$ORACLE_HOME
. - Tilføj en DG4ODBC-post til
$ORACLE_HOME/network/admin/tnsnames.ora
der specificerer SID_NAME oprettet i det forrige trin. For eksempel:MSSQL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=mssql)) (HS=OK) )
- Start (eller genstart) Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Opret forbindelse til din Oracle-database i SQL*Plus.
- I SQL*Plus skal du oprette et databaselink til SQL Server-måldatabasen. For eksempel:
CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';
Erstat dbuser og dbpassword med et gyldigt brugernavn og en adgangskode til SQL Server-måldatabasen.
Bemærkninger
- Oracle 21c-versionen af DG4ODBC bruger ikke længere
SQLDriverConnect
for at oprette forbindelse til en ODBC-datakilde. Den brugerSQLConnect
i stedet, som ikke understøtterHS_NLS_NCHAR = UCS2
. Ligeledes virker DSN-løse forbindelser ikke medSQLConnect
. - Hvis din sammenkædede tabel indeholder en kolonne med navnet ROWID, vil din forespørgsel mislykkes med fejlen:
ORA-02070: database SQLSRV2019 does not support ROWIDs in this context
For at omgå dette skal du ændre navnet på kolonnen fra ROWID til ROWNUM.