Table of Contents
- List of Examples
 - List of Figures
 - List of Tables
 - Title and Copyright Information
 - Preface
 - Changes in This Release for Oracle Database VLDB and Partitioning Guide
 - 1 Introduction to Very Large Databases
 - 
               
               
                  
                  2
                      Partitioning Concepts
               
                  
               
               
               
- 
                     
                     
                        
                        2.1
                            Partitioning Overview
                     
                        
                     
                     
                     
- 2.1.1 Basics of Partitioning
 - 2.1.2 Partitioning Key
 - 2.1.3 Partitioned Tables
 - 2.1.4 Partitioned Index-Organized Tables
 - 2.1.5 System Partitioning
 - 2.1.6 Partitioning for Information Lifecycle Management
 - 2.1.7 Range Partitioning for Hash Clusters
 - 2.1.8 Partitioning and LOB Data
 - 2.1.9 Partitioning on External Tables
 - 2.1.10 Collections in XMLType and Object Data
 
 - 2.2 Benefits of Partitioning
 - 
                     
                     
                        
                        2.3
                            Partitioning Strategies
                     
                        
                     
                     
                     
- 2.3.1 Single-Level Partitioning
 - 
                           
                           
                              
                              2.3.2
                                  Composite Partitioning
                           
                              
                           
                           
                           
- 2.3.2.1 Composite Range-Range Partitioning
 - 2.3.2.2 Composite Range-Hash Partitioning
 - 2.3.2.3 Composite Range-List Partitioning
 - 2.3.2.4 Composite List-Range Partitioning
 - 2.3.2.5 Composite List-Hash Partitioning
 - 2.3.2.6 Composite List-List Partitioning
 - 2.3.2.7 Composite Hash-Hash Partitioning
 - 2.3.2.8 Composite Hash-List Partitioning
 - 2.3.2.9 Composite Hash-Range Partitioning
 
 
 - 2.4 Partitioning Extensions
 - 
                     
                     
                        
                        2.5
                            Indexing on Partitioned Tables
                     
                        
                     
                     
                     
- 2.5.1 Deciding on the Type of Partitioned Index to Use
 - 2.5.2 Local Partitioned Indexes
 - 2.5.3 Global Partitioned Indexes
 - 2.5.4 Global Nonpartitioned Indexes
 - 2.5.5 Miscellaneous Information about Creating Indexes on Partitioned Tables
 - 2.5.6 Partial Indexes for Partitioned Tables
 - 2.5.7 Partitioned Indexes on Composite Partitions
 
 
 - 
                     
                     
                        
                        2.1
                            Partitioning Overview
                     
                        
                     
                     
                     
 - 
               
               
                  
                  3
                      Partitioning for Availability, Manageability, and Performance
               
                  
               
               
               
- 3.1 Partition Pruning
 - 3.2 Partition-Wise Joins
 - 
                     
                     
                        
                        3.3
                            Index Partitioning
                     
                        
                     
                     
                     
- 3.3.1 Local Partitioned Indexes
 - 3.3.2 Global Partitioned Indexes
 - 3.3.3 Summary of Partitioned Index Types
 - 3.3.4 The Importance of Nonprefixed Indexes
 - 3.3.5 Performance Implications of Prefixed and Nonprefixed Indexes
 - 3.3.6 Advanced Index Compression With Partitioned Indexes
 - 3.3.7 Guidelines for Partitioning Indexes
 - 3.3.8 Physical Attributes of Index Partitions
 
 - 3.4 Partitioning and Table Compression
 - 
                     
                     
                        
                        3.5
                            Recommendations for Choosing a Partitioning Strategy
                     
                        
                     
                     
                     
- 3.5.1 When to Use Range or Interval Partitioning
 - 3.5.2 When to Use Hash Partitioning
 - 3.5.3 When to Use List Partitioning
 - 
                           
                           
                              
                              3.5.4
                                  When to Use Composite Partitioning
                           
                              
                           
                           
                           
- 3.5.4.1 When to Use Composite Range-Hash Partitioning
 - 3.5.4.2 When to Use Composite Range-List Partitioning
 - 3.5.4.3 When to Use Composite Range-Range Partitioning
 - 3.5.4.4 When to Use Composite List-Hash Partitioning
 - 3.5.4.5 When to Use Composite List-List Partitioning
 - 3.5.4.6 When to Use Composite List-Range Partitioning
 
 - 3.5.5 When to Use Interval Partitioning
 - 3.5.6 When to Use Reference Partitioning
 - 3.5.7 When to Partition on Virtual Columns
 - 3.5.8 Considerations When Using Read-Only Tablespaces
 
 
 - 
               
               
                  
                  4
                      Partition Administration
               
                  
               
               
               
