TRACE file question

I traced a user session against our TEST database to try and find out why an error is occuring. That trace file was quite large, with several queries showing up as going against SYSTEM tables:
select /*+ index(idl_sb4$ i_idl_sb41) +*/ piece#,length,piece
from
idl_sb4$ where obj#=:1 and part=:2 and version=:3 order by piece#When I traced a session against the PRODUCTION database there were far fewer entries. In fact, here were the differences:
TEST
       1  session in tracefile.
      13  user  SQL statements in trace file.
     109  internal SQL statements in trace file.
     122  SQL statements in trace file.
      51  unique SQL statements in trace file.
    3964  lines in trace file.
       0  elapsed seconds in trace file.PROD
       1  session in tracefile.
      15  user  SQL statements in trace file.
       3  internal SQL statements in trace file.
      18  SQL statements in trace file.
      17  unique SQL statements in trace file.
     650  lines in trace file.
       0  elapsed seconds in trace file.Why is there a difference between the two. The section of the Form throwing the error in TEST has not been changed from what's in PROD. But, I'm missing 2 user statements, one of which is the one I'm most interested in.
Thanks
-Chuck

Thank you very much, Mr. Forstmann, for your quick response.
It is really helpful. But I have one further question. Since our server space is limited and we can't keep those trace files forever. So I still need to delete inactive trace files to save some space. Could you please tell how to found out if files are open or closed in a SunOS 5.10 server?
Thanks a lot,
Shirley

