首页 » ORACLE 9i-23ai » 如何配置Oracle Gateway 到MySQL?

如何配置Oracle Gateway 到MySQL?

oracle 的gateway透明网管支持像oracle dblink一样访问异构数据库如mysql, sql server等,在十四年前当时在维护oracle和sql server时,安装配置过还写了个整理了《安装透明网关 for sql server》,时间过的真快,没想到这次oracle的交接已经全面展开,在过渡阶段可能会存在一些异构数据库的访问,使用 Oracle ODBC 网关和异构服务技术从 Oracle 系统访问 MySQL 数据,本文介绍如何使用  ODBC Driver for MySQL 创建MySQL 和 Oracle 的数据库链接,并通过 SQL*Plus 工具查询 MySQL 数据。

Oracle的gateway产品有:

DG4MSQL
DG4ODBC
DG4TERA
DG4MQSERIES
DG4IFMX
DG4SYBS
DG4DRDA

Package 依赖

安装时需要两个 RPM 软件包:

  • yum install unixODBC
  • 下载mysql-connector-odbc-8.0.28-1.el8.x86_64.rpm
  • rpm -ihv mysql-connector-odbc-8.0.28-1.el8.x86_64.rpm

unixODBC软件包将安装基本库,包括稍后需要的库和文件。/usr/lib64/libodbc.so,/etc/odbc.ini,/etc/odbcinst.ini,/usr/bin/isql

软件包 mysql-connector-odbc 将安装特定的 mysql 库。文件/etc/odbcinst.ini也将进行调整

ODBC 配置

将配置 ODBC 客户端/etc/odbc.ini.

[TESTMYDB]
Description     = Test-MYSQL-Datenbank
Driver          = /usr/lib64/libmyodbc8w.so
Trace           = no
Server          = 192.168.0.18
Port            = 3306
Database        = test
User            = anbob
Password        = passwort

拥有条目的名称  和正确的驱动程序非常重要。Unicode MySQL 数据库的驱动程序是libmyodbc8w.so 。否则,可用于具有 1 字节字符集的 MySQL 数据库。 测试odbc连接数据MYSQL

isql test anbob passwort

安装 Oracle Gateway

安装 Oracle Gateway 软件

cd /u05/share/software
unzip LINUX.X64:193000_gateways.zip
cd gateways
./runInstaller

然后选择安装路径和支持的数据库如我们MYSQL仅先ODBC即可.

Gateway网关配置

配置以下三个文件

  • listener.ora
  • tnsnames.ora
  • init<GATEWAYNAME>.ora

listener.ora

LISTENER=
   (DESCRIPTION=
      (ADDRESS_LIST=
         (ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))
         (ADDRESS=(PROTOCOL=TCP)(HOST=YYYY)(PORT=1521))
      )
   )

SID_LIST_LISTENER =
   (SID_LIST=
      (SID_DESC=
         (SID_NAME=anbob)  -- 必须与/etc/odbc.ini的文件相同
         (ORACLE_HOME=/u01/app/oracle/product/19/gwhome_1) --GATEWAY安装路径 
         (PROGRAM=dg4odbc)
      )
   )

tnsnames.ora

TESTMYDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = XXX1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = XXX2)(PORT = 1521))
    (CONNECT_DATA =
      (SID = ANBOB)
    )
    (HS = OK)
  )

Note:
对于RAC不能使用scan IP, 这里指定的是多个vip, TNS别名可以自定义,但sid也必须与odbc.ini相同。

initanbob.ora

HS_FDS_CONNECT_INFO = anbob   --必须是odbc.ini记录
#HS_FDS_TRACE_LEVEL = OFF
#HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P15
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so

HS_FDS_SHAREABLE_NAME 使用的是unixODBC包的libodbc.so

Database-Link

CREATE DATABASE LINK dl_test
CONNECT TO "anbob" IDENTIFIED BY "password"
USING 'TESTMYDB ";

如果mysql数据库不是UNICODE ,连接时可能报错ora-28500, 需要在initanbob.ora中配置HS_LANGUAGE 为指定的字符集, 访问表时通常是小写,用双引号。

 

打赏

目前这篇文章还没有评论(Rss)

我要评论