Uh guys, force matching is a yes/no value that tells the optimizer whether or not to replace static conditions in the query with bind variables when determining if this query has a sql profile it should use. it is not actually a signature. Sent from my iPad > On Nov 22, 2014, at 1:31 AM, Mohamed Houri <mohamed.houri@xxxxxxxxx> wrote: > > When a SQL statement is protected by a SQL plan baseline, the next time you > run the same sql statement (the same force matching signature) this SQL > statement will end up by using the SQL plan baseline provided that this one > is still reproducible. And there are many reasons that make a SQL plan > baseline not anymore reproducible including dropping an index, renaming an > index, changing the index type, using a different nls_sort than the one used > at SQL plan baseline creation time, etc.... > > In your case, there might be two reasons for not using the Baselined plan: > > 1) the force matching signature of your current statement is not the same as > the one used to compile the SQL plan baseline execution plan > 2) the SQL plan baseline is not anymore reproducible > > When you issue your SQL statement the optimizer will parse its execution plan > as if there was no SQL plan baseline. It is only when it has finished to > parse the new plan that it will start to see if the new parsed plan exists in > the SQL plan baseline or not. If not found in the SPM plan Baseline then all > existing SPM plan baselines (for the same force matching signature) will > enter in competition and the best re-costed one will be used. This is why the > suggestion to have multiple SPM plans for a single force matching signature > might not be always a good solution. > > I have a series of article about SPM you can find here below > > http://hourim.wordpress.com/category/sql-plan-managment/ > > Best regards > Mohamed Houri > www.hourim.wordpress.com > > > > 2014-11-22 8:13 GMT+01:00 Lothar Flatz <l.flatz@xxxxxxxxxx>: >> Hi Bala, >> >> to answer your questions: >> >> 1.If the cached SQL in shared pool flushes out will it not use created SQL >> Baseline anymore? >> >> It should still use the same SQL baseline when it is reparsed. The >> prerequisite is that the statement is written in the same way and is >> identified as identical to the one the baseline was created for. Check if >> that is a dynamically generated sql that varies in Details. >> If that happens the sql id will change as well. >> I have never had this issue thus i don't know if there are any kind of >> subtle changes could cause a baseline to be neglected. >> >> 2.I have to fix the plan permanently irrespective of Gather Stats ran on the >> underlying tables weekly or whatever the reason i'd like to fix the plan >> that has given the proven results. >> >> The baseline should over rule statistics. >> >> 3.How do i retrieve the plan and fix it for permanent use. >> >> That the depends on the issue that causes the baseline to be neglected. If >> it is a dynamically generated statement in most cases the where clause will >> vary a bit. Then you can generate multiple baselines, one for each variation. >> You could also try to fix the underlying root cause of the bad plan, which >> will fix every variation of the statement. For example the root cause is >> often a bad estimate caused by a statistical relationship in the data that >> is not represented well in database statistics. >> Extended statistics could help. >> >> Regards >> >> Lothar >> >> >> Am 22.11.2014 03:29, schrieb Bala Krishna: >>> Hi All, >>> >>> I've created a tuning task >>> >>> dbms_sqltune.create_tuning_task(task_name=>'&&Task_name', >>> sql_id=>'&sql_id', time_limit=>&time_limit); >>> >>> Tuning Task reported to create a sql plan baseline, i've created that but >>> only for the first time it used and executed fast. For the next run it >>> created a different plan_hash_value and may be because of that Sql Baseline >>> not used. >>> >>> I've not fixed Sql Baseline that i have created it. >>> >>> Can somebody please answer me following questions. >>> >>> 1.If the cached SQL in shared pool flushes out will it not use created SQL >>> Baseline anymore? >>> 2.I have to fix the plan permanently irrespective of Gather Stats ran on >>> the underlying tables weekly or whatever the reason i'd like to fix the >>> plan that has given the proven results. >>> 3.How do i retrive the plan and fix it for permanent use. >>> >>> Regards >>> Bala >> >> >> -- >> >> >> >> >> >> >> >> Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus >> Schutz ist aktiv. >> > > > > -- > Houri Mohamed > Oracle DBA-Developer-Performance & Tuning > Member of Oraworld-team > Visit My - Blog > Let's Connect - Linkedin Profile > My Twitter - MohamedHouri