Best Practices for Oracle Exadata and the Oracle Optimizer

Edgar Alejandro Villegas
Edgar Alejandro VillegasAudit Mgr en Citigroup - Banamex
1 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Best Practices for Oracle Exadata and the
Oracle Optimizer
Maria Colgan, Product Manager, Oracle Optimizer
Levi Norman, Product Marketing Director, Oracle Exadata
2 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
• Fastest Data Warehouse & OLTP
• Best Cost/Performance Data Warehouse & OLTP
• Optimized Hardware
• Software Breakthroughs
• Scales from ¼ Rack to 8 Full Racks
Oracle Exadata Database Machine
Extreme performance. Lowest cost.
3 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Hybrid Columnar Compression Smart Flash
Cache
Smart Scan Queries
Up to
50X10X
+ ++
Oracle Exadata Innovation
Storage Server Software
4 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Standardized and Simple to Deploy
Delivered Ready-to-Run
• Oracle Exadata Database Machines Are The Same
Thoroughly Tested & Highly Supportable
Identical Configuration Used by Oracle Engineering
• Run Existing OLTP and DW Applications
30 Years of Oracle DB Capabilities
No Exadata Certification Required
• Leverage Oracle Ecosystem
Skills, Knowledge Base, People, & Partners
5 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Oracle Exadata in the Market
Rapid Adoption Across Geographies and Industries
6 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Agenda
• How to gather statistics
• Additional types of statistics
• When to gather statistics
• Statistics gathering performance
7 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• Analyze command is deprecated
– Only good for row chaining
• The GATHER_*_STATS procedures take 13 parameters
– Ideally you should only set the first 2-3 parameters
• SCHEMA NAME
• TABLE NAME
• PARTITION NAME
Use DBMS_STATS Package
8 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
Use DBMS_STATS Package
• Your gather statistics commands should be this simple
9 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• Can change the default value at the global level
– DBMS_STATS.SET_GLOBAL_PREF
– This changes the value for all existing objects and any new objects
• Can change the default value at the table level
– DBMS_STATS.SET_TABLE_PREF
Changing Default Parameter Values for Gathering Statistics
10 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• CASCADE
• CONCURRENT
• DEGREE
• ESTIMATE_PERCENT
• METHOD_OPT
• NO_INVALIDATE
• GRANULARITY
• PUBLISH
• INCREMENTAL
• STALE_PERCENT
• AUTOSTATS_TARGET
(SET_GLOBAL_PREFS only)
Changing Default Parameter Values for Gathering Statistics
•The following parameter defaults can be changed:
11 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• # 1 most commonly asked question
– “What sample size should I use?”
• Controlled by ESTIMATE_PRECENT parameter
• From 11g onwards use default value AUTO_SAMPLE_SIZE
– New hash based algorithm
– Speed of a 10% sample
– Accuracy of 100% sample
Sample Size
12 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• Speed of a 10% sample
• Accuracy of 100% sample
Sample Size
Run Num AUTO_SAMPLE_SIZE 10% SAMPLE 100% SAMPLE
1 00:02:21.86 00:02:31.56 00:08:24.10
2 00:02:38.11 00:02:49.49 00:07:38.25
3 00:02:39.31 00:02:38.55 00:07:37.83
Column
Name
NDV with
AUTO_SAMPLE_SIZE
NDV with 10%
SAMPLE
NDV with 100%
SAMPLE
C1 59852 31464 60351
C2 1270912 608544 1289760
C3 768384 359424 777942
13 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Agenda
• How to gather statistics
• Additional types of statistics
• When to gather statistics
• Statistics gathering performance
14 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Additional Types of Statistics
• Two types of Extended Statistics
– Column groups statistics
• Column group statistics useful when multiple column from the same
table are used in where clause predicates
– Expression statistics
• Expression statistics useful when a column is used as part of a
complex expression in where clause predicate
• Can be manually or automatically created
• Automatically maintained when statistics are gathered
When Table and Column Statistics are not enough
15 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics –
SELECT * FROM vehicles
WHERE model = ‘530xi’
AND color = 'RED’;
Column Group Statistics
SLIVERC320MERC
REDSLKMERC
RED911PORSCHE
SILVER530xiBMW
BLACK530xiBMW
RED530xiBMW
ColorModelMake
Vehicles Table
Cardinality #ROWS * 1 * 1 12 * 1 * 1 1
NDV c1 NDV c2 4 3
= =>
MAKE MODEL COLOR
BMW 530xi RED
=
16 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
SELECT * FROM vehicles WHERE model = ‘530xi’
AND make = ‘BMW’;
Column Group Statistics
SLIVERC320MERC
REDSLKMERC
RED911PORSCHE
SILVER530xiBMW
BLACK530xiBMW
RED530xiBMW
ColorModelMake
Vehicles Table
Cardinality #ROWS * 1 * 1 12 * 1 * 1 1
NDV c1 NDV c2 4 3
= => =
MAKE MODEL COLOR
BMW 530xi RED
BMW 530xi BLACK
BMW 530xi SLIVER
17 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
• Create extended statistics on the Model & Make columns using
DBMS_STATS.CREATE_EXTENDED_STATS
Column Group Statistics
New Column
with system
generated
name
18 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
SELECT * FROM vehicles WHERE model = ‘530xi’
AND make = ‘BMW’;
Column Group Statistics
SLIVERC320MERC
REDSLKMERC
RED911PORSCHE
SILVER530xiBMW
BLACK530xiBMW
RED530xiBMW
ColorModelMake
Vehicles Table
Cardinality calculated using column group statistics
MAKE MODEL COLOR
BMW 530xi RED
BMW 530xi BLACK
BMW 530xi SLIVER
19 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
SELECT *
FROM Customers
WHERE UPPER(CUST_LAST_NAME) = ‘SMITH’;
• Optimizer doesn’t know how function affects values in the column
• Optimizer guesses the cardinality to be 1% of rows
SELECT count(*) FROM customers;
COUNT(*)
55500
Expression Statistics
Cardinality estimate
is 1% of the rows
20 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
Expression Statistics
New Column with
system generated
name
21 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
1. Start column group usage capture
Automatic Column Group Detection
• Oracle can automatically
detect column group
candidates based on an STS
or by monitoring a workload
• Uses DBMS_STATS procedure
SEED_COL_USAGE
• If the first two arguments are
set to NULL the current
workload will be monitored
• The third argument is the
time limit in seconds
22 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
2. Run your workload
Automatic Column Group Detection
• Actual number of rows
returned by this query is 932
• Optimizer under-estimates
the cardinality as it assumes
each where clause predicate
will reduce number of rows
returned
• Optimizer is not aware of
real-world relations between
city, state, & country
23 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
2. Run your workload
Automatic Column Group Detection
• Actual number of rows
returned by this query is 145
• Optimizer over-estimates the
cardinality as it is not aware
of the real-world relations
between state & country
24 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
3. Check column usage information recorded for our table
Automatic Column Group Detection
COLUMN USAGE REPORT FOR SH.CUSTOMERS
1. COUNTRY_ID : EQ
2. CUST_CITY : EQ
3. CUST_STATE_PROVINCE : EQ
4. (CUST_CITY, CUST_STATE_PROVINCE, COUNTRY_ID) : FILTER
5. (CUST_STATE_PROVINCE, COUNTRY_ID) : GROUP_BY
SELECT dbms_stats.report_col_usage(user, 'customers') FROM dual;
EQ means column was used in
equality predicate in query 1
GROUP_BY columns used in group
by expression in query 2
FILTER means columns used together
as filter predicates rather than join
etc. Comes from query 1
25 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Enhancements
4. Create extended stats for customers based on usage
EXTENSIONS FOR SH.CUSTOMERS
1. (CUST_CITY, CUST_STATE_PROVINCE, COUNTRY_ID):
SYS_STUMZ$C3AIHLPBROI#SKA58H_N created
2. (CUST_STATE_PROVINCE, COUNTRY_ID) :
SYS_STU#S#WF25Z#QAHIHE#MOFFMM_ created
Column group statistics will now be automatically maintained
every time you gather statistics on this table
Automatic Column Group Detection
SELECT dbms_stats.create_extended_stats(user, 'customers')
FROM dual;
26 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Agenda
• How to gather statistics
• Additional types of statistics
• When to gather statistics
• Statistics gathering performance
27 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
• Oracle automatically collect statistics for all database
objects, which are missing or have stale statistics
• AutoTask run during a predefined maintenance window
• Internally prioritizes the database objects
– Both user schema and dictionary tables
– Objects that need updated statistics most are processed first
• Controlled by DBMS_AUTO_TASK_ADMIN package or via
Enterprise Manager
Automatic Statistics Gathering
28 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
Automatic Statistics Gathering in Enterprise Manager
• Enterprise Manager allows
you to control all aspects of
the automatic statistics
gathering task
• The statistics gathering task
can be set to only run during
certain maintenance windows
29 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
• If you want to disable auto job for application schema
leaving it on for Oracle dictionary tables
• The scope of the auto job is controlled by the global
preference AUTOSTATS_TARGET
• Possible values are
– AUTO Oracle decides what tables need statistics (Default)
– All Statistics gathered for all tables in the system
– ORACLE Statistics gathered for only the dictionary tables
Automatic Statistics Gathering
30 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
• Need to determine when to manually gather statistics
• After large data loads
– Add statistics gather to the ETL or ELT process
• If trickle loading or online transactions
– Manually determine when statistics are stale and trigger gather
– USER_TAB_MODIFICATIONS lists # INSERTS, UPDATES, and
DELETES that occurs on each table
• If trickle loading into a partition table
– Used dbms.stats.copy_table_stats()
If the Auto Statistics Gather Job is not suitable
31 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
If the Auto Statistics Gather Job is not suitable
Partitioned Table
Partition 1
June 1st 2012
:
Partition 4
June 4th 2012
Partition 5
June 5th 2012
DBMS_STATS.COPY_TABLE_STATS();
• Copies statistic from source
partition to new partition
• Adjusts min & max values for
partition column
• Both partition & global statistics
• Copies statistics of the
dependent objects
• Columns, local (partitioned)
indexes* etc.
• Does not update global indexes
32 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Agenda
• How to gather statistics
• Additional types of statistics
• When to gather statistics
• Statistics gathering performance
33 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
• Three parallel options to speed up statistics gathering
– Inter object using parallel execution
– Intra object using concurrency
– The combination of Inter and Intra object
• Incremental statistics gathering for partitioned tables
How to speed up statistics gathering
34 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
• Controlled by GATHER_*_STATS parameter DEGREE
• Default is to use parallel degree specified on object
• If set to AUTO Oracle decide parallel degree used
• Works on one object at a time
Inter Object using parallel execution
35 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
Inter Object using parallel execution
P4
P3
P2
P1
Customers
Table
• Customers table has a
degree of parallelism of 4
• 4 parallel server processes
will be used to gather stats
36 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
Inter Object using parallel execution
Exec DBMS_STATS.GATHER_TABLE_STATS(‘SH’,’SALES);
Sales Table
Partition 1
May 18th 2012
Partition 2
May 19th 2012
Partition 3
May 20th 2012
• Each individual partition will
have statistics gathered one
after the other
• The statistics gather
procedure on each individual
partition operates in parallel
BUT the statistics gathering
procedures won’t happen
concurrently
P4
P3
P2
P1
37 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
• Gather statistics on multiple objects at the same time
• Controlled by DBMS_STATS preference, CONCURRENT
• Uses Database Scheduler and Advanced Queuing
• Number of concurrent gather operations controlled by
job_queue_processes parameter
• Each gather operation can still operate in parallel
Intra Object
38 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
Intra Object Statistics Gathering for SH Schema
Exec DBMS_STATS.GATHER_SCHEMA_STATS(‘SH’);
• A statistics gathering job is
created for each table and
partition in the schema
• Level 1 contain statistics
gathering jobs for all non-
partitioned tables and a
coordinating job for each
partitioned table
• Level 2 contain statistics
gathering jobs for each
partition in the partitioned
tables
39 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
Inter Object using concurrent parallel execution
Exec DBMS_STATS.GATHER_TABLE_STATS(‘SH’,’SALES);
Sales Table
Partition 1
May 18th 2012
Partition 2
May 19th 2012
Partition 3
May 20th 2012
Job1
Job2
Job3
• The number of concurrent
gathers is controlled by the
parameter
job_queue_processes
• In this example it is set to 3
• Remember each concurrent
gather operates in parallel
• In this example parallel
degree is 4
40 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
• Typically gathering statistics after a bulk loading data
into one partition would causes a full scan of all
partitions to gather global table statistics
– Extremely time consuming
• With Incremental Statistic gather statistics for touched
partition(s) ONLY
– Table (global) statistics are accurately built from partition statistics
– Reduce statistics gathering time considerably
– Controlled by INCREMENTAL preference
Incremental Statistics Gathering for Partitioned tables
41 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Incremental Statistics Gathering
Sales Table
May 22nd 2011
May 23rd 2011
May 18th 2011
May 19th 2011
May 20th 2011
May 21st 2011
Sysaux Tablespace
1. Partition level stats are
gathered & synopsis created
2. Global stats generated by aggregating
partition level statistics and synopsis
42 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Incremental Statistics Gathering
Sales Table
May 22nd 2011
May 23rd 2011
May 18th 2011
May 19th 2011
May 20th 2011
May 21st 2011
Sysaux Tablespace
May 24th 2011
4. Gather partition
statistics for new partition
5. Retrieve synopsis for
each of the other partitions
from Sysaux
6. Global stats generated by aggregating
the original partition synopsis with the
new one
3. A new partition is added to the table & Data is Loaded
43 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
More Information
• Accompanying Two Part White Paper Series
– Understanding Optimizer Statistics
– Best Practices for Managing Optimizer Statistics
• Optimizer Blog
– http://blogs.oracle.com/optimizer
• Oracle.com
– http://www.oracle.com/technetwork/database/focus-areas/bi-
datawarehousing/dbbi-tech-info-optmztn-092214.html
• Oracle Exadata Database Machine
– http://www.oracle.com/exadata
44 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
1 de 44

