暂无图片
暂无图片
3
暂无图片
暂无图片
2
暂无图片

实战篇:Oracle 配置透明网关访问 MySQL 详细教程

原创 Lucifer三思而后行 2021-11-16
2797

大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。

目录

前言

从 Oracle 无法直接访问 Mysql 数据库,需要配置透明网关后通过 DBLink 实现访问。

今天搞了一下午透明网关配置,流程比较复杂,并且有一些坑,这不立刻来给大家排排坑,说不定以后就用的着呢!

废话不多说,直接实战走起~

一、环境准备

本次环境准备了 3 台主机,分别是 Oracle 数据库,MySQL 数据库,透明网关。

❤️ Oracle 安装包合集和补丁下载地址:2021年Oracle第三季度补丁合集

环境信息:

用途 主机名 IP地址 主机版本 数据库版本 DB名称 端口号
Oracle 数据库 orcl 10.211.55.100 RHEL7.6 11GR2 orcl 1521
MySQL 数据库 mysql 10.211.55.101 RHEL7.6 8.0.26 lucifer 3306
透明网关主机 gateway 10.211.55.102 RHEL7.6 11GR2 1521

为什么透明网关需要单独配置一台主机?

  • 不影响数据库主机的正常运行
  • 便于安装配置以及管理
  • 数据库迁移时不需要重新配置透明网关
  • RAC 环境下,无需重复安装配置多个节点

📢 注意: 透明网关主机的配置不需要很高,无需安装 Oracle 数据库,仅安装透明网关即可!

二、实战演示

1、介质装备

首先,需要下载 GateWay 和 MySQL ODBC安装包:

  • mysql-connector-odbc-8.0.27-1.el7.x86_64.rpm
  • p13390677_112040_Linux-x86-64_5of7.zip

方便大家学习,我直接上传到百度网盘供大家下载:

链接: https://pan.baidu.com/s/1ybJGu1JCbOgRbjCTqtl9TA 提取码: l062
复制

2、安装透明网关

2.1、主机环境配置

下载上述安装介质并上传透明网关主机:

📢 注意: 安装透明网关之前需要配置环境和创建用户等等,可以参照 Linux 安装单机 Oracle 的环境配置步骤,这里就不再详述了!

使用 Oracle 一键安装脚本配置即可:

cd /soft ./OracleShellInstall.sh -i 10.211.55.102 -txh Y
复制

📢 注意: 由于主机安装时选择了最小化安装,并且安装透明网关需要图形化,因此加上 -txh Y 安装图形化界面!

稍许等待几分钟之后,即可配置完成,由于没有上传 DB 安装包,这个报错是正常!

2.2、正式安装

主机配置完成后,开始安装透明网关:

## 首先 root 用户下,授权 oracle 访问 /soft 目录 chown -R oracle:oinstall /soft ## 切换到 oracle 用户下 su - oracle ## 解压透明网关安装包 unzip -q p13390677_112040_Linux-x86-64_5of7.zip ## 配置 vnc 访问图形化界面 vncserver
复制

使用 VNC 客户端连接:

开始安装:

确认安装位置:

这里选择 for ODBC 即可:

开始安装,静待结束:

root 用户下执行 root.sh 脚本:

/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/11.2.0/db/root.sh
复制

配置监听:

至此,透明网关安装结束!

2.3、安装 mysql-connector

首先需要安装 unixODBC 依赖,否则报错:

安装 unixODBC 依赖后安装 mysql-connector

yum install -y unixODBC* rpm -ivh mysql-connector-odbc-8.0.27-1.el7.x86_64.rpm
复制

📢 注意: 透明网关的安装到这里就全都结束了,接下来就是配置部分了。

3、透明网关配置

透明网关安装好之后,自然是需要配置才能使用的。

3.1、配置 odbc.ini

odbc.ini 文件用来存放 MySQL 数据库相关信息,默认不存在,root 用户下手动创建即可:

cat<<EOF>/etc/odbc.ini [lucifer] Description = ODBC for MySQL Driver = /usr/lib64/libmyodbc8w.so Server = 10.211.55.101 Port = 3306 User = lucifer Password = lucifer Database = lucifer EOF
复制

配置文件中的配置信息如下:

  • [lucifer] 可以理解为是一个 SID 名称,可以自定义,后面配置需要用到;
  • Server 是指 MySQL 数据库主机的 IP 地址;
  • Port 是指 MySQL 数据库的端口;
  • User 是指 Oracle 需要访问的用户名;
  • Password 是指被访问用户的登录密码;
  • Database 是指需要 MySQL 数据库需要被访问的 DB 名称;

📢 注意: 如果有多个 MySQL 数据库需要配置,则填写多个即可!

[lucifer] Description = ODBC for MySQL Driver = /usr/lib64/libmyodbc8w.so Server = 10.211.55.101 Port = 3306 User = lucifer Password = lucifer Database = lucifer [lucifer1] Description = ODBC for MySQL Driver = /usr/lib64/libmyodbc8w.so Server = 10.211.55.105 Port = 3306 User = lucifer1 Password = lucifer1 Database = lucifer1
复制

3.2、配置 init[SID].ora

切换至 oracle 用户,进入 $ORACLE_HOME/hs/admin 目录下,新建一个 init[SID].ora 文件:

cat<<EOF>$ORACLE_HOME/hs/admin/initlucifer.ora ##HS Configuration HS_FDS_CONNECT_INFO = lucifer HS_FDS_TRACE_LEVEL = debug HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so HS_FDS_SUPPORT_STATISTICS=FALSE HS_LANGUAGE=AMERICAN_AMERICA.UTF8 HS_NLS_NCHAR = UCS2 ##ODBC Configuration set ODBCINI=/etc/odbc.ini EOF
复制

