Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: spontaneous rollback and retry?
Note in-line.
-- Regards Jonathan Lewis http://www.jlcomp.demon.co.uk The educated person is not the person who can answer the questions, but the person who can question the answers -- T. Schick Jr Next public appearance2: March 2004 Hotsos Symposium - Keynote March 2004 Charlotte NC - OUG Tutorial April 2004 Iceland One-day tutorials: http://www.jlcomp.demon.co.uk/tutorial.html Three-day seminar: see http://www.jlcomp.demon.co.uk/seminar.html ____UK___February The Co-operative Oracle Users' FAQ http://www.jlcomp.demon.co.uk/faq/ind_faq.html "Richard Kuhler" <noone_at_nowhere.com> wrote in message news:w0jLb.45890$C87.11580_at_twister.socal.rr.com...Received on Fri Jan 09 2004 - 02:59:59 CST
> We believe we've found the source of the problem although not really the
> explanation. At the time the process was running, a DBA kicked of a
> DBMS_STATS analysis for this instance. We killed our process and the
> DBMS_STATS session and retried our process. This time it finished
> without any problems in the expected amount of time. To confirm this
> interaction, we ran our process again and started DBMS_STATS while it
> was running again. The same repeated rollback and retry behavior was
> observed. Something about the DBMS_STATS run is causing the issues with
> the MERGE operation.
>
Just bouncing ideas around - but when you generate stats you invalidate any cursors that may exist on the table. In simple case, if you are running in parallel, the parallel slaves get called about 13 times each to process a statement that addresses part of the data. But what they are given to process appears as an SQL statement with a few input parameters. If these cursors become invalid between calls, perhaps Oracle has to go into defensive mode and rollback the parallel update because reparsing the statement may change its execution path, which means one pass of the query MIGHT not identify the section of data that was intended when the QC wrote the SQL and this could therefore allow some data to be updated twice, and some data to be missed. (This seems a bit unlikely - but it's the only hypothesis I can come up with at the moment).