Re: Sql Profile 12c

  • From: Stefan Koehler <contact@xxxxxxxx>
  • To: dmarc-noreply@xxxxxxxxxxxxx, Oracle-L Freelists <oracle-l@xxxxxxxxxxxxx>
  • Date: Tue, 5 Dec 2017 09:56:09 +0100 (CET)

Hello Sanjay,
the problem is not the SQL Profile (they can be very useful) but the Oracle 
Tuning Advisor. It seems like you just accepted the recommendation by Oracle 
Tuning Advisor without understanding the root cause.

The SQL Profile by Oracle Tuning Advisor does not fix an execution plan - so it 
is not very uncommon to have different costs in different environments if they 
are not EXACTLY the same. The SQL Profile by Oracle Tuning Advisor only 
provides some scale factors (in your case for joins) but the optimizer is still 
free to choose from various transformations, access paths and join methods.

So my recommendation: Delete the SQL profile, understand the root cause and fix 
this problem :-)

Best Regards
Stefan Koehler

Independent Oracle performance consultant and researcher
Website: http://www.soocs.de
Twitter: @OracleSK

Sanjay Mishra <dmarc-noreply@xxxxxxxxxxxxx> hat am 4. Dezember 2017 um 21:48 
geschrieben:

Hi

Is it common that if I transfer any SQL profile created in the lower 
environment and working fine to be moved to prod but found it is not 
achieving the same response?  Running the same Exact SQL in both environments 
and both Dev and Test are newly refreshed with Prod data. The environment is 
12c (12.1.0.2) and SQL profile is enabled. The only difference is that Lower 
environment COSt in explanation where the query is running 5 times faster is 
more that based Execution plan COST in a production environment.

Dev Env: Before Oracle Tuning Advisor accepted SQL Profile the query cost was 
9500K and taking 30Min. After accepting Profile it is reduced to 10Min
Test Env: Execution Plan Cose comes 235K and taking 1hr 40 min.  It shows 
that it has used SQL profile also. The same time was even taken without using 
Profile

I agree with lots of experts comments that SQL profile is not the best way. I 
tried to use Opt_estimate but not able to understand as to how to interpret 
it. It comes as
opt_estimate(@"SEL$1", JOIN, ("Sol_c_tbl"@"$SEL$1", "Sol_c_tbk"@$SEL$1", 
"Sol_c_tba"$SEL$1"), SCALE_ROWS=8.860905062)
opt_estimate(@"SEL$1", JOIN, ("Sol_c_tbk"@"$SEL$1"), SCALE_ROWS=0.212222124)
opt_estimate(@"SEL$1", JOIN, ("Sol_c_tbk"@$SEL$1", "Sol_c_tba"$SEL$1"), 
SCALE_ROWS=8.869041334)

 I got the above from one of the Frank blogs from dbi Services

Any clues as instead of SQL profile I can check more based on above profile 
hints to directly tune the environment.

TIA
Sanjay
--
http://www.freelists.org/webpage/oracle-l


Other related posts: