Gunakan driver SQL Server ODBC dengan agen ODBC Layanan Heterogen Oracle, DG4ODBC, untuk menghubungkan Oracle 21c ke SQL Server.
- Periksa apakah versi DG4ODBC Anda 32-bit atau 64-bit:
file dg4odbc
Jika
file
output perintah berisi "ELF 64-bit LSB executable", atau yang serupa, DG4ODBC adalah 64-bit, dan Anda perlu menggunakan versi 64-bit dari driver SQL Server ODBC.Jika tidak, unduh driver SQL Server ODBC 32-bit untuk platform Anda.
- Instal, lisensikan, dan uji driver SQL Server ODBC pada mesin tempat DG4ODBC diinstal.
Untuk petunjuk penginstalan, lihat dokumentasi driver SQL Server ODBC. Lihat dokumentasi untuk melihat variabel lingkungan mana yang perlu Anda setel (
LD_LIBRARY_PATH
,LIBPATH
,LD_RUN_PATH
atauSHLIB_PATH
tergantung pada platform dan penautnya). - Buat file init DG4ODBC. Misalnya:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- Pastikan parameter dan nilai ini ada di file init Anda:
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
Ganti my_sql_server_odbc_dsn dengan nama sumber data driver SQL Server ODBC yang terhubung ke database SQL Server target.
- Tambahkan entri ke
$ORACLE_HOME/network/admin/listener.ora
yang membuat SID_NAME untuk DG4ODBC. Misalnya: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) ) )
Ganti Oracle_home_directory dengan nilai
$ORACLE_HOME
. - Tambahkan entri DG4ODBC ke
$ORACLE_HOME/network/admin/tnsnames.ora
yang menentukan SID_NAME yang dibuat pada langkah sebelumnya. Misalnya:MSSQL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=mssql)) (HS=OK) )
- Mulai (atau mulai ulang) Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Hubungkan ke database Oracle Anda di SQL*Plus.
- Di SQL*Plus, buat link database untuk database SQL Server target. Misalnya:
CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';
Ganti dbuser dan dbpassword dengan nama pengguna dan sandi yang valid untuk database SQL Server target.
Catatan
- Versi Oracle 21c dari DG4ODBC tidak lagi menggunakan
SQLDriverConnect
untuk terhubung ke sumber data ODBC. Ini menggunakanSQLConnect
sebagai gantinya, yang tidak mendukungHS_NLS_NCHAR = UCS2
. Demikian juga, koneksi tanpa DSN tidak berfungsi denganSQLConnect
. - Jika tabel tertaut Anda berisi kolom bernama ROWID, kueri Anda akan gagal dengan kesalahan:
ORA-02070: database SQLSRV2019 does not support ROWIDs in this context
Untuk mengatasinya, ubah nama kolom dari ROWID menjadi ROWNUM.