oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

LinuxでperlからOracle DBへ接続する際のメモ


自分用メモ。
前提条件として、CentOS5.5 64bitでperl5.8.8が既にインストール済み。

  • まずOracleのサイトからRPMパッケージを落としてきてインストール。アカウントが必要になるので、面倒臭いですが作りましょう(´Д⊂

2010/1/21時点での最新パッケージで必要なのは以下のとおり。

oracle-instantclient11.2-basic-11.2.0.1.0-1
oracle-instantclient11.2-devel-11.2.0.1.0-1
oracle-instantclient11.2-sqlplus-11.2.0.1.0-1
oracle-instantclient11.2-odbc-11.2.0.1.0-1
PATH=$PATH:$HOME/bin
export ORACLE_BASE=/usr/lib/oracle/
export ORACLE_HOME=$ORACLE_BASE/11.2/client64
export ORACLE_SID=DB_NAME
export LD_LIBRARY_PATH=.:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=/usr/include/oracle/11.2/client64/
export NLS_LANG=Japanese_Japan.UTF8
export PATH=.:$ORACLE_HOME/bin:$PATH
  • 次にcpanmを設定。
wget http://xrl.us/cpanm --no-check-certificate
chmod u+x cpanm
mv ./cpanm /usr/bin/
  • cpanmでDBD::Oracleをインストール。
cpanm -v DBI
cpanm -v DBD::Oracle

多分、DBD::Oracleの時、make testで失敗するので
~/.cpanm/work/内のDBD-Oracle-1.27.tar.gzが解凍されたディレクトリに移動し

perl Makefile.PL
make

まで成功していれば

make install

でとりあえず動くはず。


以下はテストコード。そのままじゃ動かないので、IPとかは適宜変えてね。

#!/usr/bin/perl

use DBI;
use strict;

my $dbh = DBI->connect('dbi:Oracle:192.168.0.***:1521/DB_NAME','USER','PASS');

my $sth = $dbh->prepare("
    SELECT * from hogehoge;
" );

$sth -> execute();

while(my @ary = $sth->fetchrow){
    print "@ary\n"
}

$sth -> finish();
$dbh->disconnect();

これでSELECT文とかを実行して、ちゃんと結果が返ればOK。
駄目ならsqlplus等でそもそも接続できるかを確認。