On Fri, 7 Jun 2002 11:53:33 +0100
Tim Bunce <[EMAIL PROTECTED]> wrote:

>> I load DBI and DBD in each thread, in an "eval" statement, hoping
>> that that will force separate loading for each thread (am I wrong?);
>
>Depends on how you're doing it.

  In the sub that is called at thread creation, I put:
eval 'require DBI' ;

  But I still don't know whether DBI is really loaded at each execution of the eval. 
Maybe I should put all the sub in a "eval" string.


>Please try doing:
>
>       DBI->connect( ..., {
>               ora_init_mode => N,
>       });
>
>Where N is the value of OCI_OBJECT + OCI_THREADED.
>You can get those values from the Oracle header files (probably
>$ORACLE_HOME/rdbms/demo/*.h - I don't have ready access to the
>header files to find the values for you.)

  Thank you very much for this tip. For information, I found these values in 
$ORACLE_HOME/rdbms/demo/oci.h:

/* the application is in threaded environment */
#define OCI_THREADED  0x01
/* the application is in object environment */
#define OCI_OBJECT    0x02

and some useful explanations in $ORACLE_HOME/rdbms/demo/ociap.h.


>A combination of loading the DBI into separate interpreters plus
>using the ora_init_mode might be good enough. Try it first.

  Using "ora_init_mode", I get core-dumps only occasionally (that's far better!...). I 
will investigate further to see if my own code is really correct. I'll tell you if I 
find errors related to DBI.

  Thank you again for your help.

-- 
J�r�my JUST  <[EMAIL PROTECTED]>

Reply via email to