Recomendados

Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo... por
 Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo... Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...
Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...Enkitec
13.5K vistas57 diapositivas
Exadata Performance Optimization por
Exadata Performance OptimizationExadata Performance Optimization
Exadata Performance OptimizationEnkitec
1.9K vistas12 diapositivas
Parallel Query on Exadata por
Parallel Query on ExadataParallel Query on Exadata
Parallel Query on ExadataEnkitec
3.7K vistas38 diapositivas
Extreme Replication - Performance Tuning Oracle GoldenGate por
Extreme Replication - Performance Tuning Oracle GoldenGateExtreme Replication - Performance Tuning Oracle GoldenGate
Extreme Replication - Performance Tuning Oracle GoldenGateBobby Curtis
9.8K vistas60 diapositivas
Oracle GoldenGate 21c New Features and Best Practices por
Oracle GoldenGate 21c New Features and Best PracticesOracle GoldenGate 21c New Features and Best Practices
Oracle GoldenGate 21c New Features and Best PracticesBobby Curtis
2.1K vistas45 diapositivas
Exadata and the Oracle Optimizer: The Untold Story por
Exadata and the Oracle Optimizer: The Untold StoryExadata and the Oracle Optimizer: The Untold Story
Exadata and the Oracle Optimizer: The Untold StoryEnkitec
6.6K vistas45 diapositivas

