RE: Long Parse Time

From: Tanel Poder <tanel_at_poderc.com>
Date: Sat, 9 May 2009 00:06:15 +0300
Message-ID: <DE200C8260EF4ABE815C4C44CACBF2DD_at_porgand>



> In this case, you can add your own timing info like this:
>
> tail -f the_trace_file | perl -nle 'print time, $_'

I think this would suffer from write buffering effect, tail doesn't dump out data immediately when the write happens and pipes also have some buffering in them. I once hacked a library which hijacked write calls to tracefiles using LD_PRELOAD and did something similar. Not too practical for producting environments though so better stick with stack tracing :)

> My first response to this type of problem would be like you
> both said, check function call stack. Just run pstack <shadow
> process ID> a couple of times during the long parse, and
> you'll know what function it repeatedly hangs on. Pstack or
> equivalent is available on many OS's.

ALL OS'es, that's a fundamental software debugging tool, not Oracle nor Unix specific - it's any software specific technique. When talking about Oracle, then on Windows it's better to use Oracle's "oradebug short_stack" or "dump errorstack" but again these have some safety issues so you've got to be careful with these.

--
Regards,
Tanel Poder
http://blog.tanelpoder.com

--
http://www.freelists.org/webpage/oracle-l
Received on Fri May 08 2009 - 16:06:15 CDT

Original text of this message