本指南详细说明如何在 Red Hat Enterprise Linux 7 系统上配置 Oracle 19C 通过 ODBC 连接 SQL Server 数据库。这种异构数据库连接方式称为 Oracle Heterogeneous Services,允许 Oracle 数据库直接访问非 Oracle 数据源。
关于 FreeTDS 版本选择:
在 Red Hat 7 系统上,不建议安装最新版 FreeTDS,原因如下:
建议使用经过验证的 FreeTDS 1.3.18 稳定版本。
安装必要的编译工具和依赖库:
sudo yum -y install gcc make automake autoconf libtool gettext-devel openssl-devel libtool-ltdl-devel
这些包提供了编译 FreeTDS 所需的基础环境,包括 C 编译器、自动化构建工具和加密库支持。
wget http://www.freetds.org/files/stable/freetds-1.3.18.tar.gz
tar -xf freetds-1.3.18.tar.gz
cd freetds-1.3.18/
配置编译选项时,我们特别指定:
--with-tdsver=7.3
:支持 SQL Server 2008 及以上版本--enable-msdblib
:启用 Microsoft 数据库库兼容模式./configure --prefix=/usr/local/freetds --with-tdsver=7.3 --enable-msdblib
make && sudo make install
echo 'export PATH=$PATH:/usr/local/freetds/bin' | sudo tee -a /etc/profile
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib' | sudo tee -a /etc/profile
source /etc/profile
这些环境变量确保系统能找到 FreeTDS 的可执行文件和库文件。
tsql -C
正确安装后,此命令将显示 FreeTDS 的版本和配置信息。
编辑 /usr/local/freetds/etc/freetds.conf
文件:
[SQLServer]
host = 192.168.2.8 # SQL Server 服务器IP
port = 1433 # SQL Server 监听端口
tds version = 7.3 # 协议版本
client charset = UTF-8 # 客户端字符集
关键参数说明:
tds version
:必须与 SQL Server 版本匹配client charset
:设置为 UTF-8 以避免中文乱码tsql -S SQLServer -U mes -P mes123
成功连接后,您将看到 FreeTDS 的命令行提示符,可以执行简单的 SQL 查询测试。
sudo yum -y install unixODBC unixODBC-devel
unixODBC 提供了标准的 ODBC 接口,是连接 Oracle 和 SQL Server 的桥梁。
编辑 /etc/odbcinst.ini
:
[FreeTDS]
Description = FreeTDS ODBC Driver
Driver = /usr/local/freetds/lib/libtdsodbc.so
Setup = /usr/local/freetds/lib/libtdsodbc.so
FileUsage = 1
此配置告诉系统 FreeTDS ODBC 驱动的位置和基本信息。
编辑 /etc/odbc.ini
:
[SQLServer]
Description = SQL Server ODBC Connection
Driver = FreeTDS
Server = 192.168.1.119 # SQL Server IP地址
Port = 1433 # SQL Server 端口
Database = your_database_name # 要连接的数据库名
TDS_Version = 7.4 # TDS协议版本
ClientCharset = UTF-8 # 客户端字符集
安装测试工具:
curl -sL https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/msprod.repo
sudo ACCEPT_EULA=Y yum -y install mssql-tools unixODBC-devel
测试连接:
isql -v SQLServer username password
成功连接后,您将看到 ODBC 连接状态和 SQL 提示符。
在 $ORACLE_HOME/hs/admin
下创建 initSQLServer.ora
:
HS_FDS_CONNECT_INFO = SQLServer # 对应odbc.ini中的数据源名称
HS_FDS_TRACE_LEVEL = 0 # 跟踪级别(0-关闭,4-详细)
HS_FDS_SHAREABLE_NAME = /usr/local/freetds/lib/libtdsodbc.so # ODBC驱动路径
HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8 # 语言和字符集设置
HS_NLS_NCHAR = UCS2 # 国家字符集
编辑 $ORACLE_HOME/network/admin/listener.ora
:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = SQLServer) # 服务标识符
(ORACLE_HOME = /opt/oracle/product/19c/dbhome_1) # Oracle主目录
(PROGRAM = dg4odbc) # 使用ODBC网关程序
)
)
配置完成后重启监听器:
lsnrctl stop
lsnrctl start
编辑 $ORACLE_HOME/network/admin/tnsnames.ora
:
SQLServer =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SID = SQLServer) # 与监听器配置中的SID_NAME一致
)
(HS = OK) # 启用异构服务
)
测试 TNS 配置:
tnsping SQLServer
在 Oracle 中执行:
CREATE DATABASE LINK sqlserver_link
CONNECT TO "sqlserver_username" IDENTIFIED BY "sqlserver_password"
USING 'SQLServer';
参数说明:
sqlserver_link
:本地链接名称sqlserver_username
:SQL Server 登录名sqlserver_password
:SQL Server 密码'SQLServer'
:TNS 名称SELECT * FROM your_table@sqlserver_link;
ldd /usr/local/freetds/lib/libtdsodbc.so
检查依赖库通过以上步骤,您已在 Red Hat 7 系统上成功配置了 Oracle 19C 到 SQL Server 的 ODBC 连接。关键点包括:
这种连接方式为 Oracle 和 SQL Server 之间的数据交互提供了可靠途径,适用于数据迁移、报表集成等多种场景。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。