Tuning Gurus,

 

I am tuning one of our dayend batch jobs using the 10046 wait event (level 8).

I see a whole lot of direct path read/ write events (1000's) in the trace file.

Also many SQL*NET messages from/ to client waits.

 

Not sure if this is the way PRO*C works, connects fetches and disconnects multiple time.

Therefore there are also many FETCHES.

 

Not sure what these events relate to.I am not sure if it may be related to sorting.

However the session stats show only 3 sorts.(2 in memory and 1 to disk).

This is a PROC*C program.

 

Snippet from trace

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=167180 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=167183 p3=1

WAIT #5: nam='direct path read' ela= 3 p1=101 p2=167892 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=160653 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=160295 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=165431 p3=1

WAIT #5: nam='direct path read' ela= 4 p1=101 p2=166769 p3=1

WAIT #5: nam='direct path read' ela= 2 p1=101 p2=166770 p3=2

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=166772 p3=1

WAIT #5: nam='direct path read' ela= 3 p1=101 p2=166773 p3=2

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=165382 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=161977 p3=1

WAIT #5: nam='direct path read' ela= 5 p1=101 p2=162178 p3=1

WAIT #5: nam='direct path read' ela= 3 p1=101 p2=166148 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=165788 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=166562 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=166565 p3=1

WAIT #5: nam='direct path read' ela= 4 p1=101 p2=166566 p3=2

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=166352 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=166355 p3=1

WAIT #5: nam='direct path read' ela= 0 p1=101 p2=166201 p3=1

WAIT #5: nam='direct path read' ela= 8 p1=101 p2=166204 p3=1

FETCH #5:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=2,dep=0,og=2,tim=28537720

WAIT #5: nam='SQL*Net message from client' ela= 0 p1=1111838976 p2=1 p3=0

WAIT #5: nam='SQL*Net message to client' ela= 0 p1=1111838976 p2=1 p3=0

FETCH #5:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=2,dep=0,og=2,tim=28537720

WAIT #5: nam='SQL*Net message from client' ela= 0 p1=1111838976 p2=1 p3=0

WAIT #5: nam='SQL*Net message to client' ela= 0 p1=1111838976 p2=1 p3=0

FETCH #5:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=2,dep=0,og=2,tim=28537720

WAIT #5: nam='SQL*Net message from client' ela= 0 p1=1111838976 p2=1 p3=0

WAIT #5: nam='SQL*Net message to client' ela= 0 p1=1111838976 p2=1 p3=0

FETCH #5:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=2,dep=0,og=2,tim=28537720

WAIT #5: nam='SQL*Net message from client' ela= 0 p1=1111838976 p2=1 p3=0

WAIT #5: nam='SQL*Net message to client' ela= 0 p1=1111838976 p2=1 p3=0

FETCH #5:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=2,dep=0,og=2,tim=28537720

WAIT #5: nam='SQL*Net message from client' ela= 0 p1=1111838976 p2=1 p3=0

WAIT #5: nam='SQL*Net message to client' ela= 0 p1=1111838976 p2=1 p3=0

FETCH #5:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=2,dep=0,og=2,tim=28537720

WAIT #5: nam='SQL*Net message from client' ela= 0 p1=1111838976 p2=1 p3=0

WAIT #5: nam='SQL*Net message to client' ela= 0 p1=1111838976 p2=1 p3=0

FETCH #5:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=2,dep=0,og=2,tim=28537720

WAIT #5: nam='SQL*Net message from client' ela= 0 p1=1111838976 p2=1 p3=0

 

Query Plan

 

select orgplvee.org_lvl_parent ,prdplvee.prd_lvl_parent ,

(NVL(invbalee.on_hand_qty,0)+NVL(to_intrn_qty,0)) ,

(NVL(invbalee.on_hand_retl,0)+NVL(to_intrn_retl,0)) ,

(NVL(invbalee.on_hand_cost,0)+NVL(to_intrn_cost,0))

from

invbalee ,orgplvee ,prdplvee where (orgplvee.org_lvl_child=

invbalee.org_lvl_child and prdplvee.prd_lvl_child=invbalee.prd_lvl_child)

order by orgplvee.org_lvl_parent,prdplvee.prd_lvl_parent�����������

 

 

call���� count������ cpu��� elapsed������ disk����� query��� current������rows

------- -------------- ---------- ---------- ---------- --------------------

Parse������� 0����� 0.00������ 0.00��������� 0��������� 0��������� 0���������� 0

Execute����� 0����� 0.00������ 0.00��������� 0��������� 0��������� 0���������� 0

Fetch�� 1073155��� 383.55���� 401.00������ 5501��������� 0��������� 0���� 2146310

------- -------------- ---------- ---------- ---------- --------------------

total�� 1073155��� 383.55���� 401.00������ 5501��������� 0��������� 0���� 2146310

 

Misses in library cache during parse: 0

Parsing user id: 20

 

Execution Plan

IdParPosIns Plan

--- ---- ---- ---- --------------------------------------------------------------------------------

0����� ####������� SELECT STATEMENT (choose)���� Cost (48836,5333714,170678848)

1��� 0��� 1��������� SORT��� (order by)Cost (48836,5333714,170678848)

2��� 1��� 1����������� HASH JOIN���� Cost (1705,5333714,170678848)

3��� 2��� 1������������� INDEX (analyzed) UNIQUE JDAPROD ORGPLVEEP1 (fast full scan)Cost (1,1073,5365)

4��� 2��� 2������������� HASH JOIN���� Cost (1690,1357040,36640080)

5��� 4��� 1��������������� INDEX (analyzed) UNIQUE JDAPROD PRDPLVEEP1 (fast full scan)Cost (16,100070,8005

6��� 4��� 2��� 1���������� TABLE ACCESS (analyzed)JDAPROD INVBALEE (full)Cost (746,1257164,23886116)

 

 

Each fetch call returned an average of 2 rows.

Not sure if I need to increase the arraysize in SQLPLUS to perform bulk fetches.

 

Thanks & Regards

Suhen

Reply via email to