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。

相关推荐
q***9251几秒前
sql实战解析-sum()over(partition by xx order by xx)
数据库·sql
gladiator+2 分钟前
Redis之BigKey的常见问题以及大厂相关面试题
java·数据库·redis
合方圆~小文6 分钟前
AI摄像头精准识别技术依赖于深度算法
数据结构·数据库·数码相机·模块测试
tanxiaomi18 分钟前
Redis相关面试题
数据库·redis·缓存
钮钴禄·爱因斯晨41 分钟前
【探索实战】KuratorGitOps 多环境配置管理与合规审计
数据库
Z***G4791 小时前
【零基础学Mysql】常用函数讲解,提升数据操作效率的利器
数据库·mysql
q***06471 小时前
Spring Boot 从 2.7.x 升级到 3.3注意事项
数据库·hive·spring boot
aml258__1 小时前
MySQL 数据库管理入门:从创建到删除(T1)
数据库·mysql·oracle·初学数据库
悦悦欧呐呐呐呐1 小时前
数据库事务是什么,怎么用的
服务器·数据库·oracle
q***64971 小时前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot