拉手网_Oracle连接Mysql透明网关配置

Oracle连接Mysql透明网关配置

1.安装ODBC驱动

1.1下载并安装mysql-connector-odbc-5.1.10-1.rhel5.x86_64.rpm

1.2安装命令:rpm–ivh 

 

2.配置ODBC数据源

2.1修改/etc/odbc.ini文件,内容如下:

[数据库名]

Driver = /usr/lib64/libmyodbc5.so

Server =IP地址

Port = 端口号

database =数据库名

OPTION=3

User = user_name

Password = passwd

trace=0

注意Driver:填写mysql connector驱动的路径;

SERVERPORTDATABASE分别写mysql数据库的IP,端口和数据库名;

执行命令:# isql [ODBC配置的数据库名],并执行query可以验证是否配置成功。可同时配置多个数据库。内容详情如下图:

 拉手网_Oracle连接Mysql透明网关配置_第1张图片

3.配置Heterogeneous Services(异构服务)

3.1增加文件$ORACLE_HOME/hs/admin/init【数据库名】.ora,内容如下:

HS_FDS_CONNECT_INFO = 数据库名

HS_FDS_TRACE_LEVEL = off

HS_FDS_SHAREABLE_NAME = /usr/lib64/libmyodbc5.so

HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P1

HS_FDS_SQLLEN_INTERPRETATION=32

set ODBCINI=/etc/odbc.ini

set LD_LIBRARY_PATH=/usr/lib64/

注意:HS_FDS_CONNECT_INFO填写上一步配置的ODBC数据源,必须指定HS_LANGUAGE参数的值,不然面步骤会出错。

文件截图如下:

 拉手网_Oracle连接Mysql透明网关配置_第2张图片

4.配置透明网关监听

4.1修改$TNS_ADMIN/listener.ora, 增加以下内容:

数据库实例名 =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 主机域名或IP)(PORT = 1552))

    )

  )

SID_LIST_[数据库实例名] =

  (SID_LIST =

    (SID_DESC =

      (ORACLE_HOME =/data/erpsit/db/tech_st/11.2.0)

      (SID_NAME =数据库实例名)     

       (PROGRAM =dg4odbc)

          )

  )

如图:

 拉手网_Oracle连接Mysql透明网关配置_第3张图片

4.2修改$TNS_ADMIN/tnsnames.ora文件,增加内容如下

数据库实例名=

        (DESCRIPTION=

                (ADDRESS=(PROTOCOL=tcp)(HOST=域名或IP)(PORT=1552))

            (CONNECT_DATA=

                (SID=数据库实例名)

            )

            (HS=OK)

          )

如图:

 拉手网_Oracle连接Mysql透明网关配置_第4张图片

4.3重启监听

sh addlnctl.sh start 数据库实例名

 拉手网_Oracle连接Mysql透明网关配置_第5张图片

脚本路径:/data/erpsit/db/tech_st/11.2.0/appsutil/scripts/erpsit_hrdb2

4.4创建数据块连接

CREATE PUBLIC DATABASE LINK  TEST_DB_LINK CONNECT TO user_name IDENTIFIED BY passwd " USING

tnsname;

4.5测试数据库连接

select * from “数据库表”@TEST_DB_LINK;

5.已解决问题

5.1Tnsname配置错误

      测试dblink,出现ORA-28546错误,如图:

 拉手网_Oracle连接Mysql透明网关配置_第6张图片

解决方法:修改tnsname.ora

数据库实例名=

        (DESCRIPTION=

                (ADDRESS=(PROTOCOL=tcp)(HOST=主机域名或IP)(PORT=1552))

            (CONNECT_DATA=

                (SID=数据库实例名)

                        (HS=OK)

)

          )

改为

数据库实例名=

        (DESCRIPTION=

                (ADDRESS=(PROTOCOL=tcp)(HOST=主机域名或IP)(PORT=1552))

            (CONNECT_DATA=

                (SID=数据库实例名)

            )

            (HS=OK)

          )

5.2密码设置不对

       提示ORA-28511的错误,详情如图:

 拉手网_Oracle连接Mysql透明网关配置_第7张图片

解决办法:修改用户密码,并重新创建DBLINK

5.3字符集乱码

解决办法,通过转码

select "id",CONVERT("category", 'WE8ISO8859P1', 'UTF8' )"category","f_id","type","status","sort","level","pid" fromtable_name@TEST_DB_LINK

如下图:转码前后对比

 拉手网_Oracle连接Mysql透明网关配置_第8张图片

研发八部

李勇


你可能感兴趣的:(ERP)