|
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驱动的路径;
SERVER、PORT、DATABASE分别写mysql数据库的IP,端口和数据库名;
执行命令:# isql [ODBC配置的数据库名],并执行query可以验证是否配置成功。可同时配置多个数据库。内容详情如下图:

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参数的值,不然面步骤会出错。
文件截图如下:

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)
)
)
如图:

4.2修改$TNS_ADMIN/tnsnames.ora文件,增加内容如下
数据库实例名=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=域名或IP)(PORT=1552))
(CONNECT_DATA=
(SID=数据库实例名)
)
(HS=OK)
)
如图:

4.3重启监听
sh addlnctl.sh start 数据库实例名

脚本路径:/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错误,如图:

解决方法:修改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的错误,详情如图:

解决办法:修改用户密码,并重新创建DBLINK。
5.3字符集乱码
解决办法,通过转码
select "id",CONVERT("category", 'WE8ISO8859P1', 'UTF8' )"category","f_id","type","status","sort","level","pid" fromtable_name@TEST_DB_LINK
如下图:转码前后对比

研发八部
李勇
|