实战Linux环境配置DBD::Oracle模块

数据库 Oracle 数据库运维
PERL语言一直是90年代开发CGI程序的首选语言。因为那个时代Python/Ruby/PHP这类相对“高级”的脚本语言尚属幼年或着根本没有出生;而用C/C++来开发CGI,灵活性则又太差。PERL以其快速的开发周期,灵活的语法定义和能充分扩展模块机制,在那个Web应用才刚刚开始的火热年代,领尽了风骚。

Web开发,不外乎两点,一为版面,一为内容。
论版面,PERL的CGI模块功能强大,又简单易用,短短数行,便能动态生成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进行相应的操作,

【编辑推荐】

  1. 详解Oracle几种性能调优方法
  2. Oracle DBA职责及日常工作分析
  3. Oracle数据块原理深入剖析
责任编辑:彭凡 来源: itpub
相关推荐

2022-11-29 17:03:00

数据库Oracle

2010-10-29 11:30:01

Oracle用户信息

2011-08-01 12:50:18

LinuxOracle10GOracle11G

2018-11-30 12:11:11

Oracle存储配置

2011-08-15 23:14:34

Oraclerman环境配置

2022-11-30 18:38:50

2021-11-29 10:25:16

Linux环境变量命令

2010-04-01 15:51:17

Oracle ebs

2010-01-07 16:50:54

Linux配置PHP环

2009-06-08 17:50:00

javalinuxjsp

2010-02-25 13:58:22

Linux JDK

2011-03-02 08:57:51

2020-11-05 10:40:07

Spring Boot多模块Java

2011-02-25 18:11:48

LinuxPureFTPd

2009-06-16 15:57:53

Java环境变量

2022-09-19 07:08:28

dockerRedisCentos8

2010-04-26 15:22:44

Oracle ebs

2010-04-01 12:56:08

Oracle ebs

2013-01-25 14:08:32

S40Series 40

2010-09-13 17:45:37

点赞
收藏

51CTO技术栈公众号