这里 initSID.ora 中的 SID 名称和文件中 HS_FDS_CONNECT_INFO 参数值,就是上一步中我们配置 odbc.ini 文件中的 [lucifer] 名称。

📢 注意: 如果有多个 MySQL 数据库需要配置,则创建多个 init[SID].ora 文件 即可!

3.3、配置监听

oracle 用户下,进入 $TNS_ADMIN 配置 listener.ora 文件:

cat<<EOF>>$TNS_ADMIN/listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC= (SID_NAME=lucifer) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db) (PROGRAM=dg4odbc) ) ) EOF
复制

📢 注意: 如果有多个 MySQL 数据库需要配置,则写成如下格式!

cat<<EOF>>$TNS_ADMIN/listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = lucifer) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db) (PROGRAM=dg4odbc) ) (SID_DESC = (SID_NAME = lucifer1) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/db) (PROGRAM=dg4odbc) ) ) EOF
复制

重启监听:

lsnrctl stop lsnrctl start lsnrctl status
复制

配置完成之后,测试是否可以连接 MySQL 数据库:

isql lucifer
复制

成功连接 MySQL 数据库,至此透明网关配置完成!

4、Oracle 数据库配置

透明网关配置完成后,就只需要配置 Oracle 数据库来连接透明网关。

4.1、配置 TNS

通过配置 TNS 来连接透明网关,进入 TNS 配置文件目录 $TNS_ADMIN 配置 TNS:

cat<<EOF>>$TNS_ADMIN/tnsnames.ora lucifer = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.211.55.102)(PORT = 1521)) ) (CONNECT_DATA = (SID = lucifer) ) (HS = OK) ) EOF
复制

通过 tnsping 测试后,发现访问没有问题!

4.2、配置 DBLink 连接 MySQL 数据库

接下来只需要创建你 DBLink 即可连接 MySQL 数据库:

create public database link lucifer connect to "lucifer" identified by "lucifer" using 'lucifer';
复制

测试连接操作 MySQL 数据库:

select * from "lucifer"@lucifer order by "id"; delete from "lucifer"@lucifer where "id"=1;
复制

至此,整个 Oracle 配置透明网关访问 MySQL 就完成了!

三、最后总结

如果按照我的步骤来操作,整个流程走下来应该会比较顺畅,下面罗列一下我操作过程中遇到的一些报错:

1、init[sid].ora 配置文件的 HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so 不正确,应该是 ODBC 的 Lib包:

ERROR at line 1: ORA-28500: connection from ORACLE to a non-Oracle system returned this message: ORA-02063: preceding line from DLK
复制

2、init[sid].ora 里配置的 HS_LANGUAGE=AMERICAN_AMERICA.zhs16gbk 字符集不正确或者没有配置,应该是 Oracle 数据库字符集:

ERROR at line 1: ORA-28500: connection from ORACLE to a non-Oracle system returned this message: [
复制

3、执行查询操作时,表名需要带双引号,因为 MySQL 默认表名是区分大小写,而 Oracle 是不区分大小写的:

ERROR at line 1: ORA-00942: table or view does not exist [MySQL][ODBC 8.0(w) Driver][mysqld-5.7.18-log]Table 'test.T1' doesn't exist {42S02,NativeErr = 1146} ORA-02063: preceding 2 lines from DLK
复制

4、Oracle 数据库配置 TNS 时,没有加 (HS = OK)

ERROR at line 1: ORA-28546: connection initialization failed, probable Net8 admin error ORA-02063: preceding line from LUCIFER
复制

本文部分内容参考文档:Oracle透明网关访问MySQL数据库


往期精彩文章

Oracle 一键巡检自动生成 Word 报告
Oracle 一键安装合集
Oracle一键安装脚本的 21 个疑问与解答
Oracle一键巡检脚本的 21 个疑问与解答
全网首发:Oracle 23ai 一键安装脚本(非 RPM)
Oracle 19C 最新 RU 补丁 19.24 ,一键安装!
Oracle Linux 7.9 一键安装 Oracle 19C
RedHat 9.4(aarch64) 一键安装 Oracle 19C
openEuler 22.03 LTS SP4 一键安装 Oracle 19C RAC
RHEL 7.9 一键安装 Oracle 19C 19.23 RAC
Oracle DataGuard GAP 修复手册
优化 Oracle:最佳实践与开发规范
DBA 必备:Linux 软件源配置全攻略
Linux 一键配置时钟同步全攻略


感谢您的阅读,这里是 Lucifer三思而后行,欢迎点赞+关注,我会持续分享数据库知识、运维技巧。

最后修改时间:2024-08-09 13:33:37
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

Lucifer三思而后行
暂无图片 暂无图片
3年前
评论
暂无图片 0
关注作者公众号:Lucifer三思而后行,添加作者微信:Lucifer-4622,可以进技术交流群!
3年前
暂无图片 点赞
评论
墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
3年前
暂无图片 点赞
评论
暂无图片
获得了2492次点赞
暂无图片
内容获得860次评论
暂无图片
获得了3352次收藏
TA的专栏
DBA
收录28篇内容
DBA
收录22篇内容
目录
  • 前言
  • 一、环境准备
  • 二、实战演示
    • 1、介质装备
    • 2、安装透明网关
      • 2.1、主机环境配置
      • 2.2、正式安装
      • 2.3、安装 mysql-connector
    • 3、透明网关配置
      • 3.1、配置 odbc.ini
      • 3.2、配置 init[SID].ora
      • 3.3、配置监听
    • 4、Oracle 数据库配置
      • 4.1、配置 TNS
      • 4.2、配置 DBLink 连接 MySQL 数据库
  • 三、最后总结
  • 往期精彩文章