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。

相关推荐
chde2Wang2 小时前
hbase启动报错-keeperErrorCode
大数据·数据库·hbase
清平乐的技术专栏2 小时前
HBase Shell常用命令
大数据·数据库·hbase
Zhen (Evan) Wang2 小时前
SQL Server Service Broker启用详解以及常见问题
数据库·sqlserver
马克学长2 小时前
SSM文创产品推荐系统设计与实现95ml5(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·高校学生管理数字化·ssm 框架应用·商品分类与信息管理
hzk的学习笔记2 小时前
Redisson 的 Watchdog 机制
数据库·redis·分布式·缓存
罗光记2 小时前
夜晚的梦
数据库·其他·百度·新浪微博·segmentfault
韩立学长2 小时前
基于Springboot的智慧管网灌溉系统i1agupa7(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
一 乐2 小时前
高校教务|教务管理|基于springboot+vue的高校教务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·教务管理
数字冰雹2 小时前
重塑城市公共安全管理的“智慧之眼”
java·大数据·数据库