ORACLE 访问MYSQL 配置笔记

 ORACLE本身并没有针对MYSQL的透明网关,因此ORACLE 访问MYSQL需通过ODBC 的透明网关完成。出于简单说明,ORACLE 安装在Windows 系统下。

第一步: 安装MYSQL ODBC 驱动

由于是ORACLE 访问MYSQL, 因此MYSQL ODBC 驱动 必须安装在ORACLE 所在的服务器上。可下载安装mysql-connector-odbc-*.msi 安装,或者在安装mysql 社区版时选择安装connector-odbc。 需要说明的是,并不是每次都能安装成功connector-odbc

 

第二步: 创建MYSQL ODBC 数据源

在管理工具-> 数据源(ODBC->系统DSN 中添加MYSQLODBC 数据源。假设取名“KEYMYSQLA。可以在配置过程中测试连接,确保能够连通。

 

第三步: 创建init<网关>.ora

$ORACLE_HOME\HS\ADMIN\ 目录下有一个initdg4odbc.ini 文件。 在当前目录下,复制一命名规则为 init<网关>.ora的文件,例如initmysql.ora , 这里“mysqlB就是网关的sid.。 该文件中两行可以如下配置:

HS_FDS_CONNECT_INFO = keymysql  

HS_FDS_TRACE_LEVEL = NO

其中HS_FDS_CONNECT_INFO 的值就是第二步配置的ODBC数据源 “KEYMYSQLA 中的值。

 

第四步: 将网关添加监听中

在数据库服务器上修改$ORACLE_HOME\network|admin\ 下的listener.ora 文件,在SID_LIST_LISTENER 添加标红这段:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = CLRExtProc)

      (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1)

      (PROGRAM = extproc)

      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")

    )

    (SID_DESC =

      (SID_NAME = mysql)

      (ORACLE_HOME = e:\app\Administrator\product\11.2.0\dbhome_1)

      (PROGRAM = dg4odbc)

    )

  )

 

 

这里 需要说明的是,一是,SID_NAME 的值就是第三步网关“mysqlB的值,和第二步ODBC 数据源的值无关, 二是ORACLE_HOME 是你数据库中实际的$ORACLE_HOME值不要直接拷贝忘了改。

 

第五步:配置别名

在数据库服务器上修改$ORACLE_HOME\network|admin\ 下的tnsname.ora 文件,添加数据库别名:

MYSQLSERVER =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = mysql)

    )

    (HS = OK)

  )

其中“MYSQLSERVERC 是别名, SERVICE_NAME 的“mysql”对应的是第三和第四步中的SID

 

第六步: 创建数据库连接

执行以下SQL:

create database link mysqllk

  connect to "root"

identified by "root" using ‘MYSQLSERVER’;

其中“mysqllk”是database link ,

 

第七步: 测试

假设MYSQL中有个表t, ORACLE 中执行:

Select  * from t@ mysqllk

 

如果返回值正确,则表示配置过程。

 

 

PS:  由于MYSQL UTF8 字符集,ORACLE 数据库是US7ASCII 字符集,读取MYSQL中的中文会返回乱码,网上一些,例如在 init<网关>.ora 中配置HS_LANGUAGEHS_NLS_NCHAR的方法还不奏效,还需下一步排除。

请使用浏览器的分享功能分享到微信等