window server2008下Oracle 配置dblink查询 MySQL 数据

源端:

Windows Server 2008

Oracle Database 11gR2 (64-bit)

目标端:

CentOS 7.9

MySQL 8.0.40

访问方式:Oracle 使用 DG4ODBC + MySQL ODBC建立DBLINK查询 MySQL 数据

一、在 Windows Server 安装 MySQL ODBC 驱动

1. 下载 MySQL ODBC 8.0 驱动(64-bit)

官方下载地址:

https://dev.mysql.com/downloads/connector/odbc/

选择:

Windows (x86, 64-bit), MSI Installer → Connector/ODBC 8.0.33

安装完成后继续

#mysql ODBC的驱动版本要注意兼容性,否则连接会失败,报ora-03113 通信通道的文件结尾。

2. 配置 ODBC 数据源

打开:

控制面板 → 管理工具 → ODBC 数据源 (64位)

选择系统DSN→ 新建 → MySQL ODBC 8.0 Driver

填写:

| 参数 | 值 |

| ---------------- | --------------------------- |

| Data Source Name | mysql_dsn |

| Server | MySQL服务器IP(如 192.168.10.50) |

| User | mysql_user |

| Password | mysql_password |

| Database | 目标库名,如 testdb |

| Port | 3306 |

点击Test必须为Success

二、Linux 端 MySQL 授权访问(必须)

在 MySQL 服务器执行:

CREATE USER 'mysql_user'@'%' IDENTIFIED BY 'mysql_password';

GRANT ALL PRIVILEGES ON testdb.* TO 'mysql_user'@'%';

FLUSH PRIVILEGES;

三、配置 Oracle DG4ODBC 网关

1. 编辑 tnsnames.ora

路径:

%ORACLE_HOME%\network\admin\tnsnames.ora

增加:

MYSQL_DBLINK =

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))

(CONNECT_DATA=(SID=MYSQLGATE))

(HS=OK)

)

2. 创建网关初始化文件

路径:

%ORACLE_HOME%\hs\admin\initMYSQLGATE.ora

内容:

HS_FDS_CONNECT_INFO = mysql_dsn

HS_FDS_TRACE_LEVEL = 0

HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8

3. 编辑 listener.ora

路径:

%ORACLE_HOME%\network\admin\listener.ora

增加SID_DESC(红色部分):

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = CLRExtProc)

(ORACLE_HOME = D:\Oracle\product\11.2.0\dbhome_2)

(PROGRAM = extproc)

(ENVS = "EXTPROC_DLLS=ONLY:D:\Oracle\product\11.2.0\dbhome_2\bin\oraclr11.dll")

)

(SID_DESC =

(SID_NAME = MYSQLGATE)

(ORACLE_HOME = D:\Oracle\product\11.2.0\dbhome_2)

(PROGRAM = dg4odbc)

)

)

⚠ 请替换 ORACLE_HOME 路径为你的真实路径

重启监听:

lsnrctl stop

lsnrctl start

确认注册成功:

lsnrctl status

需看到:

Service "MYSQLGATE" has 1 instance(s).

登录 SQL*Plus:

CREATE PUBLIC DATABASE LINK mysql_link

CONNECT TO "mysql_user" IDENTIFIED BY "mysql_password"

USING 'MYSQL_DBLINK';

五、测试访问

SELECT * FROM your_table@mysql_link;

如果能返回数据,即配置成功!

常见问题排查

| 错误 | 解决方案 |

| --------------------- | -------------------------------------------- |

| ORA-28545 / ORA-28500 | 确保 ODBC 使用 **系统DSN**,并重启 Oracle 服务

| ORA-02019 | DBLINK 名称写错 |

|ORA-03113 |驱动版本不匹配,安装对应的驱动

| 中文乱码 | 确保 `HS_LANGUAGE = AMERICAN_AMERICA.AL32UTF8` |

可选优化(强烈建议)

由于 MySQL 表名默认大小写敏感,建议在 MySQL 中执行:

sql

SET GLOBAL lower_case_table_names = 1;

并重启 MySQL。

相关推荐
上学的小垃圾11 小时前
基于docker安装MySQL(openEuler系统)
linux·mysql·docker·容器
倔强的石头_13 小时前
连接数失控排查:从数据库会话、应用线程池到连接池泄漏
数据库
hzxpaipai13 小时前
企业官网技术架构拆解:前端、后台、数据库、服务器如何协同
前端·数据库·架构
爱吃火鸡面呀14 小时前
MySQL DQL 子查询详解:从标量、列、行到表子查询的完整实战
大数据·数据库·mysql
harmony&14 小时前
OpenStack 云平台管理实战:从 Keystone 认证到 Nova 计算调度
数据库·openstack
betazhou15 小时前
Apache Seatunnel 抽取Oracle数据库测试
数据库·oracle·apache·seatunnel
devilnumber17 小时前
Oracle 与 MySQL substr 函数差异总结
java·数据库·mysql·oracle
—Miss. Z—17 小时前
计算机等级考试三级数据库技术—选择题
数据库·mysql
www_aiyuanma_vip17 小时前
PC 手机电商(MySQL 版)
数据库·mysql·智能手机