Linux環境配置DBD::Oracle,幫助Perl連線Oracle資料庫

easycruel發表於2009-04-02
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,主頁在
接下來把如何安裝DBD::Oracle的步驟羅列如下,供大家參考。

DBD::Oracle模組既可安裝在有Oracle Database的主機上,也可以裝在沒有Oracle Database的主機上,後者需要安裝Oracle Instant Client進行遠端資料庫連線,本文只關注第二種配置,即DBD::Oracle透過Instant Client實現資料庫訪問。

第一步: 下載Oracle Instant Client

Oracle Instant Client的主頁在  ; 秉承了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的下載地址是 ,下載後隨便放到某一目錄,這裡我放到/tmp,然後解壓,如下:

shawn@shawn-laptop:/tmp$ tar zxf DBD-Oracle-1.22.tar.gz
shawn@shawn-laptop:/tmp$ cd 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$export ORACLE_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進行相應的操作,幸運的是,DBD::Oracle的現有維護者John Scoles寫了一篇極其精彩的文件,名叫 《》, 指導使用者如何使用此模組,有心的讀者千萬不要錯過!
by   @ Apr 2 2009

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16168490/viewspace-584327/,如需轉載,請註明出處,否則將追究法律責任。

相關文章