Sands Peter wrote:
Running perl5.8.3 compiled 32 bit with the Perl libraries, DBD 1.15, DBI
1.41 distributed with Oracle 10.2, I find that, having connected to Oracle
within a perl script any subsequent system() calls return a -1 error status,
even simple commands like true. (First tried building and using
DBD-Oracle-1.19, DBI-1.40 with the same results).
cat dbtest.pl
use strict;
use Getopt::Std;
use DBI;
# Connect to database
my $db = DBI -> connect("DBI:Oracle:","","",
{AutoCommit => 0,PrintError => 0,RaiseError => 1})
or die "Failed to connect: $DBI::errstr\n";
$db -> disconnect();
system(true);
print "$?\n";
>/opt/app/oracle/product/10.2/perl/bin/perl5.8.3 dbtest.pl
-1
/opt/app/oracle/product/10.2/perl/bin/perl5.8.3 -v
This is perl, v5.8.3 built for sun4-solaris-thread-multi
Copyright 1987-2003, Larry Wall
Perl may be copied only under the terms of either the Artistic License or
the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'. If you have access to the
Internet, point your browser at http://www.perl.com/ <http://www.perl.com/>
, the Perl Home Page.
file /opt/app/oracle/product/10.2/perl/bin/perl5.8.3
/opt/app/oracle/product/10.2/perl/bin/perl5.8.3: ELF 32-bit MSB
executable SPARC Version 1, dynamically linked, not stripped
echo $PERL5LIB
/opt/app/oracle/product/10.2/perl/lib/5.8.3:/opt/app/oracle/product/10.2/per
l/lib/site_perl/5.8.3/
/opt/app/oracle/product/10.2/perl/bin/perl5.8.3 -e 'use DBD::Oracle; print
$DBD::Oracle::VERSION,"\n";'
1.15
/opt/app/oracle/product/10.2/perl/bin/perl5.8.3 -e 'use DBI; print
$DBI::VERSION,"\n";'
1.41
Peter Sands
Have you tried running truss on the perl script to see what is happening
when system fails? I think it is worth a try. Also, the OCI libraries do
a lot of fiddling with signals and I can imagine SIGCHLD having an
effect on system.
Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com