OOW Partitioning Your DWH

35
Basel · Baden · Bern · Lausanne · Zurich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · Munich · Stuttgart · Vienna Partitioning Your Oracle Data Warehouse – Just a Simple Task? Dani Schnider Principal Consultant Business Intelligence [email protected] Oracle Open World 2009, San Francisco

Transcript of OOW Partitioning Your DWH

Page 1: OOW Partitioning Your DWH

Basel · Baden · Bern · Lausanne · Zurich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · Munich · Stuttgart · Vienna

Partitioning Your Oracle Data Warehouse– Just a Simple Task?

Dani SchniderPrincipal ConsultantBusiness [email protected]

Oracle Open World 2009,San Francisco

Page 2: OOW Partitioning Your DWH

© 2009

About Dani Schnider

Principal Consultant at Trivadis AG,Zurich, Switzerland

Consulting, coaching and development of data warehouse projects for several [email protected]

Trainer for Trivadis coursesData Warehousing with OracleSQL Performance Tuning & Optimizer WorkshopOracle Warehouse Builder

Working…… with databases since 1990… with Oracle since 1994… with Data Warehouses since 1997… for Trivadis since 1999

Partitioning Your Oracle Data Warehouse 2

Page 3: OOW Partitioning Your DWH

© 2009

Hamburg

Düsseldorf

Frankfurt

Stuttgart

MunichFreiburg

Vienna

Basel

BernBaden

Zurich

Lausanne ~370 employees

~170 employees

~10 employeesBrugg

About Trivadis

Partitioning Your Oracle Data Warehouse 3

Swiss IT consulting company

Technical consulting with focus on Oracle, SQL Server and DB/2

13 locations in Switzerland, Germany and Austria

~ 550 employees

Key figures 2008

Services for more than 650 clients in over 1‘600 projects

Over 150 Service Level Agreements

More than 5'000 training participants

Page 4: OOW Partitioning Your DWH

© 2009Partitioning Your Oracle Data Warehouse 4

Agenda

Data are always part of the game.

Partitioning Concepts

The Right Partition Key

Large Dimensions

Partition Maintenance

Page 5: OOW Partitioning Your DWH

© 2009Partitioning Your Oracle Data Warehouse 5

Partitioning – The Basic Idea

Table Partitions Subpartitions

Decompose tables/indexes into smaller pieces

Presenter
Presentation Notes
Partitioning is a technique for breaking down tables or indexes into smaller pieces. These pieces are easier to manage and improve query performance. The decomposed parts of a partition are called sub-partitions. Composite Partitioning combines two partitioning methods. The table is initially partitioned by the first data distribution method and each partition is sub-partitioned by the second data distribution method. E.g. Range-Hash Partitioning means the table is partitioned by range, the table partitions are sub-partitioned by hash. Partitioning is transparent to the application, SQL/DML does not need to be modified to access a partitioned segment. The optimizer automatically analyzes the FROM and WHERE clause of an SQL statement and creates a list of relevant partitions. Unnecessary partitions are eliminated from this list. This partition elimination process is called Partition Pruning. DDL statements can access and manipulate individual partitions.
Page 6: OOW Partitioning Your DWH

© 2009

Partitioning Methods in Oracle

Partition

RANGE HASH LIST

Subpartition

(none) Oracle8 Oracle8i Oracle9i

RANGE

HASH Oracle8i

LIST Oracle9i

Partitioning Your Oracle Data Warehouse 6

Additionally: Interval Partitioning, Reference Partitioning, Virtual Column-Based Partitioning

Page 7: OOW Partitioning Your DWH

© 2009

Benefits of Partitioning

Partition PruningReduce I/O: Only relevant partitions have to be accessed

Partition-Wise JoinsFull PWJ: Join two equi-partitioned tables (parallel or serial)Partial PWJ: Join partitioned with non-partitioned table (parallel)

Rolling HistoryCreate new partitions in periodical intervalsDrop old partitions in periodical intervals

ManageabilityBackups, statistics gathering, compressing on individual partitions

Partitioning Your Oracle Data Warehouse 7

Page 8: OOW Partitioning Your DWH

© 2009Partitioning Your Oracle Data Warehouse 8

Agenda

Data are always part of the game.

Partitioning Concepts