- 
                     
                     
                        
                        4.1
                            Specifying Partitioning When Creating Tables and Indexes
                     
                        
                     
                     
                     
- 4.1.1 About Creating Range-Partitioned Tables and Global Indexes
 - 4.1.2 Creating Range-Interval-Partitioned Tables
 - 4.1.3 About Creating Hash Partitioned Tables and Global Indexes
 - 4.1.4 About Creating List-Partitioned Tables
 - 4.1.5 Creating Reference-Partitioned Tables
 - 4.1.6 Creating Interval-Reference Partitioned Tables
 - 4.1.7 Creating a Table Using In-Memory Column Store With Partitioning
 - 4.1.8 Creating a Table with Read-Only Partitions or Subpartitions
 - 4.1.9 Creating a Partitioned External Table
 - 4.1.10 Specifying Partitioning on Key Columns
 - 4.1.11 Using Virtual Column-Based Partitioning
 - 4.1.12 Using Table Compression with Partitioned Tables
 - 4.1.13 Using Key Compression with Partitioned Indexes
 - 4.1.14 Specifying Partitioning with Segments
 - 4.1.15 Specifying Partitioning When Creating Index-Organized Tables
 - 4.1.16 Partitioning Restrictions for Multiple Block Sizes
 - 4.1.17 Partitioning of Collections in XMLType and Objects
 
 - 
                     
                     
                        
                        4.2
                            Specifying Composite Partitioning When Creating Tables
                     
                        
                     
                     
                     
- 4.2.1 Creating Composite Hash-* Partitioned Tables
 - 4.2.2 Creating Composite Interval-* Partitioned Tables
 - 4.2.3 Creating Composite List-* Partitioned Tables
 - 4.2.4 Creating Composite Range-* Partitioned Tables
 - 4.2.5 Specifying Subpartition Templates to Describe Composite Partitioned Tables
 
 - 4.3 Maintenance Operations Supported on Partitions
 - 
                     
                     
                        
                        4.4
                            Maintenance Operations for Partitioned Tables and Indexes
                     
                        
                     
                     
                     
- 
                           
                           
                              
                              4.4.1
                                  About Adding Partitions and Subpartitions
                           
                              
                           
                           
                           
- 4.4.1.1 Adding a Partition to a Range-Partitioned Table
 - 4.4.1.2 Adding a Partition to a Hash-Partitioned Table
 - 4.4.1.3 Adding a Partition to a List-Partitioned Table
 - 4.4.1.4 Adding a Partition to an Interval-Partitioned Table
 - 4.4.1.5 About Adding Partitions to a Composite *-Hash Partitioned Table
 - 4.4.1.6 About Adding Partitions to a Composite *-List Partitioned Table
 - 4.4.1.7 About Adding Partitions to a Composite *-Range Partitioned Table
 - 4.4.1.8 About Adding a Partition or Subpartition to a Reference-Partitioned Table
 - 4.4.1.9 Adding Index Partitions
 - 4.4.1.10 Adding Multiple Partitions
 
 - 4.4.2 About Coalescing Partitions and Subpartitions
 - 4.4.3 About Dropping Partitions and Subpartitions
 - 
                           
                           
                              
                              4.4.4
                                  About Exchanging Partitions and Subpartitions
                           
                              
                           
                           
                           
- 4.4.4.1 Creating a Table for Exchange With a Partitioned Table
 - 4.4.4.2 Exchanging a Range, Hash, or List Partition
 - 4.4.4.3 Exchanging a Partition of an Interval Partitioned Table
 - 4.4.4.4 Exchanging a Partition of a Reference-Partitioned Table
 - 4.4.4.5 About Exchanging a Partition of a Table with Virtual Columns
 - 4.4.4.6 Exchanging a Hash Partitioned Table with a *-Hash Partition
 - 4.4.4.7 Exchanging a Subpartition of a *-Hash Partitioned Table
 - 4.4.4.8 Exchanging a List-Partitioned Table with a *-List Partition
 - 4.4.4.9 About Exchanging a Subpartition of a *-List Partitioned Table
 - 4.4.4.10 Exchanging a Range-Partitioned Table with a *-Range Partition
 - 4.4.4.11 About Exchanging a Subpartition of a *-Range Partitioned Table
 - 4.4.4.12 About Exchanging a Partition with the Cascade Option
 
 - 4.4.5 About Merging Partitions and Subpartitions
 - 4.4.6 About Modifying Attributes of Tables, Partitions, and Subpartitions
 - 4.4.7 About Modifying List Partitions
 - 4.4.8 About Moving Partitions and Subpartitions
 - 4.4.9 About Rebuilding Index Partitions
 - 4.4.10 About Renaming Partitions and Subpartitions
 - 
                           
                           
                              
                              4.4.11
                                  About Splitting Partitions and Subpartitions
                           
                              
                           
                           
                           
