Re: Plan changed After creating profile

  • From: Upendra nerilla <nupendra@xxxxxxxxxxx>
  • To: Chrishna0007 <chrishna0007@xxxxxxxxx>, "rprabha01@xxxxxxxxx" <rprabha01@xxxxxxxxx>
  • Date: Wed, 29 Sep 2021 20:24:04 +0000

Use SQL Baseline.. here are a couple of articles that describe the details and 
examples for implementing them.

https://blogs.oracle.com/optimizer/post/what-is-the-difference-between-sql-profiles-and-sql-plan-baselines
What is the difference between SQL Profiles and SQL Plan Baselines? - 
Oracle<https://blogs.oracle.com/optimizer/post/what-is-the-difference-between-sql-profiles-and-sql-plan-baselines>
I'm frequently asked about the difference between SQL profiles and SQL plan 
baselines and why SQL profiles can be shared but SQL plan baselines can't. So I 
thought it would be a good idea to write a post explaining the differences 
between them and how they interact. But first let's briefly recap eac...
blogs.oracle.com

https://blogs.oracle.com/optimizer/post/using-sql-plan-management-to-control-sql-execution-plans
Using SQL Plan Management to Control SQL Execution 
Plans<https://blogs.oracle.com/optimizer/post/using-sql-plan-management-to-control-sql-execution-plans>
SQL plan management (SPM) is designed to prevent performance regression for all 
SQL statements used by an application (assuming that the SQL statements in 
question are used more than once). SPM uses SQL plan baselines that are 
associated with individual SQL statements to control what execution plans they 
are permitted to use.
blogs.oracle.com



-Upendra

________________________________
From: oracle-l-bounce@xxxxxxxxxxxxx <oracle-l-bounce@xxxxxxxxxxxxx> on behalf 
of Rajeev Prabhakar <rprabha01@xxxxxxxxx>
Sent: Wednesday, September 29, 2021 4:06 PM
To: Chrishna0007 <chrishna0007@xxxxxxxxx>
Cc: Oracle L <oracle-l@xxxxxxxxxxxxx>
Subject: Re: Plan changed After creating profile

Hi Krishna,

Besides other things, please also check if this
is the random case of data skew / due to usage
of bind variables. If yes, look into the option of
turning off peeking. At select/limited times,
depending upon the use case, using literals
instead might also be useful.

Rajeev


On Sep 29, 2021 at 3:27 PM, <Krishnaprasad 
Yadav<mailto:chrishna0007@xxxxxxxxx>> wrote:

Hi All ,

Adding to my earlier  mail ,


Below is details :

INST_ID   PLAN_HASH_VALUE CHILD_NUMBER EXECUTIONS   AVG_TIME
----------- --------------- ------------ ---------- ----------
         1       1733635396<tel:1733635396>            3     208406 5.00887472 

bad plan
         1        816394429<tel:816394429>            7         36 
.043790694<tel:043790694>
         2        816394429<tel:816394429>            0       1020 
.005087153<tel:005087153>
         2        816394429<tel:816394429>            1     764142 
.001283816<tel:001283816>



  INST_ID  PLAN_HASH_VALUE EXECUTIONS   AVG_TIME        AVG_LIO    AVG_ROW 
SQL_PROFIL
----------  --------------- ---------- ---------- -------------- ---------- 
----------
         1       1733635396<tel:1733635396>     208442 5.01300161        
5,565.1             2.44969344 SYS_SQLPRF_014d7f1895d0000

         2        816394429<tel:816394429>     765162 .001288886            
9.3<tel:001288886%209.3> 2.32738949 SYS_SQLPRO F_014d7f18a95d0000


SQL Profile was created in 2015 and it is enabled in state , however today , 
sql was picking bad plan from good plan suddenly  and creating huge mess up

If any light on this can be shared would be great .


Regards,
Krishna


On Thu, 30 Sept 2021 at 00:44, Krishnaprasad Yadav 
<chrishna0007@xxxxxxxxx<mailto:chrishna0007@xxxxxxxxx>> wrote:
Hi All ,

We have created sql profile on select statement ,but we see plan is changed  
and worst plan  is used in execution rather than sticking to plan for which 
fixed it with profile .

Is any way to avoid it or how can we stick permanently so that it can be fixed 
with permanent plan .

Regards,
Krishna

Other related posts: