實戰Linux環境配置DBD:Oracle模組

來源:互聯網
上載者:User

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.gzDBD-Oracle-1.22shawn@shawn-laptop:/tmp/DBD-Oracle-1.22$lsChanges       Makefile.PL     oraperl.ph          README.login.txtdbdimp.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.PLUsing 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$makecp Oracle.pm blib/lib/DBD/Oracle.pmcp oraperl.ph blib/lib/oraperl.phcp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.hI/Driver.xst > Oracle.xsi[..省略部分螢幕輸出..]

然後切換成root使用者make install

shawn@shawn-laptop:/tmp/DBD-Oracle-1.22$suPassword:root@shawn-laptop:/tmp/DBD-Oracle-1.22#make install[..省略部分螢幕輸出..]

至此,DBD::Oracle配置安裝完畢,使用者可以使用此模組串連Oracle進行相應的操作,

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.