- 4.4.11.1 Splitting a Partition of a Range-Partitioned Table
 - 4.4.11.2 Splitting a Partition of a List-Partitioned Table
 - 4.4.11.3 Splitting a Partition of an Interval-Partitioned Table
 - 4.4.11.4 Splitting a *-Hash Partition
 - 4.4.11.5 Splitting Partitions in a *-List Partitioned Table
 - 4.4.11.6 Splitting a *-Range Partition
 - 4.4.11.7 Splitting Index Partitions
 - 4.4.11.8 Splitting into Multiple Partitions
 - 4.4.11.9 Fast SPLIT PARTITION and SPLIT SUBPARTITION Operations
 
 - 4.4.12 About Truncating Partitions and Subpartitions
 
 - 
                           
                           
                              
                              4.4.1
                                  About Adding Partitions and Subpartitions
                           
                              
                           
                           
                           
 - 4.5 About Dropping Partitioned Tables
 - 4.6 Changing a Nonpartitioned Table into a Partitioned Table
 - 4.7 Viewing Information About Partitioned Tables and Indexes
 
 - 
                     
                     
                        
                        4.1
                            Specifying Partitioning When Creating Tables and Indexes
                     
                        
                     
                     
                     
 - 
               
               
                  
                  5
                      Managing and Maintaining Time-Based Information
               
                  
               
               
               
- 5.1 Managing Data in Oracle Database With ILM
 - 
                     
                     
                        
                        5.2
                            Implementing an ILM Strategy With Heat Map and ADO
                     
                        
                     
                     
                     
- 5.2.1 Using Heat Map
 - 
                           
                           
                              
                              5.2.2
                                  Using Automatic Data Optimization
                           
                              
                           
                           
                           
- 5.2.2.1 Managing Policies for Automatic Data Optimization
 - 5.2.2.2 Creating a Table With an ILM ADO Policy
 - 5.2.2.3 Adding ILM ADO Policies
 - 5.2.2.4 Disabling and Deleting ILM ADO Policies
 - 5.2.2.5 Specifying Segment-Level Compression and Storage Tiering With ADO
 - 5.2.2.6 Specifying Row-Level Compression Tiering With ADO
 - 5.2.2.7 Managing ILM ADO Parameters
 - 5.2.2.8 Using PL/SQL Functions for Policy Management
 - 5.2.2.9 Using Views to Monitor Policies for ADO
 
 - 5.2.3 Limitations and Restrictions With ADO and Heat Map
 
 - 5.3 Controlling the Validity and Visibility of Data in Oracle Database
 - 5.4 Implementing an ILM System Manually Using Partitioning
 - 
                     
                     
                        
                        5.5
                            Managing ILM Heat Map and ADO with Oracle Enterprise Manager
                     
                        
                     
                     
                     
- 5.5.1 Accessing the Database Administration Menu
 - 5.5.2 Viewing Automatic Data Optimization Activity at the Tablespace Level
 - 5.5.3 Viewing the Segment Activity Details of Any Tablespace
 - 5.5.4 Viewing the Segment Activity Details of Any Object
 - 5.5.5 Viewing the Segment Activity History of Any Object
 - 5.5.6 Searching Segment Activity in Automatic Data Optimization
 - 5.5.7 Viewing Policies for a Segment
 - 5.5.8 Disabling Background Activity
 - 5.5.9 Changing Execution Frequency of Background Automatic Data Optimization
 - 5.5.10 Viewing Policy Executions In the Last 24 Hours
 - 5.5.11 Viewing Objects Moved In Last 24 Hours
 - 5.5.12 Viewing Policy Details
 - 5.5.13 Viewing Objects Associated With a Policy
 - 5.5.14 Evaluating a Policy Before Execution
 - 5.5.15 Executing a Single Policy
 - 5.5.16 Stopping a Policy Execution
 - 5.5.17 Viewing Policy Execution History
 
 
 - 6 Using Partitioning in a Data Warehouse Environment
 - 7 Using Partitioning in an Online Transaction Processing Environment
 - 
               
               
                  
                  8
                      Using Parallel Execution
               
                  
               
               
               
- 
                     
                     
                        
                        8.1
                            Parallel Execution Concepts
                     
                        
                     
                     
                     
- 8.1.1 When to Implement Parallel Execution
 - 8.1.2 When Not to Implement Parallel Execution
 - 8.1.3 Fundamental Hardware Requirements
 - 8.1.4 How Parallel Execution Works
 - 8.1.5 Parallel Execution Server Pool
 - 8.1.6 Balancing the Workload to Optimize Performance
 - 8.1.7 Multiple Parallelizers
 - 8.1.8 Parallel Execution on Oracle RAC
 
 - 8.2 Setting the Degree of Parallelism
 - 8.3 In-Memory Parallel Execution
 - 
                     
                     
                        
                        8.4
                            Parallel Statement Queuing
                     
                        
                     
                     
                     
- 
                           
                           
                              
                              8.4.1
                                  About Managing Parallel Statement Queuing with Oracle Database Resource Manager
                           
                              
                           
                           
                           
- 8.4.1.1 About Managing the Order of the Parallel Statement Queue
 - 8.4.1.2 About Limiting the Parallel Server Resources for a Consumer Group
 - 8.4.1.3 Specifying a Parallel Statement Queue Timeout for Each Consumer Group
 - 8.4.1.4 Specifying a Degree of Parallelism Limit for Consumer Groups
 - 8.4.1.5 Critical Parallel Statement Prioritization
 - 8.4.1.6 About Managing Parallel Statement Queuing for CDBs and PDBs
 - 8.4.1.7 A Sample Scenario for Managing Statements in the Parallel Queue
 
 - 8.4.2 Grouping Parallel Statements with BEGIN_SQL_BLOCK END_SQL_BLOCK
 - 8.4.3 About Managing Parallel Statement Queuing with Hints
 
 - 
                           
                           
                              
                              8.4.1
                                  About Managing Parallel Statement Queuing with Oracle Database Resource Manager
                           
                              
                           
                           
                           
 - 
                     
                     
                        
                        8.5
                            Types of Parallelism
                     
                        
                     
                     
                     
- 8.5.1 About Parallel Queries
 - 
                           
                           
                              
                              8.5.2
                                  About Parallel DDL Statements
                           
                              
                           
                           
                           
- 8.5.2.1 DDL Statements That Can Be Parallelized
 - 8.5.2.2 About Using CREATE TABLE AS SELECT in Parallel
 - 8.5.2.3 Recoverability and Parallel DDL
 - 8.5.2.4 Space Management for Parallel DDL
 - 8.5.2.5 Storage Space When Using Dictionary-Managed Tablespaces
 - 8.5.2.6 Free Space and Parallel DDL
 - 8.5.2.7 Rules for DDL Statements
 - 8.5.2.8 Rules for CREATE TABLE AS SELECT
 
 - 
                           
                           
                              
                              8.5.3
                                  About Parallel DML Operations
                           
                              
                           
                           
                           
- 8.5.3.1 When to Use Parallel DML
 - 8.5.3.2 Enable Parallel DML Mode
 - 8.5.3.3 Rules for UPDATE, MERGE, and DELETE
 - 8.5.3.4 Rules for INSERT SELECT
 - 8.5.3.5 Transaction Restrictions for Parallel DML
 - 8.5.3.6 Rollback Segments
 - 8.5.3.7 Recovery for Parallel DML
 - 8.5.3.8 Space Considerations for Parallel DML
 - 8.5.3.9 Restrictions on Parallel DML
 - 8.5.3.10 Data Integrity Restrictions
 - 8.5.3.11 Trigger Restrictions
 - 8.5.3.12 Distributed Transaction Restrictions
 - 8.5.3.13 Examples of Distributed Transaction Parallelization
 - 8.5.3.14 Concurrent Execution of Union All
 
 - 8.5.4 About Parallel Execution of Functions
 - 8.5.5 About Other Types of Parallelism
 - 8.5.6 Degree of Parallelism Rules for SQL Statements
 
 - 
                     
                     
                        
                        8.6
                            About Initializing and Tuning Parameters for Parallel Execution
                     
                        
                     
                     
                     
- 8.6.1 Default Parameter Settings
 - 8.6.2 Forcing Parallel Execution for a Session
 - 
                           
                           
                              
                              8.6.3
                                  Tuning General Parameters for Parallel Execution
                           
                              
                           
                           
                           
- 
                                 
                                 
                                    
                                    8.6.3.1
                                        Parameters Establishing Resource Limits for Parallel Operations
                                 
                                    
                                 
                                 
                                 
- 8.6.3.1.1 PARALLEL_FORCE_LOCAL
 - 8.6.3.1.2 PARALLEL_MAX_SERVERS
 - 8.6.3.1.3 PARALLEL_MIN_PERCENT
 - 8.6.3.1.4 PARALLEL_MIN_SERVERS
 - 8.6.3.1.5 PARALLEL_MIN_TIME_THRESHOLD
 - 8.6.3.1.6 PARALLEL_SERVERS_TARGET
 - 8.6.3.1.7 SHARED_POOL_SIZE
 - 8.6.3.1.8 Additional Memory Requirements for Message Buffers
 - 8.6.3.1.9 Monitor Memory Usage After Processing Begins
 
 - 8.6.3.2 Parameters Affecting Resource Consumption
 - 8.6.3.3 Parameters Related to I/O
 
 - 
                                 
                                 
                                    
                                    8.6.3.1
                                        Parameters Establishing Resource Limits for Parallel Operations
                                 
                                    
                                 
                                 
                                 
 
 - 
                     
                     
                        
                        8.7
                            Monitoring Parallel Execution Performance
                     
                        
                     
                     
                     
- 
                           
                           
                              
                              8.7.1
                                  Monitoring Parallel Execution Performance with Dynamic Performance Views
                           
                              
                           
                           
                           
- 8.7.1.1 V$PX_BUFFER_ADVICE
 - 8.7.1.2 V$PX_SESSION
 - 8.7.1.3 V$PX_SESSTAT
 - 8.7.1.4 V$PX_PROCESS
 - 8.7.1.5 V$PX_PROCESS_SYSSTAT
 - 8.7.1.6 V$PQ_SESSTAT
 - 8.7.1.7 V$PQ_TQSTAT
 - 8.7.1.8 V$RSRC_CONS_GROUP_HISTORY
 - 8.7.1.9 V$RSRC_CONSUMER_GROUP
 - 8.7.1.10 V$RSRC_PLAN
 - 8.7.1.11 V$RSRC_PLAN_HISTORY
 - 8.7.1.12 V$RSRC_SESSION_INFO
 - 8.7.1.13 V$RSRCMGRMETRIC
 
 - 8.7.2 Monitoring Session Statistics
 - 8.7.3 Monitoring System Statistics
 - 8.7.4 Monitoring Operating System Statistics
 
 - 
                           
                           
                              
                              8.7.1
                                  Monitoring Parallel Execution Performance with Dynamic Performance Views
                           
                              
                           
                           
                           
 - 
                     
                     
                        
                        8.8
                            Tips for Tuning Parallel Execution
                     
                        
                     
                     
                     
- 8.8.1 Implementing a Parallel Execution Strategy
 - 8.8.2 Optimizing Performance by Creating and Populating Tables in Parallel
 - 8.8.3 Using EXPLAIN PLAN to Show Parallel Operations Plans
 - 
                           
                           
                              
                              8.8.4
                                  Additional Considerations for Parallel DML
                           
                              
                           
                           
                           
- 8.8.4.1 Parallel DML and Direct-Path Restrictions
 - 8.8.4.2 Limitation on the Degree of Parallelism
 - 8.8.4.3 When to Increase INITRANS
 - 8.8.4.4 Limitation on Available Number of Transaction Free Lists for Segments
 - 8.8.4.5 Multiple Archivers for Large Numbers of Redo Logs
 - 8.8.4.6 Database Writer Process (DBWn) Workload
 - 8.8.4.7 [NO]LOGGING Clause
 
 - 8.8.5 Optimizing Performance by Creating Indexes in Parallel
 - 8.8.6 Parallel DML Tips
 - 8.8.7 Incremental Data Loading in Parallel
 
 
 - 
                     
                     
                        
                        8.1
                            Parallel Execution Concepts
                     
                        
                     
                     
                     
 - 
               
               
                  
                  9
                      Backing Up and Recovering VLDBs
               
                  
               
               
               
- 9.1 Data Warehouses
 - 9.2 Oracle Backup and Recovery
 - 9.3 Data Warehouse Backup and Recovery
 - 
                     
                     
                        
                        9.4
                            The Data Warehouse Recovery Methodology
                     
                        
                     
                     
                     
- 9.4.1 Best Practice 1: Use ARCHIVELOG Mode
 - 9.4.2 Best Practice 2: Use RMAN
 - 9.4.3 Best Practice 3: Use Block Change Tracking
 - 9.4.4 Best Practice 4: Use RMAN Multisection Backups
 - 9.4.5 Best Practice 5: Leverage Read-Only Tablespaces
 - 9.4.6 Best Practice 6: Plan for NOLOGGING Operations in Your Backup/Recovery Strategy
 - 9.4.7 Best Practice 7: Not All Tablespaces Should Be Treated Equally
 
 
 - 10 Storage Management for VLDBs
 - Glossary
 - Index