Most of the manuals and how-to pages describe, how to install client libraries to system (usually as root), which was not my case.
I just need one directory with libraries in my $HOME and few scripts to get some data from the database - no system installations.
Here are the steps how to install DBD-Oracle and it's libraries to "one" directory without doing mess in the system:
First let's install core system related libraries and tools
aptitude install gcc libdbi-perl libaio1 libstdc++6-4.4-dev unzip
Get the Oracle client libraries from their download page
mkdir $HOME/lib/ && cd $HOME/lib/
wget basiclite-11.1.0.7.0-linux-x86_64.zip sqlplus-11.1.0.7.0-linux-x86_64.zip sdk-11.1.0.7.0-linux-x86_64.zip
unzip *.zip
Install DBD::Oracle:
wget http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.24a.tar.gz
tar xvzf DBD-Oracle*.tar.gz
cd DBD-Oracle*
export LD_LIBRARY_PATH=$HOME/lib/instantclient_11_1
export C_INCLUDE_PATH=$HOME/lib/instantclient_11_1/sdk/include
perl Makefile.PL PREFIX=$HOME/lib
make && make install
Now you should have DBD::Oracle installed in your $HOME/lib directory.
You can modify this short script to see if it's really working:
#!/usr/bin/perl -w
use DBI;
push (@INC,"$ENV{'HOME'}/lib/lib/perl/5.10.1");
$host="myhost";
$user="ORACLEUSER";
$passwd='MYPASS';
#tnsping
#lsnrctl services - to find right sid
$dbh = DBI->connect("dbi:Oracle:host=$host;sid=ORCH3;port=1521", $user, $passwd);
or die "Couldn't connect to database: " . DBI->errstr;
my $sth = $dbh->prepare("select * from tab")
or die "Couldn't prepare statement: " . $dbh->errstr;
$sth->execute() or die "Couldn't execute statement: " . $sth->errstr;
while (my ($table_name) = $sth->fetchrow_array()) {
print $table_name, "\n";
}
$sth->finish();
$dbh->disconnect();
I believe you can install DBD::Oracle without dependencies above like gcc or libstdc++, but I'm fine to install these.