linux64位系统Oracle10g异构mysql查询搭建过程

 linux64位系统Oracle10g异构mysql查询搭建过程

一、系统环境介绍

Oracle数据库服务器操作系统:RHEL4.8 64位,IP192.168.12.242

Oracle数据库版本:oracle 10g

Mysql数据库服务器操作系统:RHEL 4.8 32位,IP192.168.5.186

Mysql数据库版本:mysql-5.1.47

二、安装所需软件包:

MySQL-client-5.1.50-1.glibc23.i386.rpm

http://gd.tuwien.ac.at/db/mysql/Downloads/MySQL-5.1/MySQL-client-5.1.50-1.glibc23.i386.rpm

 

MySQL-client-5.1.50-1.glibc23.x86_64.rpm

http://gd.tuwien.ac.at/db/mysql/Downloads/MySQL-5.1/MySQL-client-5.1.50-1.glibc23.x86_64.rpm

 

mysql-connector-odbc-3.51.27-0.i386.rpm

http://mysql.borsen.dk/Downloads/Connector-ODBC/3.51/mysql-connector-odbc-3.51.27-0.i386.rpm

 

mysql-connector-odbc-3.51.27-0.x86_64.rpm

http://mysql.borsen.dk/Downloads/Connector-ODBC/3.51/mysql-connector-odbc-3.51.27-0.x86_64.rpm

 

三、安装过程

1、Oracle数据库服务器上安装mysql客户端(如果已经安装过的话,可以跳过)

rpm  -ivh MySQL-client-5.1.50-1.glibc23.i386.rpm

             rpm  -ivh MySQL-client-5.1.50-1.glibc23.x86_64.rpm

如果安装的过程中遇到file /usr/bin/msql2mysql from install of MySQL-client-5.1.50-1.glibc23 conflicts with file from package mysql-4.1.22-2.el4这样的报冲突的情况,需要卸载mysql-4.1.22-2.el4,之后在重新安装。不过笔者在安装的过程中还遇到了:

[root@myora ~]# rpm -e mysql-4.1.22-2.el4

error: Failed dependencies:

        libmysqlclient.so.14 is needed by (installed) cyrus-sasl-sql-2.1.19-14.i386

        libmysqlclient.so.14(libmysqlclient_14) is needed by (installed) cyrus-sasl-sql-2.1.19-14.i386

这样的错误,处理的方法当然是卸载cyrus-sasl-sql-2.1.19-14.i386,之后在卸载mysql-4.1.22-2.el4

测试是不是可以连接mysql数据库:

mysql -h 192.168.5.186 -uuser -ppassword

2、安装mysql-connector-odbc

rpm  -ivh mysql-connector-odbc-3.51.27-0.i386.rpm

rpm         -ivh mysql-connector-odbc-3.51.27-0.x86_64.rpm

其实对于上面的包,只需要安装32位的包就可以了,但是为了稳妥起见,笔者还是将64位的包也安装了上。

到这里所有的软件已经安装完毕,是不是很简单呢?但是笔者在之前的测试过程中走了很多的弯路,比如安装了mysql-connector-odbc-5.1.7-0.x86_64.rpmmysql-connector-odbc-5.1.7-0.i386.rpm。造成一些的问题,这中间的区区折折真的是费了很多神。其实真正回来,安装了自己所需要的东西才发现,其实自己离真正的目的很近,有时候只需要退一步想想。

四、  配置Oracle服务器的/etc/odbc.ini文件,测试ODBC工作

1vi /etc/odbc.ini,填入如下内容:

[mysqlora]

Description = MySQL test database

Driver = mysql

SERVER = 192.168.5.186

USER =user

PASSWORD = password

PORT = 3306

DATABASE = test

Option          = 3

charset  = gbk

              2less /etc/odbcinst.ini,为如下内容:

[mysql]

Description             = MySQL driver.

Socket          =

DRIVER          = /usr/lib/libmyodbc3.so

UsageCount              = 1

 

[MySQL ODBC 3.51 Driver]

DRIVER          = /usr/lib64/libmyodbc3.so

