Re: Apache::DBI Oracle LOB problem

2001-08-28 Thread Steven Schmidt

This problem was fixed by upgrading Oracle to 8.1.7

-Steve

Robert Landrum wrote:

 At 2:15 AM +0100 8/2/01, Tim Bunce wrote:
 On Mon, Jul 30, 2001 at 04:57:09PM -0400, Steven Schmidt wrote:
  The following problem came up in porting EnsEMBL to Oracle:
 
  Level 9 DBI trace:
  OCIStmtExecute(62c0ec,6363d0,62c310,0,0,0,0,0)=SUCCESS
  OCIAttrGet(6363d0,4,ffbeebea,0,10,62c310)=SUCCESS
  dbd_st_execute SELECT returned (SUCCESS, rpc0, fn4, out0)
  - execute= '0E0' at /usr/local/apache/perl/foo.pl line 34
   fetchrow_array DISPATCH (DBI::st=HASH(0x381d1c) rc1/1 @1 g1
  a0) at /usr/local/apache/perl/foo.pl line 35
  - fetchrow_array for DBD::Oracle::st
  (DBI::st=HASH(0x381d1c)~0x384ecc)
  dbd_st_fetch 4 fields...
  OCIStmtFetch(6363d0,62c310,1,2,0)=SUCCESS
  dbih_setup_fbav for 4 fields = 0x384c8c
  dbd_st_fetch 4 fields SUCCESS
  0 (rc=0): '484'
  OCILobGetLength(62c0ec,62c310,62a4d4,ffbee9dc)=SUCCESS
 
 
 OCILobRead(62c0ec,62c310,62a4d4,ffbee9d8,1,782808,136351,0,0,0,1)=STIL
 L_EXECUTING
 
 That's almost certainly an Oracle bug. DBD::Oracle doesn't enable non-blocking
 mode of the OCI so, as far as I know, the OCI should never return
 STILL_EXECUTING.

 I'm sure I've seen this before... On a really old version of
 DBD::Oracle.  One of my selects was failing on a string greater than
 140k...  It was under linux, RH 5.1, DBD::Oracle  0.96, DBI  1.00.

 I can't remember exactly what error I got, but upgrading DBD::Oracle
 seemed to fix the problem.

 Rob

 Talk to Oracle about it.
 
 No need to mention DBD::Oracle... just send them the trace after
 removing lines that don't match /\bOCI\w+\(/
 
 :-)
 
 Tim.

 --
 A good magician never reveals his secret; the unbelievable trick
 becomes simple and obvious once it is explained. So too with UNIX.

--
Steven Schmidt
snp.cshl.org www.gramene.org
Cold Spring Harbor Laboratory
516-367-6977






Re: Apache::DBI Oracle LOB problem

2001-08-02 Thread Robert Landrum

At 2:15 AM +0100 8/2/01, Tim Bunce wrote:
On Mon, Jul 30, 2001 at 04:57:09PM -0400, Steven Schmidt wrote:
 The following problem came up in porting EnsEMBL to Oracle:

 Level 9 DBI trace:
 OCIStmtExecute(62c0ec,6363d0,62c310,0,0,0,0,0)=SUCCESS
 OCIAttrGet(6363d0,4,ffbeebea,0,10,62c310)=SUCCESS
 dbd_st_execute SELECT returned (SUCCESS, rpc0, fn4, out0)
 - execute= '0E0' at /usr/local/apache/perl/foo.pl line 34
  fetchrow_array DISPATCH (DBI::st=HASH(0x381d1c) rc1/1 @1 g1
 a0) at /usr/local/apache/perl/foo.pl line 35
 - fetchrow_array for DBD::Oracle::st
 (DBI::st=HASH(0x381d1c)~0x384ecc)
 dbd_st_fetch 4 fields...
 OCIStmtFetch(6363d0,62c310,1,2,0)=SUCCESS
 dbih_setup_fbav for 4 fields = 0x384c8c
 dbd_st_fetch 4 fields SUCCESS
 0 (rc=0): '484'
 OCILobGetLength(62c0ec,62c310,62a4d4,ffbee9dc)=SUCCESS

 
OCILobRead(62c0ec,62c310,62a4d4,ffbee9d8,1,782808,136351,0,0,0,1)=STIL 
L_EXECUTING

That's almost certainly an Oracle bug. DBD::Oracle doesn't enable non-blocking
mode of the OCI so, as far as I know, the OCI should never return 
STILL_EXECUTING.

I'm sure I've seen this before... On a really old version of 
DBD::Oracle.  One of my selects was failing on a string greater than 
140k...  It was under linux, RH 5.1, DBD::Oracle  0.96, DBI  1.00.

I can't remember exactly what error I got, but upgrading DBD::Oracle 
seemed to fix the problem.

Rob


Talk to Oracle about it.

No need to mention DBD::Oracle... just send them the trace after
removing lines that don't match /\bOCI\w+\(/

:-)

Tim.


--
A good magician never reveals his secret; the unbelievable trick
becomes simple and obvious once it is explained. So too with UNIX. 



Re: Apache::DBI Oracle LOB problem

2001-08-01 Thread Perrin Harkins

 Mmm, haven't seen it, but we use LONG instead of CLOB as the datatype
 for the sequence. Is there any reason to use CLOB, and does using LONG
 make the problem disappear?

Oracle doesn't want you to use LONG anymore.  It's deprecated.

Questions for Steven:
Have you followed all the documentation on using LOBs in DBD::Oracle?  Are
you sure that LongReadLen is set high enough?

- Perrin