Linux下配置ORACLE-MYSQL 数据库异构

今天想在Linux配置下oracle到mysql的异构实现,做笔记以记之。

首先安装odbc(引用自网络):

方法一:
下载最新的unixODBC源码包(http://www.unixodbc.org/unixODBC-2.2.1.tar.gz)放到/usr/local下,然后运行下述命令:

tar zxvf unixODBC-2.2.1.tar.gz
cd unixODBC-2.2.1
./configure --prefix=/usr/local/unixODBC-2.2.1 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
make
make install

安装成功后,unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。

方法二:
下载rpm包进行安装,我们这里以Red Hat 7.3为例:
unixODBC-2.2.0-5 RPM for i386(安装包及源码包)
(ftp://speakeasy.rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/unixODBC-2.2.0-5.i386.rpm、ftp://ftp.rpmfind.net/linux/redhat/7.3/en/os/i386/SRPMS/unixODBC-2.2.0-5.src.rpm)
unixODBC-devel-2.2.0-5 RPM for i386
(ftp://speakeasy.rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/unixODBC-devel-2.2.0-5.i386.rpm)
直接将unixODBC-2.2.0-5.i386.rpm和unixODBC-devel-2.2.0-5.i386.rpm装入系统就可以了,命令如下:

rpm -ivh unixODBC-2.2.0-5.i386.rpm
rpm -ivh unixODBC-devel-2.2.0-5.i386.rpm

安装好以后,所需的各个部分与上面所列的位置相同。

三、 Linux/Unix下ODBC的配置:

运行ODBCConfig程序(在/usr/bin下),

和Windows下的ODBC设置窗口是不是很像?我想大家都能看懂吧。

第一步:安装数据库的ODBC驱动程序
Drivers这一栏中用来设置数据库的驱动程序,点击Add按钮,

   Name一栏填入数据库驱动的名称,Description是数据库驱动的描述,Driver是用来选择数据库驱动程序的,Setup是用来选择数据库驱动安装程序的,如果你是按照上述安装方法安装的,这些程序都放在/usr/lib下,下面是数据库驱动程序的列表:
数据库 数据库驱动程序 数据库驱动安装程序
TXT libodbctxt.so libodbctxtS.so
NNTP libnn.so libodbcnnS.so
MiniSQL libodbcmini.so libodbcminiS.so
PostgreSQL libodbcpsql.so libodbcpsqlS.so
MySQL (注释) libodbcmyS.so
Sybase/MS SQL (注释) libtdsS.so
Oracle (注释) liboraodbcS.so

注释:
MySQL、Sybase/MS SQL和Oracle的数据库驱动可以在下列网址找到:
MySQL          http://www.unixodbc.org/myodbc.html
Sybase/MS SQL      http://www.freetds.org
Oracle           http://www.easysoft.org

MySQL的驱动程序MyODBC-2.50.39-4 RPM for i386以及源码包:
ftp://speakeasy.rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/MyODBC-2.50.39-4.i386.rpm
ftp://ftp.redhat.com/pub/redhat/linux/7.3/en/os/i386/SRPMS/MyODBC-2.50.39-4.src.rpm

选择好驱动程序之后,点击"√"保存退出。

第二步:设置DSN
DSN分为User DSN、System DSN和File DSN三种,我们以System DSN为例。选中System DSN一栏以后,点击Add…

    列表中会列出你已经安装好的数据库驱动程序,我这里只装了MySQL和PostgreSQL,然后选择你所要使用的驱动程序,然后点击OK

    我这里使用的是MySQL的数据库驱动,不同的数据库,这个窗口的内容会有所不同。Name是数据源的名称,Description是描述,Server可以选择服务器,如果本机启动了MySQL就可以选择localhost,如果Port和Socket有特殊要求,再根据实际情况进行修改,Database是用来选择数据库的,下拉菜单不一定包含所有的数据库,你可以把自己已经创建好的数据库名称填写在这里。都配置好之后,点击"√"保存退出。

    这样Linux/Unix下的ODBC数据源就已经设置好了,大家还可以在ODBCConfig程序的Status栏中查看ODBC的使用情况,在Advanced栏中设置是否做日志或者启动连接池,在About栏中,有一个Linux/Unix ODBC的示意图,在Credits按钮中可以看到所有开发者的名字的列表。 ODBCConfig程序中所有有关数据库驱动程序的信息被放在odbcinst.ini(在/etc下)文件中,有关DSN的信息被放在odbc.ini(在/etc下)文件中,大家有兴趣的话,可以自己去观察一下。

第三步:使用DataManager程序浏览数据库
运行DataManager程序之后就可以查看Drivers、System DSN和User DSN这几项内容,,在浏览数据库的时候,可以在右面的SQL栏中输入SQL语句,然后点击人形按钮就可以运行SQL语句,运行结果会在Results一栏中显示出来,

第四步:使用isql程序查看数据库
unixODBC还提供了命令台下查看数据库的程序,这就是isql,用法如下:

isql DSN [UID [PWD]] [options]

DSN 数据源名称
UID 用户ID
PWD 用户密码

Options:
-b 批处理,没有提示符的模式
-dx 设置列之间的分隔符为x
-w 将查询结果输出为HTML格式
-c 第一行输出列名
--version 输出isql的版本号

以上工作完成后我们就可以配置oracle的ODBC异构了,

具体操作步骤:

 cd $ORACLE_HOME/hs/admin
[oracle@localhost admin]$ cp inithsodbc.ora initmysqls.ora
[oracle@localhost admin]$ more initmysqls.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.
 
#
# HS init parameters
#
HS_FDS_CONNECT_INFO =
HS_FDS_TRACE_LEVEL =
HS_FDS_SHAREABLE_NAME =
 
#
# ODBC specific environment variables
#
set DBCINI=
 
 
#
# Environment variables required for the non-Oracle system
#
set =
[oracle@localhost admin]$
[oracle@localhost admin]$
[oracle@localhost admin]$
[oracle@localhost admin]$ vi initmysqls.ora
[oracle@localhost admin]$ more initmysqls.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.
 
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = mysqls
HS_FDS_TRACE_LEVEL = 0
HS_FDS_SHAREABLE_NAME = /usr/lib/libodbc.so

HS_FDS_TRACE_FILE_NAME = /tmp/hsodbcsql.trc

 
#
# ODBC specific environment variables
#
#set DBCINI=
 
 
#
# Environment variables required for the non-Oracle system
#
#set =
[oracle@localhost admin]$
[oracle@localhost admin]$ cd /u01/app/oracle/network/admin/
[oracle@localhost admin]$ more listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/network/admin/listener.ora
# Generated by Oracle configuration tools.
 
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle)
      (PROGRAM = extproc)
    )
    (SID_DESC =
        (SID_NAME = crmdb)
        (ORACLE_HOME = /u01/app/oracle)
        (PROGRAM = extproc)
    )
    (SID_DESC =
        (SID_NAME = mysqls)
        (ORACLE_HOME = /u01/app/oracle)
        (PROGRAM = hsodbc)
    )

  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
  )
 
[oracle@localhost admin]$ ]

[oracle@localhost admin]$ tail -n 10 tnsnames.ora
mysqls=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
    (CONNECT_DATA =
        (SID = mysqls)
    )
    (HS = ok)
  )

[oracle@localhost admin]$  sqlplus scott/tiger

SQL> create public database link mysqls connect to "root" identified by "qinqiang" using  'mysqls';

select * from dual@mysqls
                   *
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][C077] Could not find symbol 'SQLAllocConnect'
in dynamic library
[C079] Failed to load dynamic library
'/tmp/mysql-connector-odbc-5.1.6-linux-glibc2.3-x86-32bit/lib/libmyodbc5-5.1.6.s
o'
ORA-02063: preceding 3 lines from MYSQLS

 

注:这个问题是因为前面的HS_FDS_SHAREABLE_NAME这个参数就要设置成/use/lib/libodbc.so这个动态库。修改完后再重启监听就OK了

SQL> select * from dual@mysqls;
 
D
-
X

 

 

转载请注明出处,谢谢!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10130206/viewspace-628294/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10130206/viewspace-628294/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值