UsageCount              = 1

为了测试isql,我们将文件中的msyql相关部分DRIVER          = /usr/lib/libmyodbc3.so改为DRIVER          = /usr/lib64/libmyodbc3.so

 在编辑好上面的文件之后,我们使用isql进行测试,命令为:

isql –v mysqlora如果显示:

Connected!                          

                                  

 sql-statement                      

 help [tablename]                   

 quit

则说明isql是可以成功连接的。

在测试完毕之后我们再改回来,不然会出现下面注的内容2中的问题。这主要是以为64位系统使用的isql64位的版本,因此在测试的过程中,如要测试isql的话,需要更改为64位的包。而使用odbcMySQL连接时则是使用的是32位的libmyodbc3.so,因此需要在测试isql可用后恢复原设置。

五、编辑oracle的配置文件:

1)编辑oraclehs配置文件$ORACLE_HOME/hs/admin/initmysqlora.ora

vi $ORACLE_HOME/hs/admin/initmysqlora.ora,输入:

HS_FDS_CONNECT_INFO = mysqlora

HS_FDS_TRACE_LEVEL = debug #该参数需要在测试跟进完毕后,置为Off,不然会影响性能。

HS_FDS_TRACE_FILE_NAME = mysqlora.trc

HS_FDS_SHAREABLE_NAME = /usr/lib/libodbc.so

set ODBCINI = /etc/odbc.ini

set LD_LIBRARY_PATH = /usr/lib:/usr/lib64:$LD_LIBRARY_PATH

2)编辑Oracle所在计算机的Oracle listener的配置文件,建立一个模拟Oracle Listener的监听方式,为将来建立dblink做准备

vi $ORACLE_HOME/network/admin/listener.ora 修改为

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /usr/oracle/product/10.2.0)

      (PROGRAM = extproc)

    )

     (SID_DESC =

                  (SID_NAME = mysqlora)

                  (ORACLE_HOME = /usr/oracle/product/10.2.0)

                  (PROGRAM = hsodbc)

        (ENVS=LD_LIBRARY_PATH=/usr/oracle/product/10.2.0/lib32:/usr/lib64:/usr/lib:/usr/oracle/product/10.2.0/lib)    

        )

  )

3)使监听器生效。

su – oracle

lsnrctl reload

       4)编辑Oracle所在计算机中的tnsnames.ora文件,便于建立dblink。注意,此tnsnames的配置可以支持tnsping,但是不能支持sqlplus登录,只用于dblink

 vi $ORACLE_HOME /network/admin/tnsnames.ora,加入如下内容:

mysqlora =

(DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      ( SID= mysqlora))

      (HS=OK)

)

       5)在Oracle Database建立dblink

                     sqlplus / as sysdba

mysql> create public database link mysqlora

connect to "ora" identified by "ora"

using 'mysqlora';

要注意用户名和密码处需要用双引号,否则Oracle所传输的都是大写字母,可能无法登录进入MySQL

       6)测试mysql表的查询。

              sqlplus中输入:

select * from dual@mysqlora;

 

 

注:

1)如果搭建过程中,遇到

ERROR at line 1:
ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from MYODBC3

这样的类似错误,请检查你的listener.ora,以确认无误,之后在进行尝试。

2)笔者在搭建过程中,发现

ERROR at line 1:

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:

[Generic Connectivity Using ODBC]DRV_InitTdp: errors.h (2112): ;

[unixODBC][Driver Manager]Can't open lib '/usr/lib64/libmyodbc3.so' :

/usr/lib64/libmyodbc3.so: cannot open shared object file: No such file or

directory (SQL State: 01000; SQL Code: 0)

ORA-02063: preceding 2 lines from MYSQLORA

/etc/odbcinst.ini中的Driver = /usr/lib64/libmyodbc3.so改为Driver = /usr/lib/libmyodbc3.so或者是重装32位的mysql-connector-odbc-3.51.27-0.i386.rpm进行解决。

 

你可能感兴趣的:(linux64位系统Oracle10g异构mysql查询搭建过程)