Similar Messages

  • Trace file, questions

    Could some one help me figure out what the pr, pw and time of this line means:
    STAT #19 id=1 cnt=109879 pid=0 pos=1 obj=72085 op='TABLE ACCESS FULL MF (cr=8214 pr=955 pw=0 time=561423 us)'
    Also I have problmes understanding what the parameter of bind means, my book seems to be on 9i and there is major difference from what it say to what I get.
    BINDS #18:
    kkscoacd
    Bind#0
    oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
    oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
    kxsbbbfp=b726e230 bln=22 avl=04 flg=05
    value=72085
    Bind#1
    oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
    oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
    kxsbbbfp=b726e20c bln=24 avl=02 flg=05
    value=1

    Unfortunately I do not have access to metalink to figure out those bind parameters.
    According to Optimizing Oracle Performance by Cray Millsap with Jegg Holt published on O'Reilly the tkprof is less accurate then looking directly at the trace. They claim that it does some mistakes summerising the out put. Personally I have no experience either way, but I will have a look at tkprof and see what I can get from it.

  • Question for lmd0 trace file

    Hi All,
    Our db is 2 nodes RAC db on window 2003 server. The database version is 10.2.0.3 Enterprise Edition. My question is: we have the following messages in our db alert log but when I tried to look into the trace file I can’t find the trace file in that directory at all. Then I did the search and found this file in Recycle Bin folder. So I restored the file to d:\oracle\admin\avprod\bdump\ directory. The strange thing is that the modify date of the file is 9/26/09 but it contains data from 10/01/09. Can anybody tell me what is going here? Why this trace file can’t be regenerated after deletion?
    Thu Oct 01 18:02:37 2009
    Global Enqueue Services Deadlock detected. More info in file
    d:\oracle\admin\avprod\bdump\avprod1_lmd0_5472.trc.
    Thu Oct 01 18:05:49 2009
    Global Enqueue Services Deadlock detected. More info in file
    d:\oracle\admin\avprod\bdump\avprod1_lmd0_5472.trc.
    Thanks a lot for your help and have a great weekend!
    Shirley

    Thanks Srini, for your response. The following is some of the content in lmd0 trace file:
    *** 2009-10-01 18:00:42.343
    * kjdrchkdrm: found an RM request in the request queue
    Dissolve pkey 498214
    DRM(480) ignoring dissolve of 498214
    * kjdrchkdrm: found an RM request in the request queue
    Dissolve pkey 498215
    DRM(480) ignoring dissolve of 498215
    *** 2009-10-01 18:02:37.171
    Global Wait-For-Graph(WFG) at ddTS[0.12b] :
    BLOCKED 00000002C399D470 5 [0xe4000b][0x237682],[TX] [1A2000-0003-0004049C] 1
    BLOCKER 00000002C399D320 5 [0xe4000b][0x237682],[TX] [1C2000-0003-00021E4B] 1
    BLOCKED 00000002C38B3760 5 [0x107001d][0x5db6],[TX] [1C2000-0003-00021E4B] 1
    BLOCKER 00000002C38B34A8 5 [0x107001d][0x5db6],[TX] [1A2000-0003-0004049C] 1
    *** 2009-10-01 18:05:08.375
    Setting 3-way CR grants to 0 global-lru off? 0
    *** 2009-10-01 18:05:39.781
    Setting 3-way CR grants to 1 global-lru off? 0
    Global Wait-For-Graph(WFG) at ddTS[0.12b] :
    BLOCKED 00000002C36CAB68 5 [0xde000f][0x198822],[TX] [1B2000-0003-00025BA2] 1
    BLOCKER 00000002C36CAA00 5 [0xde000f][0x198822],[TX] [1A2000-0003-0004048B] 1
    BLOCKED 00000002C358C0C8 5 [0x1000017][0x5bbb6],[TX] [1A2000-0003-0004048B] 1
    BLOCKER 00000002C358BF78 5 [0x1000017][0x5bbb6],[TX] [1B2000-0003-00025BA2] 1
    *** 2009-10-01 18:06:10.812

  • Question about Y_?????? trace files

    We have a SAP ERP 6.0 system runninng in Windows. I am checking the trace files in our system, and I have found that there are a lot of Y_??????. I have been looking for information about them, but I cannot find it. Does anyone know how and why these files are generated, and if I can safely delete them?
    Thank you for your help,
    Jose

    Hi Jose,
    Is the file called Y_18001 or Y_<number>. These are just Developer Trace files and you can safely delete those file.
    Refer to below link
    http://help.sap.com/saphelp_47x200/helpdata/en/1f/8311664bc511d189750000e8322d00/content.htm
    Regards,
    Arjun

  • Question regarding alert log file and trace files

    What should be the alert log file size ? And when should it be deleted? And for how many days user trace files should be kept?
    Also will anyone please tell me the importance of these files.
    Thanks

    This may help: http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14231/manproc.htm#sthref729
    There are a few discussions on it here:
    Re: Alert Log File
    alert log file contents viewing
    Re: how to read alert log file? is there any tool available?

  • Ora-00604 error while taking tkprof of a trace file

    Sorry i am giving the full erro but omitting exact table names
    Hi ,
    I have an error while taking tkprof of a trace file.
    I gave the following command ---
    tkprof <source.trc> <file.prc> sys=no sort=exeela,fchela,prsela explain= /
    error is --
    Error in create table of EXPLAIN PLAN table : unix_session_user.prof$paln_table
    ORA-00604: error occurred at recursive SQL level 1
    ORA-20001: Step-6:DDL
    Event Security. You are not permitted to perform the requested structural
    changes to PROF (TABLE)
    Event triggered : CREATE
    ora_login_user
    (session_user) : unix_session_user(dummy)
    Search : select count(*) from
    tabl(dummy table name) where obj_name like '%\%%' escape '\' and obj_type =
    'TABLE' and obj_type = 'USER' and ( event_CREATE = 'Y' or status =
    'Override')
    ORA-06512: at line 162
    ORA-06510: PL/SQL: unhandled
    user-defined exception
    EXPLAIN PLAN option disabled.
    i searched for the error and in oracle forum i found a solution .. http://forums.oracle.com/forums/thread.jspa?threadID=844287&tstart=0
    but after giving the table option it is giving the same error
    tkprof <source.trc> <file.prc> sys=no sort=exeela,fchela,prsela table=old_schema.plan_table explain= /
    it again gave the same error.
    In both two cases it gives elapsed time results,library cache missing etc but before giving this it throws ORA-00604 error as stated above
    then i again correct the tkprof statement ..
    tkprof <source.trc> <file.prc> sys=no sort=exeela,fchela,prsela table=new_schema.plan_table explain= /
    say this schema name here i used is dummy schema name.
    My question is did this error came as we had not sufficient previlages in the old_schema but that previleges we have in new_schema?
    My databse version is 9.2.0.4.0
    Thanks in advance
    Edited by: bp on Feb 3, 2009 11:36 PM
    Edited by: bp on Feb 3, 2009 11:40 PM

    Please post here full error message, there should be lines with ORA-00604 and then some other ORA as well.
    And are there any trace files generated during this error?
    And as You can see from error description, probably You will have to contact with Oracle support in order to solve this case:
    oerr ora 00604
    00604, 00000, "error occurred at recursive SQL level %s"
    // *Cause:  An error occurred while processing a recursive SQL statement
    // (a statement applying to internal dictionary tables).
    // *Action: If the situation described in the next error on the stack
    // can be corrected, do so; otherwise contact Oracle Support.

  • Any way to generate trace report from the TKPROF formatted trace file?

    As titled.
    Is there any automatically way to make a report on SQL tuning report from the TKPROF formatted trace file(or from the dynamic performance views)
    Paul

    Dave,
    That's what report queries are for, take a look at shared components. Walk through the create report query wizard, and on the final page, you'll get a URL that you can use to integrate this with your page. You'll find the same URL when editing your report query afterwards.
    Alternatively, suppose you already have you report page, but don't want to always go there, you can just copy that report region print link (reference my answer to your previous question), and make that the target of a branch or from another page.
    Regards,
    Marc

  • Different Deadlock trace files

    Hello,
    In our application we use to have deadlock issues and i need to analyze that
    trace file.Some time i use to have trace files which is having current session and
    waiting session information and with modules and queries they are executing in top section
    of trace file only , no need to read below data in trace file . But some times the
    trace files are different..all update or select for update queries are spread
    across the file and very difficult to understand which was locking what. Is that in rac or 11g environment
    deadlock trace file is having different structure,?
    One more question regarding deadlock ...many time we found that the current
    query is updating on table A and waiting query updating on table B .. Is it possible
    to have deadlock scenario when queries are working on different tables ? or
    many be it is happening only if tables are in relation like parent and child ?

    hi,
    Are you referring to .trm extention trace files which youare unable to read?
    Here is good explanation of reading deadlock trace files
    ORA-00060 Deadlock trace files.. how to read?
    Thanks,
    Ajay More
    http://www.moreajays.com

  • Java Plug-In Trace File names

    According to this URL, http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment-guide/tracing_logging.html , the plug-in trace file should be named as indicated:
    The names of the trace and log files are
    plugin<modified version number>.trace
    plugin<modified version number>.log
    where the <modified version number> includes the major, minor and patch version numbers; e.g., plugin142_06.trace or plugin150.log
    But this is not what we're seeing. We see the trace and log files, but here are their names:
    plugin28434.trace
    plugin28435.log
    We are using JRE 1.6.10 on Windows.
    We also have the following questions:
    1. Is there any way to set the maximum file size for a trace file?
    2. Is there a way to set how many backups of the trace file are used?
    3. Is there a way to set the rolling behavior of the trace files? Right now, old trace files are re-written completely at random.

    Any one has found any solutions ?

  • MDX Trace File in BOXI 3.0

    Hi there,  i am getting cross joins while creating a query in web I whereas the same query runs file when i create it in Bex Analyzer.
    Would like to know how can i put a trace on so that i could get the MDX query running behind the web i report so that i could test the same in MDXTESTER.
    Thanks

    Hi Ingo,
    I am still not getting the log. Let me rephrase the question probably it might help
    I have created an universe on top of a infocube directly rather than via bex query. It is hitting the sales booking tables. So when i choose Sales Order and Material it is giving me a cross join , i.e. All the sales order for each material, however when i use the same infocube and create a bex query it gives me the right data.
    Now i was wondering if the mdx query which is getting generated is doing all this cross join, however till now i am not able to get the mdx query, looks like it doesnt create any ,mdx query.
    When i look at the bo_trace.ini trace files , i find a dp_command xml code .
    <DPCOMMAND>
            <DP>
                <QUERY>
                    <QUERYRESULT>
                        <QUERYOBJECT KEY="[0DOC_NUMBER].[LEVEL01]" />
                        <QUERYOBJECT KEY="[0MATERIAL                     PRDHA].[LEVEL04]" />
                        <QUERYOBJECT KEY="[0MATERIAL                     PRDHA].[LEVEL04].[[20MATERIAL]].[Value]" />
                    </QUERYRESULT>
                    <QUERYSCOPE />
                    <QUERYCONDITION>
                        <WHERE>
                            <OPERATOR VALUE="AND" >
                                <FILTER KEY="[0MATERIAL                     PRDHA].[LEVEL04].[[20MATERIAL]].[Value]" >
                                    <CONDITION OPERATORCONDITION="InList" >
                                        <CONSTANT CAPTION="DD120" />
                                    </CONDITION>
                                </FILTER>
                            </OPERATOR>
                        </WHERE>
                    </QUERYCONDITION>
                </QUERY>
            </DP>
        </DPCOMMAND>
    </DPCOMMANDS>
    Above is the code
    It would be great if u put a light on this
    Thanks

  • Logrotate and open trace files

    On our racs we see a lot of open (lsof) trace files in our dump directories. We've been using logrotate with cumpersome pre/post rotate code to rotate the files, with the code supposedly filtering out open files, but we still run into issue and are going to revisit this code soon.
    I'm wondering if anybody has found a clean way to rotate and delete trace files without accidently deleting open files?
    -Jeff

    Hollis, let's set expectations first.
    Digital Editions runs on your computer, not your ereader.  What it does is
    interface between the publisher or distributor and you, by taking files
    from them, reformatting them into readable documents in some cases (in
    others, checking and maintaining digital rights), and transferring those
    files (now in .epub format) to your computer.  It keeps a library of these
    epubs and manages it for you.  You have to have Digital Editions or some
    other similar program on your computer if you intent to obtain ebooks from
    various sources.  If you're satisfied with Barnes and Noble and the ebooks
    they have, then you can link up with them via the Nook's wireless features
    or through your computer and download ebooks directly to it that way.
    You do not load Digital Editions or any similar program onto your Nook.
    Next, at least a couple of people have told you how to the download.  Arpit
    Kapoor works for Adobe.  His reply tells you how to download Digital
    Editions and get it installed onto your computer.  So my question to is do
    you understand what he's saying?
    If you have a problem with the download, then tell us in a bit more detail
    what your computer is and what it's running (Windows or Mac).  There are
    some issues that others have had which relate to Win7, but your post isn't
    clear enough to tell us whether you're encountering those issues.
    ===================

  • Do you know Timmings for trace files generated?

    Hi,
    I have done some sql traceing using DBMS_MONITOR package.
    We can also enable SQL traceing using DBMS_SESSION.
    I want to generate sql trace file for "particuler part of application".
    When i did that i got some sql trace files,, now that "particuler part of application" was over application was idle..
    but as time goes these files are still populating in size means they are still sql traceing going on...
    My question is when and how trace files are generated?
    Do you have idea???
    Thanks and Regards,
    Rushang Kansara
    Message was edited by:
    Rush

    also what content of my sql trace file should i
    consider for exacly tracing that "particuler part of
    application".
    Rushang
    Parse Count To Execute Ratio
    Take the numbers of parse count and divide it by numbers of time execute count if it is 1 then it means you are parsing the same statment everytime,If this ratio is 1 then it will latch the shared SQL area which will degrade the overall performance.Like if you execute a query which is using bind variable and this query is at yours front end level trigger (Forms) POST_QUERY then it will show you (parse count=execute count) which shows you are parsing for every triggering event which is bad ,for that you should put this seqeuel within PL/SQL procedure which cache the cursor and will turn in (parse count<Execute Count).
    Large Diffrence Between Elasped Time And CPU Time
    If this diffrence (Elapsed time[b]-CPU time)>1 then it means you are spending yours time in for waiting resources this waiting resources will in turn wait events e.g some one updated the row and dont realease by COMMIT or ROLBACK and the same span of time you want to update then you will see a lock in tkprof result in wait event section.If you read the data from hard disk (as first time you issue it reads from HD and then put into buffer cache during this reading a latch is grabed and will not let you read this data until you perform the alls read from HD to buffer cache this will also show you in wait events which is cache buffers chain
    Fetch Calls
    If yours Fetch calls=Rows then it means you are not using Bulk fetch and yours this code will take a lot of roundtrips which will in turn jam the network.
    Disk Count
    If every time yours disk count=current + query mode then you are reading alls block from disk alls the time ,usually oracle read once from disk and put it into SGA and should be found in SGA second time.
    And there is many more...depend on yors environemnt setup but above are common.
    As you said its reproducing the tkprof again and again ,make sure you terminate the session or you explicitly turn off the tracer by
    ALTER SESSION SET SQL_TRACE=FALSE Khurram

  • Automatic deletion of old archive files and trace files

    I've got a database that must run 24x7 without being monitored by a DBA.
    Two questions:
    1. Is it possible to get Oracle to automatically delete and uncatalog old archive files?
    2. Is it possible to get Oracle to automatically delete old trace files located in udump and bdump?
    Thanks in advance

    1. When you say 'uncatalog old archives’ do you mean that your database is backed up using RMAN and a catalog? If this is the case then RMAN can delete the backed up archives for you. Just add 'delete input' to the end of the 'backup archive log...' line in your backup script.
    2. Oracle can't delete the trace files. Best way is to write a script that delete all files older than X days and schedule it to run every night.

  • APEX Overhead and trace files

    Hey everyone,
    We've been asked to "stress" and "load" test our application as it is predicted our user base might grow in the near future (company acquisitions/etc)...
    Unfortunately, there is concern about the overhead added by APEX.  From everything I've read, I do not personally believe APEX adds much to each page view (as compared to our own self-managed data), however I need to PROVE this to our system admins/etc.  Simply referencing things on the internet like "APEX doesn't add much overhead" doesn't exactly make the case.
    To accomplish my mission, I've done the following:
    1) generated a trace file on a test page by appending the following to the end of the URL:
    "&p_trace=YES" (without quotes)
    2) found the location of trace files using:
    select value from v$parameter where name = 'user_dump_dest';
    3) found the exact trace file for my apex page view
    grep -l "3853406964369" *.trc (where the number in quotes was the session id taken from my apex url)
    4) formatted the trace file using tkprof from the linux command line:
    tkprof orcl_ora_24115.trc tkprof_output
    Now, I'm in the process of examining the file.  It is great that it shows everything involved in generating a page!  A couple of quick questions though.
    A) is it safe to assume that this trace file (found by using my method above in steps 1-4) only contains records associated with my single apex page view?  My fear is that just because a file contains my session id, that does not guarantee that other random stuff from other sessions is also in the same file (sorry i'm new to trace files and especially trace files generated by apex).
    B) if i view a second page with the trace=YES, will a second file get generated or does it get combined into 1 file?  how can i easily tell which file is for which page view?
    C) is there an easy way to differentiate what queries would normally be made by oracle (regardless of the UI) versus queries ran by APEX specifically (which would not occur if we were using PHP for a front end)?
    Specifically, I see queries (similar to the following) that do not appear to be APEX specific from what I can tell:
    -- example 1 --
    select i.obj#,i.ts#,i.file#,i.block#,i.intcols,i.type#,i.flags,i.property,
      i.pctfree$,i.initrans,i.maxtrans,i.blevel,i.leafcnt,i.distkey,i.lblkkey,
      i.dblkkey,i.clufac,i.cols,i.analyzetime,i.samplesize,i.dataobj#,
      nvl(i.degree,1),nvl(i.instances,1),i.rowcnt,mod(i.pctthres$,256),
      i.indmethod#,i.trunccnt,nvl(c.unicols,0),nvl(c.deferrable#+c.valid#,0),
      nvl(i.spare1,i.intcols),i.spare4,i.spare2,i.spare6,decode(i.pctthres$,null,
      null,mod(trunc(i.pctthres$/256),256)),ist.cachedblk,ist.cachehit,
      ist.logicalread
    from
    ind$ i, ind_stats$ ist, (select enabled, min(cols) unicols,
      min(to_number(bitand(defer,1))) deferrable#,min(to_number(bitand(defer,4)))
      valid# from cdef$ where obj#=:1 and enabled > 1 group by enabled) c where
      i.obj#=c.enabled(+) and i.obj# = ist.obj#(+) and i.bo#=:1 order by i.obj#
    -- example 2 --
    select intcol#, toid, version#, intcols, intcol#s, flags, synobj#
    from
    subcoltype$ where obj#=:1 order by intcol# asc
    and I see queries that are definitely APEX related (based on the existence of references to wwv objects):
    -- example 3 --
    SELECT ID, BRANCH_NAME, BRANCH_ACTION, BRANCH_POINT, BRANCH_TYPE,
      BRANCH_CONDITION, BRANCH_CONDITION_TEXT, BRANCH_CONDITION_TYPE,
      BRANCH_WHEN_BUTTON_ID, NVL(SAVE_STATE_BEFORE_BRANCH_YN,'N'),
      SECURITY_SCHEME
    FROM
    WWV_FLOW_STEP_BRANCHES WHERE FLOW_ID = :B4 AND FLOW_STEP_ID = :B3 AND
      BRANCH_POINT = 'BEFORE_HEADER' AND (REQUIRED_PATCH IS NULL OR
      (REQUIRED_PATCH > 0 AND (:B2 IS NULL OR INSTR(:B2 ,
      ':'||TO_CHAR(REQUIRED_PATCH)||':') = 0) ) OR (REQUIRED_PATCH < 0 AND (:B1
      IS NULL OR INSTR(:B1 ,':'||TO_CHAR(0-REQUIRED_PATCH)||':') = 0) ) ) ORDER
      BY BRANCH_SEQUENCE, ID
    and then of course it's easy for me to identify any queries that are based on our code because I recognize the object names we use.
    In the mean-time I'm starting to look into how to interpret trace files (outside of the context of apex).
    My biggest concern is that I do not want to "ding" or "tax" APEX for queries that it had nothing to do with and that would be ran by oracle regardless of the UI we use to "view a page".
    Thanks!

    Move older audit files to a different filesystem until you find someone being able to define what files can be deleted.
    Regards
    Gustavo Restuccia

  • Get blocker from the (self) deadlock trace file

    Hi,
    Recently I had an issue on a 10.2.0.4 single instance database where deadlocks were occurring. The following test case reproduces the problem (I create three parent tables, one child table with indexed foreign keys to all three parent tables and a procedure which performs an insert into the child table in an autonomous transaction):
    create table parent_1(id number primary key);
    create table parent_2(id number primary key);
    create table parent_3(id number primary key);
    create table child( id_c number primary key,
                       id_p1 number,
                       id_p2 number,
                       id_p3 number,
                       constraint fk_id_p1 foreign key (id_p1) references parent_1(id),
                       constraint fk_id_p2 foreign key (id_p2) references parent_2(id),
                       constraint fk_id_p3 foreign key (id_p3) references parent_3(id)
    create index i_id_p1 on child(id_p1);
    create index i_id_p2 on child(id_p2);
    create index i_id_p3 on child(id_p3);
    create or replace procedure insert_into_child as
    pragma autonomous_transaction;
    begin
      insert into child(id_c, id_p1, id_p2, id_p3) values(1,1,1,1);
      commit;
    end;
    insert into parent_1 values(1);
    insert into parent_2 values(1);
    commit;And now the action that causes the deadlock:
    SQL> insert into parent_3 values(1);
    1 row created.
    SQL> exec insert_into_child;
    BEGIN insert_into_child; END;
    ERROR at line 1:
    ORA-00060: deadlock detected while waiting for resource
    ORA-06512: at "SCOTT.INSERT_INTO_CHILD", line 4
    ORA-06512: at line 1My question is: how can I determine which table the insert into CHILD was waiting on? It could be waiting on PARENT_1, PARENT_2, PARENT_3, a combination of them or even on CHILD if I tried to insert a duplicate primary key in CHILD. Since we have the full testcase we know that it was waiting on PARENT_3 (or better said, it was waiting for the "parent" transaction to perform a commit/rollback), but is it possible to determine that solely from the deadlock trace file? I'm asking that because to pinpoint the problem I had to perform redo log mining, pl/sql tracing with DBMS_TRACE and manual debugging on a clone of the production database which was restored to a SCN just before the deadlock occurred. So, I had to do quite a lot of work to get to the blocker table and if this information is already in the deadlock trace file, it would have saved me a lot of time.
    Below is the deadlock trace file. From the "DML LOCK" part I guess that the child table (tab=227042) holds a mode 3 lock (SX), all the other three parent tables have mode 2 locks (SS), but from this extract I can't see that parent_3 (tab=227040) is blocking the insert into child:
    Deadlock graph:
                           ---------Blocker(s)--------  ---------Waiter(s)---------
    Resource Name          process session holds waits  process session holds waits
    TX-00070029-00749150        23     476     X             23     476           S
    session 476: DID 0001-0017-00000003     session 476: DID 0001-0017-00000003
    Rows waited on:
    Session 476: obj - rowid = 000376E2 - AAA3biAAEAAA4BwAAA
      (dictionary objn - 227042, file - 4, block - 229488, slot - 0)
    Information on the OTHER waiting sessions:
    End of information on OTHER waiting sessions.
    Current SQL statement for this session:
    INSERT INTO CHILD(ID_C, ID_P1, ID_P2, ID_P3) VALUES(1,1,1,1)
    ----- PL/SQL Call Stack -----
      object      line  object
      handle    number  name
    3989eef50         4  procedure SCOTT.INSERT_INTO_CHILD
    391f3d870         1  anonymous block
            SO: 397691978, type: 36, owner: 39686af98, flag: INIT/-/-/0x00
            DML LOCK: tab=227042 flg=11 chi=0
                      his[0]: mod=3 spn=35288
            (enqueue) TM-000376E2-00000000  DID: 0001-0017-00000003
            lv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  res_flag: 0x6
            res: 0x398341fe8, mode: SX, lock_flag: 0x0
            own: 0x3980df420, sess: 0x3980df420, proc: 0x39859c660, prv: 0x398341ff8
            SO: 397691878, type: 36, owner: 39686af98, flag: INIT/-/-/0x00
            DML LOCK: tab=227040 flg=11 chi=0
                      his[0]: mod=2 spn=35288
            (enqueue) TM-000376E0-00000000  DID: 0001-0017-00000003
            lv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  res_flag: 0x6
            res: 0x3983386e8, mode: SS, lock_flag: 0x0
            own: 0x3980df420, sess: 0x3980df420, proc: 0x39859c660, prv: 0x3983386f8
            SO: 397691778, type: 36, owner: 39686af98, flag: INIT/-/-/0x00
            DML LOCK: tab=227038 flg=11 chi=0
                      his[0]: mod=2 spn=35288
            (enqueue) TM-000376DE-00000000  DID: 0001-0017-00000003
            lv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  res_flag: 0x6
            res: 0x398340f58, mode: SS, lock_flag: 0x0
            own: 0x3980df420, sess: 0x3980df420, proc: 0x39859c660, prv: 0x398340f68
            SO: 397691678, type: 36, owner: 39686af98, flag: INIT/-/-/0x00
            DML LOCK: tab=227036 flg=11 chi=0
                      his[0]: mod=2 spn=35288
            (enqueue) TM-000376DC-00000000  DID: 0001-0017-00000003
            lv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  res_flag: 0x6
            res: 0x39833f358, mode: SS, lock_flag: 0x0
            own: 0x3980df420, sess: 0x3980df420, proc: 0x39859c660, prv: 0x39833f368
          ----------------------------------------Thank you in advance for any comments,
    Jure

    Hi Jonathan,
    thank you very much for your reply which more than answers my question. I think it actually clears a lot of doubts I had about TX locks, since your mentioning of "undo segment header transaction table" pointed me in the right direction for further research on this topic (honestly, I didn't know what's "behind" TX locks). So if I understood correctly, to determine which table is the blocker (in the testcase presented above), you have to have some kind of history of executed SQL statements (e.g. by mining redo logs)?
    The statement you wrote:
    At this point, and with your example, the waiting session is waiting on a TX (transaction) lock - this means it has not idea (and no interest) in the actual data involved, it is merely waiting for an undo segment header transaction table slot to clear. and the example with the savepoint you gave, made me think of some of the consequences of that behaviour. That is probably the reason why it is not possible to get the "blocker" table from v$lock (although sometimes it's possible to get it from v$session.row_wait_obj#) when a session tries to change a row another session holds in exclusive mode, e.g.:
    create table t1 (id number);
    insert into t1 values (1);
    commit;
    Session 126:
    SID = 126> update t1 set id=2 where id=1;
    1 row updated.
    Session 146:
    SID = 146> update t1 set id=2 where id=1;
    {session hangs}
    In a separate session:
    SQL> SELECT   CASE
      2                  WHEN TYPE = 'TM'
      3                     THEN (SELECT object_name
      4                             FROM user_objects
      5                            WHERE object_id = l.id1)
      6               END object_name,
      7                  SID, TYPE, id1, id2, lmode, request, BLOCK
      8          FROM v$lock l
      9         WHERE SID IN (126, 146)
    10     ORDER BY SID, TYPE, 1
    11  /
    OBJECT_NAME    SID TY        ID1        ID2      LMODE    REQUEST      BLOCK
    T1             126 TM      68447          0          3          0          0
                   126 TX     262153       4669          6          0          1
    T1             146 TM      68447          0          3          0          0
                   146 TX     262153       4669          0          6          0The only thing I can tell from this output is that session 146 is trying to get a TX lock in exclusive mode, and session 126 is blocking it, the reason of the blocking being unknown from this view alone.
    Since I'd like to get a better understanding on the mechanics behind this (e.g. why the blocked session can't know the segment that is waiting for, since it has to go to the same segment's data block to find the address of the undo segment header transaction table slot? ; can we get the content/structure of the transaction table in the data block - probably by making a block dump?), do you have any source where a more in depth explanation what happens "behind the scenes" is available (perhaps in Oracle Core?)? Some time ago I found a link on your blog http://jonathanlewis.wordpress.com/2010/06/21/locks/ which points to Franck Pachot's article where he nicely explains the various locking modes: http://knol.google.com/k/oracle-table-lock-modes#. There I also found Kyle Hailey's presentation about locks http://www.perfvision.com/papers/09_enqueues.ppt where slide 23 nicely depicts what's going on when acquiring TX locks. Of course I'll try to search on my own, but any other source (especially from an authority like you) is more than welcome.
    Thank you again and regards,
    Jure

Maybe you are looking for

  • Error Accessing Report in SharePoint Integrated Mode (SQL Server 2008 with SharePoint 2007)

    I have installed reporting services with SharePoint Integration Mode, however, whenever I access the report, below error occurs: Report Server has encountered a SharePoint error. (rsSharePointError) Exception occurred. (Exception from HRESULT: 0x8002

  • My HP Printer HP Officejet Pro 8600 Problem

    My printer is not scanning, faxing and copying. Once I press the copy option it give me an error message stating that "unable to scan, fax and copy".

  • HELP!! Insufficient resources error from document reposistory wrapper

    The error is: Caused by: com.plumtree.dr.RepositoryException: Insufficient system resources exist to complete the requested service INFO | jvm 1 | 2008/01/29 09:48:00 |      at com.plumtree.dr.RepositoryIOException.setCause(RepositoryIOException.java

  • CALANDER AND SYNC

    I want to be able to use my BT email calendar so that it syncs with outlook and appears on my Android phone.  Can someone please advise how I should set this up?  Emails sync two way on both outlook and phone but not calendar. Thank you

  • ANNOUNCE: JRockit 5.0 R25.2 aka "5.0 SP2" available

    JRockit 5.0 R25.2 is now available from our download site, see links below. Some highlights: - J2SE 5.0 Update 3 - Expanded support matrix (Windows x64, Red Hat 4.0) - 64-bit JVM for Intel EM64T/AMD64 fully supported on Linux - Documentation update,