DBD::Oracle

DBD::Oracleを使用して、Oracleからデータを取る。


リスト:test_dbd_oracle.pl

#!/usr/bin/env perl

use DBD::Oracle;

$ENV{ORACLE_HOME} = "/u01/app/oracle/product/11.2.0/xe";

$driver = 'Oracle';
$host = 'localhost';
$sid = 'xe';

$dbh = DBI->connect("dbi:$driver:host=$host;sid=$sid","hr","*****");
$sth = $dbh->prepare("select * from jobs");
$sth->execute;
while(@row = $sth->fetchrow){
  print "@row\n";
}


実行結果

$ ./test_dbd_oracle.pl 
AD_PRES President 20080 40000
AD_VP Administration Vice President 15000 30000
AD_ASST Administration Assistant 3000 6000
FI_MGR Finance Manager 8200 16000
FI_ACCOUNT Accountant 4200 9000
AC_MGR Accounting Manager 8200 16000
AC_ACCOUNT Public Accountant 4200 9000
SA_MAN Sales Manager 10000 20080
SA_REP Sales Representative 6000 12008
PU_MAN Purchasing Manager 8000 15000
PU_CLERK Purchasing Clerk 2500 5500
ST_MAN Stock Manager 5500 8500
ST_CLERK Stock Clerk 2008 5000
SH_CLERK Shipping Clerk 2500 5500
IT_PROG Programmer 4000 10000
MK_MAN Marketing Manager 9000 15000
MK_REP Marketing Representative 4000 9000
HR_REP Human Resources Representative 4000 9000
PR_REP Public Relations Representative 4500 10500


参照したURL:
http://stackoverflow.com/questions/11407513/perl-dbdoracle-module-installation
http://search.cpan.org/~pythian/DBD-Oracle-1.23/Oracle.pm
http://perl.dbi.users.narkive.com/0Tkjxsm3/how-to-set-ld-library-path

インストール例

Oracle Database 12c Release 1 (12.1.0.2.0)の場合

# rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm
# rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm
# rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm

# export ORACLE_HOME=/usr/lib/oracle/12.1/client/lib
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client/lib

# cpan install DBI
# cpan install DBD::Oracle

ある日使えなくなった(2016年9月)

$ ./test_dbd_oracle.pl 
Can't load '/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libperl.so.5.20: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません at /usr/lib64/perl5/DynaLoader.pm line 193.
 at ./test_dbd_oracle.pl line 3.
Compilation failed in require at ./test_dbd_oracle.pl line 3.
BEGIN failed--compilation aborted at ./test_dbd_oracle.pl line 3.


再インストールしたら直った!

#cpan
...
cpan[3]> force install DBD::Oracle
...
  PYTHIAN/DBD-Oracle-1.74.tar.gz
  /usr/bin/make install  -- OK

cpan[4]> exit 

参照したURL:
http://stackoverflow.com/questions/5406322/how-to-rebuild-reinstall-dependencies-of-an-up-to-date-cpan-module