How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute...
Transcript of How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute...
![Page 1: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/1.jpg)
How to Migrate a Plan using SQL Plan Management (SPM)
Carlos Sierra
![Page 2: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/2.jpg)
Carlos Sierra
§ Enkitec Consultant § Oracle Performance § SQL Tuning § PL/SQL
![Page 3: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/3.jpg)
How to Migrate a Plan using SQL Plan Management (SPM)
§ SPM Mechanics
§ Plan Migration Methods
§ Scripts
§ Demo
![Page 4: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/4.jpg)
SPM Mechanics
![Page 5: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/5.jpg)
SPM Mechanics
§ Concepts
§ Control and Status Flags
§ Plan Selection
§ Capturing and Loading Plans
§ Plan Evolution
![Page 6: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/6.jpg)
Concepts
§ Plan Flexibility – Cardinality Feedback (CFB) – Adaptive Cursor Sharing (ACS) – SQL Tuning Advisor (STA) Profiles
§ Plan Stability – CBO Hints – Stored Outlines – SQL Plan Management
Plan as a function of CBO stats, binds and CBO environment
![Page 7: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/7.jpg)
SQL Plan Management (SPM)
§ One or more Optimal Plans per SQL § Plan Stability
– Only known and accepted Plans can be executed § Plan Flexibility
– Capture new Plans and evaluate their performance “off-line”
§ Persistent Plans
Goals
![Page 8: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/8.jpg)
SQL Plan Management (SPM) § SQL Management Base (SMB) § SQL Plan Baseline (SPB) § Plan
– History – Selection – Capture – Loading – Evolution
Terminology
![Page 9: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/9.jpg)
SPM Control and Status Flags
§ Control – Enabled – Accepted – Fixed
§ Status – Reproduced – Autopurge – Rejected (verified and not accepted)
See dba_sql_plan_baselines
![Page 10: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/10.jpg)
SQL Plan Baseline versus Plan History
§ SQL Plan Baseline (SPB) – Enabled – Accepted – Reproduced – Subset of dba_sql_plan_baselines
§ SQL Plan History – Superset which includes SPB – Full content of dba_sql_plan_baselines
SPB is a subset of Plan History
![Page 11: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/11.jpg)
Plan Selection
![Page 12: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/12.jpg)
Plan Selection
§ CBO computes New Optimal Plan (NOP) before looking at SPM § If NOP exists in SPB then execute NOP § If NOP does not exist in SPB then store NOP in PH and
– If there is at least one “fixed” plan in SPB then § Re-cost all “fixed” plans in SPB and select plan with lowest cost
– If no plans were “fixed” in SPB then § Re-cost all plans in SPB and select plan with lowest cost
During a hard parse while SPM is active and SPB exists
![Page 13: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/13.jpg)
Capturing Plans into SPM
§ To capture 1st Plan into SQL Plan Baseline (SPB) – Set OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES to TRUE – Execute SQL 2 times
§ To capture more Plans into Plan History (PH) – Set OPTIMIZER_USE_SQL_PLAN_BASELINES to TRUE (default) – OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES does not matter – Execute SQL with different binds values – ACS may generate more plans into PH
Out of Cursor
![Page 14: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/14.jpg)
Capturing Plans into SPM
![Page 15: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/15.jpg)
Loading Plans into SPM
§ Cursor Cache (CUR) – DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE
§ SQL Tuning Set (STS) – DBMS_SPM.LOAD_PLANS_FROM_SQLSET
§ Stored Outlines (SO) – DBMS_SPM.MIGRATE_STORED_OUTLINE
§ Another System (Migration) – DBMS_SPM.(UN)PACK_STGTAB_BASELINE
Sources
![Page 16: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/16.jpg)
Loading Plans into a SQL Tuning Set
§ Cursor Cache (CUR) – DBMS_SQLTUNE.SELECT_CURSOR_CACHE
§ Workload Repository (AWR) – DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY
§ SQL Performance Analyzer (SPA) – DBMS_SQLTUNE.SELECT_SQLPA_TASK
§ SQL Trace (TRC) – DBMS_SQLTUNE.SELECT_SQL_TRACE
§ Another System – DBMS_SQLTUNE.(UN)PACK_STGTAB_SQLSET
Sources
![Page 17: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/17.jpg)
Oracle Pack Licenses
§ DBMS_SPM – No Pack License
§ DBMS_SQLTUNE – Requires Oracle Tuning Pack
§ Automatic Workload Repository (AWR) – Requires Oracle Diagnostics Pack
§ Oracle Tuning Pack requires Oracle Diagnostics Pack
Oracle Tuning Pack and Oracle Diagnostics Pack
![Page 18: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/18.jpg)
Plan Evolution
§ One API – DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE
§ Parameters – SQL Handle – Plan Name – Verify Control Flag – Commit Control Flag – Time Limit
Accepting a Plan
![Page 19: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/19.jpg)
Evolving a Plan
§ Evaluate performance of new plan without affecting SPB – Verify and not commit
§ Evaluate performance of new plan and promote it into SPB – Verify and commit
§ Skip performance evaluation and promote plan into SPB – No verify and commit
Possible Actions (all generate a report)
![Page 20: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/20.jpg)
Plan Migration Methods
![Page 21: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/21.jpg)
Plan Migration Methods
§ Without using Oracle Diagnostics or Tuning Packs
§ Using Oracle Tuning Pack – Creating a SPB on SOURCE – Without creating a SPB on SOURCE
![Page 22: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/22.jpg)
Plan Migration using SQL Plan Management
1. Capture or Load SPB in SOURCE from CUR or SO 2. Pack SPB in SOURCE into staging table 3. Export SPB staging table in SOURCE 4. Import SPB staging table into TARGET 5. Unpack (restore) SPB from staging table in TARGET
Without using Oracle Diagnostics or Tuning Packs
![Page 23: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/23.jpg)
Plan Migration using SQL Plan Management
1. Create STS in SOURCE from AWR (or CUR or SPA or TRC) 2. Create SPB from STS in SOURCE 3. Pack SPB in SOURCE into staging table 4. Export SPB staging table in SOURCE 5. Import SPB staging table into TARGET 6. Unpack (restore) SPB from staging table in TARGET
Using Oracle Tuning Pack (sub-option 1)
![Page 24: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/24.jpg)
Plan Migration using SQL Plan Management
1. Create STS in SOURCE from AWR (or CUR or SPA or TRC) 2. Pack STS in SOURCE into staging table 3. Export STS staging table in SOURCE 4. Import STS staging table into TARGET 5. Unpack (restore) STS from staging table in TARGET 6. Create SPB from STS in TARGET
Using Oracle Tuning Pack (sub-option 2)
![Page 25: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/25.jpg)
Scripts
![Page 26: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/26.jpg)
Scripts
§ Create
§ Display
§ Migration
§ Maintenance
§ Drop
![Page 27: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/27.jpg)
Create Scripts
§ Create STS from CUR § Create STS from AWR § Create SPB from CUR § Create SPB from AWR § Create SPB from STS
![Page 28: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/28.jpg)
Display Scripts
§ Display CUR § Display AWR § Display STS § Display SPB
![Page 29: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/29.jpg)
Migration Scripts
§ Pack and Exp SPB § Imp and Unpack SPB § Pack and Exp STS § Imp and Unpack STS
![Page 30: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/30.jpg)
Maintenance Scripts
§ Evolve SPB § Alter SPB
![Page 31: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/31.jpg)
Drop Scripts
§ Drop CUR § Drop STS § Drop SPB
![Page 32: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/32.jpg)
SPM Migration Steps
1. Create a SPB in SOURCE – Create SPB from CUR; or – Create SPB from AWR (requires Oracle Tuning Pack)
2. Pack and Exp SPB from SOURCE 3. Imp and Unpack SPB into TARGET
§ Pros: Simple § Cons: Requires a SPB on SOURCE
Creating a SPB in SOURCE
![Page 33: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/33.jpg)
SPM Migration Steps
1. Create a STS in SOURCE – Create STS from CUR; or – Create STS from AWR
2. Pack and Exp STS from SOURCE 3. Imp and Unpack STS into TARGET 4. Create SPB from STS in TARGET
§ Pros: No SPB is required in SOURCE § Cons: Requires an Oracle Tuning Pack license
Without creating a SPB in SOURCE (requires Oracle Tuning Pack)
![Page 34: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/34.jpg)
SPM Migration Steps
1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID and its Plan Hash Value
2. Follow installation steps from log into TARGET
§ Pros: Allows you to create SPB with plan from modified SQL (opt) § Cons: Requires an Oracle Tuning Pack license
Using coe_load_sql_baseline.sql (requires Oracle Tuning Pack)
![Page 35: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/35.jpg)
Demo
![Page 36: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/36.jpg)
References and Contact Info
§ https://blogs.oracle.com/optimizer/ – Insight into the workings of the Optimizer
Oracle Optimizer Blog
§ [email protected] § http://carlos-sierra.net § @csierra_usa
![Page 37: How to Migrate a Plan using SQL Plan Management (SPM) v1 · SPM Migration Steps 1. Execute coe_load_sql_baseline.sql in SOURCE – Enter original SQL_ID – Enter modified SQL_ID](https://reader034.fdocuments.net/reader034/viewer/2022052300/5f0de1d17e708231d43c8c66/html5/thumbnails/37.jpg)