一、安装需要的包
在linux下通过perl脚本直接访问oracle,需安装如下包:
perl-DBI http://search.cpan.org/~timb/DBI-1.621/
perl-DBD:;Oracle http://search.cpan.org/~pythian/DBD-Oracle-1.44/
如果是连接远程数据库还需要安装oracle instance client,http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,选择合适的版本,下载basic、sqlplus、sdk三个软件,解压即可
二、设定环境变量并建立TNSNAME文件
在.bash_profile文件里设环境变量
ORACLE_HOME=/****/instantclient_10_2 #设置为刚才解压的oracle instacne client 主目录
TNS_ADMIN=$ORACLE_HOME/network/admin
LD_LIBRARY_PATH=$ORACLE_HOME
echo ORACLE_HOME TNS_ADMIN LD_LIBRARY
在TNS_ADMIN下建立tnsnames.ora,内容为你需要连接的数据库的连接串
三、写个perl脚本测试
#!/usr/bin/perl
use DBI;
$sid="***";
$user="***";
$passwd="***";
$dbh = DBI->connect("dbi:Oracle:$sid","$user","$passwd") or die "can't connect to database ". DBI-errstr;
#连接数据库
$sth=$dbh->prepare("select tablespace_name,status from dba_tablespaces");
$sth->execute;
#执行sql语句
while (@recs=$sth->fetchrow_array) {
print $recs[0].":".$recs[1]."\n";
}
$dbh->disconnect;
执行脚本结果如下:
# perl ora_connect2.pl
SYSTEM:ONLINE
UNDOTBS:ONLINE
SYSAUX:ONLINE
TEMP:ONLINE
USERS:ONLINE
LISCODE:ONLINE
LIS:ONLINE
TS_LOGMNR:ONLINE
CALLERTBS:ONLINE
LISBASE:ONLINE
LISDATA:ONLINE
BJJH:ONLINE
四、一般出错都是环境变量设置问题,要不就是SID解析问题,关于perl DBD:;ORACLE的详细说明,可参考官方文档http://search.cpan.org/~pythian/DBD-Oracle-1.44/lib/DBD/Oracle.pm