develooper Front page | perl.dbi.users | Postings from January 2007

Re: DBD::Oracle: Row cache fetch ahead on cursor returned from PL/SQLstored proc?

Thread Previous | Thread Next
From:
Charles Jardine
Date:
January 22, 2007 02:24
Subject:
Re: DBD::Oracle: Row cache fetch ahead on cursor returned from PL/SQLstored proc?
Message ID:
45B490CB.1030707@cam.ac.uk
On 19/01/07 18:07, Joel Noble wrote:
> Hello, all!
> 
> I'm having slow performance reading from a cursor that is returned
> from a stored procedure.  Network tracing and strace confirms that
> a round-trip is being done to the Oracle DB to fetch each row, with no pre-caching.  Using DBI-1.52, DBD-Oracle-1.18 on Linux with Perl 5.8.5 and the ora10202_32 client.
> 
> If I'm reading the DBD::Oracle docs correctly, a cursor returned
> from a PL/SQL stored proc will be considered a "nested cursor"
> (even though there are no cursors nested inside the rows returned).
>  So, I've set the ora_max_nested_cursors and the RowCacheSize
> database handle attributes right after connecting.  (I've also
> tried them in the connect.)  This does not seem to change the behavior.
> 
> Here's some sample code I've culled out of my program.  Any ideas welcome!

Two points.

1. ora_max_nested_cursors is not relevant. This value is used
   only in the case where a result set has columns of type REF CURSOR,
   resulting in nested fetches. If you don't have a 'CURSOR( ... )'
   expression in the select list of a 'SELECT' statement, you don't
   have nested cursors.

2. Does you result set have LONG or LONG RAW columns? Caching is
   disabled if you have these.

-- 
Charles Jardine - Computing Service, University of Cambridge
cj10@cam.ac.uk    Tel: +44 1223 334506, Fax: +44 1223 334679

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About