Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Explain Plan vs Actual Execution Plan

Re: Explain Plan vs Actual Execution Plan

From: Darrell Landrum <>
Date: Thu, 20 Mar 2003 15:27:37 -0600
Message-Id: <>

Brad, you're absolutely correct. Explain plan is what is intended, but isn't what always happens. It probably is most of the time, but not always. I recently had a circumstance in which a long running job (the explain plan of) was telling me it was reading from a big partitioned table and using the index that it should have been using, but a 10046 trace showed reads from a different index and no reads from the index identified by explain plan. A full analyze compute (using dbms_stats) later, this job works fine. I suspect in my case the problem was with statistics. The job was originally set up by the developer to add data each night, then analyze the current partition. The last time global stats were gathered on this table was last October. I suspect that over time with data loads and updates the data distribution, etc. got skewed as compared to the global stats, so the optimizer didn't have enough valid information to make a good choice. This query was reading data from 5 or 6 partitions of a 54 partition table. That's important information because a couple of weeks ago I was reading the "Oracle 8i Designing and Tuning for Performance" document and came across this statement: "Unless the query predicate narrows the query to a single partition, the optimizer uses the global statistics. Because most queries are not likely to be this restrictive, it is most important to have accurate global statistics." Pretty interesting to think about. It's gather stats global and local from now on for me.

>>> 03/20/03 02:24PM >>>

Heres a question to ponder. While tuning a SQL statment for a user I noticed that the explain plan from SQL Analyze was not the same plan that was found when I used OEM Top Sessions ( upon executing to collect execution stats. Database is on HP/UX 11 version Oracle 8.1.7

The stats were not "stale" yet. Monitoring is on for the tables in the query. The query would actually never return. I suspected that the stats were a bit off so I ran new ones and then SQL Analyze displayed a different explain plan and the plan reteived from top sessions while the SQL was running matched.

My question is is the Explain Plan and estimate or is the actual plan. I suspect that when an explain plan is created it uses statistics and the optimizer to determine the estimated plan and cost. However when the SQL is actually executed I suspect that a different plan may be generated as actual execution begins....or am I just wacked.

Either way the statistics when run created a proper plan that worked fine. But I wonder why the difference in plans...

Brad O.

Please see the official ORACLE-L FAQ: 
Author: Odland, Brad

Fat City Network Services    -- 858-538-5051 
San Diego, California        -- Mailing list and web hosting services
To REMOVE yourself from this mailing list, send an E-Mail message
to: (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).
Received on Thu Mar 20 2003 - 15:27:37 CST

Original text of this message