Más contenido relacionado

La actualidad más candente

Oracle AHF Insights 23c: Deeper Diagnostic Insights for your Oracle Database por
Oracle AHF Insights 23c: Deeper Diagnostic Insights for your Oracle DatabaseOracle AHF Insights 23c: Deeper Diagnostic Insights for your Oracle Database
Oracle AHF Insights 23c: Deeper Diagnostic Insights for your Oracle DatabaseSandesh Rao
226 vistas46 diapositivas
Oracle RAC 19c and Later - Best Practices #OOWLON por
Oracle RAC 19c and Later - Best Practices #OOWLONOracle RAC 19c and Later - Best Practices #OOWLON
Oracle RAC 19c and Later - Best Practices #OOWLONMarkus Michalewicz
2.9K vistas32 diapositivas
Ash architecture and advanced usage rmoug2014 por
Ash architecture and advanced usage rmoug2014Ash architecture and advanced usage rmoug2014
Ash architecture and advanced usage rmoug2014John Beresniewicz
16.8K vistas67 diapositivas
Enable GoldenGate Monitoring with OEM 12c/JAgent por
Enable GoldenGate Monitoring with OEM 12c/JAgentEnable GoldenGate Monitoring with OEM 12c/JAgent
Enable GoldenGate Monitoring with OEM 12c/JAgentBobby Curtis
4.4K vistas29 diapositivas
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud por
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the CloudOracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the CloudMarkus Michalewicz
2.7K vistas28 diapositivas
Understanding oracle rac internals part 1 - slides por
Understanding oracle rac internals   part 1 - slidesUnderstanding oracle rac internals   part 1 - slides
Understanding oracle rac internals part 1 - slidesMohamed Farouk
4.3K vistas48 diapositivas

La actualidad más candente(20)

Oracle AHF Insights 23c: Deeper Diagnostic Insights for your Oracle Database por Sandesh Rao
Oracle AHF Insights 23c: Deeper Diagnostic Insights for your Oracle DatabaseOracle AHF Insights 23c: Deeper Diagnostic Insights for your Oracle Database
Oracle AHF Insights 23c: Deeper Diagnostic Insights for your Oracle Database
Sandesh Rao226 vistas
Oracle RAC 19c and Later - Best Practices #OOWLON por Markus Michalewicz
Oracle RAC 19c and Later - Best Practices #OOWLONOracle RAC 19c and Later - Best Practices #OOWLON
Oracle RAC 19c and Later - Best Practices #OOWLON
Markus Michalewicz2.9K vistas
Ash architecture and advanced usage rmoug2014 por John Beresniewicz
Ash architecture and advanced usage rmoug2014Ash architecture and advanced usage rmoug2014
Ash architecture and advanced usage rmoug2014
John Beresniewicz16.8K vistas
Enable GoldenGate Monitoring with OEM 12c/JAgent por Bobby Curtis
Enable GoldenGate Monitoring with OEM 12c/JAgentEnable GoldenGate Monitoring with OEM 12c/JAgent
Enable GoldenGate Monitoring with OEM 12c/JAgent
Bobby Curtis4.4K vistas
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud por Markus Michalewicz
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the CloudOracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud
Oracle RAC Virtualized - In VMs, in Containers, On-premises, and in the Cloud
Markus Michalewicz2.7K vistas
Understanding oracle rac internals part 1 - slides por Mohamed Farouk
Understanding oracle rac internals   part 1 - slidesUnderstanding oracle rac internals   part 1 - slides
Understanding oracle rac internals part 1 - slides
Mohamed Farouk4.3K vistas
Oracle RAC 19c - the Basis for the Autonomous Database por Markus Michalewicz
Oracle RAC 19c - the Basis for the Autonomous DatabaseOracle RAC 19c - the Basis for the Autonomous Database
Oracle RAC 19c - the Basis for the Autonomous Database
Markus Michalewicz11.5K vistas
New Generation Oracle RAC Performance por Anil Nair
New Generation Oracle RAC PerformanceNew Generation Oracle RAC Performance
New Generation Oracle RAC Performance
Anil Nair2.2K vistas
Migration to Oracle Multitenant por Jitendra Singh
Migration to Oracle MultitenantMigration to Oracle Multitenant
Migration to Oracle Multitenant
Jitendra Singh398 vistas
監査ログをもっと身近に!〜統合監査のすすめ〜 por Michitoshi Yoshida
監査ログをもっと身近に!〜統合監査のすすめ〜監査ログをもっと身近に!〜統合監査のすすめ〜
監査ログをもっと身近に!〜統合監査のすすめ〜
Michitoshi Yoshida2.4K vistas
Stop the Chaos! Get Real Oracle Performance by Query Tuning Part 1 por SolarWinds
Stop the Chaos! Get Real Oracle Performance by Query Tuning Part 1Stop the Chaos! Get Real Oracle Performance by Query Tuning Part 1
Stop the Chaos! Get Real Oracle Performance by Query Tuning Part 1
SolarWinds1.5K vistas
Oracle RAC Internals - The Cache Fusion Edition por Markus Michalewicz
Oracle RAC Internals - The Cache Fusion EditionOracle RAC Internals - The Cache Fusion Edition
Oracle RAC Internals - The Cache Fusion Edition
Markus Michalewicz11.9K vistas
Exadata master series_asm_2020 por Anil Nair
Exadata master series_asm_2020Exadata master series_asm_2020
Exadata master series_asm_2020
Anil Nair762 vistas
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour... por Sandesh Rao
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Sandesh Rao3.4K vistas
Anil nair rac_internals_sangam_2016 por Anil Nair
Anil nair rac_internals_sangam_2016Anil nair rac_internals_sangam_2016
Anil nair rac_internals_sangam_2016
Anil Nair1.4K vistas
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力 por オラクルエンジニア通信
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
MAA Best Practices for Oracle Database 19c por Markus Michalewicz
MAA Best Practices for Oracle Database 19cMAA Best Practices for Oracle Database 19c
MAA Best Practices for Oracle Database 19c
Markus Michalewicz3.7K vistas
All of the Performance Tuning Features in Oracle SQL Developer por Jeff Smith
All of the Performance Tuning Features in Oracle SQL DeveloperAll of the Performance Tuning Features in Oracle SQL Developer
All of the Performance Tuning Features in Oracle SQL Developer
Jeff Smith17.9K vistas
Hybrid Data Guard to Cloud GEN2 ExaCS.pdf por ALI ANWAR, OCP®
Hybrid Data Guard to Cloud GEN2 ExaCS.pdfHybrid Data Guard to Cloud GEN2 ExaCS.pdf
Hybrid Data Guard to Cloud GEN2 ExaCS.pdf
ALI ANWAR, OCP®139 vistas

