Oracle9i及之前的版本,如果用Perl访问Oracle,还得用ppm安装DBI包或编译器编译源代码。 10G之后,貌似这一情况改变了。自己的台式机上装了11G,就上面测试通过了。在Linux上的10G也测试没问题。
主要之前要设置下面几个环境变量:
PATH, PERL5LIB, LD_LIBRARY_PATH
附上测试的日志
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
c:>set PATH=C:appproduct11.1.0db_1perl5.8.3binMSWin32-x86-multi-thread;%PATH%
c:>echo %PATH%
C:appproduct11.1.0db_1perl5.8.3binMSWin32-x86-multi-thread;C:appproduct11.1.0db_1bin;C:Perlsitebin;C:Perlbin;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;x:ssbsql10OCS-12_5dll;x:ssbsql10OCS-12_5bin;C:Program FilesMICROS~2Office;C:Program FilesWinSCP3;
c:>set LD_LIBRARY_PATH=C:appproduct11.1.0db_1lib;C:appproduct11.1.0db_1lib32;C:appproduct11.1.0db_1jlib
c:>set PERL5LIB=C:appproduct11.1.0db_1perl5.8.3lib;C:appproduct11.1.0db_1perlsite5.8.3lib;C:appproduct11.1.0db_1perlsite5.8.3libMSWin32-x86-multi-thread
C:>perl test.pl
********************
*****User access the database: SYS*****
*****Datatime from database: 2009-05-27 16:24:21*****
C:>type test.pl
#!C:appproduct11.1.0db_1perl5.8.3binMSWin32-x86-multi-threadperl -w
#use lib 'C:appproduct11.1.0db_1perlsite5.8.3libMSWin32-x86-multi-thread';
use DBI;
use DBD::Oracle;
$dbh=DBI->connect('DBI:Oracle:host=??;SID=ORA11G','sys','',{PrintError=>1,RaiseError=>1,ora_session_mode=>2});
$sth=$dbh->prepare(q/select username,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from v$session where sid in (select sid from v$mystat where rownum<2)/);
$sth->execute();
@row=$sth->fetchrow_array();
print '*' x 20,"n";
print "*****User access the database: $row[0]*****n";
print "*****Datatime from database: $row[1]*****n";
$sth->finish();
$dbh->disconnect();
有一点要注意:在设置环境变量时,要用分号分隔,不是Unix/Linux平台上的冒号。一开始设置成冒号,死活不能跑上面的测试.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/45188/viewspace-1022625/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/45188/viewspace-1022625/