技术架构概述
节点类型 | IP示例 |
---|---|
Oracle数据库 | 172.18.0.11 |
透明网关节点 | 192.168.5.20 |
MySQL数据库 | 10.10.8.100 |
提示:透明网关支持部署在Oracle服务器实现集中式管理
一、MySQL环境准备
1. ODBC驱动部署
从MySQL官网获取对应版本的ODBC驱动:
# 企业版推荐使用8.0系列驱动
wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.17-1.el7.x86_64.rpm
安装验证流程:
rpm -ivh mysql-connector-odbc-8.0.17-1.el7.x86_64.rpm
yum install -y unixODBC*# 查看安装结果
rpm -qa | grep -E 'unixODBC|mysql-connector'
2. 账户权限配置
-- 创建专用对接账户
CREATE USER gateway_user@'%' IDENTIFIED BY 'Gateway_2023!';-- 按需分配权限(生产环境建议细化权限)
GRANT SELECT,INSERT,UPDATE ON operation_db.* TO gateway_user@'%';
FLUSH PRIVILEGES;
二、透明网关部署流程
1. ODBC配置核心参数
/etc/odbc.ini
配置内容:
[service_gateway]
Driver = /usr/lib64/libmyodbc8w.so
Description = MySQL Gateway Connection
SERVER = 10.10.8.100
PORT = 3306
USER = gateway_user
PASSWORD = Gateway_2023!
DATABASE = operation_logs
OPTION = 0
2. HS配置模板
$ORACLE_HOME/hs/admin/initsvcdb.ora
参数示例:
HS_FDS_CONNECT_INFO = service_gateway
HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so
HS_FDS_SUPPORT_STATISTICS= FALSE
HS_LANGUAGE=AMERICAN_AMERICA.UTF8
HS_FDS_TRACE_LEVEL = debug
HS_NLS_NCHAR=UCS2
# ODBC env variables
set ODBCINI=/etc/odbc.ini
3. 动态监听配置
listener.ora
混合配置样板:
LISTENER_GW =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.20)(PORT = 1531))))SID_LIST_LISTENER_GW =(SID_LIST =(SID_DESC =(PROGRAM = dg4odbc)(SID_NAME = svc_gateway01)(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1))(SID_DESC =(PROGRAM = dg4odbc)(SID_NAME = svc_gateway02)(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)))
启动监听:
lsnrctl start listener_gw
三、Oracle终端配置
1. TNS服务配置
tnsnames.ora
配置示例:
PROD_GATEWAY =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.20)(PORT = 1531)))(CONNECT_DATA =(SID = svc_gateway01))(HS = OK))
2. 数据库链接创建
CREATE PUBLIC DATABASE LINK mysql_gw
CONNECT TO "gateway_user"
IDENTIFIED BY "Gateway_2023!"
USING 'PROD_GATEWAY';
3. 跨库查询示例
注意:列名以及表名需要带上双引号
SELECT "order_id", "create_time"
FROM "order_records"@mysql_gw
WHERE "status" = 'COMPLETED';
连接成功!
四、典型问题解决指南
案例1:ODBC连接初始化失败
ORA-28545: Net8 error establishing connection
[MySQL][ODBC Driver] SSL handshake failed
解决方案:
- MySQL配置文件增加:
[mysqld]
skip_ssl
- 重启MySQL服务生效
案例2:认证协议不兼容
[HY000][2061] Authentication plugin error
处理步骤:
ALTER USER 'gateway_user'@'%'
IDENTIFIED WITH mysql_native_password BY '新密码';
案例3:大字段查询异常
ORA-00600: [HO define: Long fetch]
优化方案:
-- MySQL端创建视图转换数据类型
CREATE VIEW v_safe_articles AS
SELECT id,CAST(content AS CHAR(2000)) AS content_safe
FROM technical_docs;
案例4:连接意外中断
ORA-28511: RPC connection lost
保持连接策略:
# HS配置中添加
HS_IDLE_TIMEOUT = 1440