Sử dụng trình điều khiển ODBC SQL Server với tác nhân ODBC Dịch vụ Không đồng nhất của Oracle, DG4ODBC, để kết nối Oracle 21c với SQL Server.
- Kiểm tra xem phiên bản DG4ODBC của bạn là 32 bit hay 64 bit:
file dg4odbc
Nếu tệp
file
đầu ra của lệnh chứa "ELF 64-bit LSB thi hành" hoặc một cái gì đó tương tự, DG4ODBC là 64-bit và bạn cần sử dụng phiên bản 64-bit của trình điều khiển ODBC SQL Server.Nếu không, hãy tải xuống trình điều khiển ODBC SQL Server 32 bit cho nền tảng của bạn.
- Cài đặt, cấp phép và kiểm tra trình điều khiển SQL Server ODBC trên máy có cài đặt DG4ODBC.
Để biết hướng dẫn cài đặt, hãy xem tài liệu trình điều khiển SQL Server ODBC. Tham khảo tài liệu để xem bạn cần đặt biến môi trường nào (
LD_LIBRARY_PATH
,LIBPATH
,LD_RUN_PATH
hoặcSHLIB_PATH
tùy thuộc vào nền tảng và trình liên kết). - Tạo tệp init DG4ODBC. Ví dụ:
cd $ORACLE_HOME/hs/admin cp initdg4odbc.ora initmssql.ora
- Đảm bảo các thông số và giá trị này có trong tệp init của bạn:
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
Thay thế my_sql_server_odbc_dsn với tên của nguồn dữ liệu trình điều khiển ODBC SQL Server kết nối với cơ sở dữ liệu SQL Server đích.
- Thêm mục nhập vào
$ORACLE_HOME/network/admin/listener.ora
tạo SID_NAME cho DG4ODBC. Ví dụ: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) ) )
Thay thế oracle_home_directory với giá trị của
$ORACLE_HOME
. - Thêm mục nhập DG4ODBC vào
$ORACLE_HOME/network/admin/tnsnames.ora
chỉ định SID_NAME đã tạo ở bước trước. Ví dụ:MSSQL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) (CONNECT_DATA= (SID=mssql)) (HS=OK) )
- Khởi động (hoặc khởi động lại) Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
- Kết nối với cơ sở dữ liệu Oracle của bạn trong SQL * Plus.
- Trong SQL * Plus, tạo liên kết cơ sở dữ liệu cho cơ sở dữ liệu SQL Server đích. Ví dụ:
CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';
Thay thế dbuser và dbpassword với tên người dùng và mật khẩu hợp lệ cho cơ sở dữ liệu SQL Server đích.
Ghi chú
- Phiên bản Oracle 21c của DG4ODBC không còn sử dụng
SQLDriverConnect
để kết nối với nguồn dữ liệu ODBC. Nó sử dụngSQLConnect
thay vào đó, không hỗ trợHS_NLS_NCHAR = UCS2
. Tương tự như vậy, các kết nối không có DSN không hoạt động vớiSQLConnect
. - Nếu bảng được liên kết của bạn chứa một cột có tên ROWID, truy vấn của bạn sẽ không thành công với lỗi:
ORA-02070: database SQLSRV2019 does not support ROWIDs in this context
Để giải quyết vấn đề này, hãy thay đổi tên của cột từ ROWID thành ROWNUM.