Oracle 10G/11G自带DBI了

Oracle 10G/11G自带了DBI[@more@]

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平台上的冒号。一开始设置成冒号,死活不能跑上面的测试.

请使用浏览器的分享功能分享到微信等