急遽、oracleデータベースの必要に駆られ...
DBD::Oracleをインストール / CentOS・Red Hat Linux実践テクニック - サンプルコードによるPerl入門
↑こちらを参考にさせて頂きながら、colinux環境へ↓こちらをインストール。
DBD::Oracle - search.cpan.org
ありがとうございました。 > perlcodesample さん
oracleクライアントツール群のinstall
Instant Client for Linux x86 のダウンロード
まず、3つのrpmパッケージをinstall
$ su - # rpm -ivh oracle-instantclient12.1-basic-12.1.0.1.0-1.i386.rpm # rpm -ivh oracle-instantclient12.1-devel-12.1.0.1.0-1.i386.rpm # rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.1.0-1.i386.rpm
oracleクライアントツール用の環境変数設定
/etc/profile.d/oracle.sh を作成し、ORACLE_HOME , C_INCLUDE_PATH , LD_LIBRARY_PATH を登録
$ su - # vi /etc/profile.d/oracle.sh export ORACLE_HOME='/usr/lib/oracle/12.1/client' export C_INCLUDE_PATH='/usr/include/oracle/12.1/client' export LD_LIBRARY_PATH='/usr/lib/oracle/12.1/client/lib'
※ /etc/ld.so.conf の設定は未実施...なくても動作したので
/etc/hosts にlocalhost(クライアント, 自分)を登録
$ su - # vi /etc/hosts 127.0.0.1 localhost colinux
DBD::Oracle のinstall
以下の通り
$ wget http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.66.tar.gz $ tar -zxcvf DBD-Oracle-1.66.tar.gz $ cd DBD-Oracle-1.66 $ /usr/local/bin/perl Makefile.PL $ make $ make test $ su # make install
サンプルコード
#!/usr/local/bin/perl use strict; use utf8; use DBI; #DBD::Oracle use Data::Dumper; my $DB_CONF = {host=> 'XXX.XXX.XXX.XXX', port=> '1521', db_name=> 'ないしょ', db_user=> 'ないしょ', db_pass=> 'ないしょ', db_opt=> {AutoCommit=> 0}, }; my $DBH; # $ENV{'ORACLE_HOME'} = '/usr/lib/oracle/12.1/client'; # $ENV{'LD_LIBRARY_PATH'}='/usr/lib/oracle/12.1/client/lib'; # $ENV{'C_INCLUDE_PATH'}= '/usr/include/oracle/12.1/client'; # $ENV{'nls_lang'}="JA16SJISTILDE"; # $ENV{'nls_lang'}="JA16SJIS"; main(); sub main { $DBH = connect_db(); chk_sql_1(); chk_sql_2(); $DBH->disconnect(); } sub chk_sql_1 { my $sql =<<EOF; select * from XXXXXX_y where C_XXXXXX=? EOF my $sth = $DBH->prepare($sql); $sth->execute('XXXXXX'); while( my $row = $sth->fetchrow_hashref){ print STDERR Dumper($row); } } sub chk_sql_2 { my $sql =<<EOF; select * from XXXXXX where C_XXXXXX=? EOF my $sth = $DBH->prepare($sql); $sth->execute('7AP4UM'); while( my $row = $sth->fetchrow_hashref){ print STDERR Dumper($row); } } sub connect_db { my $db = join(';', "dbi:Oracle:host=$DB_CONF->{host}", "sid=$DB_CONF->{db_name}", "port=$DB_CONF->{port}"); my $db_uid_passwd = "$DB_CONF->{db_user}/$DB_CONF->{db_pass}"; my $DBH = DBI->connect($db, $db_uid_passwd, ""); return $DBH; }