Použijte ovladač SQL Server ODBC s agentem Oracle Heterogeneous Services ODBC, DG4ODBC, k připojení Oracle 21c k SQL Serveru.
- Zkontrolujte, zda je vaše verze DG4ODBC 32bitová nebo 64bitová:
file dg4odbc
Pokud
file
výstup příkazu obsahuje "ELF 64-bit LSB executable" nebo něco podobného, DG4ODBC je 64-bit a musíte použít 64bitovou verzi ovladače SQL Server ODBC.Jinak si stáhněte 32bitový SQL Server ODBC ovladač pro vaši platformu.
- Nainstalujte, licencujte a otestujte ovladač SQL Server ODBC na počítači, kde je nainstalován DG4ODBC.
Pokyny k instalaci naleznete v dokumentaci ovladače SQL Server ODBC. V dokumentaci zjistíte, které proměnné prostředí je třeba nastavit (
LD_LIBRARY_PATH
,LIBPATH
,LD_RUN_PATH
neboSHLIB_PATH
v závislosti na platformě a linkeru). - Vytvořte inicializační soubor DG4ODBC. Například:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- Ujistěte se, že ve vašem init souboru jsou tyto parametry a hodnoty:
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
Nahraďte my_sql_server_odbc_dsn s názvem zdroje dat ovladače SQL Server ODBC, který se připojuje k cílové databázi SQL Server.
- Přidat záznam do
$ORACLE_HOME/network/admin/listener.ora
který vytvoří SID_NAME pro DG4ODBC. Například: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) ) )
Nahraďte oracle_home_directory s hodnotou
$ORACLE_HOME
. - Přidejte záznam DG4ODBC na
$ORACLE_HOME/network/admin/tnsnames.ora
který určuje SID_NAME vytvořený v předchozím kroku. Například:MSSQL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=mssql)) (HS=OK) )
- Spusťte (nebo restartujte) Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Připojte se ke své databázi Oracle v SQL*Plus.
- V SQL*Plus vytvořte odkaz na databázi pro cílovou databázi SQL Server. Například:
CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';
Nahraďte dbuser a dbpassword s platným uživatelským jménem a heslem pro cílovou databázi SQL Server.
Poznámky
- Verze Oracle 21c DG4ODBC již nepoužívá
SQLDriverConnect
pro připojení ke zdroji dat ODBC. PoužíváSQLConnect
místo toho, který nepodporujeHS_NLS_NCHAR = UCS2
. Stejně tak připojení bez DSN nefungují sSQLConnect
. - Pokud vaše propojená tabulka obsahuje sloupec s názvem ROWID, váš dotaz selže s chybou:
ORA-02070: database SQLSRV2019 does not support ROWIDs in this context
Chcete-li tento problém vyřešit, změňte název sloupce z ROWID na ROWNUM.