Partitioning

Post date: Apr 10, 2020 3:45:48 AM

Partitioning allows tables, indexes, and index-organized tables to be subdivided into smaller pieces, enabling these database objects to be managed and accessed at a finer level of granularity. Oracle provides a rich variety of partitioning strategies and extensions to address every business requirement.

partitioning can be used with any application, from packaged OLTP applications to data warehouses.

Key Benefits

Partitioning Methods

Oracle supports a wide array of partitioning methods:

SELECT TABLE_NAME,PARTITION_NAME,PARTITION_POSITION,HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='INTERVAL_PAR_DEMO' ORDER BY PARTITION_NAME

create table interval_par_demo ( start_date DATE, store_id NUMBER, inventory_id NUMBER(6), qty_sold NUMBER(3) ) PARTITION BY RANGE (start_date) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) ( PARTITION interval_par_demo_p2 VALUES LESS THAN (TO_DATE('1-7-2007', 'DD-MM-YYYY')), PARTITION interval_par_demo_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY')) )

CREATE TABLE sales_auto_list ( salesman_id NUMBER(5) NOT NULL, salesman_name VARCHAR2(30), sales_state VARCHAR2(20) NOT NULL, sales_amount NUMBER(10), sales_date DATE NOT NULL ) PARTITION BY LIST (sales_state) AUTOMATIC (PARTITION P_CAL VALUES ('CALIFORNIA') )

Creating a composite interval-hash partitioned table

CREATE TABLE sales_interval_hash      ( prod_id       NUMBER(6)       , cust_id       NUMBER       , time_id       DATE       , amount_sold   NUMBER(10,2)       )      PARTITION BY RANGE (time_id) INTERVAL (NUMTOYMINTERVAL(1,'MONTH')) SUBPARTITION BY HASH (cust_id) SUBPARTITIONS 4      (PARTITION before_2016 VALUES LESS THAN (TO_DATE('01-JAN-2016','dd-MON-yyyy'))      )

Create the QUARTERLY_REGIONAL_SALES table

CREATE TABLE quarterly_regional_sales (      product_id       NUMBER(6),      sale_date        DATE,      state_code       VARCHAR(2)  )    PARTITION BY RANGE (sale_date)   SUBPARTITION BY LIST (state_code)    (PARTITION sales_q1_2014 VALUES LESS THAN (TO_DATE('01-APR-2014','dd-MON-yyyy'))            (SUBPARTITION sales_q1_region_east_2014                VALUES ('CT','MA','MD','ME','NH','NJ','NY','PA','VA'),             SUBPARTITION sales_q1_region_west_2014               VALUES ('AZ','CA','CO','NM','NV','OR','UT','WA'),             SUBPARTITION                VALUES (DEFAULT)            ),     PARTITION sales_q2_2014 VALUES LESS THAN (TO_DATE('01-JUL-2014','dd-MON-yyyy'))            (SUBPARTITION sales_q2_region_east_2014                VALUES ('CT','MA','MD','ME','NH','NJ','NY','PA','VA'),             SUBPARTITION sales_q2_region_west_2014               VALUES ('AZ','CA','CO','NM','NV','OR','UT','WA'),             SUBPARTITION                VALUES (DEFAULT)            ))

create table interval_par_demo ( start_date DATE, store_id NUMBER, inventory_id NUMBER(6), qty_sold NUMBER(3) ) PARTITION BY RANGE (start_date) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) ( PARTITION interval_par_demo_p2 VALUES LESS THAN (TO_DATE('1-7-2007', 'DD-MM-YYYY')), PARTITION interval_par_demo_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY')) )