perl DBD::oracle

perfychi發表於2013-01-26

一、安裝需要的包

在linux下透過perl指令碼直接訪問oracle,需安裝如下包:

perl-DBI ~timb/DBI-1.621/ 

perl-DBD:;Oracle ~pythian/DBD-Oracle-1.44/

如果是連線遠端資料庫還需要安裝oracle instance client, client/index-097480.html,選擇合適的版本,下載basic、sqlplus、sdk三個軟體,解壓即可

二、設定環境變數並建立TNSNAME檔案

在.bash_profile檔案裡設環境變數

ORACLE_HOME=/****/instantclient_10_2                #設定為剛才解壓的oracle instacne client 主目錄

TNS_ADMIN=$ORACLE_HOME/network/admin

LD_LIBRARY_PATH=$ORACLE_HOME

echo ORACLE_HOME TNS_ADMIN LD_LIBRARY

在TNS_ADMIN下建立tnsnames.ora,內容為你需要連線的資料庫的連線串

三、寫個perl指令碼測試

#!/usr/bin/perl

use DBI;
$sid="***";
$user="***";
$passwd="***";
$dbh = DBI->connect("dbi:Oracle:$sid","$user","$passwd") or die "can't connect to database ". DBI-errstr;
#連線資料庫
$sth=$dbh->prepare("select tablespace_name,status from dba_tablespaces");
$sth->execute;
#執行sql語句
while (@recs=$sth->fetchrow_array) {
print $recs[0].":".$recs[1]."\n";
}
$dbh->disconnect;

執行指令碼結果如下:

# perl ora_connect2.pl
SYSTEM:ONLINE
UNDOTBS:ONLINE
SYSAUX:ONLINE
TEMP:ONLINE
USERS:ONLINE
LISCODE:ONLINE
LIS:ONLINE
TS_LOGMNR:ONLINE
CALLERTBS:ONLINE
LISBASE:ONLINE
LISDATA:ONLINE
BJJH:ONLINE

四、一般出錯都是環境變數設定問題,要不就是SID解析問題,關於perl DBD:;ORACLE的詳細說明,可參考官方文件~pythian/DBD-Oracle-1.44/lib/DBD/Oracle.pm

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

相關文章