public class OracleTablePartitions extends AbstractChildDBObject
create table HASH1 ( C1 number , C2 number ) partition by hash(C1) partitions 3 store in ( USERS, EXAMPLE )
The following DDL creates a table with individually defined partitions:
create table HASH2 ( C1 number , C2 number ) partition by hash(C1) ( partition P1 tablespace USERS ,partition P2 tablespace EXAMPLE )
It isn't permissible to define both model and individual partitions, but it is permissible to define model and individual subpartitions :
create table RANGE_HASH1 ( C1 number , C2 number ) partition by range(C1) subpartition by hash(C2) subpartitions 2 store in (EXAMPLE) ( partition P100 values less than(100) ( subpartition ,subpartition RANGE_HASH1_SP1 ,subpartition RANGE_HASH1_SP2 ) ,partition P500 values less than(500) ,partition PMAX values less than(maxvalue) subpartitions 5 store in (USERS) )
In this example, partition P_100 has 3 individually defined subpartitions,
partition P500 has 2 subpartitions defined by the subpartitions 2
model,
and partition PMAX has 5 subpartitions defined by its own subpartitions
model. The subpartition definitions within P100 and PMAX are known as partition
level subpartitions. Instead of just defining how many subpartitions are
created for partitions that don't define partition level subpartitions, a
subpartition template can be defined instead :
create table RANGE_HASH2 ( C1 number , C2 number ) partition by range(C1) subpartition by hash(C2) subpartition template ( subpartition RANGE_HASH2_SP1 ,subpartition RANGE_HASH2_SP2 ) ( partition P100 values less than(100) ( subpartition ,subpartition RANGE_HASH2_SP3 ,subpartition RANGE_HASH2_SP4 ) ,partition P500 values less than(500) ,partition PMAX values less than(maxvalue) )
In this example, partitions P500 is allocated subpartitions called P500_RANGE_HASH2_SP1, and P500_RANGE_HASH2_SP2, and partition PMAX is allocated subpartitions PMAX_RANGE_HASH2_SP1, and PMAX_RANGE_HASH2_SP2.
If the table defines LOB or VARRAY columns, they may be further defined within an individual partition or subpartition :
create table RANGE_HASH3 ( C1 number , C2 number , C_CLOB clob , C_BLOB blob , C_VARRAY T_VARRAY ) partition by range(C1) subpartition by hash(C2) ( partition P100 values less than(100) lob(C_BLOB) store as RANGE_HASH3_P100_SEG1 ( subpartition RANGE_HASH3_SP1 lob(C_CLOB) store as RANGE_HASH3_SP1_SEG1( tablespace USERS) ,subpartition RANGE_HASH3_SP2 varray C_VARRAY store as lob RANGE_HASH3_SP2_SEG1 ) ,partition PMAX values less than(maxvalue) ( subpartition RANGE_HASH3_SP3 lob(C_CLOB) store as RANGE_HASH3_SP1_SEG3( tablespace USERS) varray C_VARRAY store as lob RANGE_HASH3_SP3_SEG1 ) )
The OracleTablePartitions class defines
subpartition by hash(<column list>) subpartitions <quantity> subpartition by hash(<column list>) subpartition template <quantity>For consistency, all other usages that require
subpartition template
to be included in the DDL should set an object type of SUBPARTITION_TEMPLATE.
The following example shows how OracleTablePartitions objects are used to model a table's partitions and subpartions. The example DDL is minimal; it doesn't include any of the properties that can be used to define individual (sub)partitions:
create table RANGE_HASH1 ( C1 number , C2 number ) partition by range(C1) subpartition by hash(C2) subpartitions 2 store as (EXAMPLE, USERS) ( partition P100 values less than(100) ( subpartition ,subpartition RANGE_HASH1_SP1 ,subpartition RANGE_HASH1_SP2 ) ,partition P500 values less than(500) ,partition PMAX values less than(maxvalue) subpartitions 5 store in (USERS) )
An OracleTablePartitions held on a Table object is required to define the table's
partitions. Its PARTITION_TYPE is RANGE and its OBJECT_TYPE is PARTITION. Its
COLUMNS contains C1, and its PARTITIONS references a TablePartition
object for each of P100, P500 and PMAX. The HASH_QUANTITY and HASH_QUANTITY_TABLESPACES
properties aren't used as it is a range partition. Since there are subpartitions,
SUBPARTITION_MODEL references another OracleTablePartitions object
that defines the subpartition model. This object's PARTITION_TYPE is HASH
and OBJECT_TYPE is SUBPARTITION. If instead of the clause
subpartition by hash(C2) subpartitions 2 store as (USERS)
we had
subpartition by hash(C2) subpartition template 2
the OBJECT_TYPE would be SUBPARTITION_TEMPLATE. Its would also
be SUBPARTITION_TEMPLATE, if instead of defining the number of templates we
specified individual templates, e.g.
subpartition by hash(C2) subpartition template ( subpartition RANGE_HASH2_SP1 ,subpartition RANGE_HASH2_SP2 )In all cases, the object's COLUMNS would contain C2 and SUBPARTITION_MODEL would be null as this object is the subpartition model (and subpartition model are only valid for RANGE PARTITIONs). In the 2 cases where the subpartition model defines the number of subpartitions, the HASH_QUANTITY property will contain that number. Additionaly, in the first case the names of the EXAMPLE and USERS tablespaces will be stored in the HASH_QUANTITY_TABLESPACES. The PARTITIONS property will be empty as individual subpartition templates aren't being defined. In contrast, when individual subpartition templates are defined, as in the example clause above, PARTITIONS will reference a TablePartition object for each of the templates (RANGE_HASH2_SP1, RANGE_HASH2_SP2).
DDL clauses when OBJECT_TYPE = PARTITION
TablePartition
,
LOBDescriptor
Modifier and Type | Class and Description |
---|---|
static class |
OracleTablePartitions.ObjectType |
static class |
OracleTablePartitions.PartitionType |
AbstractDBObject.ChildSupport, AbstractDBObject.ListenerSupport
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
KEY |
static java.lang.String |
TYPE |
Constructor and Description |
---|
OracleTablePartitions() |
OracleTablePartitions(OracleTablePartitions.PartitionType partitionType,
OracleTablePartitions.ObjectType objectType) |
Modifier and Type | Method and Description |
---|---|
void |
addHashQuantityTablespace(DBObjectID tablespaceID)
Add a HASH_QUANTITY_TABLESPACE.
|
void |
addHashQuantityTablespace(java.lang.String tablespaceName)
Deprecated.
|
void |
addPartition(TablePartition partition)
Add an individual PARTITION, SUBPARTITION_TEMPLATE, or
PARTITION_LEVEL_SUBPARTITION TablePartition object.
|
void |
addPartitionColumn(DBObjectID partitionColumn)
Add a (sub)partitioning column.
|
void |
addPartitionColumn(DBObjectID partitionColumn,
int atIndex)
Add a (sub)partitioning column at the given index.
|
TablePartition |
createPartition(java.lang.String name)
Creates a TablePartition object of this.getPartitionType()+this.getObjectType
and adds it to self.
|
java.lang.Integer |
getHashQuantity()
Return the HASH_QUANTITY.
|
DBObjectID[] |
getHashQuantityTablespaceIds()
Return an array of a HASH_QUANTITY_TABLESPACE.
|
java.lang.String[] |
getHashQuantityTablespaces()
Deprecated.
|
OracleTablePartitions.ObjectType |
getObjectType() |
DBObjectID[] |
getPartitionColumns()
Return an array of (sub)partitioning columns.
|
TablePartition[] |
getPartitions()
Returns an array of individual PARTITION, SUBPARTITION_TEMPLATE, or
PARTITION_LEVEL_SUBPARTITION TablePartition objects.
|
OracleTablePartitions.PartitionType |
getPartitionType() |
OracleTablePartitions |
getSubpartitionModel()
Returns the OracleTablePartitions object that defines the SUBPARTITION
or SUBPARTITION_TEMPLATE model of a RANGE-HASH or RANGE-LIST composite
partition.
|
java.lang.String |
getType()
Returns the type of this object.
|
void |
removeHashQuantityTablespace(DBObjectID tablespaceID)
Remove a HASH_QUANTITY_TABLESPACE.
|
void |
removeHashQuantityTablespace(java.lang.String tablespaceName)
Deprecated.
|
void |
removePartition(TablePartition partition)
Remove an individual PARTITION, SUBPARTITION_TEMPLATE, or
PARTITION_LEVEL_SUBPARTITION TablePartition object.
|
void |
removePartitionColumn(DBObjectID partitionColumn)
Remove a (sub)partitioning column.
|
void |
setHashQuantity(java.lang.Integer hashQuantity)
Set the HASH_QUANTITY.
|
void |
setHashQuantityTablespaceIds(DBObjectID[] tablespaceIDs)
Replace the HASH_QUANTITY_TABLESPACE with new ones.
|
void |
setHashQuantityTablespaces(java.lang.String[] tablespaceNames)
Deprecated.
|
void |
setObjectType(OracleTablePartitions.ObjectType objectType)
Set OBJECT_TYPE as one of
PARTITION, SUBPARTITION, SUBPARTITION_TEMPLATE, PARTITION_LEVEL_SUBPARTITION.
|
void |
setPartitionColumns(DBObjectID[] partitionColumns)
Replace the (sub)partitioning columns.
|
void |
setPartitions(TablePartition[] partitions)
Replace the individual PARTITION, SUBPARTITION_TEMPLATE, or
PARTITION_LEVEL_SUBPARTITION TablePartition objects with new ones.
|
void |
setPartitionType(OracleTablePartitions.PartitionType partitionType)
Set PARTITION_TYPE as one of RANGE, HASH, LIST.
|
void |
setSubpartitionModel(OracleTablePartitions subpartitionModel)
Set the OracleTablePartitions object that defines the SUBPARTITION
or SUBPARTITION_TEMPLATE model of a RANGE-HASH or RANGE-LIST composite
partition.
|
setParent
addObjectListener, addObjectListener, addObjectListener, changeParent, compareToImpl, copyObject, copyTo, copyTo, copyTo, copyTo, copyToImpl, equals, equalsImpl, findOwnedObject, findOwnedObject, findOwnedObject, findOwnedObject, findParent, fireObjectUpdated, firePropertyChanged, getChildSupport, getID, getName, getOwnedObjects, getOwnedObjects, getOwnedObjectsImpl, getParent, getProperties, getProperty, getProperty, getReferenceIDs, getReferenceIDsImpl, hashCode, includeOwnedObject, includesType, includesType, removeObjectListener, removeObjectListener, removeObjectListener, removeOwnedObject, removeThisAsParent, replaceReferenceIDs, setID, setName, setProperties, setProperty, toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
getParent
addObjectListener, copyTo, copyTo, copyTo, equals, findOwnedObject, findOwnedObject, findOwnedObject, getID, getName, getOwnedObjects, getOwnedObjects, getProperties, getReferenceIDs, hashCode, removeObjectListener, removeOwnedObject, replaceReferenceIDs, setID, setName
getProperty, getProperty, setProperties, setProperty
public static final java.lang.String KEY
public static final java.lang.String TYPE
public OracleTablePartitions()
public OracleTablePartitions(OracleTablePartitions.PartitionType partitionType, OracleTablePartitions.ObjectType objectType)
public java.lang.String getType()
DBObject
public void setPartitionType(OracleTablePartitions.PartitionType partitionType)
partitionType
- public OracleTablePartitions.PartitionType getPartitionType()
public void setObjectType(OracleTablePartitions.ObjectType objectType)
objectType
- public OracleTablePartitions.ObjectType getObjectType()
public void setSubpartitionModel(OracleTablePartitions subpartitionModel)
subpartitionModel
- public OracleTablePartitions getSubpartitionModel()
getPartitions()
public void setPartitionColumns(DBObjectID[] partitionColumns)
partitionColumns
- public DBObjectID[] getPartitionColumns()
public void addPartitionColumn(DBObjectID partitionColumn)
partitionColumn
- public void addPartitionColumn(DBObjectID partitionColumn, int atIndex)
partitionColumn
- atIndex
- public void removePartitionColumn(DBObjectID partitionColumn)
public void setHashQuantity(java.lang.Integer hashQuantity)
hashQuantity
- public java.lang.Integer getHashQuantity()
@Deprecated public void setHashQuantityTablespaces(java.lang.String[] tablespaceNames)
tablespaceNames
- public void setHashQuantityTablespaceIds(DBObjectID[] tablespaceIDs)
tablespaceIDs
- @Deprecated public void addHashQuantityTablespace(java.lang.String tablespaceName)
tablespaceName
- public void addHashQuantityTablespace(DBObjectID tablespaceID)
tablespaceID
- @Deprecated public void removeHashQuantityTablespace(java.lang.String tablespaceName)
tablespaceName
- public void removeHashQuantityTablespace(DBObjectID tablespaceID)
tablespaceID
- @Deprecated public java.lang.String[] getHashQuantityTablespaces()
public DBObjectID[] getHashQuantityTablespaceIds()
public void setPartitions(TablePartition[] partitions)
partitions
- public TablePartition[] getPartitions()
public void addPartition(TablePartition partition)
partition
- public void removePartition(TablePartition partition)
partition
- public TablePartition createPartition(java.lang.String name)
name
- : name of partition or null if unnamed