Oracle透明网关连接MySQL
连接器下载:http://cdn.mysql.com/Downloads/Connector-ODBC/5.2/mysql-connector-odbc-5.2.6-1.el6.i686.rpm
1.配置unixODBC
/etc/odbc.ini
[mysql]
Driver =/usr/lib/libmyodbc5w.so
Server =192.168.1.50
User =mysql
Password=mysql
Port =3306
database=edmond
Charset =GBK
使用isql测试
![](//img.blog.itpub.net/blog/attachment/201403/4/29254281_1393943867i4zY.png?x-oss-process=style/bb)
2.配置HS
编辑$ORACLE_HOME/hs/admin/initmysql.ora
其中mysql是sid
HS_FDS_CONNECT_INFO = mysql
HS_FDS_TRACE_LEVEL = debug
HS_FDS_SHAREABLE_NAME = libodbc.so
HS_LANGUAGE=AMERICAN_AMERICA.ZHS16GBK
set ODBCINI=/etc/odbc.ini
语言这行不能缺少,否则报错。
3.配置tns
mysql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.50)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mysql)
)
(HS = OK)
)
4.配置监听器
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = mysql)
(ORACLE_HOME = /home/lihuilin/dev/app/lihuilin/product/11.2.0/dbhome_1)
(SID_NAME = mysql)
(PROGRAM = dg4odbc)
(ENVS="LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib")
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = lihuilin.home)(PORT = 1521))
)
ADR_BASE_LISTENER = /home/lihuilin/dev/app/lihuilin
5.创建db link
![](//img.blog.itpub.net/blog/attachment/201403/4/29254281_1393944371RaJc.png?x-oss-process=style/bb)
在MySQL创建测试表
create table t(a varchar(20) primary key) engine=innodb,charset =gbk;
insert into t values('透明');
commit;
查看结果:
![](//img.blog.itpub.net/blog/attachment/201403/4/29254281_1393944408l1cs.png?x-oss-process=style/bb)
如果前台报错如下所示
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[
![](//img.blog.itpub.net/blog/attachment/201403/4/29254281_1393944916NAr9.png?x-oss-process=style/bb)
$ORACLE_HOME/hs/log的后台日志报错如下:
hgopoer, line 233: got native error 0 and sqlstate I; message follows...
[
Exiting hgopoer, rc=0 at 2014/03/04-21:40:18
hgocont, line 2752: calling SqlDriverConnect got sqlstate I
Exiting hgocont, rc=28500 at 2014/03/04-21:40:18 with error ptr FILE:hgocont.c LINE:2772 FUNCTION:hgocont() ID:Something other than invalid authorization
Exiting hgolgon, rc=28500 at 2014/03/04-21:40:18 with error ptr FILE:hgolgon.c LINE:781 FUNCTION:hgolgon() ID:Calling hgocont
Entered hgoexit at 2014/03/04-21:40:18
有两个可能
1.HS_LANGUAGE没有配置
2.HS_LANGUAGE和MySQL的字符集不匹配
参考:
http://blog.itpub.net/21601207/viewspace-709366
https://community.oracle.com/thread/1058928?tstart=69&messageID=4227188
连接器下载:http://cdn.mysql.com/Downloads/Connector-ODBC/5.2/mysql-connector-odbc-5.2.6-1.el6.i686.rpm
1.配置unixODBC
/etc/odbc.ini
[mysql]
Driver =/usr/lib/libmyodbc5w.so
Server =192.168.1.50
User =mysql
Password=mysql
Port =3306
database=edmond
Charset =GBK
使用isql测试
![](http://img.blog.itpub.net/blog/attachment/201403/4/29254281_1393943867i4zY.png?x-oss-process=style/bb)
2.配置HS
编辑$ORACLE_HOME/hs/admin/initmysql.ora
其中mysql是sid
HS_FDS_CONNECT_INFO = mysql
HS_FDS_TRACE_LEVEL = debug
HS_FDS_SHAREABLE_NAME = libodbc.so
HS_LANGUAGE=AMERICAN_AMERICA.ZHS16GBK
set ODBCINI=/etc/odbc.ini
语言这行不能缺少,否则报错。
3.配置tns
mysql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.50)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mysql)
)
(HS = OK)
)
4.配置监听器
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = mysql)
(ORACLE_HOME = /home/lihuilin/dev/app/lihuilin/product/11.2.0/dbhome_1)
(SID_NAME = mysql)
(PROGRAM = dg4odbc)
(ENVS="LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib")
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = lihuilin.home)(PORT = 1521))
)
ADR_BASE_LISTENER = /home/lihuilin/dev/app/lihuilin
5.创建db link
![](http://img.blog.itpub.net/blog/attachment/201403/4/29254281_1393944371RaJc.png?x-oss-process=style/bb)
在MySQL创建测试表
create table t(a varchar(20) primary key) engine=innodb,charset =gbk;
insert into t values('透明');
commit;
查看结果:
![](http://img.blog.itpub.net/blog/attachment/201403/4/29254281_1393944408l1cs.png?x-oss-process=style/bb)
如果前台报错如下所示
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[
![](http://img.blog.itpub.net/blog/attachment/201403/4/29254281_1393944916NAr9.png?x-oss-process=style/bb)
$ORACLE_HOME/hs/log的后台日志报错如下:
hgopoer, line 233: got native error 0 and sqlstate I; message follows...
[
Exiting hgopoer, rc=0 at 2014/03/04-21:40:18
hgocont, line 2752: calling SqlDriverConnect got sqlstate I
Exiting hgocont, rc=28500 at 2014/03/04-21:40:18 with error ptr FILE:hgocont.c LINE:2772 FUNCTION:hgocont() ID:Something other than invalid authorization
Exiting hgolgon, rc=28500 at 2014/03/04-21:40:18 with error ptr FILE:hgolgon.c LINE:781 FUNCTION:hgolgon() ID:Calling hgocont
Entered hgoexit at 2014/03/04-21:40:18
有两个可能
1.HS_LANGUAGE没有配置
2.HS_LANGUAGE和MySQL的字符集不匹配
参考:
http://blog.itpub.net/21601207/viewspace-709366
https://community.oracle.com/thread/1058928?tstart=69&messageID=4227188
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-1101147/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29254281/viewspace-1101147/