The Right Partition Key

Large Dimensions

Partition Maintenance

Page 9: OOW Partitioning Your DWH

© 2009

Partition Methods and Partition Keys

Important questions for Partitioning:Which tables should be partitioned?Which partition method should be used?Which partition key(s) should be used?

Partition key is important forQuery optimization (partition pruning, partition-wise joins)ETL performance (partition exchange, rolling history)

Typically in data warehousesRANGE partitioning of fact tables on DATE columnBut which DATE column?

Partitioning Your Oracle Data Warehouse 9

Dimension

Dimension

Dimension

Dimension

FactTable

Page 10: OOW Partitioning Your DWH

© 2009

Practical Example 1: Airline Company

Flight bookings are stored in partitioned table

RANGE partitioning per month, partition key: booking date

Problem: Most of the reports are based on the flight dateFlights can be booked 11 months ahead11 partitions must be read of one particular flight date

Partitioning Your Oracle Data Warehouse 10

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Sep 09 Oct 09 Nov 09 Dec 09Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Sep 09 Oct 09 Nov 09 Dec 09

„show bookings for flights in November 2009“

Page 11: OOW Partitioning Your DWH

© 2009

Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Sep 09 Oct 09 Nov 09 Dec 09

Jan 10 Feb 10 Mar 10 Apr 10 Mai 10 Jun 10 Jul 10 Aug 10 Sep 10 Oct 10

Practical Example 1: Airline Company

Partitioning Your Oracle Data Warehouse 11

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Sep 09 Oct 09 Nov 09 Dec 09

Solution: partition key flight date instead of booking date

Data is loaded into current and future partitions

„show bookings for flights in November 2009“

Reports based on flight date read only one partition

Reports based on booking date must read 11 (small) partitions

„show all flights booked in November 2009“

Page 12: OOW Partitioning Your DWH

© 2009

Practical Example 1: Airline Company

Partitioning Your Oracle Data Warehouse 12

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Sep 09 Oct 09 Nov 09Nov 09

Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Sep 09 Oct 09 Nov 09Dec 09

Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Sep 09 Oct 09 Nov 09Jan 10

Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Dec 09 Jan 10 Feb 10Feb 10

Better solution: Composite RANGE-RANGE partitioningRANGE partitioning on flight dateRANGE subpartitioning on booking date

More flexibility for reports on flight date and/or on booking datebooking date

flight date

Dec 09

Dec 09 Jan 10

Sep 09 Oct 09 Nov 09

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Sep 09 Oct 09 Nov 09Nov 09

Nov 09

Nov 09

Nov 09

Nov 09

Page 13: OOW Partitioning Your DWH

© 2009

Practical Example 2: International Bank

Partitioning Your Oracle Data Warehouse 13

Account balance data of international customersMonthly files of different locations (countries)Correction files replace last delivery for the same month/country

Original approachTechnical load id for each combination of month/countryLIST partitioning on load idFiles are loaded in stage tablePartition exchange with current partition

LoadID 77

LoadID 78

LoadID 80

LoadID 81Stage table

LoadID 79

monthlybalance filefrom location

ETL exchangepartition

Mar 2009, Switzerland

Mar 2009, Germany

Mar 2009, USA

Apr 2009, Switzerland

Apr 2009, Germany

Page 14: OOW Partitioning Your DWH

© 2009

Practical Example 2: International Bank

Partitioning Your Oracle Data Warehouse 14

Problem: partition key load id is useless for queriesQueries are based on balance date

SolutionRANGE partitioning on balance dateLIST subpartitions on country codePartition exchange with subpartitions

CH

Stage tablemonthlybalance filefrom location

ETL exchangepartition

DE FR GB USJan 09

CH DE FR GB USFeb 09

CH DE FR GB USMar 09

CH DE FR GB USApr 09

Page 15: OOW Partitioning Your DWH

© 2009Partitioning Your Oracle Data Warehouse 15

Agenda

Data are always part of the game.

Partitioning Concepts

The Right Partition Key

Large Dimensions

Partition Maintenance

Page 16: OOW Partitioning Your DWH

© 2009

Partitioning in Star Schema

Fact TableUsually „big“ (millions to billions of rows)RANGE partitioning by DATE column

Dimension TablesUsually „small“ (10 to 10000 rows)In most cases not partitioned

