In your init<sid>.ora file, increate the max_cursors option.
L
-----Original Message-----
From: Eli [mailto:eli.venter@celera.com]
Sent: Tuesday, February 20, 2001 2:04 PM
To: dbi-users@perl.org; Tim.Bunce@ig.co.uk
Subject: Oracle DBD: space leak and max open cursors errors
I'm getting:
DBD::Oracle::db disconnect failed: ORA-00600: internal error code,
arguments: [729], [360], [space leak], [], [], [], [], [] (DBD ERROR:
OCISessionEnd)
This is after calling a stored procedure which returns some data through
a inout parameter around 50 times. The disconnect is in our error
handeling. The error that sends us to disconnect is:
DBD::Oracle::st execute failed: ORA-01000: maximum open cursors
exceeded
Our DBI code inside the loop looks like:
my $procedure = q{
BEGIN
RAP.GET_NEXT_JOB(:id, :cmd, :bsub);
END;
};
my $sth = $dbh->prepare_cached( $procedure ) || confess "Can't
prepare";
$sth->bind_param_inout(":id", $identifier, 20, DBI::SQL_INTEGER);
$sth->bind_param_inout(":cmd", $command, 512, DBI::SQL_VARCHAR);
$sth->bind_param_inout(":bsub", $bsub, 512, DBI::SQL_VARCHAR);
$sth->execute;
We tried putting a $sth->finish after the execute, but that doesn't
change anything. It seems to be something to do with the inout param
because we do something very similar with only in params and never have
the problem.
Any ideas or suggestions?
thanks
-Eli
Thread Previous
|
Thread Next