Използвайте ODBC драйвера на SQL Server с ODBC агента на Oracle Heterogeneous Services, DG4ODBC, за да свържете Oracle 21c към SQL Server.
- Проверете дали вашата версия на DG4ODBC е 32-битова или 64-битова:
file dg4odbc
Ако
file
изходът на командата съдържа "ELF 64-битов LSB изпълним" или нещо подобно, DG4ODBC е 64-битов и трябва да използвате 64-битова версия на ODBC драйвера на SQL Server.В противен случай изтеглете 32-битовия SQL Server ODBC драйвер за вашата платформа.
- Инсталирайте, лицензирайте и тествайте ODBC драйвера на SQL Server на машината, където е инсталиран DG4ODBC.
За инструкции за инсталиране вижте документацията на SQL Server ODBC драйвер. Обърнете се към документацията, за да видите кои променливи на средата трябва да зададете (
LD_LIBRARY_PATH
,LIBPATH
,LD_RUN_PATH
илиSHLIB_PATH
в зависимост от платформата и линкера). - Създайте файл за инициализиране на DG4ODBC. Например:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- Уверете се, че тези параметри и стойности присъстват във вашия init файл:
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
Заменете my_sql_server_odbc_dsn с име на източник на данни за драйвер на SQL Server ODBC, който се свързва с целевата база данни на SQL Server.
- Добавете запис към
$ORACLE_HOME/network/admin/listener.ora
което създава SID_NAME за DG4ODBC. Например: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) ) )
Заменете oracle_home_directory със стойността на
$ORACLE_HOME
. - Добавете запис DG4ODBC към
$ORACLE_HOME/network/admin/tnsnames.ora
който посочва SID_NAME, създаден в предишната стъпка. Например:MSSQL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=mssql)) (HS=OK) )
- Стартирайте (или рестартирайте) Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Свържете се с вашата база данни Oracle в SQL*Plus.
- В SQL*Plus създайте връзка към базата данни за целевата база данни на SQL Server. Например:
CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';
Заменете dbuser и dbpassword с валидно потребителско име и парола за целевата база данни на SQL Server.
Бележки
- Версията Oracle 21c на DG4ODBC вече не използва
SQLDriverConnect
за да се свържете с ODBC източник на данни. Той използваSQLConnect
вместо това, което не поддържаHS_NLS_NCHAR = UCS2
. По същия начин връзките без DSN не работят сSQLConnect
. - Ако вашата свързана таблица съдържа колона с име ROWID, вашата заявка ще се провали с грешката:
ORA-02070: database SQLSRV2019 does not support ROWIDs in this context
За да заобиколите това, променете името на колоната от ROWID на ROWNUM.