But how about large dimensions?e.g. customer dimension with millions of rows

Partitioning Your Oracle Data Warehouse 16

FactTable

Dimension

Dimension

Dimension

DimensionDimension

Page 17: OOW Partitioning Your DWH

© 2009

HASH Partitioning on Large Dimension

DIM_CUSTOMERHASH PartitioningPartition Key: CUSTOMER_ID

FCT_SALESComposite RANGE-HASH PartitioningPartition Key: SALES_DATESubpartition Key: CUSTOMER_ID

Partitioning Your Oracle Data Warehouse

DIM_CUSTOMER

DIM_DATE DIM_PRODUCT

DIM_CHANNELH4H3H2H1

FCT_SALES

Jan 09

Feb 09

Mar 09

Apr 09

H4H3H2H1

H4H3H2H1

H4H3H2H1

H4H3H2H1

17

Page 18: OOW Partitioning Your DWH

© 2009

HASH Partitioning on Large Dimension

Partitioning Your Oracle Data Warehouse

DIM_CUSTOMER

DIM_DATE

H4H3H2H1

FCT_SALES

Jan 09

Feb 09

Mar 09

Apr 09

H4H3H2H1

H4H3H2H1

H4H3H2H1

H4H3H2H1

SELECT d.cal_month, c.country_name, SUM(f.amount)FROM fct_sales fJOIN dim_date d ON (d.cal_date = f.sales_date)JOIN dim_customer c ON (c.customer_id = f.customer_id)

WHERE d.cal_month = 'Feb-2009'AND c.country_code = 'DE'

GROUP BY d.cal_month, c.country_name;

Full Partition-wise Join

Partition Pruning

18

Page 19: OOW Partitioning Your DWH

© 2009Partitioning Your Oracle Data Warehouse 19

Practical Example 3: Telecommunication Company

FK_BK_AccountFK_ST_Account

BK_SubscriberST_SubscriberVK_SubscriberDWH_Valid_FromDWH_Valid_To.........

Account_Identity

Subscriber_Version

FK_BK_DateFK_BK_TimePeriodFK_BK_ServiceFK_BK_SubscriberFK_ST_Subscriber.........

Fact_Call

BK_DateBK_YearmonthBK_Yearweek......

Date

BK_ServiceService_Name...

Service

BK_TimePeriod...BK_Hour...BK_ClassAPeriodBK_ClassBPeriod...

TimePeriod

Account Type .... ....Subscriber Segment Dealer ....

10

100'000

10'000

1 Mio / Day

1 Mio 1.1 Mio

FK_BK_Date

FK_BK_TimePeriod

FK_BK_Service

10 100 10

BK_AccountST_Account

BK_SubscriberST_SubcriberFK_BK_AccountFK_ST_Account.........

Subscriber_Identity

0.6 Mio

Account_Version

BK_AccountST_AccountVK_AccountDWH_Valid_FromDWH_Valid_To...............BK_Subscriber

ST_Subscriber

