RE: Long Parse Time

  • From: "Tanel Poder" <tanel@xxxxxxxxxx>
  • To: <oracle-l@xxxxxxxxxxxxx>
  • Date: Sat, 9 May 2009 00:06:15 +0300

> 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.

Tanel Poder


Other related posts: