Partitioning and Storage
Oracle partitioning, storage management, and advanced features
Table Partitioning
Table partitioning operations and management (Access: Table management privileges)
-- Create partitioned table
-- Access: Users with CREATE TABLE privilege
CREATE TABLE sales (
sale_id NUMBER,
sale_date DATE,
customer_id NUMBER,
amount NUMBER(10,2)
) PARTITION BY RANGE (sale_date) (
PARTITION p2023 VALUES LESS THAN (DATE '2024-01-01'),
PARTITION p2024 VALUES LESS THAN (DATE '2025-01-01'),
PARTITION p_future VALUES LESS THAN (MAXVALUE)
);
-- Create hash partitioned table
-- Access: Users with CREATE TABLE privilege
CREATE TABLE customers (
customer_id NUMBER,
customer_name VARCHAR2(100),
email VARCHAR2(100)
) PARTITION BY HASH (customer_id) PARTITIONS 4;
-- Create list partitioned table
-- Access: Users with CREATE TABLE privilege
CREATE TABLE orders (
order_id NUMBER,
order_date DATE,
region VARCHAR2(20),
amount NUMBER(10,2)
) PARTITION BY LIST (region) (
PARTITION p_north VALUES ('NORTH', 'NORTHEAST'),
PARTITION p_south VALUES ('SOUTH', 'SOUTHEAST'),
PARTITION p_west VALUES ('WEST', 'NORTHWEST'),
PARTITION p_east VALUES ('EAST', 'SOUTHEAST')
);
-- Add partition
-- Access: Users with ALTER TABLE privilege
ALTER TABLE sales ADD PARTITION p2025 VALUES LESS THAN (DATE '2026-01-01');
-- Drop partition
-- Access: Users with ALTER TABLE privilege
ALTER TABLE sales DROP PARTITION p2023;
-- Truncate partition
-- Access: Users with ALTER TABLE privilege
ALTER TABLE sales TRUNCATE PARTITION p2024;
-- Split partition
-- Access: Users with ALTER TABLE privilege
ALTER TABLE sales SPLIT PARTITION p_future AT (DATE '2025-01-01')
INTO (PARTITION p2025, PARTITION p_future);
-- Merge partitions
-- Access: Users with ALTER TABLE privilege
ALTER TABLE sales MERGE PARTITIONS p2023, p2024 INTO p_combined;
-- Exchange partition
-- Access: Users with ALTER TABLE privilege
ALTER TABLE sales EXCHANGE PARTITION p2024 WITH TABLE sales_staging;
-- Move partition
-- Access: Users with ALTER TABLE privilege
ALTER TABLE sales MOVE PARTITION p2024 TABLESPACE users_new;
-- Partition information
-- Access: DBA or users with DBA_TAB_PARTITIONS privilege
SELECT
table_name,
partition_name,
tablespace_name,
num_rows,
blocks,
last_analyzed
FROM dba_tab_partitions
WHERE table_name = 'SALES'
ORDER BY partition_name;
Index Partitioning
Index partitioning operations and management (Access: Index management privileges)
-- Create partitioned index
-- Access: Users with CREATE INDEX privilege
CREATE INDEX idx_sales_date ON sales (sale_date)
LOCAL (
PARTITION p2023,
PARTITION p2024,
PARTITION p_future
);
-- Create global partitioned index
-- Access: Users with CREATE INDEX privilege
CREATE INDEX idx_sales_customer ON sales (customer_id)
GLOBAL PARTITION BY RANGE (sale_date) (
PARTITION p2023 VALUES LESS THAN (DATE '2024-01-01'),
PARTITION p2024 VALUES LESS THAN (DATE '2025-01-01'),
PARTITION p_future VALUES LESS THAN (MAXVALUE)
);
-- Create bitmap index on partitioned table
-- Access: Users with CREATE INDEX privilege
CREATE BITMAP INDEX idx_sales_region ON sales (region)
LOCAL;
-- Rebuild partitioned index
-- Access: Users with ALTER INDEX privilege
ALTER INDEX idx_sales_date REBUILD PARTITION p2024;
-- Rebuild all partitions
-- Access: Users with ALTER INDEX privilege
ALTER INDEX idx_sales_date REBUILD;
-- Drop index partition
-- Access: Users with ALTER INDEX privilege
ALTER INDEX idx_sales_date DROP PARTITION p2023;
-- Split index partition
-- Access: Users with ALTER INDEX privilege
ALTER INDEX idx_sales_date SPLIT PARTITION p_future AT (DATE '2025-01-01')
INTO (PARTITION p2025, PARTITION p_future);
-- Index partition information
-- Access: DBA or users with DBA_IND_PARTITIONS privilege
SELECT
index_name,
partition_name,
tablespace_name,
status,
last_analyzed
FROM dba_ind_partitions
WHERE index_name = 'IDX_SALES_DATE'
ORDER BY partition_name;