大龙的博客

常用链接

统计

最新评论

关于perl中DBD for Oracle的安装

本文是摘录:

http://www.bitscn.com/pdb/oracle/200904/160495.html

 

 

PERL对数据库的支持广而且全,几乎所有的主流数据库都有与之相应的PERL模块支持。为了开发可在不同数据库上移植的PERL应用,DBI(DataBase Interface)模块应运而生,使用这个模块,应用只需使用统一的接口便能操作不同的数据库,真正实现了可移植;当然,这个DBI也配备有相应的开关来支持不同数据库的各种特性,每一个数据库都能单独成文,本篇暂不涉及这此点。

    DBI只是个抽象层,要实现支持不同的数据库,则需要在DBI之下,编写针对不同数据库的驱动。对MySql来说,有DBD::Mysql, 而对Oracle来说,则是DBD::Oracle。其中的DBD这是DataBase Driver之简写。

    所以总的体系结构如下所示:

    应用(Application) -> DBI -> DBD -> DB

    要连接不同类型的数据库,就得在应用所在主机上配置安装DBI以及相对应的DBD模块,关于DBI的安装配置,偶遇此文,大家全可拿来参考,我就不重新造轮子,安装顺序是先装DBI,再装DBD::Oracle。
DBD::Oracle模块不是Oracle官方开发的,而是由Pythian Group这个很有名的DBA咨询公司组织专人开发,目前的最新版本是1.22,主页在http://www.pythian.com/news/dbd-oracle,读者可以到那里找到关于此模块的最新动态。
    接下来把如何安装DBD::Oracle的步骤罗列如下,供大家参考。

    DBD::Oracle模块既可安装在有Oracle Database的主机上,也可以装在没有Oracle Database的主机上,后者需要安装Oracle Instant Client进行远程数据库连接,本文只关注第二种配置,即DBD::Oracle通过Instant Client实现数据库访问。

    第一步: 下载Oracle Instant Client

    Oracle Instant Client的主页在http://www.oracle.com/technology/tech/oci/instantclient/index.html  ; 秉承了Oracle公司的一贯做法,同一软件按配置分成了不同的可下载包,让用户可以按照自己的需求,找到最合适的部分下载。要成功配置DBD::Oracle, 需要Basic,SQL*Plus,SDK这三个配置,读者需要把这三个包下载并放到同一目录,如下所示为我已经下载的三个包,版本是当前最新的11.1.0.7

    shawn@shawn-laptop:/tmp/InstantClient$ls
    instantclient-basic-linux32-11.1.0.7.zip
    instantclient-sdk-linux32-11.1.0.7.zip
    instantclient-sqlplus-linux32-11.1.0.7.zip

    使用unzip命令在当前目录解压这三个zip文件,会自动生成instantclient_11_1目录,这里面包含了以上三个包里面的所有文件,解压后的目录结构:

    shawn@shawn-laptop:/tmp/InstantClient$ls
    instantclient_11_1
    instantclient-basic-linux32-11.1.0.7.zip
    instantclient-sdk-linux32-11.1.0.7.zip
    instantclient-sqlplus-linux32-11.1.0.7.zip

    这时候这三个zip文件已经没用,可以删之,也可备份供以后重用。

    第二步:下载DBD::Oracle


    这个时候,我们可以使用PERL自带的CPAN进行自动安装,也可以手动下载此模块,编译安装,此文采用后者。
DBD::Oracle在search.cpan.org的下载地址是http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.22.tar.gz,下载后随便放到某一目录,这里我放到/tmp,然后解压,如下:

 

shawn@shawn-laptop:/tmp$tarzxf DBD-Oracle-1.22.tar.gz
DBD-Oracle-1.22
shawn@shawn-laptop:/tmp/DBD-Oracle-1.22$ls
Changes       Makefile.PL     oraperl.ph          README.login.txt
dbdimp.c      MANIFEST        Oraperl.pm          README.longs.txt
[..省略部分屏幕输出..]

 

    第三步:配置ORACLE_HOME环境变量

    如果安装了Oracle Database软件,这个ORACLE_HOME就是安装oracle时所设值。在只安装Instant Client的情形下,此值设为第一步中instantclient_11_1目录的绝对路径,如下:

    shawn@shawn-laptop:/tmp/DBD-Oracle-1.22$exportORACLE_HOME=/tmp/InstantClient/instantclient_11_1
shawn@shawn-laptop:/tmp/DBD-Oracle-1.22$echo $ORACLE_HOME
/tmp/InstantClient/instantclient_11_1

    第四步:编译安装DBD::Oracle模块


    首先是使用PERL的Makefile.PL来生成makefile

 

shawn@shawn-laptop:/tmp/DBD-Oracle-1.22$perl Makefile.PL
Using DBI 1.607 (for perl 5.008008 on i486-linux-gnu-thread-multi)
installed in /usr/local/lib/perl/5.8.8/auto/DBI/
Configuring DBD::Oracle for perl 5.008008 on linux (i486-linux-gnu-thread-multi)

Remember to actually *READ* the README file! Especially if you have any problems.

Installing on a linux, Ver#2.6
Using Oracle in /tmp/InstantClient/instantclient_11_1
DEFINE _SQLPLUS_RELEASE = "1101000700" (CHAR)
Oracle version 11.1.0.7 (11.1)
Looks like an Instant Client installation, okay
[..省略部分屏幕输出..]

 

    运行make

 

shawn@shawn-laptop:/tmp/DBD-Oracle-1.22$make
cp Oracle.pm blib/lib/DBD/Oracle.pm
cp oraperl.ph blib/lib/oraperl.ph
cp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.h
I/Driver.xst > Oracle.xsi
[..省略部分屏幕输出..]

    然后切换成root用户make install

shawn@shawn-laptop:/tmp/DBD-Oracle-1.22$su
Password:
root@shawn-laptop:/tmp/DBD-Oracle-1.22#make install
[..省略部分屏幕输出..]

    至此,DBD::Oracle配置安装完毕,用户可以使用此模块连接Oracle进行相应的操作

posted on 2011-11-15 02:53 大龙 阅读(787) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理