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