Destacado

HIgh Performance Messaging App Development with Oracle Advance Queuing por
HIgh Performance Messaging App Development with Oracle Advance QueuingHIgh Performance Messaging App Development with Oracle Advance Queuing
HIgh Performance Messaging App Development with Oracle Advance QueuingJeff Jacobs
3.2K vistas63 diapositivas
Best Practices – Extreme Performance with Data Warehousing on Oracle Databa... por
Best Practices –  Extreme Performance with Data Warehousing  on Oracle Databa...Best Practices –  Extreme Performance with Data Warehousing  on Oracle Databa...
Best Practices – Extreme Performance with Data Warehousing on Oracle Databa...Edgar Alejandro Villegas
1.2K vistas47 diapositivas
Oracle Exadata Performance: Latest Improvements and Less Known Features por
Oracle Exadata Performance: Latest Improvements and Less Known FeaturesOracle Exadata Performance: Latest Improvements and Less Known Features
Oracle Exadata Performance: Latest Improvements and Less Known FeaturesTanel Poder
31.7K vistas26 diapositivas
RMAN in 12c: The Next Generation (WP) por
RMAN in 12c: The Next Generation (WP)RMAN in 12c: The Next Generation (WP)
RMAN in 12c: The Next Generation (WP)Gustavo Rene Antunez
2.4K vistas25 diapositivas
Oracle Database Appliance X5-2 por
Oracle Database Appliance X5-2 Oracle Database Appliance X5-2
Oracle Database Appliance X5-2 Yasir El Nimr
1.3K vistas44 diapositivas
Oracle Database Appliance Workshop por
Oracle Database Appliance WorkshopOracle Database Appliance Workshop
Oracle Database Appliance WorkshopMarketingArrowECS_CZ
2.6K vistas58 diapositivas

Destacado(7)

HIgh Performance Messaging App Development with Oracle Advance Queuing por Jeff Jacobs
HIgh Performance Messaging App Development with Oracle Advance QueuingHIgh Performance Messaging App Development with Oracle Advance Queuing
HIgh Performance Messaging App Development with Oracle Advance Queuing
Jeff Jacobs3.2K vistas
Best Practices – Extreme Performance with Data Warehousing on Oracle Databa... por Edgar Alejandro Villegas
Best Practices –  Extreme Performance with Data Warehousing  on Oracle Databa...Best Practices –  Extreme Performance with Data Warehousing  on Oracle Databa...
Best Practices – Extreme Performance with Data Warehousing on Oracle Databa...
Oracle Exadata Performance: Latest Improvements and Less Known Features por Tanel Poder
Oracle Exadata Performance: Latest Improvements and Less Known FeaturesOracle Exadata Performance: Latest Improvements and Less Known Features
Oracle Exadata Performance: Latest Improvements and Less Known Features
Tanel Poder31.7K vistas
Oracle Database Appliance X5-2 por Yasir El Nimr
Oracle Database Appliance X5-2 Oracle Database Appliance X5-2
Oracle Database Appliance X5-2
Yasir El Nimr1.3K vistas

Similar a Best Practices for Oracle Exadata and the Oracle Optimizer

Part2 Best Practices for Managing Optimizer Statistics por
Part2 Best Practices for Managing Optimizer StatisticsPart2 Best Practices for Managing Optimizer Statistics
Part2 Best Practices for Managing Optimizer StatisticsMaria Colgan
6K vistas107 diapositivas
Presentación Oracle Database Migración consideraciones 10g/11g/12c por
Presentación Oracle Database Migración consideraciones 10g/11g/12cPresentación Oracle Database Migración consideraciones 10g/11g/12c
Presentación Oracle Database Migración consideraciones 10g/11g/12cRonald Francisco Vargas Quesada
5.6K vistas55 diapositivas
Oracle Query Optimizer - An Introduction por
Oracle Query Optimizer - An IntroductionOracle Query Optimizer - An Introduction
Oracle Query Optimizer - An Introductionadryanbub
1.6K vistas22 diapositivas
Improve speed & performance of informix 11.xx part 1 por
Improve speed & performance of informix 11.xx   part 1Improve speed & performance of informix 11.xx   part 1
Improve speed & performance of informix 11.xx part 1am_prasanna
765 vistas65 diapositivas
Beginners guide to_optimizer por
Beginners guide to_optimizerBeginners guide to_optimizer
Beginners guide to_optimizerMaria Colgan
431 vistas47 diapositivas
How to analyze and tune sql queries for better performance por
How to analyze and tune sql queries for better performanceHow to analyze and tune sql queries for better performance
How to analyze and tune sql queries for better performanceoysteing
294 vistas70 diapositivas

Similar a Best Practices for Oracle Exadata and the Oracle Optimizer(20)

Part2 Best Practices for Managing Optimizer Statistics por Maria Colgan
Part2 Best Practices for Managing Optimizer StatisticsPart2 Best Practices for Managing Optimizer Statistics
Part2 Best Practices for Managing Optimizer Statistics
Maria Colgan6K vistas
Oracle Query Optimizer - An Introduction por adryanbub
Oracle Query Optimizer - An IntroductionOracle Query Optimizer - An Introduction
Oracle Query Optimizer - An Introduction
adryanbub1.6K vistas
Improve speed & performance of informix 11.xx part 1 por am_prasanna
Improve speed & performance of informix 11.xx   part 1Improve speed & performance of informix 11.xx   part 1
Improve speed & performance of informix 11.xx part 1
am_prasanna765 vistas
Beginners guide to_optimizer por Maria Colgan
Beginners guide to_optimizerBeginners guide to_optimizer
Beginners guide to_optimizer
Maria Colgan431 vistas
How to analyze and tune sql queries for better performance por oysteing
How to analyze and tune sql queries for better performanceHow to analyze and tune sql queries for better performance
How to analyze and tune sql queries for better performance
oysteing294 vistas
Oracle Data Redaction por Alex Zaballa
Oracle Data RedactionOracle Data Redaction
Oracle Data Redaction
Alex Zaballa437 vistas
Machine Learning and AI at Oracle por Sandesh Rao
Machine Learning and AI at OracleMachine Learning and AI at Oracle
Machine Learning and AI at Oracle
Sandesh Rao514 vistas
Optimizing Alert Monitoring with Oracle Enterprise Manager por Datavail
Optimizing Alert Monitoring with Oracle Enterprise ManagerOptimizing Alert Monitoring with Oracle Enterprise Manager
Optimizing Alert Monitoring with Oracle Enterprise Manager
Datavail9.1K vistas
New Performance Benchmarks: Apache Impala (incubating) Leads Traditional Anal... por Cloudera, Inc.
New Performance Benchmarks: Apache Impala (incubating) Leads Traditional Anal...New Performance Benchmarks: Apache Impala (incubating) Leads Traditional Anal...
New Performance Benchmarks: Apache Impala (incubating) Leads Traditional Anal...
Cloudera, Inc.3.4K vistas
Explain the explain_plan por Maria Colgan
Explain the explain_planExplain the explain_plan
Explain the explain_plan
Maria Colgan1.7K vistas
MySQL: Know more about open Source Database por Mahesh Salaria
MySQL: Know more about open Source DatabaseMySQL: Know more about open Source Database
MySQL: Know more about open Source Database
Mahesh Salaria1.1K vistas
Unifying your data management with Hadoop por Jayant Shekhar
Unifying your data management with HadoopUnifying your data management with Hadoop
Unifying your data management with Hadoop
Jayant Shekhar1.5K vistas
Nose Dive into Apache Spark ML por Ahmet Bulut
Nose Dive into Apache Spark MLNose Dive into Apache Spark ML
Nose Dive into Apache Spark ML
Ahmet Bulut110 vistas
Whats New on SAP HANA SPS 11 Core Database Capabilities por SAP Technology
Whats New on SAP HANA SPS 11 Core Database CapabilitiesWhats New on SAP HANA SPS 11 Core Database Capabilities
Whats New on SAP HANA SPS 11 Core Database Capabilities
SAP Technology3.7K vistas
Sql and PL/SQL Best Practices I por Carlos Oliveira
Sql and PL/SQL Best Practices ISql and PL/SQL Best Practices I
Sql and PL/SQL Best Practices I
Carlos Oliveira2.3K vistas
How to Analyze and Tune MySQL Queries for Better Performance por oysteing
How to Analyze and Tune MySQL Queries for Better PerformanceHow to Analyze and Tune MySQL Queries for Better Performance
How to Analyze and Tune MySQL Queries for Better Performance
oysteing1.9K vistas
Data Redaction - OTN TOUR LA 2015 por Alex Zaballa
Data Redaction - OTN TOUR LA 2015 Data Redaction - OTN TOUR LA 2015
Data Redaction - OTN TOUR LA 2015
Alex Zaballa721 vistas
Getting optimal performance from oracle e business suite por aioughydchapter
Getting optimal performance from oracle e business suiteGetting optimal performance from oracle e business suite
Getting optimal performance from oracle e business suite
aioughydchapter1.6K vistas

Más de Edgar Alejandro Villegas

What's New in Predictive Analytics IBM SPSS - Apr 2016 por
What's New in Predictive Analytics IBM SPSS - Apr 2016What's New in Predictive Analytics IBM SPSS - Apr 2016
What's New in Predictive Analytics IBM SPSS - Apr 2016Edgar Alejandro Villegas
486 vistas37 diapositivas
Oracle big data discovery 994294 por
Oracle big data discovery   994294Oracle big data discovery   994294
Oracle big data discovery 994294Edgar Alejandro Villegas
752 vistas23 diapositivas
Actian Ingres10.2 Datasheet por
Actian Ingres10.2 DatasheetActian Ingres10.2 Datasheet
Actian Ingres10.2 DatasheetEdgar Alejandro Villegas
478 vistas2 diapositivas
Actian Matrix Datasheet por
Actian Matrix DatasheetActian Matrix Datasheet
Actian Matrix DatasheetEdgar Alejandro Villegas
270 vistas2 diapositivas
Actian Matrix Whitepaper por
 Actian Matrix Whitepaper Actian Matrix Whitepaper
Actian Matrix WhitepaperEdgar Alejandro Villegas
451 vistas28 diapositivas
Actian Vector Whitepaper por
 Actian Vector Whitepaper Actian Vector Whitepaper
Actian Vector WhitepaperEdgar Alejandro Villegas
650 vistas12 diapositivas

Más de Edgar Alejandro Villegas(20)

