I would have to agree with Ron on this that is it someting in your Oracle 
that is going awry.  Perhaps you are missing an index someplace.
Looking at the code trace you included there is nothing in DBD::Oracle 1.18 
that has changed in what you are hitting since 1.16. Can you try using 
DBD::Oracle 1.17 and see what results you are getting?

""Reidy, Ron"" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
Have you performed a 10046 trace?  What (if any) init parameters were
changed prior to moving to 10g?  Do you have up to date CBO stats on
your tables and data dictionary?

--
Ron Reidy
Lead DBA
Array BioPharma, Inc.

-----Original Message-----
From: Sanjay Noronha [mailto:[EMAIL PROTECTED]
Sent: Monday, November 06, 2006 7:47 PM
To: dbi-users@perl.org
Subject: Insert/Update performance issues with Oracle 10gR2 + DBI +
DBD::Oracle

We're upgrading from 8i to 10g (using materialized views and more).

We're having strange issues with simple inserts and updates.

Here's what we observed:

For the foll. query

UPDATE job_descr SET phase_id = 2  WHERE  jobid = 11576242



1. Runs in a fraction of a second from Toad
2. Runs in a fraction of a second from sqlplus
3. Takes 5 seconds(!) using Oracle 10gR2, DBI 1.53, DBD::Oracle
1.18



The code is essentially as follows:



my $sql = "SELECT ...";

my $sth = $dbh->prepare( $sql ) || die "Preparing $sql\n";

$sth->execute || die "Died: $sql\n";



A DBI Trace around the $sth->execute where the 5s is spent shows the
foll:





    DBI 1.53-nothread default trace level set to 0x0/10 (pid 24811)

    >> prepare     DISPATCH (DBI::db=HASH(0x9ca599c) rc1/2 @2 g0 ima2201
pid#24811) at test.pl line 30 via  at test.pl line 20

    -> prepare for DBD::Oracle::db (DBI::db=HASH(0x9ca599c)~0x9ca84cc
'UPDATE job_descr SET phase_id = 2, status_id = 10039

               WHERE  jobid = 11576242')

    New DBI::st (for DBD::Oracle::st, parent=DBI::db=HASH(0x9ca84cc),
id=)

    dbih_setup_handle(DBI::st=HASH(0x9ca85f8)=>DBI::st=HASH(0x9ca8a10),
DBD::Oracle::st, 9ca8604, Null!)

    dbih_make_com(DBI::db=HASH(0x9ca84cc), 9ca8790, DBD::Oracle::st,
216, 0) thr#0

    dbih_setup_attrib(DBI::st=HASH(0x9ca8a10), Err,
DBI::db=HASH(0x9ca84cc)) SCALAR(0x9abf0f4) (already defined)

    dbih_setup_attrib(DBI::st=HASH(0x9ca8a10), State,
DBI::db=HASH(0x9ca84cc)) SCALAR(0x9abf154) (already defined)

    dbih_setup_attrib(DBI::st=HASH(0x9ca8a10), Errstr,
DBI::db=HASH(0x9ca84cc)) SCALAR(0x9abf124) (already defined)

    dbih_setup_attrib(DBI::st=HASH(0x9ca8a10), TraceLevel,
DBI::db=HASH(0x9ca84cc)) 0 (already defined)

    dbih_setup_attrib(DBI::st=HASH(0x9ca8a10), FetchHashKeyName,
DBI::db=HASH(0x9ca84cc)) 'NAME' (already defined)

    dbih_setup_attrib(DBI::st=HASH(0x9ca8a10), HandleSetErr,
DBI::db=HASH(0x9ca84cc)) undef (not defined)

    dbih_setup_attrib(DBI::st=HASH(0x9ca8a10), HandleError,
DBI::db=HASH(0x9ca84cc)) undef (not defined)

        OCIHandleAlloc(9cc5208,9d05d80,OCI_HTYPE_STMT,0,0)=SUCCESS

        OCIStmtPrepare(9ce426c,9cdbf90,'UPDATE job_descr SET phase_id =
2, status_id = 10039

               WHERE  jobid = 11576242',91,1,0)=SUCCESS

        OCIAttrGet(9ce426c,OCI_HTYPE_STMT,9d05d84,0,24,9cdbf90)=SUCCESS

    dbd_st_prepare'd sql UPDATE (pl1, auto_lob1, check_sql1)

    dbd_describe skipped for UPDATE

    <- prepare= DBI::st=HASH(0x9ca85f8) at test.pl line 30 via  at
test.pl line 20





Before execute

    >> execute     DISPATCH (DBI::st=HASH(0x9ca85f8) rc1/1 @1 g0 ima1041
pid#24811) at test.pl line 33 via  at test.pl line 20

    -> execute for DBD::Oracle::st (DBI::st=HASH(0x9ca85f8)~0x9ca8a10)

    dbd_st_execute UPDATE (out0, lob0)...

HERE IS WHERE THE CONNECTION SEEMS TO BLOCK

        OCIStmtExecute(9cdbf1c,9ce426c,9cdbf90,1,0,0,0,32)=SUCCESS

        OCIAttrGet(9ce426c,OCI_HTYPE_STMT,bfffa7b8,0,9,9cdbf90)=SUCCESS

        OCIAttrGet(9ce426c,OCI_HTYPE_STMT,bfffa7b6,0,10,9cdbf90)=SUCCESS

    dbd_st_execute UPDATE returned (SUCCESS, rpc1, fn5, out0)

    <- execute= 1 at test.pl line 33 via  at test.pl line 20

After execute





    >> DESTROY     DISPATCH (DBI::st=HASH(0x9ca85f8) rc1/1 @1 g0 ima4
pid#24811) at test.pl line 20 via  at test.pl line 20

    <> DESTROY(DBI::st=HASH(0x9ca85f8)) ignored for outer handle (inner
DBI::st=HASH(0x9ca8a10) has ref cnt 1)

    >> DESTROY     DISPATCH (DBI::st=HASH(0x9ca8a10) rc1/1 @1 g0 ima4
pid#24811) at test.pl line 20 via  at test.pl line 20

    -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x9ca8a10)~INNER)

    dbd_st_destroy

        OCIHandleFree(9ce426c,OCI_HTYPE_STMT)=SUCCESS

    <- DESTROY= undef at test.pl line 20 via  at test.pl line 20

    DESTROY (dbih_clearcom) (sth 0x9ca8a10, com 0x9d05d00, imp
DBD::Oracle::st):

       FLAGS 0x182591: COMSET Warn RaiseError PrintError PrintWarn
ShowErrorStatement LongTruncOk

       PARENT DBI::db=HASH(0x9ca84cc)

       KIDS 0 (0 Active)

       IMP_DATA undef

       LongReadLen 64000

       NUM_OF_FIELDS -1

       NUM_OF_PARAMS 0

    dbih_clearcom 0x9ca8a10 (com 0x9d05d00, type 3) done.



ELAPSED: 5.100781





Any help will be much appreciated.




This electronic message transmission is a PRIVATE communication which 
contains
information which may be confidential or privileged. The information is 
intended
to be for the use of the individual or entity named above. If you are not 
the
intended recipient, please be aware that any disclosure, copying, 
distribution
or use of the contents of this information is prohibited. Please notify the
sender  of the delivery error by replying to this message, or notify us by
telephone (877-633-2436, ext. 0), and then delete it from your system.


Reply via email to