LinuxでperlからOracle DBへ接続する際のメモ
自分用メモ。
前提条件として、CentOS5.5 64bitでperl5.8.8が既にインストール済み。
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等でそもそも接続できるかを確認。