SQL – The Natural Language for Analysis - Oracle - Whitepaper - 2431343 por Edgar Alejandro Villegas
SQL – The Natural Language for Analysis - Oracle - Whitepaper - 2431343SQL – The Natural Language for Analysis - Oracle - Whitepaper - 2431343
SQL – The Natural Language for Analysis - Oracle - Whitepaper - 2431343
Fast and Easy Analytics: - Tableau - Data Base Trends - Dbt06122013slides por Edgar Alejandro Villegas
Fast and Easy Analytics: - Tableau - Data Base Trends - Dbt06122013slidesFast and Easy Analytics: - Tableau - Data Base Trends - Dbt06122013slides
Fast and Easy Analytics: - Tableau - Data Base Trends - Dbt06122013slides
Analytics Trends 20145 - Deloitte - us-da-analytics-analytics-trends-2015 por Edgar Alejandro Villegas
Analytics Trends 20145 -  Deloitte - us-da-analytics-analytics-trends-2015Analytics Trends 20145 -  Deloitte - us-da-analytics-analytics-trends-2015
Analytics Trends 20145 - Deloitte - us-da-analytics-analytics-trends-2015

Último

[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx por
[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx
[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptxDataScienceConferenc1
11 vistas16 diapositivas
Customer Data Cleansing Project.pptx por
Customer Data Cleansing Project.pptxCustomer Data Cleansing Project.pptx
Customer Data Cleansing Project.pptxNat O
6 vistas23 diapositivas
Data Journeys Hard Talk workshop final.pptx por
Data Journeys Hard Talk workshop final.pptxData Journeys Hard Talk workshop final.pptx
Data Journeys Hard Talk workshop final.pptxinfo828217
11 vistas18 diapositivas
[DSC Europe 23][AI:CSI] Dragan Pleskonjic - AI Impact on Cybersecurity and P... por
[DSC Europe 23][AI:CSI]  Dragan Pleskonjic - AI Impact on Cybersecurity and P...[DSC Europe 23][AI:CSI]  Dragan Pleskonjic - AI Impact on Cybersecurity and P...
[DSC Europe 23][AI:CSI] Dragan Pleskonjic - AI Impact on Cybersecurity and P...DataScienceConferenc1
8 vistas36 diapositivas
PRIVACY AWRE PERSONAL DATA STORAGE por
PRIVACY AWRE PERSONAL DATA STORAGEPRIVACY AWRE PERSONAL DATA STORAGE
PRIVACY AWRE PERSONAL DATA STORAGEantony420421
7 vistas56 diapositivas
Product Research sample.pdf por
Product Research sample.pdfProduct Research sample.pdf
Product Research sample.pdfAllenSingson
33 vistas29 diapositivas

Último(20)

[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx por DataScienceConferenc1
[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx
[DSC Europe 23] Stefan Mrsic_Goran Savic - Evolving Technology Excellence.pptx
Customer Data Cleansing Project.pptx por Nat O
Customer Data Cleansing Project.pptxCustomer Data Cleansing Project.pptx
Customer Data Cleansing Project.pptx
Nat O6 vistas
Data Journeys Hard Talk workshop final.pptx por info828217
Data Journeys Hard Talk workshop final.pptxData Journeys Hard Talk workshop final.pptx
Data Journeys Hard Talk workshop final.pptx
info82821711 vistas
[DSC Europe 23][AI:CSI] Dragan Pleskonjic - AI Impact on Cybersecurity and P... por DataScienceConferenc1
[DSC Europe 23][AI:CSI]  Dragan Pleskonjic - AI Impact on Cybersecurity and P...[DSC Europe 23][AI:CSI]  Dragan Pleskonjic - AI Impact on Cybersecurity and P...
[DSC Europe 23][AI:CSI] Dragan Pleskonjic - AI Impact on Cybersecurity and P...
PRIVACY AWRE PERSONAL DATA STORAGE por antony420421
PRIVACY AWRE PERSONAL DATA STORAGEPRIVACY AWRE PERSONAL DATA STORAGE
PRIVACY AWRE PERSONAL DATA STORAGE
antony4204217 vistas
Product Research sample.pdf por AllenSingson
Product Research sample.pdfProduct Research sample.pdf
Product Research sample.pdf
AllenSingson33 vistas
6498-Butun_Beyinli_Cocuq-Daniel_J.Siegel-Tina_Payne_Bryson-2011-259s.pdf por 10urkyr34
6498-Butun_Beyinli_Cocuq-Daniel_J.Siegel-Tina_Payne_Bryson-2011-259s.pdf6498-Butun_Beyinli_Cocuq-Daniel_J.Siegel-Tina_Payne_Bryson-2011-259s.pdf
6498-Butun_Beyinli_Cocuq-Daniel_J.Siegel-Tina_Payne_Bryson-2011-259s.pdf
10urkyr347 vistas
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init... por DataScienceConferenc1
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...
[DSC Europe 23][Cryptica] Martin_Summer_Digital_central_bank_money_Ideas_init...
OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an... por StatsCommunications
OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an...OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an...
OECD-Persol Holdings Workshop on Advancing Employee Well-being in Business an...
CRM stick or twist workshop por info828217
CRM stick or twist workshopCRM stick or twist workshop
CRM stick or twist workshop
info82821714 vistas
Data about the sector workshop por info828217
Data about the sector workshopData about the sector workshop
Data about the sector workshop
info82821729 vistas
[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented Generation por DataScienceConferenc1
[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented Generation[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented Generation
[DSC Europe 23] Spela Poklukar & Tea Brasanac - Retrieval Augmented Generation
OPPOTUS - Malaysians on Malaysia 3Q2023.pdf por Oppotus
OPPOTUS - Malaysians on Malaysia 3Q2023.pdfOPPOTUS - Malaysians on Malaysia 3Q2023.pdf
OPPOTUS - Malaysians on Malaysia 3Q2023.pdf
Oppotus30 vistas
Lack of communication among family.pptx por ahmed164023
Lack of communication among family.pptxLack of communication among family.pptx
Lack of communication among family.pptx
ahmed16402314 vistas
SUPER STORE SQL PROJECT.pptx por khan888620
SUPER STORE SQL PROJECT.pptxSUPER STORE SQL PROJECT.pptx
SUPER STORE SQL PROJECT.pptx
khan88862013 vistas

Best Practices for Oracle Exadata and the Oracle Optimizer

  • 1. 1 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Best Practices for Oracle Exadata and the Oracle Optimizer Maria Colgan, Product Manager, Oracle Optimizer Levi Norman, Product Marketing Director, Oracle Exadata
  • 2. 2 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. • Fastest Data Warehouse & OLTP • Best Cost/Performance Data Warehouse & OLTP • Optimized Hardware • Software Breakthroughs • Scales from ¼ Rack to 8 Full Racks Oracle Exadata Database Machine Extreme performance. Lowest cost.
  • 3. 3 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Hybrid Columnar Compression Smart Flash Cache Smart Scan Queries Up to 50X10X + ++ Oracle Exadata Innovation Storage Server Software
  • 4. 4 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Standardized and Simple to Deploy Delivered Ready-to-Run • Oracle Exadata Database Machines Are The Same Thoroughly Tested & Highly Supportable Identical Configuration Used by Oracle Engineering • Run Existing OLTP and DW Applications 30 Years of Oracle DB Capabilities No Exadata Certification Required • Leverage Oracle Ecosystem Skills, Knowledge Base, People, & Partners
  • 5. 5 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Oracle Exadata in the Market Rapid Adoption Across Geographies and Industries
  • 6. 6 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Agenda • How to gather statistics • Additional types of statistics • When to gather statistics • Statistics gathering performance
  • 7. 7 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • Analyze command is deprecated – Only good for row chaining • The GATHER_*_STATS procedures take 13 parameters – Ideally you should only set the first 2-3 parameters • SCHEMA NAME • TABLE NAME • PARTITION NAME Use DBMS_STATS Package
  • 8. 8 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics Use DBMS_STATS Package • Your gather statistics commands should be this simple
  • 9. 9 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • Can change the default value at the global level – DBMS_STATS.SET_GLOBAL_PREF – This changes the value for all existing objects and any new objects • Can change the default value at the table level – DBMS_STATS.SET_TABLE_PREF Changing Default Parameter Values for Gathering Statistics
  • 10. 10 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • CASCADE • CONCURRENT • DEGREE • ESTIMATE_PERCENT • METHOD_OPT • NO_INVALIDATE • GRANULARITY • PUBLISH • INCREMENTAL • STALE_PERCENT • AUTOSTATS_TARGET (SET_GLOBAL_PREFS only) Changing Default Parameter Values for Gathering Statistics •The following parameter defaults can be changed:
  • 11. 11 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • # 1 most commonly asked question – “What sample size should I use?” • Controlled by ESTIMATE_PRECENT parameter • From 11g onwards use default value AUTO_SAMPLE_SIZE – New hash based algorithm – Speed of a 10% sample – Accuracy of 100% sample Sample Size
  • 12. 12 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • Speed of a 10% sample • Accuracy of 100% sample Sample Size Run Num AUTO_SAMPLE_SIZE 10% SAMPLE 100% SAMPLE 1 00:02:21.86 00:02:31.56 00:08:24.10 2 00:02:38.11 00:02:49.49 00:07:38.25 3 00:02:39.31 00:02:38.55 00:07:37.83 Column Name NDV with AUTO_SAMPLE_SIZE NDV with 10% SAMPLE NDV with 100% SAMPLE C1 59852 31464 60351 C2 1270912 608544 1289760 C3 768384 359424 777942
  • 13. 13 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Agenda • How to gather statistics • Additional types of statistics • When to gather statistics • Statistics gathering performance
  • 14. 14 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Additional Types of Statistics • Two types of Extended Statistics – Column groups statistics • Column group statistics useful when multiple column from the same table are used in where clause predicates – Expression statistics • Expression statistics useful when a column is used as part of a complex expression in where clause predicate • Can be manually or automatically created • Automatically maintained when statistics are gathered When Table and Column Statistics are not enough
  • 15. 15 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics – SELECT * FROM vehicles WHERE model = ‘530xi’ AND color = 'RED’; Column Group Statistics SLIVERC320MERC REDSLKMERC RED911PORSCHE SILVER530xiBMW BLACK530xiBMW RED530xiBMW ColorModelMake Vehicles Table Cardinality #ROWS * 1 * 1 12 * 1 * 1 1 NDV c1 NDV c2 4 3 = => MAKE MODEL COLOR BMW 530xi RED =
  • 16. 16 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics SELECT * FROM vehicles WHERE model = ‘530xi’ AND make = ‘BMW’; Column Group Statistics SLIVERC320MERC REDSLKMERC RED911PORSCHE SILVER530xiBMW BLACK530xiBMW RED530xiBMW ColorModelMake Vehicles Table Cardinality #ROWS * 1 * 1 12 * 1 * 1 1 NDV c1 NDV c2 4 3 = => = MAKE MODEL COLOR BMW 530xi RED BMW 530xi BLACK BMW 530xi SLIVER
  • 17. 17 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics • Create extended statistics on the Model & Make columns using DBMS_STATS.CREATE_EXTENDED_STATS Column Group Statistics New Column with system generated name
  • 18. 18 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics SELECT * FROM vehicles WHERE model = ‘530xi’ AND make = ‘BMW’; Column Group Statistics SLIVERC320MERC REDSLKMERC RED911PORSCHE SILVER530xiBMW BLACK530xiBMW RED530xiBMW ColorModelMake Vehicles Table Cardinality calculated using column group statistics MAKE MODEL COLOR BMW 530xi RED BMW 530xi BLACK BMW 530xi SLIVER
  • 19. 19 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics SELECT * FROM Customers WHERE UPPER(CUST_LAST_NAME) = ‘SMITH’; • Optimizer doesn’t know how function affects values in the column • Optimizer guesses the cardinality to be 1% of rows SELECT count(*) FROM customers; COUNT(*) 55500 Expression Statistics Cardinality estimate is 1% of the rows
  • 20. 20 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics Expression Statistics New Column with system generated name
  • 21. 21 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics 1. Start column group usage capture Automatic Column Group Detection • Oracle can automatically detect column group candidates based on an STS or by monitoring a workload • Uses DBMS_STATS procedure SEED_COL_USAGE • If the first two arguments are set to NULL the current workload will be monitored • The third argument is the time limit in seconds
  • 22. 22 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics 2. Run your workload Automatic Column Group Detection • Actual number of rows returned by this query is 932 • Optimizer under-estimates the cardinality as it assumes each where clause predicate will reduce number of rows returned • Optimizer is not aware of real-world relations between city, state, & country
  • 23. 23 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics 2. Run your workload Automatic Column Group Detection • Actual number of rows returned by this query is 145 • Optimizer over-estimates the cardinality as it is not aware of the real-world relations between state & country
  • 24. 24 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics 3. Check column usage information recorded for our table Automatic Column Group Detection COLUMN USAGE REPORT FOR SH.CUSTOMERS 1. COUNTRY_ID : EQ 2. CUST_CITY : EQ 3. CUST_STATE_PROVINCE : EQ 4. (CUST_CITY, CUST_STATE_PROVINCE, COUNTRY_ID) : FILTER 5. (CUST_STATE_PROVINCE, COUNTRY_ID) : GROUP_BY SELECT dbms_stats.report_col_usage(user, 'customers') FROM dual; EQ means column was used in equality predicate in query 1 GROUP_BY columns used in group by expression in query 2 FILTER means columns used together as filter predicates rather than join etc. Comes from query 1
  • 25. 25 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Enhancements 4. Create extended stats for customers based on usage EXTENSIONS FOR SH.CUSTOMERS 1. (CUST_CITY, CUST_STATE_PROVINCE, COUNTRY_ID): SYS_STUMZ$C3AIHLPBROI#SKA58H_N created 2. (CUST_STATE_PROVINCE, COUNTRY_ID) : SYS_STU#S#WF25Z#QAHIHE#MOFFMM_ created Column group statistics will now be automatically maintained every time you gather statistics on this table Automatic Column Group Detection SELECT dbms_stats.create_extended_stats(user, 'customers') FROM dual;
  • 26. 26 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Agenda • How to gather statistics • Additional types of statistics • When to gather statistics • Statistics gathering performance
  • 27. 27 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics • Oracle automatically collect statistics for all database objects, which are missing or have stale statistics • AutoTask run during a predefined maintenance window • Internally prioritizes the database objects – Both user schema and dictionary tables – Objects that need updated statistics most are processed first • Controlled by DBMS_AUTO_TASK_ADMIN package or via Enterprise Manager Automatic Statistics Gathering
  • 28. 28 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics Automatic Statistics Gathering in Enterprise Manager • Enterprise Manager allows you to control all aspects of the automatic statistics gathering task • The statistics gathering task can be set to only run during certain maintenance windows
  • 29. 29 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics • If you want to disable auto job for application schema leaving it on for Oracle dictionary tables • The scope of the auto job is controlled by the global preference AUTOSTATS_TARGET • Possible values are – AUTO Oracle decides what tables need statistics (Default) – All Statistics gathered for all tables in the system – ORACLE Statistics gathered for only the dictionary tables Automatic Statistics Gathering
  • 30. 30 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics • Need to determine when to manually gather statistics • After large data loads – Add statistics gather to the ETL or ELT process • If trickle loading or online transactions – Manually determine when statistics are stale and trigger gather – USER_TAB_MODIFICATIONS lists # INSERTS, UPDATES, and DELETES that occurs on each table • If trickle loading into a partition table – Used dbms.stats.copy_table_stats() If the Auto Statistics Gather Job is not suitable
  • 31. 31 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics If the Auto Statistics Gather Job is not suitable Partitioned Table Partition 1 June 1st 2012 : Partition 4 June 4th 2012 Partition 5 June 5th 2012 DBMS_STATS.COPY_TABLE_STATS(); • Copies statistic from source partition to new partition • Adjusts min & max values for partition column • Both partition & global statistics • Copies statistics of the dependent objects • Columns, local (partitioned) indexes* etc. • Does not update global indexes
  • 32. 32 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Agenda • How to gather statistics • Additional types of statistics • When to gather statistics • Statistics gathering performance
  • 33. 33 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance • Three parallel options to speed up statistics gathering – Inter object using parallel execution – Intra object using concurrency – The combination of Inter and Intra object • Incremental statistics gathering for partitioned tables How to speed up statistics gathering
  • 34. 34 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance • Controlled by GATHER_*_STATS parameter DEGREE • Default is to use parallel degree specified on object • If set to AUTO Oracle decide parallel degree used • Works on one object at a time Inter Object using parallel execution
  • 35. 35 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance Inter Object using parallel execution P4 P3 P2 P1 Customers Table • Customers table has a degree of parallelism of 4 • 4 parallel server processes will be used to gather stats
  • 36. 36 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance Inter Object using parallel execution Exec DBMS_STATS.GATHER_TABLE_STATS(‘SH’,’SALES); Sales Table Partition 1 May 18th 2012 Partition 2 May 19th 2012 Partition 3 May 20th 2012 • Each individual partition will have statistics gathered one after the other • The statistics gather procedure on each individual partition operates in parallel BUT the statistics gathering procedures won’t happen concurrently P4 P3 P2 P1
  • 37. 37 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance • Gather statistics on multiple objects at the same time • Controlled by DBMS_STATS preference, CONCURRENT • Uses Database Scheduler and Advanced Queuing • Number of concurrent gather operations controlled by job_queue_processes parameter • Each gather operation can still operate in parallel Intra Object
  • 38. 38 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance Intra Object Statistics Gathering for SH Schema Exec DBMS_STATS.GATHER_SCHEMA_STATS(‘SH’); • A statistics gathering job is created for each table and partition in the schema • Level 1 contain statistics gathering jobs for all non- partitioned tables and a coordinating job for each partitioned table • Level 2 contain statistics gathering jobs for each partition in the partitioned tables
  • 39. 39 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance Inter Object using concurrent parallel execution Exec DBMS_STATS.GATHER_TABLE_STATS(‘SH’,’SALES); Sales Table Partition 1 May 18th 2012 Partition 2 May 19th 2012 Partition 3 May 20th 2012 Job1 Job2 Job3 • The number of concurrent gathers is controlled by the parameter job_queue_processes • In this example it is set to 3 • Remember each concurrent gather operates in parallel • In this example parallel degree is 4
  • 40. 40 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance • Typically gathering statistics after a bulk loading data into one partition would causes a full scan of all partitions to gather global table statistics – Extremely time consuming • With Incremental Statistic gather statistics for touched partition(s) ONLY – Table (global) statistics are accurately built from partition statistics – Reduce statistics gathering time considerably – Controlled by INCREMENTAL preference Incremental Statistics Gathering for Partitioned tables
  • 41. 41 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Incremental Statistics Gathering Sales Table May 22nd 2011 May 23rd 2011 May 18th 2011 May 19th 2011 May 20th 2011 May 21st 2011 Sysaux Tablespace 1. Partition level stats are gathered & synopsis created 2. Global stats generated by aggregating partition level statistics and synopsis
  • 42. 42 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Incremental Statistics Gathering Sales Table May 22nd 2011 May 23rd 2011 May 18th 2011 May 19th 2011 May 20th 2011 May 21st 2011 Sysaux Tablespace May 24th 2011 4. Gather partition statistics for new partition 5. Retrieve synopsis for each of the other partitions from Sysaux 6. Global stats generated by aggregating the original partition synopsis with the new one 3. A new partition is added to the table & Data is Loaded
  • 43. 43 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. More Information • Accompanying Two Part White Paper Series – Understanding Optimizer Statistics – Best Practices for Managing Optimizer Statistics • Optimizer Blog – http://blogs.oracle.com/optimizer • Oracle.com – http://www.oracle.com/technetwork/database/focus-areas/bi- datawarehousing/dbbi-tech-info-optmztn-092214.html • Oracle Exadata Database Machine – http://www.oracle.com/exadata
  • 44. 44 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.