Użyj sterownika ODBC SQL Server z agentem Oracle Heterogenous Services ODBC, DG4ODBC, aby połączyć Oracle 21c z SQL Server.
- Sprawdź, czy Twoja wersja DG4ODBC jest 32-bitowa czy 64-bitowa:
file dg4odbc
Jeśli
file
dane wyjściowe polecenia zawierają „64-bitowy plik wykonywalny ELF LSB” lub coś podobnego, DG4ODBC jest 64-bitowy i musisz użyć 64-bitowej wersji sterownika ODBC SQL Server.W przeciwnym razie pobierz 32-bitowy sterownik ODBC SQL Server dla swojej platformy.
- Zainstaluj, uzyskaj licencję i przetestuj sterownik ODBC programu SQL Server na komputerze, na którym zainstalowano DG4ODBC.
Aby uzyskać instrukcje dotyczące instalacji, zobacz dokumentację sterownika ODBC programu SQL Server. Zapoznaj się z dokumentacją, aby sprawdzić, które zmienneśrodowiskowe należy ustawić (
LD_LIBRARY_PATH
,LIBPATH
,LD_RUN_PATH
lubSHLIB_PATH
w zależności od platformy i linkera). - Utwórz plik inicjujący DG4ODBC. Na przykład:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- Upewnij się, że te parametry i wartości są obecne w Twoim pliku początkowym:
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
Zastąp my_sql_server_odbc_dsn z nazwą źródła danych sterownika ODBC SQL Server, który łączy się z docelową bazą danych SQL Server.
- Dodaj wpis do
$ORACLE_HOME/network/admin/listener.ora
który tworzy SID_NAME dla DG4ODBC. Na przykład: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) ) )
Zastąp oracle_home_directory o wartości
$ORACLE_HOME
. - Dodaj wpis DG4ODBC do
$ORACLE_HOME/network/admin/tnsnames.ora
który określa SID_NAME utworzony w poprzednim kroku. Na przykład:MSSQL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=mssql)) (HS=OK) )
- Uruchom (lub uruchom ponownie) Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Połącz się z bazą danych Oracle w SQL*Plus.
- W SQL*Plus utwórz łącze bazy danych dla docelowej bazy danych SQL Server. Na przykład:
CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';
Zastąp dbuser i hasło bazy danych z prawidłową nazwą użytkownika i hasłem dla docelowej bazy danych SQL Server.
Notatki
- Wersja Oracle 21c DG4ODBC nie używa już
SQLDriverConnect
aby połączyć się ze źródłem danych ODBC. UżywaSQLConnect
zamiast tego, co nie obsługujeHS_NLS_NCHAR = UCS2
. Podobnie połączenia bez DSN nie działają zSQLConnect
. - Jeśli tabela połączona zawiera kolumnę o nazwie ROWID, zapytanie zakończy się błędem:
ORA-02070: database SQLSRV2019 does not support ROWIDs in this context
Aby obejść ten problem, zmień nazwę kolumny z ROWID na ROWNUM.