手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

64位Linux系统Oracle 10g异构MySQL查询搭建过程

[日期:2012-07-14] 来源:Linux社区  作者:liuyunfengheda [字体: ]

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

(1)vi /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

              (2)less /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位系统使用的isql是64位的版本,因此在测试的过程中,如要测试isql的话,需要更改为64位的包。而使用odbc和MySQL连接时则是使用的是32位的libmyodbc3.so,因此需要在测试isql可用后恢复原设置。

五、编辑oracle的配置文件:

(1)编辑oracle的hs配置文件$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进行解决。

linux
相关资讯       ORACLE 10G 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款