> 이번에 리눅스 아파치 웹서버에서 perl을 이용하여 프로그램을 하려고 하는데 DBD/DBI가 설치가 되지 않군요
인용합니다.
...
라. Perl의 DBI/DBD module 이용
그보다 더 편하고, 또 기존에 pgSQL이나 mySQL로 사용하던 code를 쉽게 Oracle로
적용할 수 있는 것이 DBI module을 이용한 방법이다.(단, perl로 작성하신 분만 해당. ^^;)
일단, CPAN site에서 가서 DBI와 DBD module을 가져오자. (필자가 사용한 version은
DBD-Oracle-0.54와, DBI-1.02 이다)
DBI를 compile하고, DBD를 compile한다.
(순서에 주의. 또, perl 5.004이후 version이 필요하다.
Alzza 5.1을 쓴다면, perl 5.004_04이다.)
su - -> root로 login, perl library directory(/usr/lib/perl5) permission때문임.
local에 설치한 경우는 불필요.
. /usr/local/bin/oraenv
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
mkdir src
cd src
tar zxf ../DBI-1.02.tar.gz
tar zxf ../DBD-Oracle-0.54.tar.gz
cd DBI-1.02/ -> DBI를 먼저 설치해야 한다.
perl Makefile.PL -> pRPC를 요구하는 데, 이는 proxy server를 사용할 경우 필요하다.
make
make test
make install
cp Driver.xst /usr/lib/perl5/site_perl/i386-linux/auto/DBI/ -> 왜 필요한지 모름 ?.?
cd ../DBD-Oracle-0.54/ -> DBD를 설치한다. 다른 DBMS용 DBD도 이런방법으로 설치한다.
perl Makefile.PL
make
make test
make install
이제 perl에서 oracle을 접속하기 위한 준비는 다 되었다.
앞의 Pro*C에서 한 것과 똑같은 일을 하는 perl script를 짜보자.
< 첨부 : test_dbi.pl >
#!/usr/bin/perl
use DBI;
# ORACLE에 접속한다.
my $userid = 'scott';
my $passwd = 'tiger';
my $dbh = DBI->connect('', $userid, $passwd, 'Oracle');
# 여기에 MySQL, pgSQL을 넣으면,
# 자연스럽게 MySQL이나 pgSQL용
# perl 프로그램이 된다!
unless($dbh) {
warn "Unable to connect to Oracle ($DBI::errstr)\n";
exit 0;
}
# Cursor를 선언한다.
$query =
"select TNAME, TABTYPE
from TAB";
my $sth = $dbh->prepare($query);
unless($sth) {
$dbh->disconnect;
die "ERROR in prepare!\n";
}
# Cursor를 open한다.
if ($sth->execute == 0) {
$sth->finish;
$dbh->disconnect;
die "ERROR in execute!\n";
}
# Cursor로부터 한줄씩 읽어온다.
while(($name,$type) = $sth->fetchrow){
print "$name $type\n";
}
$sth->finish;
$dbh->disconnect;
< 첨부끝 : test_dbi.pl >
tolkien입니다.
|