kcl.c@10949
A "select ... for update" query shows slow performance and
following three conditions meet
* query run full table scan against large table and run serially (not PQ)
* query use direct path reads against the table
followed by "db file sequential read" operations.
You can check this by "alter session set events 'sql_trace wait=true';
and examine generated SQL trace file.
* The query selects a large number of rows and updates many of them
* Setting event 10949 level 1 to disable the direct reads
shows improved performance.
Workaround
Set event 10949.
eg: alter session set events '10949 level 1';
The setting of event 10949 to disable direct path reads has shown an
immediate and dramatic performance improvement for GE Capital without their
having to increase buffer cache size.
alter system set events '10949 trace name context forever,level 1';
SQL> set serveroutput on
declare
event_level number;
begin
for i in 10000..10999 loop
sys.dbms_system.read_ev(i,event_level);
if (event_level > 0) then
dbms_output.put_line('Event '||to_char(i)||' set at level '||
to_char(event_level));
end if;
end loop;
end;
/
Event 10949 set at level 1