0.5 Mio BK: Business Key (OLTP Key)ST: Source Type (Id of Source System)VK: Version Key (Version # of Business Instance)

, FK_

BK_A

ccou

nt

hash

par

titio

n #1

hash

par

titio

n #2

56

hash-(sub)partitioning over BK_Account

Page 20: OOW Partitioning Your DWH

© 2009

LIST Partitioning on Large Dimension

Partitioning Your Oracle Data Warehouse

FCT_SALES

CH DE FR GB USJan 09

CH DE FR GB USFeb 09

CH DE FR GB USMar 09

CH DE FR GB USApr 09DIM_CUSTOMER

CH DE FR GB US

DIM_DATE DIM_PRODUCT

DIM_CHANNEL

DIM_CUSTOMERLIST PartitioningPartition Key: COUNTRY_CODE

FCT_SALESComposite RANGE-LIST PartitioningPartition Key: SALES_DATESubpartition Key: COUNTRY_CODE(denormalized column in fact table)

20

Page 21: OOW Partitioning Your DWH

© 2009

LIST Partitioning on Large Dimension

Partitioning Your Oracle Data Warehouse

FCT_SALES

CH DE FR GB USJan 09

CH DE FR GB USFeb 09

CH DE FR GB USMar 09

CH DE FR GB USApr 09DIM_CUSTOMER

CH DE FR GB US

DIM_DATE

SELECT d.cal_month, c.country_name, SUM(f.amount)FROM fct_sales fJOIN dim_date d ON (d.cal_date = f.sales_date)JOIN dim_customer c ON (c.customer_id = f.customer_id

AND c.country_code = f.country_code)WHERE d.cal_month = 'Feb-2009'

AND c.country_code = 'DE'GROUP BY d.cal_month, c.country_name;

Full Partition-wise Join

Partition PruningPartition Pruning

21

Page 22: OOW Partitioning Your DWH

© 2009

Join-Filter Pruning

New approach for partition pruning on join conditionsA bloom filter is created based on the dimension table restrictionDynamic partition pruning based on that bloom filter

Partitioning Your Oracle Data Warehouse 22

-------------------------------------------------------------------------------| Id | Operation | Name | Rows | Pstart| Pstop |-------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | | || 1 | HASH GROUP BY | | 1 | | ||* 2 | HASH JOIN | | 1886 | | ||* 3 | HASH JOIN | | 1886 | | || 4 | PART JOIN FILTER CREATE | :BF0000 | 30 | | ||* 5 | TABLE ACCESS FULL | DIM_DATE | 30 | | || 6 | PARTITION RANGE JOIN-FILTER| | 21675 |:BF0000|:BF0000|| 7 | PARTITION LIST SINGLE | | 21675 | KEY | KEY || 8 | TABLE ACCESS FULL | FCT_SALES | 21675 | KEY | KEY || 9 | PARTITION LIST SINGLE | | 8220 | KEY | KEY || 10 | TABLE ACCESS FULL | DIM_CUSTOMER | 8220 | 2 | 2 |-------------------------------------------------------------------------------

Page 23: OOW Partitioning Your DWH

© 2009Partitioning Your Oracle Data Warehouse 23

Agenda

Data are always part of the game.

Partitioning Concepts

The Right Partition Key

Large Dimensions

Partition Maintenance

Page 24: OOW Partitioning Your DWH

© 2009

Practical Example 3: Monthly Partition Maintenance

RequirementsMonthly partitions on all fact tables, daily inserts into current partitions3 years of history (36 partitions per table)Table compression to increase full table scan performanceBackup of current partitions only

Partitioning Your Oracle Data Warehouse 24

Jan 08 Feb 08 Mar 08 Apr 08 Mai 08 Jun 08 Jul 08 Aug 08 Sep 08 Oct 08 Nov 08 Dec 08

TS_01 TS_02 TS_03 TS_04 TS_05 TS_06 TS_07 TS_08 TS_09 TS_10 TS_11 TS_12

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09Sep 09

Oct 06 Nov 06 Dec 06

TS_13 TS_14 TS_15 TS_16 TS_17 TS_18 TS_19 TS_20 TS_21 TS_22 TS_23 TS_24

Jan 07 Feb 07 Mar 07 Apr 07 Mai 07 Jun 07 Jul 07 Aug 07 Sep 07 Oct 07 Nov 07 Dec 07

TS_25 TS_26 TS_27 TS_28 TS_29 TS_30 TS_31 TS_32 TS_33 TS_34 TS_35 TS_36

Page 25: OOW Partitioning Your DWH

© 2009

Practical Example 3: Monthly Partition Maintenance

1. Set next tablespace to read-write

Partitioning Your Oracle Data Warehouse 25

Jan 08 Feb 08 Mar 08 Apr 08 Mai 08 Jun 08 Jul 08 Aug 08 Sep 08 Oct 08 Nov 08 Dec 08

TS_01 TS_02 TS_03 TS_04 TS_05 TS_06 TS_07 TS_08 TS_09 TS_10 TS_11 TS_12

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09Sep 09

Oct 06 Nov 06 Dec 06

TS_13 TS_14 TS_15 TS_16 TS_17 TS_18 TS_19 TS_20 TS_21 TS_22 TS_23 TS_24

Jan 07 Feb 07 Mar 07 Apr 07 Mai 07 Jun 07 Jul 07 Aug 07 Sep 07 Oct 07 Nov 07 Dec 07

TS_25 TS_26 TS_27 TS_28 TS_29 TS_30 TS_31 TS_32 TS_33 TS_34 TS_35 TS_36

ALTER TABLESPACE ts_22READ WRITE;

Page 26: OOW Partitioning Your DWH

© 2009

Practical Example 3: Monthly Partition Maintenance

1. Set next tablespace to read-write2. Drop oldest partition

Partitioning Your Oracle Data Warehouse 26

Jan 08 Feb 08 Mar 08 Apr 08 Mai 08 Jun 08 Jul 08 Aug 08 Sep 08 Oct 08 Nov 08 Dec 08

TS_01 TS_02 TS_03 TS_04 TS_05 TS_06 TS_07 TS_08 TS_09 TS_10 TS_11 TS_12

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09Sep 09

Nov 06 Dec 06

TS_13 TS_14 TS_15 TS_16 TS_17 TS_18 TS_19 TS_20 TS_21 TS_22 TS_23 TS_24

Jan 07 Feb 07 Mar 07 Apr 07 Mai 07 Jun 07 Jul 07 Aug 07 Sep 07 Oct 07 Nov 07 Dec 07

TS_25 TS_26 TS_27 TS_28 TS_29 TS_30 TS_31 TS_32 TS_33 TS_34 TS_35 TS_36

ALTER TABLE salesDROP PARTITION p_oct_2006;

Page 27: OOW Partitioning Your DWH

© 2009

Practical Example 3: Monthly Partition Maintenance

1. Set next tablespace to read-write2. Drop oldest partition3. Create new partition for next month

Partitioning Your Oracle Data Warehouse 27

Jan 08 Feb 08 Mar 08 Apr 08 Mai 08 Jun 08 Jul 08 Aug 08 Sep 08 Oct 08 Nov 08 Dec 08

TS_01 TS_02 TS_03 TS_04 TS_05 TS_06 TS_07 TS_08 TS_09 TS_10 TS_11 TS_12

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09Sep 09

Nov 06 Dec 06

TS_13 TS_14 TS_15 TS_16 TS_17 TS_18 TS_19 TS_20 TS_21 TS_22 TS_23 TS_24

Jan 07 Feb 07 Mar 07 Apr 07 Mai 07 Jun 07 Jul 07 Aug 07 Sep 07 Oct 07 Nov 07 Dec 07

TS_25 TS_26 TS_27 TS_28 TS_29 TS_30 TS_31 TS_32 TS_33 TS_34 TS_35 TS_36

ALTER TABLE salesADD PARTITION p_oct_2009VALUES LESS THAN(TO_DATE('01-NOV-2009',

'DD-MON-YYYY'))TABLESPACE ts_22;

Oct 09

Page 28: OOW Partitioning Your DWH

© 2009

Practical Example 3: Monthly Partition Maintenance

1. Set next tablespace to read-write2. Drop oldest partition3. Create new partition for next month4. Compress current partition

Partitioning Your Oracle Data Warehouse 28

Jan 08 Feb 08 Mar 08 Apr 08 Mai 08 Jun 08 Jul 08 Aug 08 Sep 08 Oct 08 Nov 08 Dec 08

TS_01 TS_02 TS_03 TS_04 TS_05 TS_06 TS_07 TS_08 TS_09 TS_10 TS_11 TS_12

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Nov 06 Dec 06

TS_13 TS_14 TS_15 TS_16 TS_17 TS_18 TS_19 TS_20 TS_21 TS_23 TS_24

Jan 07 Feb 07 Mar 07 Apr 07 Mai 07 Jun 07 Jul 07 Aug 07 Sep 07 Oct 07 Nov 07 Dec 07

TS_25 TS_26 TS_27 TS_28 TS_29 TS_30 TS_31 TS_32 TS_33 TS_34 TS_35 TS_36

ALTER TABLE salesMOVE PARTITION p_sep_2009COMPRESS;

TS_22

Oct 09Sep 09

Page 29: OOW Partitioning Your DWH

© 2009

Practical Example 3: Monthly Partition Maintenance

1. Set next tablespace to read-write2. Drop oldest partition3. Create new partition for next month4. Compress current partition5. Set tablespace to read-only

Partitioning Your Oracle Data Warehouse 29

Jan 08 Feb 08 Mar 08 Apr 08 Mai 08 Jun 08 Jul 08 Aug 08 Sep 08 Oct 08 Nov 08 Dec 08

TS_01 TS_02 TS_03 TS_04 TS_05 TS_06 TS_07 TS_08 TS_09 TS_10 TS_11 TS_12

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Nov 06 Dec 06

TS_13 TS_14 TS_15 TS_16 TS_17 TS_18 TS_19 TS_20 TS_21 TS_23 TS_24

Jan 07 Feb 07 Mar 07 Apr 07 Mai 07 Jun 07 Jul 07 Aug 07 Sep 07 Oct 07 Nov 07 Dec 07

TS_25 TS_26 TS_27 TS_28 TS_29 TS_30 TS_31 TS_32 TS_33 TS_34 TS_35 TS_36

ALTER TABLESPACE ts_21READ ONLY;

TS_22

Oct 09Sep 09

Page 30: OOW Partitioning Your DWH

© 2009

Interval Partitioning

In Oracle11g, the creation of new partitions can be automated

Example:

Partitioning Your Oracle Data Warehouse 30

CREATE TABLE sales (prod_id NUMBER(6) NOT NULL,cust_id NUMBER NOT NULL,time_id DATE NOT NULL,channel_id CHAR(1) NOT NULL,promo_id NUMBER(6) NOT NULL,quantity_sold NUMBER(3) NOT NULL,amount_sold NUMBER(10,2) NOT NULL

)PARTITION BY RANGE (time_id)INTERVAL(numtoyminterval(1, 'MONTH'))STORE IN (ts_01,ts_02,ts_03,ts_04)(PARTITION p_before_1_jan_2005

VALUES LESS THAN (to_date('01-01-2008','dd-mm-yyyy')))

Page 31: OOW Partitioning Your DWH

© 2009

Gathering Optimizer Statistics

DBMS_STATS parameter GRANULARITY defines statistics level

Partitioning Your Oracle Data Warehouse 31

dbms_stats.gather_table_stats(ownname => USER,tabname => 'SALES',granularity => 'GLOBAL AND PARTITION');

GRANULARITYParameter Value

TableStatistics

PartitionStatistics

SubpartitionStatistics

GLOBAL

GLOBAL AND PARTITION

PARTITION

SUBPARTITION

ALL

AUTO ( )

APPROX_GLOBAL AND PARTITION

Example:

Page 32: OOW Partitioning Your DWH

© 2009

Problem of Global Statistics

Global statistics are essential for good execution plansnum_distinct, low_value, high_value, density, histograms

Gathering global statistics is time-consumingAll partitions must be scanned

Typical approachAfter loading data, only modified partition statistics are gatheredGlobal statistics are gathered on regular time base (e.g. weekends)

Partitioning Your Oracle Data Warehouse 32

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Oct 09Sep 09

gather statisticsfor current partition

gather global statistics Data Dictionary

Page 33: OOW Partitioning Your DWH

© 2009

Incremental Global Statistics

Synopsis-based gathering of statistics

For each partition a synopsis is stored in SYSAUX tablespaceStatistics metadata for partition and columns of partition

Global statistics by aggregating the synopses from each partition

Activate incremental global statistics:

Partitioning Your Oracle Data Warehouse 33

Jan 09 Feb 09 Mar 09 Apr 09 Mai 09 Jun 09 Jul 09 Aug 09 Oct 09Sep 09

gather statisticsfor current partition

gatherincremental

globalstatistics

synopsis

dbms_stats.set_table_prefs(ownname => USER ,tabname => 'SALES' ,pname => 'incremental' ,pvalue => 'true');

Page 34: OOW Partitioning Your DWH

© 2009Partitioning Your Oracle Data Warehouse 34

Partitioning Your Data Warehouse – Core Messages

Knowledge transfer is only the beginning. Knowledge application is what counts.

Oracle Partitioning is a powerful option – not only for data warehouses

The concept is simple, but the reality can be complex

Many new partitioning features added in Oracle Database 11g

☺ New Composite Partitioning methods☺ Interval Partitioning☺ Join-Filter Pruning☺ Incremental Global Statistics

Page 35: OOW Partitioning Your DWH

?www.trivadis.com

Baden Basel Bern Brugg Lausanne Zurich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg Munich Stuttgart Vienna

Thank you!