Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: histograms

Re: histograms

From: Charles Schultz <sacrophyte_at_gmail.com>
Date: Wed, 13 Sep 2006 09:23:04 -0500
Message-ID: <7b8774110609130723l38e07daem8e397c5b98a39a4d@mail.gmail.com>


I am dealing with something very similar to that myself right now. Can you provide:

Your clever developer seems to be on the right track - he would be even more clever if he did not call himself clever. *grin*

Aside from speculating about what has happened, have you gathered any evidence? Trace files, information from v$sql_plan, v$sql_shared_cursor?

The Tuning and Performance Guide gives a bunch of rules for sharing: http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14211/memory.htm#sthref549

A capital letter would fit rule 3, but watch out for rule 5 (your SQL may be massaged).

On 9/13/06, Joel.Patterson_at_crowley.com <Joel.Patterson_at_crowley.com> wrote:
>
> This is from a developer. I'm just trying to help in a timely manner, so
> any input or clarifications would be helpful.
>
>
>
> JP
>
>
>
>
>
> "I am strongly under the impression that the default behavior of 10g is to
> use the bind variable values provided on the first execution attempt to
> determine the execution plan, in the case where those values may matter (
> e.g. in the presence of histograms).
>
>
>
> So for one query in particular, I did something fairly clever - I actually
> know (of the few possible values for the histogrammed column) which are
> selective and which are not. I then issue the query with a subtle
> difference (capitalization of one letter) depending on whether a selective
> value was chosen or not. Thus, if a user runs the non-selective version,
> Oracle should give them a different execution plan. By this cleverness, I
> should be guaranteed that the plan that is used when a selective value is
> chosen, is the plan that was first developed when a selective value was
>
> first sent. But that's what I'm complaining about below - the plan it's
>
> using is appropriate for a non-selective value, so it's as if
>
> a) It didn't use the bound values in determining the plan
>
> b) The histogram wasn't available when it determined the plan I've even
> tried "alter system flush shared_pool" to force the regeneration of the
> plan, and that doesn't seem to work. That also seems to rule out
>
> b) above, because I can run queries without bind variables that definitely
> are sensitive to the histogram."
>

-- 
Charles Schultz

--
http://www.freelists.org/webpage/oracle-l
Received on Wed Sep 13 2006 - 09:23:04 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US