Re: Explain Plan and Security

  • From: Jonathan Lewis <jonathan@xxxxxxxxxxxxxxxxxx>
  • To: "oracle-l@xxxxxxxxxxxxx" <oracle-l@xxxxxxxxxxxxx>, "l.flatz@xxxxxxxxxx" <l.flatz@xxxxxxxxxx>
  • Date: Thu, 14 Jun 2018 14:13:35 +0000


As far as I know explain plan will produce a misleading plan only if:

a) the query uses bind variables - which can't be peeked and are assumed to be 
character
or
b) the literals used in the explain plan are a bad choice compared to what 
happens in production
   (which includes wrong type, wrong character set, wrong implicit date format 
etc.)

Using dbms_sql won't (necessarily) be any better. If you supply a statement 
with a bind variable in the text the call to dbms_parse will assume that it's 
an unknown varchar - just as explain plan will.  This is why you sometimes see 
systems with lots of statements parsed twice per execute - the first time was a 
parse call the that used guesses for bind types, the second was with 
information about the actual bind types.

(I have an odd note from 16 years ago that you don't get the plan on the call 
to dbms_parse, but have to call dbms_describe_colums as well).

Regards
Jonathan Lewis

________________________________________
From: oracle-l-bounce@xxxxxxxxxxxxx <oracle-l-bounce@xxxxxxxxxxxxx> on behalf 
of l.flatz@xxxxxxxxxx <l.flatz@xxxxxxxxxx>
Sent: 14 June 2018 13:36:46
To: oracle-l@xxxxxxxxxxxxx
Subject: Explain Plan and Security

Hi,

you might know Kerry┬┤s classic blog: 
http://kerryosborne.oracle-guy.com/2008/10/explain-plan-lies/.
Normally my work around for explain plan issues is to run the query and use 
dbms_xplan.display_cursor.
Now I am working in an environment where I must not run a query, but I can do 
explain plan.
But still I think I can not tolerate explain plan weaknesses.
I think it should be possble to use DBMS_SQL to parse a statement and receive a 
proper plan without actually running the statement.
Then use dbms_xplan.display_cursor.
Before I spent time, has anybody done it already?

Regards

Lothar

--
//www.freelists.org/webpage/oracle-l


Other related posts: