首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Oracle 19C 通过 ODBC 连接 SQL Server 数据库指南 (Red Hat 7)

Oracle 19C 通过 ODBC 连接 SQL Server 数据库指南 (Red Hat 7)

原创
作者头像
晓松
发布2025-04-09 11:19:02
发布2025-04-09 11:19:02
5550
举报

前言

本指南详细说明如何在 Red Hat Enterprise Linux 7 系统上配置 Oracle 19C 通过 ODBC 连接 SQL Server 数据库。这种异构数据库连接方式称为 Oracle Heterogeneous Services,允许 Oracle 数据库直接访问非 Oracle 数据源。

系统要求

  • 操作系统:Red Hat Enterprise Linux 7.x
  • Oracle 数据库版本:19C
  • SQL Server 版本:2008 或更高版本

重要注意事项

关于 FreeTDS 版本选择:

在 Red Hat 7 系统上,不建议安装最新版 FreeTDS,原因如下:

  1. 兼容性问题:Red Hat 7 的 glibc 版本较旧,可能不兼容最新 FreeTDS 的编译要求
  2. 稳定性考虑:1.3.x 系列版本在 RHEL 7 上经过充分测试,稳定性更有保障
  3. 功能需求:对于基本的 SQL Server 连接,1.3.18 版本已提供完整支持

建议使用经过验证的 FreeTDS 1.3.18 稳定版本。

第一部分:FreeTDS 安装与配置

1.1 安装准备

安装必要的编译工具和依赖库:

代码语言:bash
复制
sudo yum -y install gcc make automake autoconf libtool gettext-devel openssl-devel libtool-ltdl-devel

这些包提供了编译 FreeTDS 所需的基础环境,包括 C 编译器、自动化构建工具和加密库支持。

1.2 下载并安装 FreeTDS

代码语言:bash
复制
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 数据库库兼容模式
代码语言:bash
复制
./configure --prefix=/usr/local/freetds --with-tdsver=7.3 --enable-msdblib
make && sudo make install

1.3 环境变量配置

代码语言:bash
复制
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 的可执行文件和库文件。

1.4 验证安装

代码语言:bash
复制
tsql -C

正确安装后,此命令将显示 FreeTDS 的版本和配置信息。

第二部分:FreeTDS 连接配置

2.1 配置 SQL Server 连接

编辑 /usr/local/freetds/etc/freetds.conf 文件:

代码语言:ini
复制
[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 以避免中文乱码

2.2 测试连接

代码语言:bash
复制
tsql -S SQLServer -U mes -P mes123

成功连接后,您将看到 FreeTDS 的命令行提示符,可以执行简单的 SQL 查询测试。

第三部分:ODBC 配置

3.1 安装 unixODBC

代码语言:bash
复制
sudo yum -y install unixODBC unixODBC-devel

unixODBC 提供了标准的 ODBC 接口,是连接 Oracle 和 SQL Server 的桥梁。

3.2 配置 ODBC 驱动

编辑 /etc/odbcinst.ini

代码语言:ini
复制
[FreeTDS]
Description = FreeTDS ODBC Driver
Driver = /usr/local/freetds/lib/libtdsodbc.so
Setup = /usr/local/freetds/lib/libtdsodbc.so
FileUsage = 1

此配置告诉系统 FreeTDS ODBC 驱动的位置和基本信息。

3.3 配置 ODBC 数据源

编辑 /etc/odbc.ini

代码语言: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      # 客户端字符集

3.4 测试 ODBC 连接

安装测试工具:

代码语言:bash
复制
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

测试连接:

代码语言:bash
复制
isql -v SQLServer username password

成功连接后,您将看到 ODBC 连接状态和 SQL 提示符。

第四部分:Oracle Heterogeneous Services 配置

4.1 创建初始化参数文件

$ORACLE_HOME/hs/admin 下创建 initSQLServer.ora

代码语言:ini
复制
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              # 国家字符集

4.2 配置监听器

编辑 $ORACLE_HOME/network/admin/listener.ora

代码语言:ini
复制
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = SQLServer)      # 服务标识符
      (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)  # Oracle主目录
      (PROGRAM = dg4odbc)         # 使用ODBC网关程序
    )
  )

配置完成后重启监听器:

代码语言:bash
复制
lsnrctl stop
lsnrctl start

4.3 配置 TNS

编辑 $ORACLE_HOME/network/admin/tnsnames.ora

代码语言:ini
复制
SQLServer =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SID = SQLServer)          # 与监听器配置中的SID_NAME一致
    )
    (HS = OK)                   # 启用异构服务
  )

测试 TNS 配置:

代码语言:bash
复制
tnsping SQLServer

第五部分:创建和使用数据库链接

5.1 创建数据库链接

在 Oracle 中执行:

代码语言:sql
复制
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 名称

5.2 测试数据库链接

代码语言:sql
复制
SELECT * FROM your_table@sqlserver_link;

常见问题解决

  1. 字符集问题
    • 如果出现乱码,检查 FreeTDS 和 Oracle 的字符集配置
    • 确保所有配置中都使用 UTF-8
  2. 连接超时
    • 检查防火墙设置
    • 验证网络连通性
  3. ODBC 驱动问题
    • 使用 ldd /usr/local/freetds/lib/libtdsodbc.so 检查依赖库
    • 确保 LD_LIBRARY_PATH 包含 FreeTDS 库路径
  4. 权限问题
    • 所有 Oracle 配置操作应使用 Oracle 安装用户执行
    • 确保 Oracle 用户有权限访问 ODBC 配置文件

总结

通过以上步骤,您已在 Red Hat 7 系统上成功配置了 Oracle 19C 到 SQL Server 的 ODBC 连接。关键点包括:

  • 使用经过验证的 FreeTDS 1.3.18 版本
  • 正确配置 ODBC 数据源
  • 合理设置 Oracle Heterogeneous Services
  • 注意字符集和网络配置

这种连接方式为 Oracle 和 SQL Server 之间的数据交互提供了可靠途径,适用于数据迁移、报表集成等多种场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 系统要求
  • 重要注意事项
  • 第一部分:FreeTDS 安装与配置
    • 1.1 安装准备
    • 1.2 下载并安装 FreeTDS
    • 1.3 环境变量配置
    • 1.4 验证安装
  • 第二部分:FreeTDS 连接配置
    • 2.1 配置 SQL Server 连接
    • 2.2 测试连接
  • 第三部分:ODBC 配置
    • 3.1 安装 unixODBC
    • 3.2 配置 ODBC 驱动
    • 3.3 配置 ODBC 数据源
    • 3.4 测试 ODBC 连接
  • 第四部分:Oracle Heterogeneous Services 配置
    • 4.1 创建初始化参数文件
    • 4.2 配置监听器
    • 4.3 配置 TNS
  • 第五部分:创建和使用数据库链接
    • 5.1 创建数据库链接
    • 5.2 测试数据库链接
  • 常见问题解决
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档