环境:
源端
10.100.55.xx oracle
目标端:
10.100.40.xxx mysql
具体步骤:
--源端安装mysql-connector-odbc
[root@oracle tmp]# rpm -ivh mysql-connector-odbc-5.1.13-1.rhel5.x86_64.rpm
Preparing... ########################################### [100%]
1:mysql-connector-odbc ########################################### [100%]
Success: Usage count is 1
[root@oracle tmp]#
--目标端创建连接用户
grant select on test.* to oratest@'%' identified by 'ora123';
--源端配置 /etc/odbc.ini文件,添加如下内容
[mysqltest]
Driver = /usr/lib64/libmyodbc5.so
Server = 10.100.40.xxx
User = oratest
Password = ora123
Port = 3306
database = test
#mysqltest 为服务名,后面将会用到
#/usr/lib64/libmyodbc5.so 为odbc 驱动
#10.100.40.xxx 为要访问mysql 目标端所在IP
#oratest 登陆mysql 服务器用户名
#3306 为mysql 数据库端口
--在源端使用isql 命令进行测试
isql mysqltest
[root@oracle etc]# isql mysqltest
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> quit
能够连接上表示ODBC配置成功
--源端在$ORACLE_HOME/hs/admin目录下,配置initmysqltest.ora文件, initmysqltest.ora命名方式为init+服务名+.ora
vi initmysqltest.ora
# HS init parameters
HS_FDS_CONNECT_INFO=mysqltest
# Data source name in odbc.ini
HS_FDS_TRACE_LEVEL= 255
HS_FDS_SHAREABLE_NAME=/usr/lib64/libmyodbc5.so
HS_FDS_SUPPORT_STATISTICS=FALSE
HS_KEEP_REMOTE_COLUMN_SIZE=ALL
HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
HS_NLS_NCHAR=UCS2
HS_FDS_SQLLEN_INTERPRETATION=32
HS_IDLE_TIMEOUT = 1440
#
# ODBC env variables
set ODBCINI=/etc/odbc.ini
--源端新建监听
vi listener.ora
LISTENER_mysql =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle )(PORT = 1523))
)
SID_LIST_LISTENER_mysql =
(SID_DESC =
(SID_NAME = mysqltest)
(ORACLE_HOME = /oracle/ora11g/product/11.2.0/db_1)
(PROGRAM = dg4odbc)
(ENVS=LD_LIBRARY_PATH=/usr/lib64:/usr/lib:/oracle/ora11g/product/11.2.0/db_1/lib:/oracle/ora11g/product/11.2.0/db_1/odbc/lib)
)
--源端增加tns
vi tnsnames.ora
mysqltest =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1523))
)
(CONNECT_DATA =
(SID = mysqltest)
)
(HS = OK)
)
--源端oracle数据库中建立dblink
create database link to_mysql
connect to "oratest" identified by "ora123" using 'mysqltest';
--测试
select count(1) from t_test@to_mysql;
select * from dual@to_mysql;
如正常返回结果,则连通性正常。