My Oracle Support Banner

How to Use SQL Plan Management (SPM) - Plan Stability Worked Example (Doc ID 456518.1)

Last updated on OCTOBER 24, 2019

Applies to:

Oracle Database - Enterprise Edition - Version and later
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Information in this document applies to any platform.


NOTE: In the images and/or the document content below, the user information and data used represents fictitious data from the Oracle sample schema(s) or Public Documentation delivered with an Oracle database product. Any similarity to actual persons, living or dead, is purely coincidental and not intended in any manner.

SQL Plan management (SPM) is a preventative mechanism that records and evaluates the execution plans of SQL statements over time. SPM builds SQL plan baselines composed of a set of existing plans that are known to be efficient. The SQL plan baselines are then used to preserve performance of corresponding SQL statements, regardless of changes occurring in the system, providing "plan stability".

Common usage scenarios where SQL plan management can improve or preserve SQL performance include:

If you have a good plan in the cursor cache, then you can load these into SPM so that you can use this baseline to preserve the performance. The following example command illustrates this:

set serveroutput on

var n number
:n:=dbms_spm.load_plans_from_cursor_cache(sql_id=>'&sql_id', plan_hash_value=>&plan_hash_value, fixed =>'NO', enabled=>'YES');

EXEC dbms_output.put_line('Number of plans loaded: ' || :n);

After enabling the SPM, for those SQL ID's that have SQL plan management baselines, the database will not collect new access plans (even after SPM is disabled - assuming the baseline is active)

The purpose of this Document is to show an example of SQL PLAN MANAGEMENT.

NOTE: The steps to accept and un-accept the baseline have changed in 11gR2. For information on how to run these steps in 11gR2, please see:

<Document 1309799.1> How to Accept & Unaccept the plans in sql baselines in



To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.