Presentation on theme: "1 Session S317113: What do I really need to know when upgrading Thomas Kyte"— Presentation transcript:
1 Session S317113: What do I really need to know when upgrading Thomas Kyte
2 So … What Does Oracle Database 11g Mean To Me? Change
3 Small Change – but think about it… Lets Go Green
4 Small Change – but think about it… ops$tkyte%ORA11GR2> create table t 2 as 3 select substr(object_name, 1, 1 ) str, all_objects.* 4 from all_objects 5 order by dbms_random.random; Table created. ops$tkyte%ORA11GR2> create index t_idx on t(str,object_name); Index created. ops$tkyte%ORA11GR2> begin 2 dbms_stats.gather_table_stats 3 ( user, 'T', 4 method_opt => 'for all indexed columns size 254', 5 estimate_percent=>100 ); 6 end; 7 / PL/SQL procedure successfully completed.
5 Small Change – but think about it… ops$tkyte%ORA11GR2> select count(subobject_name) from t t1 where str = 'T'; … | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | | 0 | SELECT STATEMENT | | 1 | 19 | 296 (0)| 00:00:04 | | 1 | SORT AGGREGATE | | 1 | 19 | | | | 2 | TABLE ACCESS BY INDEX ROWID| T | 292 | 5548 | 296 (0)| 00:00:04 | |* 3 | INDEX RANGE SCAN | T_IDX | 292 | | 4 (0)| 00:00:01 |
6 Small Change – but think about it… ops$tkyte%ORA11GR2> insert into t 2 select 'T', all_objects.* 3 from all_objects 4 where rownum <= 1; 1 row created. ops$tkyte%ORA11GR2> begin 2 dbms_stats.gather_table_stats 3 ( user, 'T', 4 method_opt => 'for all indexed columns size 254', 5 estimate_percent=>100 ); 6 end; 7 / PL/SQL procedure successfully completed.
7 Small Change – but think about it… ops$tkyte%ORA11GR2> select count(subobject_name) from t t2 where str = 'T'; … | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | | 0 | SELECT STATEMENT | | 1 | 19 | 297 (1)| 00:00:04 | | 1 | SORT AGGREGATE | | 1 | 19 | | | |* 2 | TABLE ACCESS FULL| T | 293 | 5567 | 297 (1)| 00:00:04 |
8 The Law of unintended consequences holds that almost all human actions have at least one unintended consequence. Unintended consequences are a common phenomenon, due to the complexity of the world and human over-confidence.
9 What do you have from the past… Online Parameter Changes Online Major Memory Changes Online Schema Evolution Online Index Creates Quiesce Rolling Upgrades Online Disk reconfiguration (ASM) Online Cross Platform Tablespace Transport Full Database Transports And more….
10 What do you need to know? Test To Scale SQL Plan Management The ability to forget and let it go Never Stopping Planning Ahead
12 Database Upgrade Process: Steps 1.Analyze & gather information about environment 2.Determine the upgrade path and choose upgrade method 3.Prepare backup / recovery strategy and clone database to test 4.Establish performance baseline/metrics before upgrade 5.Develop a test plan for database, applications, and reports 6.Test upgraded database with applications and reports 7.Ensure adequate performance by comparing metrics gathered before and after upgrade 8.Remediate regressions, e.g, tune queries, update database parameters, call Support, etc. 9.Go Live! Planning Ahead Forget and let it goASH and AWR Test To Scale SQL Plan Management Never Stopping
14 SQL Plan Management Phase 1 - Capture Run applications to create a baseline –OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES=TRUE Plan History HJ GB Plan Baseline Parse HJ GB Repeated plans will be added to the SQL Plan Baseline during this phase SQL MANAGEMENT BASE Residing in SYSAUX TS. Will occupy max. 10% of SYSAUX. Weekly job will delete plans not used in 53 weeks [default].
15 SQL Plan Management Phase 2 - Selection New Plans are generated (because something changed) But are not trusted –OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES=FALSE New plan will be added to the Plan History but it won't be used unless and until it has been verified Hard Parse NL GB Plan History Plan Baseline HJ GB NL GB NL GB NL HJ GB HJ GB
16 SQL Plan Management Phase 3 – Evolution Plans are verified – by testing the performance of the new plan in the background –Automagically or Manually Plan History Plan Baseline GB NL DBA GB HJ Equal or better plans can be added to the SQL Plan Baseline GB NL Inefficient plan will be kept in the Plan History GB NL Automatic Job
17 Upgrade Scenario Your 9i application is already in 11g for whatever reason Youd like to have query plan stability –Coupled with the opportunity to use better plans – do not want to be frozen The steps would be….
18 SQL Plan Management – Parameterize Plan History Plan Baseline GB NL GB HJ GB NL Repeatable plans will be added to the Plan Baseline upon 2nd execution OPTIMIZER_FEATURES_ENABLE= OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES=TRUE STS GB NL Now: Different plans created with OFE=11 will be added to the Plan History for later verification OPTIMIZER_FEATURES_ENABLE= OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES=FALSE
19 Upgrade Scenario Your application is in 9i Youd like to have query plan stability –Coupled with the opportunity to use better plans – do not want to be frozen You will be changing platforms during the upgrade (not doing a direct upgrade of the database) The steps would be….
20 SQL Plan Management – Outlines STS SS Capture query outlines on the production system Exp/imp outlines to New system exp imp expdp impdp DB-Link... Plan History Plan Baseline GB NL GB HJ GB NL DBMS_SPM.MIGRATE_STORED_OUTLINE 3
21 Upgrade Scenario Same Scenario but your application is in 10g Youd like to have query plan stability –Coupled with the opportunity to use better plans – do not want to be frozen You will be changing platforms during the upgrade (not doing a direct upgrade of the database) The steps would be….
22 SQL Plan Management – Tuning Pack STS Staging Table exp imp expdp impdp DB-Link... STS Plan History Plan Baseline GB NL GB HJ GB NL 10.2 plans will become the SQL Plan Baseline GB NL 3
23 Upgrade Scenario You would like to deploy from development to production.. You would like to deploy at a customer site… And you want to start with a stable set of plans –Using better plans only after they have been verified The steps would be….
24 SQL Plan Management - New Application DBMS_SPM.UNPACK_STGTAB_BASELINE Plan Baseline GB NL GB HJ GB NL Plan Baseline GB NL GB HJ GB NL DBMS_SPM.CREATE_STGTAB_BASELINE DBMS_SPM.PACK_STGTAB_BASELINE Staging Table exp imp expdp Staging Table
26 Database Replay Overview Replay actual production database workload in test environment Identify, analyze and fix potential instabilities before making changes to production Capture Workload in Production –Capture full production workload with real load, timing & concurrency characteristics (9 i, 10 g, 11 g ) –Move the captured workload to test system (11 g ) Replay Workload in Test –Make the desired changes in test system –Replay workload with full production characteristics –Honor commit ordering Analyze & Report –Errors –Data divergence –Performance divergence Analysis & Reporting
27 Supported Changes Changes Supported Database Upgrades, Patches Schema, Parameters RAC nodes, Interconnect OS Platforms, OS Upgrades CPU, Memory Storage Etc. Client … Middle Tier Storage Recording of External Client Requests Changes Unsupported (there are other tools for that)
28 Step 1: Workload Capture File 1 File 2 File n … Production System File System Client … Middle Tier Storage All external client requests captured in binary files System background and internal activity excluded Minimal overhead –Avoids function call when possible –Buffered I/O Independent of client protocol Can capture on 9 i, 10 g, and 11 g and replay on 11g Capture load for interesting time period, e.g., peak workload, month-end processing, etc.
29 Step 2: Process Workload Files File 1 File 2 File n … Metadata Replay Files Test System File 1 File 2 File n … Capture Files Setup test system –Application data should be same as production system as of capture start time –Use RMAN, Snapshot Standby, imp/exp, Data Pump, etc. to create test system –Make change: upgrade db and/or OS, change storage, migrate platforms, etc. Processing transforms captured data into replayable format Once processed, workload can be replayed many times For RAC copy all capture files to single location for processing or use shared file system
30 Step 3: Replay Workload Replays workload preserving timing, concurrency and dependencies of the capture system Replay Client is a special program that consumes processed workload and sends requests to the replay system Clients interpret captured calls into sequence of OCI calls and submit to database For high concurrency workloads, it may be necessary to start multiple clients Test System Replay Clients File 1 File 2 File n … Replay Files Metadata
31 Analysis & Reporting Error Divergence: For each call error divergence is reported –New: Error encountered during replay not seen during capture –Not Found: Error encountered during capture not seen during replay –Mutated: Different error produced in replay than during capture Data Divergence –Replay: Number of rows returned by each call are compared and divergences reported –User: Application level validation scripts Performance Reporting –Capture and Replay Report: Provides high-level performance information –ADDM Report: Provides in-depth performance analysis –AWR, ASH Report: Facilitates comparative or skew analysis
32 Transport SQL SQL Performance Analyzer: Overview …… … Client Capture SQL Middle Tier Storage Oracle DB Re-execute SQL Production Test * No middle & application tier setup required Make Changes / Tuning Regressions If adequate spare cycles available, optionally execute SQL here
33 SQL Performance Analyzer: Workflow ProductionTest Capture SQL (STS) Transport STS Execute SQL Pre-change Execute SQL Post-change Compare Perf. Steps (1) (2) (3) (4) (5) (6) Reiterate (7) No Yes (7) Done? Make Change Production Change / Tuning Deployment Tuned System
34 To: SQL Performance Analyzer: Key Differentiators Automatic regression tuning Low risk, Low cost Automated SQL capture, Negligible overhead Production SQL context From: Manual regression tuning High risk, High cost Manual SQL capture, High overhead Non-production SQL context Automated analysis in minutes Months of manual analysis Complete SQL workload Partial SQL workload
35 Real Application Testing: Tools of the Trade SQL Performance AnalyzerDatabase Replay What is it? Predicts SQL performance deviations before end-users can be impacted, helps assess impact of change on SQL response time Replays real database workload on test system, helps assess impact of change on workload throughput How it works? Executes each SQL, stored in SQL Tuning Set, in isolation using production context and then compares before and after execution plans and run- time statistics Captures workloads and replays it with production characteristics including concurrency, synchronization & dependencies When to use? Unit testing of SQL with the goal to identify the set of SQL statements with improved/regressed performance Comprehensive testing of all sub- systems of the database server using real production workload SQL Dependency Concurrency Speed up/down
36 More information… Hands on Lab: S – Database and Application Testing HOL – Wed: pm – Marriott Golden Gate SPA / Database Replay Demo grounds – Moscone West: 038/039
38 Flashback for Rapid Recovery from Human Error Flashback Database Flashback Data Archive and Transaction Flashback Tables Flashback Query
39 Restore Points Restore point – specifies a jump label –Named Restore Point Similar to a bookmark "Can be" - but no guarantee Will be recorded to the control file –Guaranteed Restore Point Similar to storage snapshots Overrides the FLASHBACK_RETENTION_TARGET Attention: A guarantee restore point can stop the whole database SQL> CREATE RESTORE POINT rpt; SQL> FLASHBACK DATABASE TO RESTORE POINT rpt; SQL> CREATE RESTORE POINT rpt; SQL> FLASHBACK DATABASE TO RESTORE POINT rpt; SQL> CREATE RESTORE POINT grpt GUARANTEE FLASHBACK DATABASE; SQL> FLASHBACK DATABASE TO RESTORE POINT grpt; SQL> CREATE RESTORE POINT grpt GUARANTEE FLASHBACK DATABASE; SQL> FLASHBACK DATABASE TO RESTORE POINT grpt;
41 Rolling Database Upgrades Major Release Upgrades Patch Set Upgrades Cluster Software & Hardware Upgrades Initial SQL Apply Config Clients Redo Version X 1 BA Switchover to B, upgrade A Redo 4 Upgrade X+1 BA Run in mixed mode to test Redo 3 X+1X AB Upgrade node B to X+1 Upgrade Logs Queue X 2 X+1 AB
42 Online Application Upgrade Edition-based redefinition Code changes are installed in the privacy of a new edition Data changes are made safely by writing only to new columns or new tables not seen by the old edition An editioning view exposes a different projection of a table into each edition to allow each to see just its own columns A crossedition trigger propagates data changes made by the old edition into the new editions columns, or (in hot-rollover) vice-versa
47 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracles products remains at the sole discretion of Oracle.
51 End-to-End Upgrade Lifecycle My Oracle Support EM Grid Control Integrated solution can be leveraged throughout full lifecycle Preparation My Oracle Support Upgrade Plan* Sub-Phase *Will be integrated in upcoming release Upgrade Post-Upgrade Upgrade Plan Upgrade Testing Rehearsal Production Upgrade Monitor & Maintain Enterprise Manager – Grid Control Real Application Testing ProvisioningMonitoring Phase