プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

ALTER TABLE

用途

ALTER TABLE文を使用すると、非パーティション表、パーティション表、表パーティションおよび表サブパーティションの定義を変更できます。オブジェクト表またはオブジェクト列を含むリレーショナル表の場合は、ALTER TABLEを使用して型が変更された後に、表を参照する型の最新の定義に変換します。


注意:

マテリアライズド・ビュー・ログ表の操作では、可能な場合は常に、ALTER TABLE文ではなくALTER MATERIALIZED VIEW LOG文を使用することをお薦めします。


関連項目:

  • 表の作成については、「CREATE TABLE」を参照してください。

  • Oracle Textとともに使用するALTER TABLE文については、『Oracle Textリファレンス』を参照してください。


前提条件

表が自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、その表に対するALTERオブジェクト権限またはALTER ANY TABLEシステム権限が必要です。

パーティション化操作におけるその他の前提条件 表の所有者でない場合、drop_table_partitionまたはtruncate_table_partition句を使用するには、DROP ANY TABLE権限が必要です。

add_table_partitionmodify_table_partitionmove_table_partitionおよびsplit_table_partition句を使用する場合、領域を確保する表領域に領域割当て制限が必要です。

パーティション化操作が子の参照パーティション表にカスケードする場合、子の参照パーティション表では権限は必要ありません。

制約およびトリガーにおけるその他の前提条件 一意キー制約または主キー制約を有効にする場合は、表に索引を作成するための権限が必要です。Oracle Databaseでは、表を含むスキーマにおいて、一意キーまたは主キーの列に索引を作成するため、この権限が必要になります。

トリガーを使用可能または使用禁止にする場合、トリガーが自分のスキーマ内にある必要があります。自分のスキーマにない場合は、ALTER ANY TRIGGERシステム権限が必要です。


関連項目:

索引を作成する場合に必要な権限については、「CREATE INDEX」を参照してください。

オブジェクト型を使用する場合のその他の前提条件 表を変更するときに列定義でオブジェクト型を使用する場合、そのオブジェクトが、変更する表と同じスキーマに属している必要があります。または、EXECUTE ANY TYPEシステム権限またはそのオブジェクト型に対するEXECUTEオブジェクト権限が必要です。

フラッシュバック・データ・アーカイブ操作におけるその他の前提条件 flashback_archive_clauseを使用して表の履歴追跡を有効にするには、履歴データが含まれるフラッシュバック・データ・アーカイブに対するFLASHBACK ARCHIVEオブジェクト権限が必要です。flashback_archive_clauseを使用して表の履歴追跡を無効にするには、FLASHBACK ARCHIVE ADMINSTERシステム権限を持っているか、またはSYSDBAとしてログインしている必要があります。

構文

alter_table::=

alter_table.gifの説明が続きます。
図「alter_table.gif」の説明


注意:

tableの後に句を指定する必要があります。必須の句はありませんが、1つ以上の句を指定する必要があります。

ALTER TABLE構文のグループは、次のとおりです。

各句の後には、そのコンポーネントの副次句の参照先が記載されています。

alter_table_properties::=

alter_table_properties.gifの説明が続きます。
図「alter_table_properties.gif」の説明

(physical_attributes_clause::=logging_clause::=table_compression ::=supplemental_table_logging ::=allocate_extent_clause ::=deallocate_unused_clause::=upgrade_table_clause ::=records_per_block_clause ::=parallel_clause::=row_movement_clause::=flashback_archive_clause::=shrink_clause::=alter_iot_clauses::=alter_XMLSchema_clause::=を参照)

physical_attributes_clause::=

physical_attributes_clause.gifの説明が続きます。
図「physical_attributes_clause.gif」の説明

(storage_clause::=を参照)

logging_clause::=

logging_clause.gifの説明が続きます。
図「logging_clause.gif」の説明

table_compression::=

table_compression.gifの説明が続きます。
図「table_compression.gif」の説明

supplemental_table_logging ::=

supplemental_table_logging.gifの説明が続きます。
図「supplemental_table_logging.gif」の説明

supplemental_log_grp_clause::=

supplemental_log_grp_clause.gifの説明が続きます。
図「supplemental_log_grp_clause.gif」の説明

supplemental_id_key_clause::=

supplemental_id_key_clause.gifの説明が続きます。
図「supplemental_id_key_clause.gif」の説明

allocate_extent_clause::=

allocate_extent_clause.gifの説明が続きます。
図「allocate_extent_clause.gif」の説明

(size_clause::=を参照)

deallocate_unused_clause::=

deallocate_unused_clause.gifの説明が続きます。
図「deallocate_unused_clause.gif」の説明

(size_clause::=を参照)

shrink_clause::=

shrink_clause.gifの説明が続きます。
図「shrink_clause.gif」の説明

upgrade_table_clause ::=

upgrade_table_clause.gifの説明が続きます。
図「upgrade_table_clause.gif」の説明

(column_properties::=を参照)

records_per_block_clause ::=

records_per_block_clause.gifの説明が続きます。
図「records_per_block_clause.gif」の説明

parallel_clause::=

parallel_clause.gifの説明が続きます。
図「parallel_clause.gif」の説明

row_movement_clause::=

row_movement_clause.gifの説明が続きます。
図「row_movement_clause.gif」の説明

alter_iot_clauses::=

alter_iot_clauses.gifの説明が続きます。
図「alter_iot_clauses.gif」の説明

(alter_overflow_clause ::=alter_mapping_table_clauses ::=を参照)

index_org_table_clause::=

index_org_table_clause.gifの説明が続きます。
図「index_org_table_clause.gif」の説明

mapping_table_clauses::=

mapping_table_clauses.gifの説明が続きます。
図「mapping_table_clauses.gif」の説明

key_compression::=

key_compression.gifの説明が続きます。
図「key_compression.gif」の説明

index_org_overflow_clause::=

index_org_overflow_clause.gifの説明が続きます。
図「index_org_overflow_clause.gif」の説明

(segment_attributes_clause::=を参照)

partition_extended_name::=

partition_extended_name.gifの説明が続きます。
図「partition_extended_name.gif」の説明

subpartition_extended_name::=

subpartition_extended_name.gifの説明が続きます。
図「subpartition_extended_name.gif」の説明

segment_attributes_clause::=

segment_attributes_clause.gifの説明が続きます。
図「segment_attributes_clause.gif」の説明

(physical_attributes_clause ::=logging_clause::=を参照)

alter_overflow_clause::=

alter_overflow_clause.gifの説明が続きます。
図「alter_overflow_clause.gif」の説明

(segment_attributes_clause::=allocate_extent_clause ::=shrink_clause::=deallocate_unused_clause::=を参照)

add_overflow_clause::=

add_overflow_clause.gifの説明が続きます。
図「add_overflow_clause.gif」の説明

(segment_attributes_clause::=を参照)

alter_mapping_table_clauses ::=

alter_mapping_table_clauses.gifの説明が続きます。
図「alter_mapping_table_clauses.gif」の説明

(allocate_extent_clause ::=deallocate_unused_clause ::=を参照)

column_clauses::=

column_clauses.gifの説明が続きます。
図「column_clauses.gif」の説明

(add_column_clause ::=modify_column_clauses::=drop_column_clause ::=rename_column_clause ::=modify_collection_retrieval ::=modify_LOB_storage_clause::=alter_varray_col_properties::=encryption_spec::=を参照)

add_column_clause ::=

add_column_clause.gifの説明が続きます。
図「add_column_clause.gif」の説明

(column_definition::=column_properties::=を参照)

column_definition::=

column_definition.gifの説明が続きます。
図「column_definition.gif」の説明

(encryption_spec::=constraint::=inline_constraintおよびinline_ref_constraintを参照)

virtual_column_definition::=

virtual_column_definition.gifの説明が続きます。
図「virtual_column_definition.gif」の説明

modify_column_clauses::=

modify_column_clauses.gifの説明が続きます。
図「modify_column_clauses.gif」の説明

modify_col_properties::=

modify_col_properties.gifの説明が続きます。
図「modify_col_properties.gif」の説明

(encryption_spec::=constraint::=inline_constraintLOB_storage_clause::=を参照)

encryption_spec::=

encryption_spec.gifの説明が続きます。
図「encryption_spec.gif」の説明

modify_col_substitutable::=

modify_col_substitutable.gifの説明が続きます。
図「modify_col_substitutable.gif」の説明

drop_column_clause ::=

drop_column_clause.gifの説明が続きます。
図「drop_column_clause.gif」の説明

rename_column_clause ::=

rename_column_clause.gifの説明が続きます。
図「rename_column_clause.gif」の説明

modify_collection_retrieval ::=

modify_collection_retrieval.gifの説明が続きます。
図「modify_collection_retrieval.gif」の説明

constraint_clauses::=

constraint_clauses.gifの説明が続きます。
図「constraint_clauses.gif」の説明

(out_of_line_constraint::=, out_of_line_ref_constraint::=, constraint_state::=, drop_constraint_clause::=)

drop_constraint_clause::=

drop_constraint_clause.gifの説明が続きます。
図「drop_constraint_clause.gif」の説明

column_properties::=

column_properties.gifの説明が続きます。
図「column_properties.gif」の説明

out_of_line_part_storage::=

out_of_line_part_storage.gifの説明が続きます。
図「out_of_line_part_storage.gif」の説明

object_type_col_properties::=

object_type_col_properties.gifの説明が続きます。
図「object_type_col_properties.gif」の説明

substitutable_column_clause::=

substitutable_column_clause.gifの説明が続きます。
図「substitutable_column_clause.gif」の説明

nested_table_col_properties::=

nested_table_col_properties.gifの説明が続きます。
図「nested_table_col_properties.gif」の説明

object_properties::=

object_properties.gifの説明が続きます。
図「object_properties.gif」の説明

(constraint::=inline_constraintinline_ref_constraintout_of_line_constraintout_of_line_ref_constraintを参照)

supplemental_logging_props::=

supplemental_logging_props.gifの説明が続きます。
図「supplemental_logging_props.gif」の説明

(supplemental_log_grp_clause::=supplemental_id_key_clause::=を参照)

physical_properties::=

physical_properties.gifの説明が続きます。
図「physical_properties.gif」の説明

(deferred_segment_creation::=segment_attributes_clause::=index_org_table_clause ::=external_data_properties::=を参照)

deferred_segment_creation::=

deferred_segment_creation.gifの説明が続きます。
図「deferred_segment_creation.gif」の説明

varray_col_properties::=

varray_col_properties.gifの説明が続きます。
図「varray_col_properties.gif」の説明

(substitutable_column_clause::=varray_storage_clause::=を参照)

varray_storage_clause::=

varray_storage_clause.gifの説明が続きます。
図「varray_storage_clause.gif」の説明

(LOB_parameters::=を参照)

LOB_storage_clause::=

lob_storage_clause.gifの説明が続きます。
図「lob_storage_clause.gif」の説明

(LOB_storage_parameters::=を参照)

LOB_storage_parameters::=

lob_storage_parameters.gifの説明が続きます。
図「lob_storage_parameters.gif」の説明

(LOB_parameters::=storage_clause::=を参照)

LOB_parameters::=

lob_parameters.gifの説明が続きます。
図「lob_parameters.gif」の説明

(LOB_retention_clause::=LOB_deduplicate_clause::=LOB_compression_clause::=encryption_spec::=logging_clause::=を参照)

modify_LOB_storage_clause::=

modify_lob_storage_clause.gifの説明が続きます。
図「modify_lob_storage_clause.gif」の説明

modify_LOB_parameters::=

modify_lob_parameters.gifの説明が続きます。
図「modify_lob_parameters.gif」の説明

(storage_clause::=LOB_retention_clause::=LOB_compression_clause::=encryption_spec::=logging_clause::=allocate_extent_clause ::=shrink_clause::=deallocate_unused_clause::=を参照)

LOB_retention_clause::=

lob_retention_clause.gifの説明が続きます。
図「lob_retention_clause.gif」の説明

LOB_deduplicate_clause::=

lob_deduplicate_clause.gifの説明が続きます。
図「lob_deduplicate_clause.gif」の説明

LOB_compression_clause::=

lob_compression_clause.gifの説明が続きます。
図「lob_compression_clause.gif」の説明

alter_varray_col_properties::=

alter_varray_col_properties.gifの説明が続きます。
図「alter_varray_col_properties.gif」の説明

(modify_LOB_parameters::=を参照)

LOB_partition_storage::=

lob_partition_storage.gifの説明が続きます。
図「lob_partition_storage.gif」の説明

(LOB_storage_clause::=varray_col_properties::=LOB_partitioning_storage::=を参照)

LOB_partitioning_storage::=

lob_partitioning_storage.gifの説明が続きます。
図「lob_partitioning_storage.gif」の説明

XMLType_column_properties::=

xmltype_column_properties.gifの説明が続きます。
図「xmltype_column_properties.gif」の説明

XMLType_storage::=

xmltype_storage.gifの説明が続きます。
図「xmltype_storage.gif」の説明

XMLSchema_spec::=

xmlschema_spec.gifの説明が続きます。
図「xmlschema_spec.gif」の説明

alter_XMLSchema_clause::=

alter_xmlschema_clause.gifの説明が続きます。
図「alter_xmlschema_clause.gif」の説明

alter_external_table ::=

alter_external_table.gifの説明が続きます。
図「alter_external_table.gif」の説明

(add_column_clause ::=modify_column_clauses::=drop_column_clause ::=drop_constraint_clause::=parallel_clause::=を参照)

external_data_properties::=

external_data_properties.gifの説明が続きます。
図「external_data_properties.gif」の説明

alter_table_partitioning ::=

alter_table_partitioning.gifの説明が続きます。
図「alter_table_partitioning.gif」の説明

(modify_table_default_attrs ::=alter_interval_partitioning::=set_subpartition_template ::=modify_table_partition::=modify_table_subpartition::=move_table_partition::=move_table_subpartition::=add_table_partition::=coalesce_table_partition::=coalesce_table_subpartition::=drop_table_partition::=drop_table_subpartition ::=rename_partition_subpart::=truncate_partition_subpart::=split_table_partition::=split_table_subpartition ::=merge_table_partitions ::=merge_table_subpartitions ::=exchange_partition_subpart ::=を参照)

modify_table_default_attrs ::=

modify_table_default_attrs.gifの説明が続きます。
図「modify_table_default_attrs.gif」の説明

(partition_extended_name::=deferred_segment_creation::=segment_attributes_clause::=table_compression ::=key_compression::=alter_overflow_clause ::=LOB_parameters::=を参照)

alter_interval_partitioning::=

alter_interval_partitioning.gifの説明が続きます。
図「alter_interval_partitioning.gif」の説明

set_subpartition_template ::=

set_subpartition_template.gifの説明が続きます。
図「set_subpartition_template.gif」の説明

(range_subpartition_desc::=list_subpartition_desc::=individual_hash_subparts::=を参照)

modify_table_partition::=

modify_table_partition.gifの説明が続きます。
図「modify_table_partition.gif」の説明

(modify_range_partition::=modify_hash_partition::=modify_list_partition::=を参照)

modify_range_partition::=

modify_range_partition.gifの説明が続きます。
図「modify_range_partition.gif」の説明

(partition_extended_name::=partition_attributes::=add_range_subpartition ::=add_hash_subpartition ::=add_list_subpartition::=update_index_clauses::=parallel_clause::=alter_mapping_table_clauses ::=を参照)

modify_hash_partition::=

modify_hash_partition.gifの説明が続きます。
図「modify_hash_partition.gif」の説明

(partition_extended_name::=partition_attributes::=alter_mapping_table_clauses ::=を参照)

modify_list_partition::=

modify_list_partition.gifの説明が続きます。
図「modify_list_partition.gif」の説明

(partition_extended_name::=partition_attributes::=add_range_subpartition ::=add_list_subpartition::=add_hash_subpartition ::=を参照)

modify_table_subpartition::=

modify_table_subpartition.gifの説明が続きます。
図「modify_table_subpartition.gif」の説明

(subpartition_extended_name::=allocate_extent_clause ::=deallocate_unused_clause::=shrink_clause::=modify_LOB_parameters::=を参照)

move_table_partition::=

move_table_partition.gifの説明が続きます。
図「move_table_partition.gif」の説明

(partition_extended_name::=table_partition_description::=update_index_clauses::=parallel_clause::=を参照)

move_table_subpartition::=

move_table_subpartition.gifの説明が続きます。
図「move_table_subpartition.gif」の説明

(subpartition_extended_name::=, partitioning_storage_clause::=, update_index_clauses::=, parallel_clause::=)

add_table_partition::=

add_table_partition.gifの説明が続きます。
図「add_table_partition.gif」の説明

(add_range_partition_clause::=add_hash_partition_clause ::=add_list_partition_clause ::=add_system_partition_clause::=dependent_tables_clause:=を参照)

add_range_partition_clause::=

add_range_partition_clause.gifの説明が続きます。
図「add_range_partition_clause.gif」の説明

(range_values_clause::=table_partition_description::=range_subpartition_desc::=list_subpartition_desc::=individual_hash_subparts::=hash_subparts_by_quantity::=update_index_clauses::=を参照)

add_hash_partition_clause ::=

add_hash_partition_clause.gifの説明が続きます。
図「add_hash_partition_clause.gif」の説明

(partitioning_storage_clause::=update_index_clauses::=parallel_clause::=を参照)

add_list_partition_clause ::=

add_list_partition_clause.gifの説明が続きます。
図「add_list_partition_clause.gif」の説明

(list_values_clause::=table_partition_description::=range_subpartition_desc::=list_subpartition_desc::=individual_hash_subparts::=hash_subparts_by_quantity::=update_index_clauses::=を参照)

add_system_partition_clause::=

add_system_partition_clause.gifの説明が続きます。
図「add_system_partition_clause.gif」の説明

(table_partition_description::=update_index_clauses::=を参照)

add_range_subpartition ::=

add_range_subpartition.gifの説明が続きます。
図「add_range_subpartition.gif」の説明

(range_subpartition_desc::=update_index_clauses::=parallel_clause::=を参照)

add_hash_subpartition ::=

add_hash_subpartition.gifの説明が続きます。
図「add_hash_subpartition.gif」の説明

(individual_hash_subparts::=, dependent_tables_clause:=, update_index_clauses::=, parallel_clause::=)

add_list_subpartition::=

add_list_subpartition.gifの説明が続きます。
図「add_list_subpartition.gif」の説明

(list_subpartition_desc::=update_index_clauses::=を参照)

dependent_tables_clause:=

dependent_tables_clause.gifの説明が続きます。
図「dependent_tables_clause.gif」の説明

(partition_spec::=を参照)

coalesce_table_partition::=

coalesce_table_partition.gifの説明が続きます。
図「coalesce_table_partition.gif」の説明

(update_index_clauses::=parallel_clause::=を参照)

coalesce_table_subpartition::=

coalesce_table_subpartition.gifの説明が続きます。
図「coalesce_table_subpartition.gif」の説明

(update_index_clauses::=parallel_clause::=を参照)

drop_table_partition::=

drop_table_partition.gifの説明が続きます。
図「drop_table_partition.gif」の説明

(partition_extended_name::=update_index_clauses::=parallel_clause::=を参照)

drop_table_subpartition ::=

drop_table_subpartition.gifの説明が続きます。
図「drop_table_subpartition.gif」の説明

(subpartition_extended_name::=update_index_clauses::=parallel_clause::=を参照)

rename_partition_subpart::=

rename_partition_subpart.gifの説明が続きます。
図「rename_partition_subpart.gif」の説明

(partition_extended_name::=subpartition_extended_name::=を参照)

truncate_partition_subpart::=

truncate_partition_subpart.gifの説明が続きます。
図「truncate_partition_subpart.gif」の説明

(partition_extended_name::=subpartition_extended_name::=update_index_clauses::=parallel_clause::=を参照)

split_table_partition::=

split_table_partition.gifの説明が続きます。
図「split_table_partition.gif」の説明

(partition_extended_name::=range_partition_desc::=list_partition_desc::=dependent_tables_clause:=update_index_clauses::=parallel_clause::=を参照)

split_nested_table_part::=

split_nested_table_part.gifの説明が続きます。
図「split_nested_table_part.gif」の説明

nested_table_partition_spec::=

nested_table_partition_spec.gifの説明が続きます。
図「nested_table_partition_spec.gif」の説明

split_table_subpartition ::=

split_table_subpartition.gifの説明が続きます。
図「split_table_subpartition.gif」の説明

(subpartition_extended_name::=range_subpartition_desc::=list_subpartition_desc::=dependent_tables_clause:=update_index_clauses::=parallel_clause::=を参照)

merge_table_partitions ::=

merge_table_partitions.gifの説明が続きます。
図「merge_table_partitions.gif」の説明

(partition_spec::=dependent_tables_clause:=update_index_clauses::=parallel_clause::=を参照)

merge_table_subpartitions ::=

merge_table_subpartitions.gifの説明が続きます。
図「merge_table_subpartitions.gif」の説明

(range_subpartition_desc::=list_subpartition_desc::=update_index_clauses::=parallel_clause::=を参照)

exchange_partition_subpart ::=

exchange_partition_subpart.gifの説明が続きます。
図「exchange_partition_subpart.gif」の説明

(partition_extended_name::=subpartition_extended_name::=exceptions_clause::=update_index_clauses::=parallel_clause::=を参照)

exceptions_clause::=

exceptions_clause.gifの説明が続きます。
図「exceptions_clause.gif」の説明

range_values_clause::=

range_values_clause.gifの説明が続きます。
図「range_values_clause.gif」の説明

list_values_clause::=

list_values_clause.gifの説明が続きます。
図「list_values_clause.gif」の説明

table_partition_description::=

table_partition_description.gifの説明が続きます。
図「table_partition_description.gif」の説明

(deferred_segment_creation::=segment_attributes_clause::=table_compression ::=key_compression::=LOB_storage_clause::=varray_col_properties::=を参照)

range_partition_desc::=

range_partition_desc.gifの説明が続きます。
図「range_partition_desc.gif」の説明

(range_values_clause::=table_partition_description::=range_subpartition_desc::=list_subpartition_desc::=を参照)

list_partition_desc::=

list_partition_desc.gifの説明が続きます。
図「list_partition_desc.gif」の説明

(list_values_clause::=table_partition_description::=range_subpartition_desc::=list_subpartition_desc::=を参照)

range_subpartition_desc::=

range_subpartition_desc.gifの説明が続きます。
図「range_subpartition_desc.gif」の説明

(range_values_clause::=partitioning_storage_clause::=を参照)

list_subpartition_desc::=

list_subpartition_desc.gifの説明が続きます。
図「list_subpartition_desc.gif」の説明

(list_values_clause::=partitioning_storage_clause::=を参照)

individual_hash_subparts::=

individual_hash_subparts.gifの説明が続きます。
図「individual_hash_subparts.gif」の説明

hash_subparts_by_quantity::=

hash_subparts_by_quantity.gifの説明が続きます。
図「hash_subparts_by_quantity.gif」の説明

partitioning_storage_clause::=

partitioning_storage_clause.gifの説明が続きます。
図「partitioning_storage_clause.gif」の説明

(table_compression ::=LOB_partitioning_storage::=を参照)

LOB_partitioning_storage::=

lob_partitioning_storage.gifの説明が続きます。
図「lob_partitioning_storage.gif」の説明

partition_attributes::=

partition_attributes.gifの説明が続きます。
図「partition_attributes.gif」の説明

(physical_attributes_clause::=logging_clause::=allocate_extent_clause ::=deallocate_unused_clause::=shrink_clause::=table_compression ::=modify_LOB_parameters::=を参照)

partition_spec::=

partition_spec.gifの説明が続きます。
図「partition_spec.gif」の説明

(table_partition_description::=を参照)

update_index_clauses::=

update_index_clauses.gifの説明が続きます。
図「update_index_clauses.gif」の説明

(update_global_index_clause ::=update_all_indexes_clause::=を参照)

update_global_index_clause ::=

update_global_index_clause.gifの説明が続きます。
図「update_global_index_clause.gif」の説明

update_all_indexes_clause::=

update_all_indexes_clause.gifの説明が続きます。
図「update_all_indexes_clause.gif」の説明

(update_index_partition::=update_index_subpartition::=を参照)

update_index_partition::=

update_index_partition.gifの説明が続きます。
図「update_index_partition.gif」の説明

(index_partition_description::=index_subpartition_clause::=を参照)

update_index_subpartition::=

update_index_subpartition.gifの説明が続きます。
図「update_index_subpartition.gif」の説明

index_partition_description::=

index_partition_description.gifの説明が続きます。
図「index_partition_description.gif」の説明

(segment_attributes_clause::=key_compression::=を参照)

index_subpartition_clause::=

index_subpartition_clause.gifの説明が続きます。
図「index_subpartition_clause.gif」の説明

parallel_clause ::=

parallel_clause.gifの説明が続きます。
図「parallel_clause.gif」の説明

move_table_clause ::=

move_table_clause.gifの説明が続きます。
図「move_table_clause.gif」の説明

(segment_attributes_clause::=table_compression ::=index_org_table_clause ::=LOB_storage_clause::=varray_col_properties::=を参照)

flashback_archive_clause::=

flashback_archive_clause.gifの説明が続きます。
図「flashback_archive_clause.gif」の説明

enable_disable_clause::=

enable_disable_clause.gifの説明が続きます。
図「enable_disable_clause.gif」の説明

(using_index_clause::=exceptions_clause::=を参照)

using_index_clause::=

using_index_clause.gifの説明が続きます。
図「using_index_clause.gif」の説明

(create_index::=index_properties::=を参照)

index_properties::=

index_properties.gifの説明が続きます。
図「index_properties.gif」の説明

(global_partitioned_index::=local_partitioned_index ::=(「CREATE INDEX」の項)、index_attributes::=を参照。domain_index_clauseは、using_index_clauseではサポートされていません。)

index_attributes::=

index_attributes.gifの説明が続きます。
図「index_attributes.gif」の説明

(physical_attributes_clause::=logging_clause::=key_compression::=を参照。parallel_clauseは、using_index_clauseではサポートされていません。)

セマンティクス

ALTER TABLE文の多くの句の機能は、CREATE TABLE文での機能と同じです。これらの句の詳細は、「CREATE TABLE」を参照してください。


注意:

ALTER TABLE文を実行すると、変更した表にアクセスするプロシージャおよびストアド・ファンクションが無効になる場合があります。無効になる条件および具体的な状況については、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。

schema

表が含まれているスキーマを指定します。schemaを指定しない場合、表は自分のスキーマ内にあるとみなされます。

table

変更する表の名前を指定します。


注意:

変更対象の表が、1つ以上のマテリアライズド・ビューのマスター表である場合は、そのマテリアライズド・ビューの状態がINVALIDに設定されます。無効なマテリアライズド・ビューは、クエリー・リライトには使用できず、リフレッシュもできません。マテリアライズド・ビューを再び有効にする方法は、「ALTER MATERIALIZED VIEW」を参照してください。


関連項目:

マテリアライズド・ビューに関する一般的な情報については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

一時表の変更の制限事項: 一時表の変更、一時表内の列の削除または一時表の名前の変更を実行できます。ただし、一時表に対して次のことはできません。

  • ネストした表型の列の追加(他の型の列は追加できます)。

  • 追加または変更された列の参照整合性(外部キー)制約の指定。

  • 追加または変更されたLOB列に対する次のLOB_storage_clauseの句の指定: TABLESPACEstorage_clauselogging_clauseallocate_extent_clauseまたはdeallocate_unused_clause

  • physical_attributes_clausenested_table_col_propertiesparallel_clauseallocate_extent_clausedeallocate_unused_clauseまたは索引構成表(IOT)句の指定。

  • パーティション表と一時表の間でのパーティションの交換。

  • logging_clauseの指定。

  • MOVEの指定。

外部表の変更の制限事項: 外部表の列を追加、削除または変更できます。ただし、外部表に対して次のことはできません。

  • LONG、LOBまたはオブジェクト型の列の追加、または外部表の列のデータ型をこれらのデータ型のいずれかに変換。

  • 外部表への制約の追加。

  • 外部表の記憶域パラメータの変更。

  • logging_clauseの指定。

  • MOVEの指定。

alter_table_properties

alter_table_clausesを使用すると、データベースの表を変更できます。

physical_attributes_clause

physical_attributes_clauseを使用すると、PCTFREEPCTUSEDおよびINITRANSパラメータの値と記憶特性を変更できます。これらのパラメータおよび特性の詳細は、physical_attributes_clauseおよびstorage_clauseを参照してください。

表の物理属性の変更の制限事項: 物理属性の変更には、次の制限事項があります。

  • PCTUSEDパラメータは、索引構成表の索引セグメントに対して指定できません。

  • ローカル管理表領域にある表の記憶域属性を変更しようとすると、Oracle Databaseエラーが発生します。ただし、パーティション表のセグメントのいくつかがローカル管理表領域にあり、それ以外のセグメントがディクショナリ管理表領域にある場合は、ディクショナリ管理表領域のセグメントの記憶域属性は変更されますが、ローカル管理表領域のセグメントの記憶域属性は変更されず、エラーも発生しません。

  • 自動セグメント領域管理のセグメントの場合は、PCTUSED設定の変更は無視されます。PCTFREE設定を変更した場合、その変更をセグメントに割当て済のブロックに実装するには、DBMS_REPAIR.SEGMENT_FIX_STATUSプロシージャを実行する必要があります。

表の物理属性の変更の注意事項: この句で指定する値が表に与える影響を次に示します。

  • 非パーティション表の場合、作成時に表に指定した値は新しく指定した値によって上書きされます。

  • レンジ・パーティション表、リスト・パーティション表またはハッシュ・パーティション表の場合、新しく指定した値がその表のデフォルト値およびすべての既存パーティションに対する実際の値となり、そのパーティションにすでに設定されていた値は上書きされます。既存のパーティション値を上書きせずにデフォルトの表属性を変更する場合は、modify_table_default_attrs句を使用してください。

  • コンポジット・パーティション表の場合、新しく指定した値がその表とその表のすべてのパーティションのデフォルト値、およびその表のすべてのサブパーティションに対する実際の値となり、そのサブパーティションにすでに設定されていた値は上書きされます。既存のサブパーティションの値を上書きせずにデフォルトのパーティション属性を変更する場合は、FOR PARTITION句とともにmodify_table_default_attrs句を使用してください。

logging_clause

logging_clauseを使用すると、表のロギング属性を変更できます。また、logging_clauseでは、後続のALTER TABLE ... MOVEおよびALTER TABLE ... SPLIT操作のログを記録するかどうかを指定します。

modify_table_default_attrs句とともにこの句を使用した場合、パーティション表のロギング属性が影響を受けます。


関連項目:

  • この句の詳細は、logging_clauseを参照してください。

  • logging_clauseおよびパラレルDMLの詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。


table_compression

table_compression句は、ヒープ構成表に対してのみ有効です。この句を使用すると、ディスクおよびメモリーの使用量を削減するために、データ・セグメントを圧縮するかどうかを指定できます。この句のセマンティクスの詳細および表の圧縮を使用したオブジェクトの作成方法の詳細は、「CREATE TABLE」のtable_compressionを参照してください。


注意:

初めて、圧縮データが追加されるように表を変更する場合は、表のすべてのビットマップ索引およびビットマップ索引パーティションにUNUSABLEのマークを付ける必要があります。


関連項目:

表の圧縮の使用例は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

supplemental_table_logging

supplemental_table_logging句を使用すると、REDOログ・グループ、またはサプリメンタル・ログが記録されるREDOログ・グループの1つ以上の列を追加または削除できます。

  • ADD句でsupplemental_log_grp_clauseを使用すると、指定したサプリメンタル・ログ・グループを作成できます。supplemental_id_key_clauseを使用すると、システム生成のログ・グループを作成できます。

  • DROP句でGROUP log_group構文を使用すると、指定したサプリメンタル・ログ・グループを削除できます。supplemental_id_key_clauseを使用すると、システム生成のログ・グループを削除できます。

supplemental_log_grp_clauseおよびsupplemental_id_key_clauseは、CREATE TABLE文およびALTER TABLE文で同じセマンティクスを持ちます。これらの句の詳細は、「CREATE TABLE」のsupplemental_log_grp_clauseおよびsupplemental_id_key_clauseを参照してください。


関連項目:

サプリメンタルREDOログ・グループの詳細は、『Oracle Data Guard概要および管理』を参照してください。

allocate_extent_clause

allocate_extent_clauseを使用すると、表、パーティション、サブパーティション、オーバーフロー・データ・セグメント、LOBデータ・セグメントまたはLOB索引に新しいエクステントを明示的に割り当てることができます。

表のエクステントの割当ての制限事項: 一時表、レンジ・パーティション表またはコンポジット・パーティション表にエクステントを割り当てることはできません。


関連項目:

この句の詳細は、allocate_extent_clauseおよび「エクステントの割当て例:」を参照してください。

deallocate_unused_clause

deallocate_unused_clauseを使用すると、表、パーティション、サブパーティション、オーバーフロー・データ・セグメント、LOBデータ・セグメントまたはLOB索引の最後にある未使用領域の割当てを明示的に解除できます。解放された領域は、表領域の他のセグメントから利用できます。


関連項目:

この句の詳細は、deallocate_unused_clauseおよび「未使用領域の解放例:」を参照してください。

shrink_clause

shrink_clauseを使用すると、表、索引構成表またはそのオーバーフロー・セグメント、索引、パーティション、サブパーティション、LOBセグメント、マテリアライズド・ビューまたはマテリアライズド・ビュー・ログの領域を手動で縮小できます。この句は、自動セグメント管理を使用した表領域のセグメントに対してのみ有効です。デフォルトでは、セグメントが縮小されて最高水位標が調整され、再生領域がすぐに解放されます。

セグメントの縮小では、行移動が必要です。したがって、この句を指定する前に、縮小するオブジェクトの行移動を使用可能にする必要があります。また、アプリケーションでROWIDに基づいたトリガーを使用している場合、この句を発行する前にこのトリガーを使用禁止にする必要があります。


注意:

shrink_clauseを指定する前に、索引構成表に対して行の移動を有効にしないでください。索引構成表のROWIDは、その主キーであり、変更できません。このため、そのような表に対して行の移動は関係なく、有効でもありません。

COMPACT COMPACTを指定すると、セグメント領域のデフラグのみが行われ、後で領域を解放できるように表の行が縮小されます。最高水位標の再調整および領域の解放は、すぐに行われません。操作を完了するには、後で別のALTER TABLE ... SHRINK SPACE文を発行する必要があります。この句は、1回の長い手順のかわりに2回の短い手順で縮小操作を実行する場合に便利です。

索引や索引構成表の場合は、ALTER [INDEX | TABLE] ... SHRINK SPACE COMPACTを指定することはALTER [INDEX | TABLE ... COALESCEを指定することと同じです。shrink_clauseはカスケード実行できます(次のCASCADE句を参照)。また結合操作の場合よりもセグメントを高密度に圧縮できるため、パフォーマンスが向上します。ただし、未使用領域を解放しない場合は、適切なCOALESCE句を使用します。

CASCADE CASCADEを指定すると、tableのすべての依存オブジェクト(索引構成表の2次索引を含む)に対して同じ操作を実行できます。

shrink_clauseの制限事項: shrink_clauseには、次の制限事項があります。

  • 同じALTER TABLE文で、この句と別の句を組み合せて使用することはできません。

    この句は、クラスタ、クラスタ化表またはLONG列を含むすべてのオブジェクトには指定できません。

  • セグメントの縮小は、ファンクション索引、ドメイン索引またはビットマップ結合索引を含む表ではサポートされません。

  • CASCADEを指定しても、この句では索引構成表のマッピング表を縮小できません。

  • この句は、圧縮表には指定できません。

  • ON COMMITマテリアライズド・ビューのマスター表は縮小できません。ROWIDマテリアライズド・ビューは、縮小操作の実行後に再構築する必要があります。

CACHE | NOCACHE

CACHE句およびNOCACHE句のセマンティクスは、CREATE TABLE文およびALTER TABLE文で同じです。これらの句の詳細は、「CREATE TABLE」の「CACHE | NOCACHE | CACHE READS」を参照してください。ALTER TABLE文でこれらの句をいずれも省略した場合、既存の値は変更されません。

RESULT_CACHE

RESULT_CACHE句は、CREATE TABLE文およびALTER TABLE文と同じセマンティクスを持ちます。この句の詳細は、「CREATE TABLE」の「RESULT_CACHE句」を参照してください。ALTER TABLE文でこの句を指定しない場合、既存の設定は変更されません。

upgrade_table_clause

upgrade_table_clauseが意味を持つのは、オブジェクト表や、オブジェクト列を持つリレーショナル表に対して使用する場合です。ターゲットとなる表のメタデータが、参照される型それぞれの最新バージョンに準拠するように変換されます。表がすでに有効なものである場合は、表のメタデータは変更されません。

オブジェクト表およびオブジェクト列の更新の制限事項: この句の中では、object_type_col_propertiescolumn_properties句として指定できません。

INCLUDING DATA INCLUDING DATAを指定すると、表のデータを型の最新バージョンの形式に変換できます。column_propertiesおよびLOB_partition_storageを使用して表を更新する間に、新しいすべての列の記憶域を定義できます。これはデフォルトです。

ALTER TYPE文のdependent_handling_clauseCASCADE INCLUDING TABLE DATAを指定すると、型の更新時に表のデータを変換できます。この句の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。表が古いバージョンの型に基づくデータを含むかどうかを確認するには、USER_TAB_COLUMNSデータ・ディクショナリ・ビューのDATA_UPGRADED列を参照します。

NOT INCLUDING DATA NOT INCLUDING DATAを指定すると、列データは変更されません。

NOT INCLUDING DATAの制限事項: 表にOracle8リリース8.0.xのイメージ・フォーマットの列が含まれる場合、NOT INCLUDING DATAは指定できません。表がこのような列を含むかどうかを確認するには、USER_TAB_COLUMNSデータ・ディクショナリ・ビューのV80_FMT_IMAGE列を参照します。


関連項目:

  • データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

  • 表が依存する型を変更する際に、依存表のデータを変換する場合の詳細は、「ALTER TYPE」を参照してください。


records_per_block_clause

records_per_block_clauseを使用すると、1ブロックに格納できるレコード数を制限するかどうかを指定できます。この句によって、この後、表に作成されるビットマップ索引はできるだけ縮小されます。

ブロック内のレコードの制限事項: record_per_block_clauseには、次の制限事項があります。

  • 表にすでにビットマップ索引が定義されている場合は、MINIMIZEまたはNOMINIMIZEのいずれも指定できません。まず、ビットマップ索引を削除する必要があります。

  • この句は、索引構成表またはネストした表に対して指定できません。

MINIMIZE MINIMIZEを指定すると、表の各ブロックの最大レコード数を計算し、ブロックに含まれるレコード数がその数を超えないように挿入操作を制限できます。

MINIMIZEを指定する前に、表にデータのサンプル・セットを定義しておくことをお薦めします。表の圧縮を使用している場合(table_compressionを参照)、圧縮データのサンプル・セットは、すでに表に存在している必要があります。

MINIMIZEの制限事項: MINIMIZEは、空の表に対して指定できません。

NOMINIMIZE NOMINIMIZEを指定すると、MINIMIZE機能が無効になります。これはデフォルトです。

row_movement_clause

親表でも行の移動が無効化されている場合を除き、参照パーティション表で行の移動を無効にすることはできません。それ以外では、この句のセマンティクスは、CREATE TABLE文およびALTER TABLE文で同じです。これらの句の詳細は、「CREATE TABLE」のrow_movement_clauseを参照してください。

flashback_archive_clause

この句を指定するには、指定されたフラッシュバック・データ・アーカイブに対するFLASHBACK ARCHIVEオブジェクト権限が必要です。この句を使用すると、表の履歴追跡を有効または無効にできます。

  • 表の追跡を有効にするには、FLASHBACK ARCHIVEを指定します。flashback_archiveを指定すると、この表に特定のフラッシュバック・データ・アーカイブを指定できます。指定するフラッシュバック・データ・アーカイブは、すでに存在している必要があります。

    アーカイブ名を指定しない場合、データベースは、システムに指定されたデフォルトのフラッシュバック・データ・アーカイブを使用します。システムにデフォルトのフラッシュバック・データ・アーカイブが指定されていない場合は、flashback_archiveを指定する必要があります。

    FLASHBACK ARCHIVEを指定して、この表のフラッシュバック・データ・アーカイブを変更することはできません。かわりに、まずALTER TABLE文にNO FLASHBACK ARCHIVE句を付けて実行し、次に、ALTER TABLE文にFLASHBACK ARCHIVE句を付けて実行します。

  • 表の追跡を無効にするには、NO FLASHBACK ARCHIVEを指定します。


関連項目:

追跡が有効な表の作成の詳細は、「CREATE TABLE」のflashback_archive_clauseを参照してください。デフォルトのフラッシュバック・データ・アーカイブの作成の詳細は、「CREATE FLASHBACK ARCHIVE」を参照してください。

RENAME TO

RENAME句を使用すると、表の名前をnew_table_nameに変更できます。

この句を使用した場合、依存するすべてのマテリアライズド・ビューは無効になります。マテリアライズド・ビューの詳細は、「CREATE MATERIALIZED VIEW」および『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

表にドメイン索引が定義されている場合、ODCIIndexAlter()メソッドがRENAMEオプション付きで起動されます。この操作によって、索引タイプ・メタデータと実表の間の対応が確立されます。

READ ONLY | READ WRITE

READ ONLYを指定すると、表を読取り専用モードに設定できます。表がREAD ONLYモードの場合は、表に影響するDML文またはSELECT ... FOR UPDATE文は発行できません。表データを変更しないDDL文は発行できます。表がREAD ONLYモードの場合は、表に関連する索引の操作は可能です。

READ WRITEを指定すると、読取り専用表を読取り/書込みモードに戻すことができます。

REKEY encryption_spec

REKEY句を使用すると、新しい暗号化キーの生成または異なるアルゴリズム間の切替えができます。この操作は、表内のLOB列を含むすべての暗号化された列が再度暗号化された後にのみ戻されます。

alter_iot_clauses

index_org_table_clause

この句を使用すると、既存の索引構成表の特性の一部を変更できます。索引構成表は主キーでデータをソートするため、主キーベースのアクセスおよび操作に最適です。CREATE TABLEのコンテキストで、index_org_table_clauseを参照してください。

key_compression

この句は、tableが索引構成されている場合のみ有効です。COMPRESSを指定すると、ブロックを再利用するために、索引構成表の主キー索引ブロックを空きブロックに結合できます(可能な場合)。この句はparallel_clauseとあわせて指定できます。

PCTTHRESHOLD integer CREATE TABLE」の「PCTTHRESHOLD integerを参照してください。

INCLUDING column_name CREATE TABLE」の「INCLUDING column_nameを参照してください。

overflow_attributes

overflow_attributesを使用すると、索引構成表に対して、変更するオーバーフロー・データ・セグメントの物理記憶域属性およびロギング属性を指定できます。この句に指定するパラメータの値は、オーバーフロー・データ・セグメントにのみ適用されます。


関連項目:

「CREATE TABLE」

add_overflow_clause

add_overflow_clauseを使用すると、指定した索引構成表にオーバーフロー・データ・セグメントを追加できます。また、この句を使用すると、エクステントを明示的に割り当てたり、既存のオーバーフロー・セグメントから未使用領域の割当てを解除することができます。

STORE IN tablespace句を使用すると、オーバーフロー・セグメント全体に対する表領域の記憶域を指定できます。PARTITION句を使用すると、パーティションによるセグメントに対する表領域の記憶域を指定できます。

パーティション化された索引構成表の場合、次の点に注意してください。

  • PARTITIONを指定しない場合、それぞれのパーティションに自動的にオーバーフロー・セグメントが割り当てられます。これらのセグメントの物理属性は表のレベルから継承されます。

  • 1つ以上のパーティションに別々の物理属性を指定する場合は、その属性を表のすべてのパーティションに対して指定する必要があります。パーティションの名前を指定する必要はありませんが、パーティションが作成された順番で属性を指定する必要があります。

パーティションの順番を確認するには、USER_IND_PARTITIONSビューのPARTITION_NAMEおよびPARTITION_POSITION列を問い合せます。

TABLESPACEを指定していないパーティションがある場合、表に対して指定された表領域が使用されます。表レベルでTABLESPACEを指定していない場合は、そのパーティションの主キー索引セグメントの表領域が使用されます。

オーバーフロー属性の制限事項: segment_attributes_clauseでは、次のことに注意します。

  • physical_attributes_clauseOPTIMALパラメータを指定できません。

  • この句を使用して、オーバーフロー・セグメントの表領域の記憶域を指定できません。非パーティション表の場合、ALTER TABLE ... MOVE ... OVERFLOWを使用して、セグメントを異なる表領域に移動します。パーティション表の場合、ALTER TABLE ... MODIFY DEFAULT ATTRIBUTES ... OVERFLOWを使用して、オーバーフロー・セグメントのデフォルト表領域を変更します。

tableがローカル管理表領域にある場合、表領域のセグメント属性の中にはデータベースによって自動的に管理されるものがあるため、制限事項が追加されます。


関連項目:

add_overflow_clause句の詳細は、allocate_extent_clauseおよびdeallocate_unused_clauseを参照してください。

alter_overflow_clause

alter_overflow_clauseを使用すると、既存の索引構成表のオーバーフロー・セグメントの定義を変更できます。

add_overflow_clauseの制限事項は、alter_overflow_clauseにも適用されます。


注意:

索引構成表に列を追加した場合、各列の最大サイズが評価され、行の最大値が計算されます。オーバーフロー・セグメントが必要で、OVERFLOWを指定していない場合は、エラーが発生しALTER TABLE文は実行されません。このチェック機能によって、索引構成表に対する後続のDML操作が、オーバーフロー・セグメントがないために失敗することを回避できます。

alter_mapping_table_clauses

alter_mapping_table_clausesは、tableが索引構成されており、マッピング表を持つ場合にのみ有効です。

allocate_extent_clause allocate_extent_clauseを使用すると、新しいエクステントを索引構成表のマッピング表の終わりに割り当てることができます。この句の詳細は、allocate_extent_clauseを参照してください。

deallocate_unused_clause deallocate_unused_clauseを指定すると、索引構成表のマッピング表の終わりにある未使用領域の割当てを解除できます。この句の詳細は、deallocate_unused_clauseを参照してください。

マッピング表またはそのパーティションに関する他のすべての属性は、自動的に管理されます。

COALESCE句

COALESCEを指定すると、ブロックを再利用するために、索引構成表の管理に使用される索引の索引ブロックの内容を空きブロックにマージできます(可能な場合)。この句とshrink_clauseの関係については、shrink_clauseを参照してください。

alter_XMLSchema_clause

この句は、BINARY XML記憶域のXMLType表を変更する場合にのみ、alter_table_propertiesの一部として有効です。ALLOWおよびDISALLOW句の詳細は、「CREATE TABLE」のXMLSchema_specを参照してください。

column_clauses

これらの句を指定すると、列を追加、削除または変更できます。

add_column_clause

add_column_clauseを使用すると、表に列を追加できます。


関連項目:

この句のキーワードとパラメータの詳細は、「CREATE TABLE」および「表の列の追加例:」を参照してください。

column_definition

既存の表に列を追加するときのcolumn_definitionの要素の動作は、この項で特に述べられていないかぎり、新しい表の作成時に列を追加するときの動作と同じです。詳細は、column_definitionを参照してください。

column_definitionの制限事項 SORTパラメータは、新しい表を作成する場合にのみ有効です。ALTER TABLE ... ADD文のcolumn_definitionでは、SORTを指定できません。

列を追加すると、新しい列の各行に初期値としてNULLが設定されます。

  • NOT NULL列にDEFAULT句を指定すると、デフォルト値はメタデータとして格納されますが、列自体にはデータは移入されません。ただし、デフォルト値が結果セットに戻されるように、新しい列を指定する後続の問合せは再書込みされます。

    この最適化された動作は、以前のリリースとは異なります(以前のリリースでは、ALTER TABLE操作の中で、新規作成された列の各行がデフォルト値に更新され、その後で、表に対して定義されている更新トリガーが起動されていました)。このリリースでは、トリガーは起動されません(デフォルト値はメタデータとしてのみ格納されるため)。この最適化された動作には、次の制限事項があります。

    • 表にLOB列を持つことはできません。対象となる表は、索引構成化したり、一時表またはクラスタ化された表にすることはできません。また、キュー表、オブジェクト表またはマテリアライズド・ビューのコンテナ表にすることもできません。

    • 表が仮想プライベート・データベース(VPD)ポリシーを持つ場合、ALTER TABLE ... ADD文を発行するユーザーにEXEMPT ACCESS POLICYシステム権限がないかぎり、最適化された動作は有効ではありません。

    • 追加する列は暗号化できず、オブジェクト列、ネストした表の列またはLOB列にすることはできません。

  • NULLであることが可能な列に対してDEFAULT句を指定すると、デフォルト値がこのALTER TABLE文の一部として既存の行に追加され、表に定義された更新トリガーが起動されます。この動作は、デフォルト値が含まれるNOT NULL列をNULLであることが可能な列に変更した場合にも発生します。

パーティション化された索引構成表の各パーティションには、オーバーフロー・データ・セグメントを追加できます。

非パーティションおよびパーティション表にLOB列を追加できます。表、およびパーティションまたはサブパーティションのレベルでLOB記憶域を指定できます。

SELECT *構文を使用して、表からすべての列を選択するように指定した問合せを使用してビューを作成した場合、tableに列を追加しても、新しい列がビューに自動的に追加されることはありません。ビューに新しい列を追加する場合、CREATE VIEW文にOR REPLACE句を指定してビューを再作成してください。詳細は、「CREATE VIEW」を参照してください。

列の追加の制限事項: 列の追加には、次の制限事項があります。

  • クラスタ化表には、LOB列を追加できません。

  • LOB列をハッシュ・パーティション表に追加する場合、新しいパーティションに対して指定できる属性は、TABLESPACEのみです。

  • tableに行がある場合、DEFAULT句を指定しないかぎり、NOT NULL制約のある列を追加できません。

  • 索引構成表にこの句を指定した場合、同じ文では他の句を指定できません。

DEFAULT

DEFAULT句を使用すると、新しい列にデフォルト値を指定したり、既存の列に新しいデフォルト値を指定することができます。後続のINSERT文で列に値を指定しない場合、この値が自動的に割り当てられます。表に新しい列を追加する場合、デフォルト値を指定すると、その表のすべての行にデフォルトの列値が挿入されます。

デフォルト値のデータ型は、列に対して指定したデータ型と一致している必要があります。また、列には、このデフォルト値を保持できる十分な大きさが必要です。

列のデフォルト値の制限事項: 列のデフォルト値には、次の制限事項があります。

  • DEFAULT式に、他の列、疑似列CURRVALNEXTVALLEVELおよびROWNUM、または完全には指定されていない日付定数に対する参照を指定することはできません。

  • 式には、スカラー副問合せ式を除くすべての書式を使用できます。

inline_constraint

inline_constraintを使用すると、新しい列に制約を追加できます。

inline_ref_constraint

inline_ref_constraintを使用すると、新しいREF型の列を定義できます。制約の型の構文や制限などの詳細は、constraintを参照してください。

virtual_column_definition

virtual_column_definitionは列を追加する場合、列を作成する場合と同じセマンティクスを持ちます。


関連項目:

詳細は、「CREATE TABLE」のvirtual_column_definitionおよび「仮想表の列の追加例:」を参照してください。

仮想列の追加の制限事項: 仮想列のSQL式にOracle Data Redactionポリシーが定義されている列が関与するときには、仮想列は追加できません。

column_properties

column_propertiesの句を使用すると、オブジェクト型、ネストした表、VARRAYまたはLOB列の記憶特性を指定できます。

object_type_col_properties この句は新しいオブジェクト型列や属性を追加する場合にのみ有効です。modify_column_clausesを使用すると、既存のオブジェクト型列のプロパティを変更できます。この句のセマンティクスは、特に指定がないかぎり、CREATE TABLEと同じです。

object_type_col_properties句を使用すると、新しいオブジェクト列、オブジェクト属性、コレクション列およびコレクション属性の要素に対する記憶特性を指定できます。

この句の詳細は、「CREATE TABLE」のobject_type_col_propertiesを参照してください。

nested_table_col_properties nested_table_col_properties句を使用すると、ネストした表に対して別の記憶特性を指定し、そのネストした表を索引構成表として定義できます。ネストした表の型を持つ列または列属性付きで表を作成する場合は、この句を挿入する必要があります。(この句の中で、親オブジェクト表に対する場合と同じ働きをする句は、ここでは繰り返されません。これらの句の詳細は、「CREATE TABLE」の句nested_table_col_propertiesを参照してください。)

  • nested_itemには、型がネストした表である列(または、ネストした表のオブジェクト型の最上位の属性)の名前を指定します。

    ネストした表がマルチレベル・コレクションで、内部のネストした表には名前が割り当てられていない場合、nested_item名のかわりにCOLUMN_VALUEを指定します。

  • storage_tableには、nested_itemの行を含む表の名前を指定します。記憶表は、親表と同じスキーマ、および親表と同じ表領域内に作成されます。

ネストした表の列のプロパティの制限事項: ネストした表の列のプロパティには、次の制限事項があります。

  • parallel_clauseは指定できません。

  • physical_properties句の一部としてCLUSTERを指定できません。

varray_col_properties varray_col_propertiesを使用すると、VARRAY型のデータが格納されているLOBに対して、別の記憶特性を指定できます。この句を指定する場合、表内に格納できるほど小さい値でも、VARRAYは必ずLOBに格納されます。varray_itemがマルチレベル・コレクションの場合、varray_item内にネストされたすべてのコレクション項目は、常にvarray_itemと同じLOBに格納されます。

VARRAY列のプロパティの制限事項: VARRAY列に対し、LOB_parametersの一部としてTABLESPACEを指定することはできません。VARRAYに対するLOB表領域のデフォルトは、表を含む表領域になります。

out_of_line_part_storage

この句を使用すると、新しく追加した列に対し、パーティション表内のパーティションまたはサブパーティションごとに記憶域属性を指定できます。この句で指定しないパーティションまたはサブパーティションについては、新しい列の記憶域属性は、表レベルのnested_table_col_propertiesで指定したものと同じになります。

LOB_storage_clause

LOB_storage_clauseを使用すると、新しく追加したLOB列、LOBパーティション、LOBサブパーティションまたはLONG列からLOB列への変換時のLOB記憶特性を指定できます。この句では、既存のLOBを変更できません。かわりに、modify_LOB_storage_clauseを使用する必要があります。

この項で特に指定がない場合は、LOB_storage_clauseおよびmodify_LOB_storage_clause内のすべてのLOBパラメータは、ALTER TABLE文で、CREATE TABLE文と同じセマンティクスを持ちます。この句の詳細は、「CREATE TABLE」のLOB_storage_clauseを参照してください。

LOBパラメータの制限事項: ハッシュ・パーティションまたはハッシュ・サブパーティションに指定できるLOB_parametersのパラメータは、TABLESPACEのみです。

CACHE READS句 新しいLOB列を追加するときに、ロギング属性をCACHE READSを使用して指定できます(作成時にLOB列を定義するときと同様)。この句の詳細は、CREATE TABLEの句「CACHE READS」を参照してください。

ENABLE | DISABLE STORAGE IN ROW STORAGE IN ROWは、一度設定すると変更できません。したがって、この句はmodify_col_properties句の一部には指定できません。ただし、新しい列を追加するとき(add_column_clause )、または表を移動するとき(move_table_clause)に、この設定を変更できます。この句の詳細は、「CREATE TABLE」の句「ENABLE STORAGE IN ROW」を参照してください。

CHUNK integer modify_col_properties句を使用して、設定後のCHUNKの値を変更することはできません。作成後の列に異なるCHUNK値が必要な場合は、ALTER TABLEMOVEを使用します。詳細は、「CREATE TABLE」の句「CHUNK integerを参照してください。

RETENTION BasicFiles LOBについては、データベースが自動UNDOモードで稼働している場合、旧バージョンのLOBを保持するには、PCTVERSIONではなくRETENTIONを指定します。この句によって、PCTVERSIONのこれまでの設定が上書きされます。このパラメータの詳細は、「CREATE TABLE」の句LOB_retention_clauseを参照してください。

FREEPOOLS integer データベースが自動UNDOモードで稼働している場合、BasicFiles LOBに対してこの句を使用するとLOBの空きリスト・グループ数を指定できます。この句によって、FREELIST GROUPSのこれまでの設定が上書きされます。このパラメータの詳細は、「CREATE TABLE」の句「FREEPOOLS integerを参照してください。SecureFiles LOBの場合は、データベースはこのパラメータを無視します。

LOB_partition_storage

1つのALTER TABLE文で指定できるLOB_partition_storage句のリストは1つのみであり、すべてのLOB_storage_clausesおよびvarray_col_properties句はLOB_partition_storage句のリストの前に指定する必要があります。この句の詳細および制限事項については、CREATE TABLEの句LOB_partition_storageを参照してください。

XMLType_column_properties この句の詳細は、「CREATE TABLE」の句XMLType_column_propertiesを参照してください。


関連項目:

  • LOB_segnameおよびLOB_parameters句の詳細は、LOB_storage_clauseを参照してください。

  • オブジェクト・リレーショナル表におけるXMLType列の例は、「XMLType列の例:」を参照してください。XMLスキーマの作成例は、「SQL文でのXMLの使用方法」を参照してください。

  • XMLType列と表およびXMLスキーマの作成の詳細は、『Oracle XML DB開発者ガイド』を参照してください。


modify_column_clauses

modify_column_clausesを使用すると、既存の列のプロパティや既存のオブジェクト型の列の代替性を変更できます。

modify_col_properties

この句を使用すると、列のプロパティを変更できます。この句で省略した列定義のオプション部分(データ型、デフォルト値、制約)は、変更されません。

datatype 列のすべての行がNULLの場合、列のデータ型を変更できます。ただし、マテリアライズド・ビューのコンテナ表にある列のデータ型を変更した場合、それに対応するマテリアライズド・ビューが無効になります。

参照整合性制約の外部キーの一部として、文で列が指定されている場合のみ、データ型を省略できます。参照整合性制約の参照キーに対応する列のデータ型が、その列に自動的に割り当てられます。

すべての行にNULL値が存在するどうかにかかわらず、文字型またはRAW型の列のサイズ、または数値型の列の精度は、いつでも大きくすることができます。変更対象のデータに変更の必要がない場合は、列のデータ型のサイズを削減できます。データベースは、既存のデータをスキャンして、新しい長さ制限を超過するデータが存在する場合はエラーを返します。

DATE列をTIMESTAMPまたはTIMESTAMP WITH LOCAL TIME ZONE列に、TIMESTAMPまたはTIMESTAMP WITH LOCAL TIME ZONE列をDATE列に変更できます。次のルールが適用されます。

  • TIMESTAMPまたはTIMESTAMP WITH LOCAL TIME ZONE列をDATE列に変更する場合、秒に0以外の小数部が含まれる各列の値が最も近い秒に丸めて更新されます。そのような値の更新時に60以上の分フィールドがある場合(夏時間の規則が切り換えられた場合に境界で発生)、分フィールドから60を引いてフィールドが更新されます。

  • TIMESTAMP WITH LOCAL TIME ZONE列をDATE列に変更しても、列の値はデータベースのタイムゾーンで示したローカル時間を示します。ただし、データベースのタイムゾーンは値とは関連付けされなくなります。SQL*Plusで問い合せた場合、値がセッションのタイムゾーンに自動で調整されることはなくなります。列の値を処理するアプリケーションが特定のタイムゾーンで値を解析することになります。

表が空の場合、日時列または期間列の先行フィールドまたは秒の小数部を増やすことも減らすこともできます。表が空でない場合、日時列または期間列の先行フィールドまたは秒の小数部を増やすことのみできます。

TO_LOBファンクションを使用すると、LONG列をCLOB列またはNCLOB列に、LONG RAW列をBLOB列に変更できます。ただし、PL/SQLパッケージ内からはTO_LOBファンクションを使用できません。かわりに、TO_CLOBファンクションまたはTO_BLOBファンクションを使用してください。

  • 変更されたLOB列は、元のLONG列で定義されたすべての制約およびトリガーを継承します。いずれかの制約を変更する場合、後続のALTER TABLE文で変更する必要があります。

  • ドメイン索引がLONG列で定義されている場合、列をLOBに変更する前に削除する必要があります。

  • 変更後、表のすべての列にある他のすべての索引を再構築する必要があります。

TO_CLOBファンクションを使用すると、NCLOB列をCLOB列に変換できます。


関連項目:

  • LONGからLOBへの移行の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

  • 索引の削除および再構築の詳細は、「ALTER INDEX」を参照してください。


CHARおよびVARCHAR2列の場合、CHAR(元々バイトで指定されていた列に対するキャラクタ・セマンティクス)またはBYTE(元々文字で指定されていた列に対するバイト・セマンティクス)を指定すると、長さセマンティクスを変更できます。既存の列の長さセマンティクスを確認するには、ALL_TAB_COLUMNSUSER_TAB_COLUMNSまたはDBA_TAB_COLUMNSデータ・ディクショナリ・ビューのCHAR_USED列を問い合せます。


関連項目:

  • バイト・セマンティクスおよびキャラクタ・セマンティクスの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。


ENCRYPT encryption_spec | DECRYPT この句は、暗号化された列の復号化や暗号化されていない列の暗号化を行うとき、および暗号化された列の整合性アルゴリズムやSALTオプションを変更するときに使用します。

encryption_specを指定して既存の列を暗号化する場合は、同じ表内で暗号化されている他の列の暗号化仕様と一致させることが必要です。encryption_specの詳細や制限事項は、「CREATE TABLE」の句encryption_specを参照してください。

マテリアライズド・ビュー・ログが表に対して定義されている場合は、この句内で暗号化または復号化される列が、マテリアライズド・ビュー・ログ内でも暗号化または復号化されます。

ENCRYPT encryption_spec | DECRYPTの制限事項: この句には、次の制限事項があります。

  • 新規または既存の列がLOB列の場合は、列をSecureFiles LOBとして格納する必要があり、SALTオプションは指定できません。

  • 暗号化または復号化する列に対して、UPDATE文のファイングレイン監査ポリシーが有効化されていてはなりません。ただし、ファイングレイン監査ポリシーをいったん無効にしてその列を暗号化または復号化し、その後でファイングレイン監査ポリシーを有効にすることは可能です。

inline_constraint この句を使用すると、変更する列に対する制約を追加できます。既存の列に設定されている既存の制約の状態を変更する場合は、constraint_clausesを使用します。

LOB_storage_clause LOB_storage_clauseは、LONG列をLOB列に変換する場合のみ、modify_col_properties内で使用できます。この場合のみ、LOB_storage_clauseを使用して列に対するLOB記憶域を指定できます。ただし、指定できるのは、1つの列(LOB_item)のみです。LOB_storage_clauseで省略したすべての属性には、デフォルトのLOB記憶域属性が適用されます。

alter_XMLSchema_clause この句は、BINARY XML記憶域のXMLType表のmodify_col_properties内でのみ有効です。ALLOWおよびDISALLOW句の詳細は、「CREATE TABLE」のXMLSchema_specを参照してください。

列のプロパティの変更の制限事項: 列のプロパティの変更には、次の制限事項があります。

  • LOB列のデータ型は変更できません。

  • 列にドメイン索引が定義されている場合は、表の列を変更できません。最初にドメイン索引を削除してから列を変更する必要があります。

  • 表または索引のパーティション化キーまたはサブパーティション化キーの一部である列の長さまたはデータ型は、変更できません。

  • CHAR型の列をVARCHAR2(またはVARCHAR)型に変更またはVARCHAR2(またはVARCHAR)型の列をCHAR型に変更できるのは、BLANK_TRIMMING初期化パラメータがTRUEに設定され、列のサイズが同じまたは増加する場合のみです。BLANK_TRIMMING初期化パラメータがTRUEに設定されている場合、列のサイズを切捨て後のデータの最大値以上の値まで減らすこともできます。

  • 表がクラスタの一部である場合は、LONGまたはLONG RAW列をLOBに変更できません。LONGまたはLONG RAW列をLOBに変更する場合は、同じALTER TABLE文では、DEFAULT句およびLOB_storage_clause以外は指定できません。

  • LONGまたはLONG RAW列をLOBに変更する場合のみ、LOB_storage_clausemodify_col_propertiesの一部として指定できます。

  • 索引構成表に対してROWIDデータ型の列は指定できませんが、UROWID型の列は指定できます。

  • 列のデータ型をREFに変更できません。


関連項目:

マテリアライズド・ビューの再検証の詳細は、「ALTER MATERIALIZED VIEW」を参照してください。

modify_col_substitutable

この句を使用すると、既存のオブジェクト型列の代替性を設定または変更できます。

FORCEキーワードを指定すると、型ID情報またはサブタイプ属性に関するデータが含まれる非表示列が削除されます。オブジェクト型の列または属性がFINALでない場合、FORCEを指定する必要があります。

列の代替性の変更の制限事項: 列の代替性の変更には、次の制限事項があります。

  • ALTER TABLE文には、この句を一度のみ指定できます。

  • オブジェクト表自体の代替性が設定されている場合、オブジェクト表の列の代替性は変更できません。

  • この句は、列がIS OF TYPE構文を使用して作成または追加されたものである場合は指定できません(この構文を使用すると、オブジェクト列や属性で使用できるサブタイプの範囲が、特定のサブタイプに限定されます)。IS OF TYPE構文の詳細は、CREATE TABLEsubstitutable_column_clauseを参照してください。

  • 列の属性にネストしたオブジェクト型(FINAL以外)が含まれる場合、FORCEを指定しても、VARRAY列をNOT SUBSTITUTABLEに変更できません。

drop_column_clause

drop_column_clauseを使用すると、不要になった列を削除したり、将来、システム・リソースへの要求が少なくなったときに削除するように列にマークを付けることによって、データベースの領域を解放できます。

  • ネストした表の列を削除すると、その記憶表も削除されます。

  • LOB列を削除すると、LOBデータおよび対応するLOB索引セグメントも削除されます。

  • BFILE列を削除すると、その列に格納されたロケータのみ削除され、ロケータによって参照されるファイルは削除されません。

  • INCLUDING列として定義した列を削除(または未使用とマーク)すると、この列の直前に格納された列が新しいINCLUDING列になります。

SET UNUSED句

SET UNUSEDを使用すると、1つ以上の列が未使用としてマーク付けされます。内部ヒープ構成表の場合は、この句を指定しても、対象の列が表の各行から実際に削除されることはありません。その列に使用されているディスク領域がリストアされることはありません。したがって、応答時間はDROP句を実行したときよりも短縮されます。

外部表内の列に対してこの句を指定すると、句は透過的にALTER TABLE ... DROP COLUMN文に変換されます。その理由は、外部表に対する操作はメタデータのみの操作であるため、2つのコマンドのパフォーマンスに違いがないためです。

UNUSEDのマークが付いた列を持つすべての表は、データ・ディクショナリ・ビューUSER_UNUSED_COL_TABSDBA_UNUSED_COL_TABSおよびALL_UNUSED_COL_TABSで参照できます。


関連項目:

データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

未使用列のデータは表の行に残っていますが、この列は削除されたものとして扱われます。UNUSEDのマークが付けられた列にはアクセスできなくなります。SELECT *問合せでも、未使用列からデータを取り出すことはできません。また、UNUSEDのマークが付けられた列の名前および型は、DESCRIBEコマンドでは表示されず、未使用列と同じ名前の新しい列を表に追加できます。


注意:

これらの列を実際に削除するまでは、表当たり1000列の制限に対して、これらの列もカウント対象になります。ただし、すべてのDDL文と同様に、この句の結果をロールバックすることはできません。SET UNUSED列を取り出すために、対応するSET USEDを発行することはできません。1000列の制限の詳細は、「CREATE TABLE」を参照してください。

また、LONG列にUNUSEDのマークを付けた場合、この未使用のLONG列を実際に削除しないかぎり、その表には別のLONG列を追加できません。


列への未使用のマーク付けの制限事項: SYSが所有している列に未使用のマークを付けることはできません。

DROP句

DROPを指定すると、表のそれぞれの行から、対象となる列に関連付けられた列記述子およびデータを削除できます。特定の列を明示的に削除した場合、対象の表でUNUSEDのマークが付いている列もすべて同時に削除されます。

列データを削除した場合、次のものが削除されます。

  • 対象の列に定義されているすべての索引。

  • 対象の列を参照しているすべての制約。

  • 対象の列に統計タイプが関連付けられている場合、FORCEオプションによって、関連付けは解除され、その統計タイプを使用して収集したすべての統計情報は削除されます。


注意:

対象の列が対象でない列の親キーである場合またはCHECK制約が対象である列と対象でない列の両方を参照している場合は、Oracle Databaseはエラーを戻し、CASCADE CONSTRAINTS句を指定しないかぎり、列を削除しません。この句を指定した場合、対象である列を参照しているすべての制約が削除されます。


関連項目:

統計タイプの関連付けの解除方法の詳細は、「DISASSOCIATE STATISTICS」を参照してください。

DROP UNUSED COLUMNS句

DROP UNUSED COLUMNSを指定すると、未使用とマークされているすべての列を表から削除できます。表の未使用の列からディスク領域を回収する場合に、この文を使用します。表に未使用の列がない場合でも、エラーは戻されません。

column 未使用として設定または削除する1つ以上の列を指定します。列を1つのみ指定する場合にかぎり、COLUMNキーワードを使用します。列リストを指定する場合、リストには重複する列を指定できません。

CASCADE CONSTRAINTS CASCADE CONSTRAINTSを指定すると、削除する列に定義されている主キーおよび一意キーを参照する外部キー制約をすべて削除したり、削除する列に定義されているすべての複数列制約を削除することができます。他の表の列、または対象である表の他の列が参照している制約がある場合は、CASCADE CONSTRAINTSを指定する必要があります。CASCADE CONSTRAINTSを指定しない場合、その文は異常終了し、エラーが戻されます。

INVALIDATE INVALIDATEキーワードはオプションです。ビュー、トリガー、ストアド・プログラム・ユニットなどのすべての依存オブジェクトが自動的に無効になります。オブジェクトの無効化は再帰的プロセスです。したがって、すべての直接的な依存オブジェクトおよび間接的な依存オブジェクトが無効になります。ただし、データベースでは、リモート依存性をローカル依存性と別に管理しているため、ローカル依存性のみが無効になります。

この文によって無効となったオブジェクトは、次に参照された際に自動的に再検証されます。オブジェクトを参照する前に、オブジェクトに存在するエラーは、すべて修正しておく必要があります。


関連項目:

依存性の詳細は、『Oracle Database概要』を参照してください。

CHECKPOINT CHECKPOINTを指定すると、DROP COLUMN操作でinteger行が処理された後にチェックポイントが適用されます。integerはオプションであり、1以上である必要があります。integerが表の行数より大きい場合は、すべての行が処理された後にチェックポイントが適用されます。integerを指定しない場合は、デフォルトの512に設定されます。チェックポイントを適用すると、DROP COLUMN操作中に蓄積されるUNDOログの量が削減されるため、UNDO領域の不足を回避できます。ただし、この文が中断されたときにすでにチェックポイントが適用されていた場合は、表は使用禁止の状態のままになります。使用禁止状態の表に対して実行可能な操作は、DROP TABLETRUNCATE TABLEおよびALTER TABLE DROP ... COLUMNS CONTINUE(後述)のみです。

この句は列データを削除しないため、SET UNUSEDと同時に使用できません。

DROP COLUMNS CONTINUE句

DROP COLUMNS CONTINUEを指定すると、中断されたところから列削除操作を続行できます。表が無効な状態にあるときにこの文を発行すると、エラーになります。

列の削除の制限事項: 列の削除には、次の制限事項があります。

  • この句の各部分は、文の中で1回のみ指定でき、他のALTER TABLE句と同時に使用することはできません。たとえば、次のような文は許可されません。

    ALTER TABLE t1 DROP COLUMN f1 DROP (f2);
    ALTER TABLE t1 DROP COLUMN f1 SET UNUSED (f2);
    ALTER TABLE t1 DROP (f1) ADD (f2 NUMBER);
    ALTER TABLE t1 SET UNUSED (f3) 
       ADD (CONSTRAINT ck1 CHECK (f2 > 0));
    
  • オブジェクト型の列は、エンティティとしてのみ削除できます。オブジェクト型の列から属性を削除するには、ALTER TYPE ... DROP ATTRIBUTE文をCASCADE INCLUDING TABLE DATA句とともに使用します。属性の削除は、すべての依存オブジェクトに影響することに注意してください。詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

  • 索引構成表からは、主キー列でない場合にかぎり、列を削除できます。索引構成表の主キー制約は削除できないため、CASCADE CONSTRAINTSを指定しても主キー列は削除できません。

  • 削除した列または未使用の列を含む表をエクスポートできます。ただし、エクスポート・ファイルに指定されたすべての列が表に存在する(これらの列のいずれも削除または未使用のマークを付けられていない)場合のみ、その表をインポートできます。そうでない場合は、エラーが戻ります。

  • COMPRESS BASICを使用する表の列を未使用として設定できますが、その列を削除することはできません。ただし、drop_column_clauseのすべての句は、COMPRESS FOR OLTPを使用する表に対して有効です。詳細は、table_compressionのセマンティクスを参照してください。

  • ドメイン索引が構築されている列は削除できません。

  • REF列からはSCOPE表制約およびWITH ROWID制約を削除できません。

  • 次のものは、この句を使用して削除できません。

    • 疑似列、クラスタ列またはパーティション列。パーティションが作成されたすべての表領域がオンラインで読取り/書込みモードである場合、パーティション表から非パーティション列を削除できます。

    • ネストした表の列、オブジェクト表の列またはSYSが所有する表の列。


関連項目:

「列の削除例:」

rename_column_clause

rename_column_clauseを使用すると、tableの列名を変更できます。新しい列には、table内の他の列と同じ名前を指定しないでください。

列名を変更すると、依存オブジェクトは次のように処理されます。

  • 名前が変更された列に依存するファンクション索引およびCHECK制約は、引き続き有効です。

  • 依存するビュー、トリガー、ファンクション、プロシージャおよびパッケージは無効になります。これらのオブジェクトが次回アクセスされたときに、Oracle Databaseによって再有効化が試行されますが、再有効化に失敗した場合は、管理者がそのオブジェクトを変更して新しい列名を指定する必要があります。

  • 名前を変更する列にドメイン索引を定義している場合、ODCIIndexAlterメソッドがRENAMEオプション付きで起動されます。この操作によって、索引タイプ・メタデータと実表の間の対応が確立されます。

列名の変更の制限事項: 列名の変更には、次の制限事項があります。

  • 同じ文の中で、この句を他のcolumn_clausesと同時に使用することはできません。

  • 結合索引の定義に使用される列名は変更できません。列名を変更する場合、索引を削除し、列名を変更してから、索引を再作成する必要があります。

modify_collection_retrieval

modify_collection_retrieval句を使用すると、データベースからコレクション型の項目が取り出されたときの戻り値を変更できます。

collection_item ネストした表型またはVARRAY型の列修飾属性の名前を指定します。

RETURN AS 問合せの結果として何を戻り値とするかを指定します。

  • LOCATORは、ネストした表に対して一意のロケータを戻すことを指定します。

  • VALUEは、ネストした表のコピーをそのまま戻すことを指定します。

modify_LOB_storage_clause

modify_LOB_storage_clauseを使用すると、LOB_itemの物理属性を変更できます。各modify_LOB_storage_clauseに対して、LOB_itemを1つのみ指定できます。

以降の項では、modify_LOB_parametersに固有のパラメータのセマンティクスについて説明します。この項で特に指定がない場合は、残りのLOBパラメータのセマンティクスは、表の作成時と表の変更時で同じです。詳細は、この項の最後にある制限と、「CREATE TABLE」の句LOB_storage_parametersを参照してください。


注意:

  • LOB記憶域に変更を加えるには、ALTER TABLE文を使用する方法と、DBMS_REDEFINITIONパッケージを使用したオンライン再定義による方法があります。LOB暗号化、圧縮または重複除外を作成時に有効にしなかった場合は、作成後にオンライン再定義を使用してこれらを有効にすることをお薦めします(この3つのパラメータの変更に対しては、この方法の方がディスク領域の効率の点で優れているため)。DBMS_REDEFINITIONの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

  • LOBの記憶域の種類を変換することはできません。かわりに、オンライン再定義またはパーティション交換を使用して、SecureFileまたはBasicFileを移行する必要があります。


PCTVERSION integer この句の詳細は、「CREATE TABLE」の句「PCTVERSION integerを参照してください。

LOB_retention_clause データベースが自動UNDOモードで稼働している場合、旧バージョンのLOBを保持するには、PCTVERSIONではなくRETENTIONを指定します。この句によって、PCTVERSIONのこれまでの設定が上書きされます。

FREEPOOLS integer データベースが自動UNDOモードで稼働している場合、BasicFiles LOBに対してこの句を使用するとLOBの空きリスト・グループ数を指定できます。この句によって、FREELIST GROUPSのこれまでの設定が上書きされます。このパラメータの詳細は、「CREATE TABLE」の句「FREEPOOLS integerを参照してください。SecureFiles LOBの場合は、データベースはこのパラメータを無視します。

REBUILD FREEPOOLS この句はBasicFiles LOBにのみ適用され、SecureFiles LOBには適用されません。REBUILD FREEPOOLS句を指定すると、LOB列から古いバージョンのデータがすべて削除されます。この句が役に立つのは、1つのLOBセグメント内に保持されている古いバージョンの領域をすべて削除する場合です(その領域が解放されて、すぐに新しいLOBデータに使用できるようになります)。

LOB_deduplicate_clause この句は、SecureFiles LOBに対してのみ有効です。KEEP_DUPLICATESは、LOB重複除外を無効にします。DEDUPLICATEは、LOB重複除外を有効にします。セグメント内のすべてのLOBが読み取られ、一致するLOBがある場合は重複が除外されてから戻されます。

LOB_compression_clause この句は、 SecureFiles LOBに対してのみ有効です。COMPRESSは、セグメント内のすべてのLOBを圧縮して戻します。NOCOMPRESSは、セグメント内のすべてのLOBを圧縮解除して戻します。

ENCRYPT | DECRYPT LOB暗号化は、一般に列の暗号化と同じセマンティクスを持ちます。詳細は、「ENCRYPT encryption_spec | DECRYPT」を参照してください。

CACHE、NOCACHE、CACHE READS CACHEまたはNOCACHEからCACHE READSへ、またはCACHE READSからCACHEまたはNOCACHEへLOB列を変更するときに、ロギング属性を変更できます。LOGGINGまたはNOLOGGINGを指定しない場合、LOB列の現行ロギング属性がデフォルトになります。CACHENOCACHEまたはCACHE READSを指定しない場合、Oracle Databaseは、LOB属性の既存の値を保持します。

LOB記憶域の変更の制限事項: LOB記憶域の変更には、次の制限事項があります。

  • LOB記憶域属性を変更する場合、storage_clauseINITIALパラメータの値は変更できません。

  • 同じ文でallocate_extent_clausedeallocate_unused_clauseの両方を指定することはできません。

  • PCTVERSIONパラメータとRETENTIONパラメータの両方を指定することはできません。

  • shrink_clauseは、SecureFiles LOBに対して指定できません。


関連項目:

LOBパラメータの設定の詳細は、「CREATE TABLE」のLOB_storage_clauseおよび「LOB列の例:」を参照してください。

alter_varray_col_properties

alter_varray_col_properties句を使用すると、VARRAYが格納されている既存のLOBの記憶特性を変更できます。

VARRAY列のプロパティ変更の制限事項: LOB_parametersTABLESPACE句は、この句の一部として指定できません。VARRAYに対するLOB表領域のデフォルトは、表を含む表領域になります。

REKEY encryption_spec

REKEY句を指定すると、データベースの新しい暗号化キーが生成されます。表内の暗号化されている列はすべて、新しいキーを使用して再度暗号化され、このときに、encryption_specUSING句が指定されている場合は新しい暗号化アルゴリズムが使用されます。この句は、このALTER TABLE文の中の他の句と組み合せることはできません。


関連項目:

列の透過的な暗号化の詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

constraint_clauses

constraint_clausesを使用すると、表外宣言を使用して新しい制約を追加、既存の制約の状態を変更、および制約を削除できます。表外制約およびconstraint_stateのすべてのキーワードとパラメータの詳細は、constraintを参照してください。

制約の追加

ADD句を使用すると、表外制約または表外REF制約を表に追加できます。

制約の変更

MODIFY CONSTRAINT句を使用すると、既存の制約の状態を変更できます。

CASCADEキーワードは、外部キー制約が定義されている一意制約または主キー制約を使用禁止にする場合にのみ有効です。この場合、CASCADEを指定することによって、一意制約または主キー制約とその依存するすべての外部キー制約を使用禁止にする必要があります。

制約の変更の制限事項: 制約の変更には、次の制限事項があります。

  • NOT DEFERRABLE制約は、INITIALLY DEFERREDには変更できません。

  • 索引構成表にこの句を指定した場合、同じ文では他の句を指定できません。

  • 参照パーティション表の外部キー列のNOT NULL制約は変更できません。また、参照パーティション表の参照制約のパーティション化状態は変更できません。

制約名の変更

RENAME CONSTRAINT句を使用すると、tableの既存の制約名を変更できます。新しい制約名は、同一スキーマ内にあるオブジェクトの既存の制約と同じ名前にはできません。制約に依存するすべてのオブジェクトは、引き続き有効です。

drop_constraint_clause

drop_constraint_clauseを使用すると、データベースの整合性制約を削除できます。制約の適用を中止し、データ・ディクショナリから制約が削除されます。各drop_constraint_clauseには、制約を1つのみ指定できますが、1つの文の中では、複数のdrop_constraint_clauseを指定できます。

制約削除の制限事項: 参照パーティション表の外部キー列のNOT NULL制約は削除できません。また、参照パーティション表のパーティション化参照制約は削除できません。

PRIMARY KEY PRIMARY KEYを指定すると、tableの主キー制約を削除できます。

UNIQUE UNIQUEを指定すると、指定した列の一意制約を削除できます。

ビットマップ結合索引が定義されている列から主キー制約または一意制約を削除すると、索引は無効になります。ビットマップ結合索引の詳細は、「CREATE INDEX」を参照してください。

CONSTRAINT CONSTRAINT constraint_nameを指定すると、主キー制約または一意制約以外の整合性制約を削除できます。

CASCADE CASCADEを指定すると、削除する整合性制約に依存するその他の整合性制約もすべて削除できます。

KEEP INDEX | DROP INDEX KEEP INDEXまたはDROP INDEXを指定すると、PRIMARY KEYまたはUNIQUE制約の適用に使用する索引を残すか削除するかを指定できます。

制約削除の制限事項: 制約の削除には、次の制限事項があります。

  • 参照整合性制約の一部の主キー制約または一意キー制約は、外部キーを削除しないと削除できません。参照されたキーと外部キーをともに削除する場合は、CASCADE句を使用してください。CASCADEを省略すると、外部キーによって参照される主キー制約および一意制約は削除されません。

  • 主キーをオブジェクト識別子(OID)として使用している表では、主キー制約は(CASCADE句を使用しても)削除できません。

  • REF列の参照整合性制約を削除した場合、REF列の有効範囲には参照先の表が含まれたままになります。

  • REF列の有効範囲は削除できません。

alter_external_table

alter_external_table句を使用すると、外部表の特性を変更できます。この句は、外部データには影響しません。parallel_clauseenable_disable_clauseexternal_data_propertiesおよびREJECT LIMIT句の構文およびセマンティクスは、CREATE TABLEの内容と同じです。「CREATE TABLE」のexternal_table_clauseを参照してください。

PROJECT COLUMN句 この句を使用すると、後続の問合せで、アクセス・ドライバが外部表に含まれる行を検証する方法を指定できます。デフォルトはPROJECT COLUMN ALLで、この場合、アクセス・ドライバは、選択されている列にかかわらず、すべての列の値を処理し、列のエントリが有効な行のみを検証します。いずれかの列の値でデータ型変換エラーなどのエラーが発生すると、その列がSELECT構文のリスト内で参照されていない場合でも、行が拒否されます。PROJECT COLUMN REFERENCEDを指定すると、アクセス・ドライバはSELECT構文のリスト内の列のみを処理します。

ALL設定の場合、一貫した結果セットが保証されます。REFERENCED設定の場合、後続の問合せで参照される列の数に応じて、戻される行の数が異なる可能性がありますが、ALL設定よりも高速です。後続の問合せで外部表のすべての列が選択されている場合、2つの設定の動作は同じになります。

外部表の変更の制限事項: 外部表の変更には、次の制限事項があります。

  • この句以外の句を使用して外部表を変更できません。

  • LONG、VARRAYまたはオブジェクト型の列は外部表に追加できません。また、外部表の列のデータ型を、これらの型に変更できません。

  • 制約は外部表に追加できません。

  • 外部表の記憶域パラメータは変更できません。

alter_table_partitioning

ここで説明する句は、パーティション表にのみ適用されます。1つのALTER TABLE文の中では、パーティション操作を他のパーティション操作または実表での操作と組み合せて使用することはできません。

表パーティションの変更の制限事項: 表パーティションの変更には、次の注意事項があります。

  • 1つ以上のマテリアライズド・ビューのマスター表で、パーティションを削除、交換、切捨て、移動、変更または分割した場合、その表に関する大量の既存ロード情報が削除されます。したがって、前述の操作のいずれかを行う前に、必ず依存するマテリアライズド・ビューをすべてリフレッシュしてください。

  • tableにビットマップ結合索引が定義されている場合、tableのパーティションの変更操作を実行すると、索引にUNUSABLEのマークが付けられます。

  • alter_table_partitioningの句のうち、参照パーティション表に対して指定できるのはmodify_table_default_attrsmove_table_[sub]partitiontruncate_partition_subpartおよびexchange_partition_subpartのみです。これらの操作が参照パーティション表の子表に対してカスケードすることはありません。これ以外のパーティション・メンテナンス操作は、参照パーティション表に対しては有効ではありませんが、参照パーティション表の親表に対して指定することは可能であり、その操作は子である参照パーティション表にカスケードします。

  • パーティションまたはサブパーティションを追加する際、表ごとに指定できるパーティションとサブパーティションの合計は1024K-1です。

  • 表のパーティションまたはサブパーティションを追加するときにパーティション名を省略すると、「一般的なパーティション化の注意事項:」で説明されているルールに従い、データベースによって名前が生成されます。

  • 表のパーティションまたはサブパーティションに対して、移動、追加(ハッシュのみ)、結合、削除、分割、マージ、名前の変更、または切捨てを行った場合、その表を参照するプロシージャ、ファンクション、パッケージ、パッケージ本体、ビュー、型本体およびトリガーは、引き続き有効です。他の依存オブジェクトはすべて無効になります。

  • LOB列を使用した表に新規セグメントを作成するパーティションのメンテナンス操作の遅延セグメント作成は、サポートされていません。セグメントは含まれる(サブ)パーティションに常に作成されます。

関連するCONTEXTドメイン索引が含まれる表におけるパーティション操作の詳細は、『Oracle Textリファレンス』を参照してください。

ブロック・サイズが異なる表領域のパーティション化されたデータベース・エンティティの記憶域には、制限事項があります。これらの制限事項については、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

modify_table_default_attrs

modify_table_default_attrs句を使用すると、tableの属性に対する新しいデフォルト値を指定できます。文に指定した属性のみが影響を受けます。その後に作成するパーティションおよびLOBパーティションは、パーティションまたはLOBパーティションの作成時に明示的に上書きしないかぎり、この値を継承します。既存のパーティションおよびLOBパーティションは、この句の影響を受けません。

文の中で指定した属性のみが影響を受けます。指定されたデフォルト値は、個々のパーティションまたはLOBパーティションのレベルで指定された属性で上書きされます。

  • FOR partition_extended_nameは、コンポジット・パーティション表にのみ適用されます。この句は、partition_extended_nameで指定されたパーティションの属性に新しいデフォルト値を指定します。その後に作成するパーティションのサブパーティションおよびLOBパーティションは、サブパーティションまたはLOBパーティションの作成時に明示的に上書きしないかぎり、この値を継承します。既存のサブパーティションは、この句の影響を受けません。

  • PCTTHRESHOLDkey_compressionおよびalter_overflow_clauseは、パーティション化された索引構成表にのみ有効です。

  • 表レベルでキー圧縮がすでに指定されている場合にかぎり、キー圧縮を指定できます。また、COMPRESSキーワードの後にint型を指定することはできません。キー圧縮の長さは、表の作成時にのみ指定できます。

  • 索引構成表の索引セグメントに対しては、segment_attributes句でPCTUSEDパラメータを指定できません。

alter_interval_partitioning

次の場合にこの句を使用します。

  • 既存のレンジ・パーティション表を時間隔パーティションに変換する場合。データベースにより、最後のレンジ・パーティションの最大値を超えるデータの必要に応じて、指定した数値範囲または日時間隔のパーティションが自動的に作成されます。

  • 既存の時間隔パーティション表の時間隔を変更する場合。データベースは、先に既存の時間隔パーティションをレンジ・パーティションに変換し、定義されたレンジ・パーティションの上限の値を決定します。次に、データベースにより、上限を超えたデータの必要に応じて、指定した数値範囲または日時間隔のパーティションが自動的に作成されます。

  • 既存の時間隔パーティション表の表領域の記憶域を変更する場合。

  • 時間隔パーティション表をレンジ・パーティション表に戻す場合。SET INTERVAL ()を使用して、時間隔パーティションを無効にします。データベースは、作成されるレンジ・パーティションの上限として、作成済の時間隔パーティションの上限を使用し、既存の時間隔パーティションをレンジ・パーティションに変換します。

exprには、有効な数値または期間式を指定します。


関連項目:

時間隔パーティションの詳細は、「CREATE TABLE」の「INTERVAL句」および『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

set_subpartition_template

set_subpartition_template句は、個々の表パーティションのデフォルトのレンジ、リストまたはハッシュ・サブパーティション定義を作成するときや、既存の定義を置き換えるときに使用します。この句は、コンポジット・パーティション表に対してのみ有効です。既存のサブパーティション・テンプレートが置き換えられますが、テンプレートがまだ作成されていない場合は新規作成されます。既存のサブパーティションや、既存のローカルおよびグローバルの索引に影響が及ぶことはありません。ただし、以降のパーティション化操作(追加やマージなどの操作)には、新しいテンプレートが使用されます。

既存のサブパーティション・テンプレートを削除するには、ALTER TABLE table SET SUBPARTITION TEMPLATE ()を指定します。

set_subpartition_template句は、CREATE TABLEsubpartition_template句と同じセマンティクスを持ちます。詳細は、CREATE TABLEsubpartition_template句を参照してください。

modify_table_partition

modify_table_partition句を使用すると、レンジ・パーティション、ハッシュ・パーティション、リスト・パーティションまたはシステム・パーティションの実際の物理属性を変更できます。そのパーティションの1つ以上のLOB項目の記憶域属性を任意に変更できます。物理属性(制限事項については後述)、ロギングおよび記憶域パラメータに対して、新しい値を指定できます。

すべてのタイプのパーティションについて、パーティションを変更した結果、使用不可能になったローカル索引の処理方法も指定できます。「UNUSABLE LOCAL INDEXES句」を参照してください。

パーティション化された索引構成表の場合、パーティションの変更時にマッピング表も同時に更新できます。alter_mapping_table_clausesを参照してください。

表パーティションの変更の制限事項: レンジ、リストおよびハッシュ表パーティションの操作に、次の制限事項が適用されます。

  • すべてのタイプの表パーティションについて、partition_attributes句でshrink_clauseを使用すると、各パーティションのセグメントを縮小できます。この句の詳細は、shrink_clauseを参照してください。

  • システム・パーティションを変更する構文およびセマンティクスは、ハッシュ・パーティションを変更する場合と同じです。modify_hash_partitionを参照してください。

  • tableがコンポジット・パーティション化されている場合:

    • allocate_extent_clauseを指定すると、partitionのそれぞれのサブパーティションにエクステントが割り当てられます。

    • deallocate_unused_clauseを指定すると、partitionのそれぞれのサブパーティションから未使用の記憶域の割当てが解除されます。

    • この句で変更された他の属性は、partitionのサブパーティションでも変更され、既存の値は上書きされます。既存のサブパーティションの属性が変更されないようにするには、modify_table_default_attrsFOR PARTITION句を使用します。

  • パーティション化されているネストした表を含む表パーティションのpartition_attributesを変更した場合、その変更内容は、変更した表パーティションに対応するネストした表パーティションには適用されません。ただし、ALTER TABLE文を使用すると、ネストした表パーティションの記憶表を直接変更できます。

  • 特に指定がないかぎり、partition_attributesの残りの句の動作は、パーティション表の作成時と同じです。詳細は、「CREATE TABLE」のtable_partitioning_clausesを参照してください。

modify_range_partition

この句を使用すると、レンジ・パーティションの特性を変更できます。

add_range_subpartition  この句が有効であるのは、レンジ-レンジ・コンポジット・パーティションに対してのみです。レンジ・サブパーティションをpartitionに追加できます。

add_hash_subpartition  この句は、レンジ-ハッシュ・コンポジット・パーティションに対してのみ有効です。add_hash_subpartition句を使用すると、ハッシュ・サブパーティションをpartitionに追加できます。Oracle Databaseは、ハッシュ・ファンクションによってpartitionの他のサブパーティションから再ハッシュされた行を、新しいサブパーティションに移入します。ロード・バランシングを最適化する場合、サブパーティションの合計数は2の累乗にする必要があります。

partitioning_storage_clauseでサブパーティションに対して指定できる句は、TABLESPACE句のみです。TABLESPACEを指定しなかった場合、新しいサブパーティションはpartitionのデフォルトの表領域に格納されます。

選択したパーティションに対応するローカル索引パーティションが追加されます。

追加したパーティションに対応するローカル索引パーティションにUNUSABLEのマークが付けられます。ヒープ構成表のすべての索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。

add_list_subpartition この句は、レンジ-リストおよびリスト-リスト・コンポジット・パーティションに対してのみ有効です。リスト・サブパーティションをpartitionに追加できますが、DEFAULTサブパーティションが未作成であることが条件です。

  • この操作にはlist_values_clauseが必要です。また、list_values_clauseには、partitionのその他のサブパーティションには存在していない値を指定する必要があります。ただし、他のパーティションのサブパーティションで使用されている値は指定できます。

  • partitioning_storage_clauseでサブパーティションに対して指定できる句は、TABLESPACE句および表の圧縮のみです。

表のすべてのローカル索引パーティションには、同じ値リストを持つサブパーティションも追加されます。表の既存のローカル索引パーティションおよびグローバル索引パーティションは影響を受けません。

リスト・サブパーティションの追加の制限事項 パーティションにデフォルト・サブパーティションがすでに作成されている場合は、この句を指定できません。その場合、split_list_subpartition句を使用して、DEFAULTパーティションを分割する必要があります。

COALESCE SUBPARTITION COALESCE SUBPARTITIONは、ハッシュ・サブパーティションにのみ適用されます。COALESCE SUBPARTITIONを使用すると、最後のハッシュ・サブパーティションが選択され、その内容が1つ以上の残りのサブパーティション(ハッシュ・ファンクションが決定)に分散された後、選択されたサブパーティションが削除されます。

  • 選択したパーティションに対応するローカル索引パーティションが削除されます。

  • 1つ以上の吸収パーティションに対応するローカル索引パーティションにUNUSABLEのマークが付けられます。ヒープ構成表のすべてのグローバル索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。

modify_hash_partition

ハッシュ・パーティションに変更を加えるときは、partition_attributes句の中で指定できるのはallocate_extent_clauseおよびdeallocate_unused_clauseのみです。パーティションのそれ以外の属性はすべて、表レベルのデフォルトから継承されますが、TABLESPACEは作成時のままとなります。

modify_list_partition

リスト・パーティションを変更するときに使用できる句のセマンティクスは、レンジ・パーティションを変更するときと同じです。リスト・パーティションを変更する場合、次の句も使用できます。

ADD | DROP VALUES句 これらの句は、コンポジット・パーティションを変更する場合のみ有効です。これらの句によって、表のローカル索引とグローバル索引が影響を受けることはありません。

  • ADD VALUES句を使用すると、partitionpartition_key_valueリストが拡張され、追加した値が含まれます。追加するパーティションの値は、「CREATE TABLE」の句list_partitionsに示すすべての規則および制限事項に準拠する必要があります。

  • DROP VALUES句を使用すると、1つ以上のpartition_key_valueが削除され、partitionpartition_key_valueリストが縮小されます。この句を指定すると、Oracle Databaseはこの値の行が存在しないことを検証します。そのような行が存在する場合は、エラーが戻されます。


注意:

表にローカル同一キー索引が定義されている場合、DEFAULTリスト・パーティションのある表ではADD VALUES操作およびDROP VALUES操作が改善されます。

リスト値の追加と削除の制限事項: リスト値の追加と削除には、次の制限事項があります。

  • DEFAULTリスト・パーティションに対して値を追加または値を削除することはできません。

  • tableDEFAULTパーティションが定義されている場合、デフォルト・パーティション以外に値を追加しようとすると、その値がDEFAULTパーティションに存在しているかどうかが確認されます。 DEFAULTパーティションにその値が存在する場合、エラーが戻されます。

modify_table_subpartition

この句は、コンポジット・パーティション表にのみ適用されます。その副次句によって、個別のレンジ、リストまたはハッシュ・サブパーティションの特性を変更できます。

shrink_clauseを使用すると、サブパーティションの各セグメントを縮小できます。この句の詳細は、shrink_clauseを参照してください。

また、パーティションを変更した結果、使用不可能になったローカル索引の処理方法も指定できます。「UNUSABLE LOCAL INDEXES句」を参照してください。

ハッシュ・サブパーティションの変更の制限事項 modify_LOB_parametersのうち、subpartitionに対して指定できるのはallocate_extent_clauseおよびdeallocate_unused_clauseのみです。

ADD | DROP VALUES句 これらの句は、リスト・サブパーティションを変更する場合のみ有効です。これらの句によって、表のローカル索引とグローバル索引が影響を受けることはありません。

  • ADD VALUES句を使用すると、subpartitionsubpartition_key_valueリストが拡張され、追加した値が含まれます。追加するパーティションの値は、「CREATE TABLE」の句list_partitionsに示すすべての規則および制限事項に準拠する必要があります。

  • DROP VALUES句を使用すると、1つ以上のsubpartition_key_valueが削除され、subpartitionsubpartition_key_valueリストが縮小されます。この句を指定すると、Oracle Databaseはこの値の行が存在しないことを検証します。そのような行が存在する場合は、エラーが戻されます。

また、パーティションを変更した結果、使用不可能になったローカル索引の処理方法も指定できます。「UNUSABLE LOCAL INDEXES句」を参照してください。

リスト・サブパーティションの変更の制限事項 modify_LOB_parametersのうち、subpartitionに対して指定できるのはallocate_extent_clauseおよびdeallocate_unused_clauseのみです。

move_table_partition

move_table_partition句を使用すると、partitionを別のセグメントへ移動できます。パーティション・データの別の表領域への移動、断片化を削減するためのデータの再クラスタ化、および作成時の物理属性の変更ができます。

表にLOB列が含まれている場合、LOB_storage_clauseを使用して、このパーティションに関連付けられたLOBデータおよびLOB索引セグメントを移動できます。この場合、指定したLOBのみが影響を受けます。特定のLOB列にLOB_storage_clauseを指定しなかった場合、その列のLOBデータおよびLOB索引セグメントは移動されません。

ネストした表の列が表に含まれる場合、table_partition_descriptionnested_table_col_properties句を使用すると、このパーティションに関連付けられているネストした表のセグメントを移動できます。この場合、指定しているネストした表のみが影響を受けます。特定のネストした表の列に対しtable_partition_descriptionnested_table_col_properties句を指定しなかった場合、そのセグメントは移動されません。

指定したパーティションに対応するローカル索引パーティションが、Oracle Databaseによって移動されます。移動したパーティションが空でない場合、UNUSABLEのマークが付けられます。ヒープ構成表のグローバル索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。

LOBデータ・セグメントを移動する場合、古いデータ・セグメントおよび対応する索引セグメントが削除され、新しい表領域を指定しない場合でも、新しいセグメントが作成されます。

移動操作では、parallel_clause(指定されている場合)からパラレル属性が取得されます。parallel_clauseが指定されていない場合は、表のデフォルトのパラレル属性があれば、これが使用されます。いずれも指定されていない場合は、シリアルに移動が行われます。

MOVE PARTITIONparallel_clauseを指定した場合、tableのデフォルトのパラレル属性は変更されません。


注意:

索引構成表の場合、主キーのアドレスおよびその値を使用して、論理ROWIDが構成されます。論理ROWIDは、表の2次索引に格納されます。索引構成表のパーティションを移動した場合、ROWIDのアドレス部分が変更され、パフォーマンスの障害になる場合があります。最適なパフォーマンスを維持するには、移動したパーティションの2次索引を再構築し、ROWIDを更新してください。

MAPPING TABLE MAPPING TABLE句は、マッピング表が定義されている索引構成表のみに有効です。マッピング表は、索引構成表のパーティションとともに移動されます。マッピング表のパーティションは、移動した索引構成表のパーティションの物理属性を継承します。これは、マッピング表のパーティションの属性を変更する唯一の方法です。この句を省略した場合、マッピング表のパーティションでは、元の属性が保持されます。

対応するすべてのビットマップ索引パーティションにはUNUSABLEのマークが付けられます。

この句の詳細は、「CREATE TABLE」のmapping_table_clausesを参照してください。

表パーティションの移動の制限事項: 表パーティションの移動には、次の制限事項があります。

  • partitionがハッシュ・パーティションである場合、この句にTABLESPACEの属性以外は指定できません。

  • この句は、サブパーティションを含むパーティションに対して指定できません。ただし、move_table_subpartition句を使用してサブパーティションを移動できます。

move_table_subpartition

move_table_subpartition句を使用して、subpartition_extended_nameで識別されるサブパーティションを別のセグメントに移動します。TABLESPACEを指定しない場合、サブパーティションは同じ表領域に残ります。

サブパーティションが空でない場合、移動したサブパーティションに対応するすべてのローカル索引サブパーティションにUNUSABLEのマークが付けられます。update_index_clausesを使用し、操作中にヒープ構成表のすべての索引を更新できます。

表にLOB列が含まれている場合、LOB_storage_clauseを使用して、このサブパーティションに関連付けられたLOBデータおよびLOB索引セグメントを移動できます。この場合、指定したLOBのみが影響を受けます。特定のLOB列にLOB_storage_clauseを指定しなかった場合、その列のLOBデータおよびLOB索引セグメントは移動されません。

LOBデータ・セグメントを移動する場合、古いデータ・セグメントおよび対応する索引セグメントが削除され、新しい表領域を指定しない場合でも、新しいセグメントが作成されます。

表サブパーティションの移動の制限事項: 指定できるpartitioning_storage_clauseの句は、TABLESPACEおよびtable_compressionのみです。

add_table_partition

add_table_partition句を使用すると、tableにハッシュ・パーティション、レンジ・パーティション、リスト・パーティションまたはシステム・パーティションを追加できます。

tableで定義されているローカル索引に、実表のパーティションと同じ名前で新しいパーティションが追加されます。索引に同じ名前のパーティションがすでに存在する場合、SYS_Pnという形式でパーティションの名前が生成されます。

tableが索引構成されている場合、表で定義されたすべてのマッピング表およびオーバーフロー領域に、パーティションが追加されます。

tableが参照パーティション表の親表の場合は、dependent_tables_clauseを使用して、この文に指定するパーティション・メンテナンス操作を参照パーティション表のすべての子表に伝播できます。

コンポジット・パーティション表の場合、tableに定義されたすべてのローカル索引に対して、同じサブパーティションを持つ新規の索引パーティションが追加されます。tableのグローバル索引が影響を受けることはありません。

add_range_partition_clause

add_range_partition_clauseを使用すると、新しいレンジ・パーティションをレンジ・パーティション表またはコンポジット・レンジ・パーティション表の一番上(最後の既存のパーティションの後)に追加できます。

ドメイン索引がtableで定義されている場合、IN_PROGRESSまたはFAILEDのマークが付いていると無効になります。

レンジ・パーティションの追加の制限事項: レンジ・パーティションの追加には、次の制限事項があります。

  • 既存の上位パーティションにある各パーティション化キーのパーティションの上限がMAXVALUEの場合、表にパーティションを追加できません。そのかわり、split_table_partition句を使用して、表の始めまたは中間にパーティションを追加します。

  • key_compressionおよびOVERFLOW句は、パーティション化された索引構成表に対してのみ有効です。パーティション表にすでにオーバーフロー・セグメントが存在する場合にかぎり、OVERFLOWを指定できます。表レベルでキー圧縮が使用可能な場合にかぎり、キー圧縮を指定できます。

  • PCTUSEDパラメータは、索引構成表の索引セグメントに対して指定できません。

range_values_clause 新しいパーティションの上限を指定します。value_listは、パーティション・キー列に対応するリテラル値を順序どおりにカンマで区切ったリストです。value_listの値は、表内にある既存の最上位パーティションのパーティション境界より大きくする必要があります。

table_partition_description この句を使用すると、新しいパーティションに作成時の物理属性を指定できます。表にLOB列が含まれている場合、1つ以上のLOB項目にパーティション・レベルの属性を指定することもできます。

サブパーティションの定義 これらの句は、コンポジット・パーティション表に対してのみ有効です。新しいパーティションのサブパーティションを指定する場合は、range_subpartition_desclist_subpartition_descindividual_hash_subpartsまたはhash_subparts_by_quantity句を適切に使用します。この句によって、表レベルでsubpartition_templateに定義された任意のサブパーティションの設定は上書きされます。

add_hash_partition_clause

add_hash_partition_clauseを使用すると、ハッシュ・パーティション表の一番上に新しいハッシュ・パーティションを追加できます。Oracle Databaseは、ハッシュ・ファンクションによってtableの他のパーティションから再ハッシュされた行を、新しいパーティションに移入します。ロード・バランシングを最適化する場合、パーティションの合計数は2の累乗にする必要があります。

パーティションの名前を指定でき、パーティションが格納される表領域を指定することもできます。名前を指定しない場合は、SYS_Pnという形式のパーティション名が割り当てられます。TABLESPACEを指定しない場合は、新しいパーティションは表のデフォルトの表領域に格納されます。それ以外の属性は常に、表レベルのデフォルトから継承されます。

この操作によってパーティション間でデータが再ハッシュされると、対応するすべてのローカル索引パーティションにUNUSABLEのマークが付けられます。update_index_clausesを使用し、操作中にヒープ構成表のすべての索引を更新できます。

parallel_clauseを使用すると、新しいパーティションの作成をパラレル化するかどうかを指定できます。


関連項目:

ハッシュ・パーティション化の詳細は、「CREATE TABLE」および『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

add_list_partition_clause

add_list_partition_clauseを使用すると、パーティションの新しい一連の値を使用して、tableに新しいパーティションを追加できます。新しいパーティションに作成時の物理属性を指定できます。表にLOB列が含まれている場合、1つ以上のLOB項目にパーティション・レベルの属性を指定することもできます。

リスト・パーティションの追加の制限事項 表の DEFAULTパーティションがすでに定義されている場合は、リスト・パーティションを追加できません。その場合、split_table_partition句を使用して、DEFAULTパーティションを分割する必要があります。


関連項目:


add_system_partition_clause

この句を使用すると、パーティションをシステム・パーティション表に追加できます。表に定義されているすべてのローカル索引に、対応する索引パーティションが追加されます。

BEFORE句によって、既存のパーティションとの関係で新しいパーティションが追加される場所を指定できます。システム・パーティションは分割できません。そのため、この句は、既存の1つのパーティションの内容を複数の新しいパーティションに分割する場合に有効です。この句を省略した場合、新しいパーティションは既存のパーティションの後に追加されます。

table_partition_descriptionによって、新しいパーティションのパーティション・レベルの属性を指定できます。指定しない属性の値は、表レベルの値から継承されます。

システム・パーティションの追加の制限事項: システム・パーティションを追加する場合、OVERFLOW句は指定できません。


関連項目:

システム・パーティションの詳細は、「CREATE TABLE」の句system_partitioningを参照してください。

coalesce_table_partition

COALESCEは、ハッシュ・パーティションにのみ適用されます。coalesce_table_partition句を使用すると、最後のハッシュ・パーティションが選択され、その内容がハッシュ・ファンクションによって決定される1つ以上の残りのパーティションに分散された後、選択されたパーティションが削除されます。

選択したパーティションに対応するローカル索引パーティションが削除されます。1つ以上の吸収パーティションに対応するローカル索引パーティションにUNUSABLEのマークが付けられます。ヒープ構成表のすべての索引が無効になります。update_index_clausesを使用すると、操作中にすべての索引を更新できます。

表パーティションの結合の制限事項: update_all_indexes_clauseを使用してグローバル索引を更新する場合、副次句ではなくUPDATE INDEXESキーワードのみを指定できます。

drop_table_partition

drop_table_partition句を使用すると、パーティション表から、partition_extended_nameで指定されるパーティションおよびそのパーティション内のデータを削除できます。データを表に残したままパーティションを削除する場合は、そのパーティションを隣接するパーティションにマージする必要があります。


関連項目:

merge_table_partitions

  • tableにLOB列が存在する場合、partitionに対応するLOBデータ、LOB索引パーティションおよび(存在する場合は)サブパーティションも削除されます。

  • tableにパーティション化されているネストした表の列が含まれる場合は、削除される表パーティションに対応するネストした表パーティションも削除されます。

  • tableが索引構成されており、定義されたマッピング表を持つ場合、対応するマッピング表のパーティションも同様に削除されます。

  • ローカル索引パーティションおよび削除されるパーティションに対応するサブパーティションは、UNUSABLEのマークが付いている場合でも削除されます。

update_index_clausesを使用し、操作中にtableの索引を更新できます。update_index_clausesとともにparallel_clauseを指定すると、削除操作ではなく、索引の更新がパラレル化されます。

レンジ・パーティションを削除し、その後、削除したパーティションに属していた行を挿入した場合、1つ上位のパーティションに行が格納されます。ただし、そのパーティションが最上位のパーティションである場合、削除したパーティションが表していた値の範囲が表に対して無効になるため、挿入は失敗します。

表パーティションの削除の制限事項: 表パーティションの削除には、次の制限事項があります。

  • ハッシュ・パーティション表のパーティションは削除できません。かわりに、coalesce_table_partition句を使用してください。

  • tableにパーティションが1つのみ存在する場合は、そのパーティションを削除できません。かわりに表を削除します。

  • update_index_clausesを使用してグローバル索引を更新する場合、副次句ではなくUPDATE INDEXESキーワードのみを指定できます。

drop_table_subpartition

この句を使用すると、レンジ、リスト、またはハッシュ・コンポジット・パーティション表からレンジまたはリスト・サブパーティションを削除できます。削除対象のサブパーティション内の行はすべて削除されます。

ローカル索引の対応するサブパーティションは、自動的に削除されます。その他の索引サブパーティションには影響がありません。update_global_index_clauseまたはupdate_all_indexes_clauseを指定しないかぎり、グローバル索引にはUNUSABLEのマークが付けられます。

表サブパーティションの削除の制限事項: 表サブパーティションの削除には、次の制限事項があります。

  • ハッシュ・サブパーティションは削除できません。かわりに、MODIFY PARTITION ... COALESCE SUBPARTITION構文を使用してください。

  • パーティションに存在するサブパーティションが1つのみの場合は、そのサブパーティションを削除できません。かわりに、drop_table_partition句を使用してください。

  • グローバル索引を更新する場合、update_all_indexes_clauseのオプションの副次句を指定することはできません。

rename_partition_subpart

rename_partition_subpart句を使用すると、表パーティションまたは表サブパーティションの名前をnew_nameに変更できます。パーティションおよびサブパーティションのどちらの場合も、new_nameは同じ表に存在するすべてのパーティションおよびサブパーティションと異なる値である必要があります。

tableが索引構成されている場合、対応する主キー索引パーティションに、既存のオーバーフロー・パーティションおよびマッピング表パーティションと同じ名前が割り当てられます。

truncate_partition_subpart

TRUNCATE PARTITIONを指定すると、partition_extended_nameで指定したパーティションからすべての行を削除することができ、表がコンポジット・パーティション化されている場合は、そのパーティションのサブパーティションからすべての行が削除されます。TRUNCATE SUBPARTITIONを指定すると、1つのサブパーティションからすべての行が削除されます。tableが索引構成されている場合、対応するすべてのマッピング表のパーティションおよびオーバーフロー領域のパーティションが切り捨てられます。

  • 切り捨てるパーティションまたはサブパーティションにデータが含まれている場合は、まず、その表の参照整合性制約を使用禁止にする必要があります。また、別の方法として、行を削除してからパーティションを切り捨てる方法もあります。

  • tableにLOB列が存在する場合、このパーティションのLOBデータおよびLOB索引セグメントも切り捨てられます。tableがコンポジット・パーティション化されている場合、このパーティションのサブパーティションのLOBデータおよびLOB索引セグメントは切り捨てられます。

  • tableにパーティション化されているネストした表が含まれる場合、親パーティションに対応するネストした表パーティションが空でないかぎり、親パーティションを切り捨てることはできません。

  • tableでドメイン索引が定義されている場合、索引にIN_PROGRESSまたはFAILEDのマークが付いていると無効になります。また、切り捨てられる表パーティションに対応する索引パーティションにIN_PROGRESSのマークが付いていると無効になります。

切り捨てられるそれぞれのパーティションまたはサブパーティションでは、対応するローカル索引パーティションおよびサブパーティションも切り捨てられます。これらの索引パーティションまたはサブパーティションにUNUSABLEのマークが付いている場合、これらは切り捨てられ、UNUSABLEのマークはVALIDにリセットされます。

update_global_index_clauseまたはupdate_all_indexes_clauseを使用し、操作中にtableのグローバル索引を更新できます。これらの句とともにparallel_clauseを指定すると、切捨て操作ではなく、索引の更新がパラレル化されます。

DROP STORAGE DROP STORAGEを指定すると、MINEXTENTSパラメータで割り当てられた領域を除き、削除された行からすべての領域の割当てを解除できます。この領域は、後で表領域内の他のオブジェクトで使用できます。

DROP ALL STORAGE DROP ALL STORAGEを指定すると、MINEXTENTSパラメータで割り当てられた領域も含め、削除された行からすべての領域の割当てを解除できます。パーティションまたはサブパーティションのすべてのセグメント、およびその依存オブジェクトのすべてのセグメントも、割当てが解除されます。

DROP ALL STORAGEの制限事項: この句には、「遅延セグメント作成の制限事項」に示されているものと同じ制限事項があります。


注意:

DROP ALL STORAGE句は、Oracle Database 11gリリース2 (11.2.0.2)から使用可能です。

REUSE STORAGE REUSE STORAGEを指定すると、削除した行が占有していた領域をパーティションまたはサブパーティションに割り当てることができます。この領域は、そのパーティションまたはサブパーティションに対する後続の挿入および更新のためにのみ使用できます。

表のパーティションおよびサブパーティションの切捨ての制限事項: update_all_indexes_clauseを使用してグローバル索引を更新する場合、副次句ではなくUPDATE INDEXESキーワードのみを指定できます。

split_table_partition

split_table_partition句を使用すると、partition_extended_nameによって指定されるパーティションから新しいセグメント、物理属性および初期エクステントをそれぞれ含む、2つの新しいパーティションが作成されます。現行パーティションに対応付けられたセグメントは、廃棄されます。

新しいパーティションは、指定されていないすべての物理属性を現行パーティションから継承します。


注意:

一定の条件が満たされると、SPLIT PARTITIONおよびSPLIT SUBPARTITION操作を最適化して処理速度を上げることができます。これらの操作の最適化の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

  • DEFAULTリスト・パーティションを分割すると、作成される1つ目のパーティションには分割値が格納され、2つ目のパーティションにはDEFAULT値が格納されます。

  • tableが索引構成表である場合は、対応するマッピング表のパーティションが分割されて、親の索引構成表のパーティションと同じ表領域に配置されます。対応するオーバーフロー領域も分割されるので、OVERFLOW句を使用して新しいオーバーフロー領域のセグメント属性を指定できます。

  • tableにLOB列がある場合、LOB_storage_clauseを使用して、分割の結果生成されたLOBデータ・セグメントに対して個々のLOB記憶域属性を指定できます。現行パーティションのLOBデータおよびLOB索引セグメントが削除された後、新しい表領域を指定しなくても、各パーティションの各LOB列に新しいセグメントが作成されます。

  • tableにネストした表の列が含まれる場合、split_nested_table_part句を使用して、分割の結果生成されたネストした表セグメントに対して、記憶表名およびセグメント属性を指定できます。現行パーティションのネストした表セグメントが削除された後、各パーティションのネストした表の列ごとに新しいセグメントが作成されます。この句により、親表には、複数レベルのネストした表の列のみでなく、複数のネストした表の列を含めることが可能になります。

対応するローカル索引パーティションにUNUSABLEのマークが付いている場合でも、それらは分割されます。UNUSABLEのマークが付けられ、ユーザーは、分割パーティションに対応するローカル索引パーティションを再構築する必要があります。新しい索引パーティションの属性は、分割されたパーティションから継承されます。新しい索引パーティションは、分割された索引パーティションのデフォルト表領域に格納されます。索引パーティションにデフォルト表領域が定義されていない場合、基礎となる新しい表のパーティションの表領域が使用されます。

AT句 AT句は、レンジ・パーティションのみに適用されます。新しい2つのパーティションのうちの最初の方に、新しい上限(境界を含まない)を指定します。値リストは、現行パーティションの元のパーティション境界より小さく、その次に小さいパーティション(そのようなパーティションがある場合)のパーティション境界より大きい値にする必要があります。

VALUES句 VALUES句が適用されるのは、リスト・パーティションのみです。新しい2つのパーティションのうち、最初のものに含めるパーティション値を指定します。新しいパーティションのうち、最初のものは指定のパーティション値リストを使用して作成され、2つ目のパーティションは、現行パーティションの残りのパーティション値を使用して作成されます。このため、値リストには現行パーティションのすべてのパーティション値を含めることはできません。また、現行パーティションに存在しないパーティション値も含めることはできません。

INTO句 INTO句を使用すると、分割の結果生成された2つのパーティションを定義できます。分割の結果生成される2つのパーティションにオプションの名前および物理属性を指定しない場合でも、range_partition_descまたはlist_partition_descにはPARTITIONキーワードを適切に指定する必要があります。新しいパーティション名を指定しない場合、SYS_Pnという形式の名前が割り当てられます。指定しないすべての属性は、現行パーティションから継承されます。

レンジ-ハッシュ・コンポジット・パーティション表の場合、新しいパーティションにサブパーティションを指定するとき、サブパーティションに対してTABLESPACEおよび表の圧縮のみを指定できます。他のすべての属性は、現行パーティションから継承されます。新しいパーティションにサブパーティション化を指定しない場合は、表領域も現行パーティションから継承されます。

レンジ-リストおよびリスト-リスト・コンポジット・パーティション表の場合、新しいパーティションにサブパーティションを指定できません。分割パーティションのリスト・サブパーティションでは、サブパーティションの数および値リストは現行パーティションから継承されます。

新しく作成したサブパーティションに対して名前を指定しなかったすべてのコンポジット・パーティション表では、次のように名前が親パーティションから継承されます。

  • 親パーティション内のサブパーティションがpartition_nameアンダースコア(_)subpartition_nameという形式の名前(たとえば、P1_SUBP1)を持つ場合、新しいパーティション名に基づいて、サブパーティションの名前が生成されます(たとえば、P1A_SUB1P1B_SUB1)。

  • 親パーティション内のサブパーティションがその他の形式の名前を持つ場合、SYS_SUBPnという形式のサブパーティション名が生成されます。

索引にUNUSABLEのマークが付いている場合でも、tableで定義されている各ローカル索引の対応するパーティションが分割されます。

ヒープ構成表のすべての索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。

tableが参照パーティション表の親表の場合は、dependent_tables_clauseを使用して、この文に指定するパーティション・メンテナンス操作を参照パーティション表のすべての子表に伝播できます。

parallel_clauseを使用すると、表のデフォルトのパラレル属性を変更せずに、分割操作をパラレル化できます。

表パーティションの分割の制限事項: この句は、ハッシュ・パーティションに対して指定できません。

split_table_subpartition

この句を使用すると、重複しない値リストを持つ2つのサブパーティションにリスト・サブパーティションを分割できます。


注意:

一定の条件が満たされると、SPLIT PARTITIONおよびSPLIT SUBPARTITION操作を最適化して処理速度を上げることができます。これらの操作の最適化の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

AT句 AT句は、レンジ・サブパーティションに対してのみ有効です。新しい2つのサブパーティションのうちの1つ目に、新しく上限(この値は含まない)を指定します。値リストは、subpartition_extended_nameで指定されるサブパーティションの元のサブパーティション境界より小さく、その次に小さいサブパーティション(そのようなパーティションがある場合)のパーティション境界より大きい値にする必要があります。

VALUES句 VALUES句が有効であるのは、リスト・サブパーティションに対してのみです。指定したサブパーティション値は、新しい2つのサブパーティションのうち最初のものに使用されます。NULLを指定できるのは、まだ同じパーティション内の別のサブパーティションに対してNULLが指定されていない場合です。新しいサブパーティションのうち、最初のものは指定のサブパーティション値リストを使用して作成され、2つ目のパーティションは、現行サブパーティションの残りのパーティション値を使用して作成されます。このため、値リストには現行のサブパーティションのすべてのパーティション値を含めることはできません。また、現行のサブパーティションに存在しないパーティション値も含めることはできません。

INTO句 レンジ・サブパーティションとリスト・サブパーティションのどちらに対しても、INTO句を使用すると、分割の結果生成された2つのサブパーティションを定義できます。2つのサブパーティションにオプションの名前および属性を指定しない場合でも、range_subpartition_descまたはlist_subpartition_descではSUBPARTITIONキーワードを適切に指定する必要があります。指定しないすべての属性は、現行のサブパーティションから継承されます。

対応するローカル索引サブパーティションにUNUSABLEのマークが付いている場合でも、それらは分割されます。新しい索引サブパーティションに名前があらかじめ指定されていないかぎり、新しい表のサブパーティションの名前が継承されます。この場合、SYS_SUBPnという形式の新しい索引サブパーティション名が割り当てられます。新しい索引サブパーティションの物理属性は、親サブパーティションから継承されます。親サブパーティションにデフォルトのTABLESPACE属性が定義されていない場合、対応する新しい表のサブパーティションの表領域が継承されます。

ヒープ構成表の索引が無効になります。update_index_clausesを使用し、これらの索引を更新できます。

表サブパーティションの分割の制限事項: 表サブパーティションの分割には、次の制限事項があります。

  • この句は、ハッシュ・サブパーティションに対して指定できません。

  • サブパーティションの定義で指定できるpartitioning_storage_clauseの句は、TABLESPACEおよび表の圧縮のみです。

merge_table_partitions

merge_table_partitions句を使用すると、tableの2つのレンジ・パーティション、2つのリスト・パーティションまたは2つのシステム・パーティションの内容を1つの新しいパーティションにマージして、元の2つのパーティションを削除できます。この句はハッシュ・パーティションでは無効です。かわりに、coalesce_table_partition句を使用してください。

各パーティションに、partitionを使用してパーティション名を指定するか、またはFOR句を使用して名前なしでパーティションを指定します。FOR句の詳細は、「パーティション表と索引の参照」を参照してください。

  • レンジ・パーティションの場合、マージされる2つのパーティションは、隣接している必要があります。リスト・パーティションおよびシステム・パーティションをマージする場合は、隣接している必要はありません。

  • 2つのレンジ・パーティションをマージする場合、新しいパーティションは、元の2つのパーティションのうち、上位のパーティションのパーティション境界を継承します。

  • 2つのリスト・パーティションをマージする場合、結果のパーティションの値リストは、マージされる2つのパーティションの値リストの集合をあわせたものです。DEFAULTリスト・パーティションを別のリスト・パーティションとマージすると、結果のパーティションはDEFAULTパーティションになり、DEFAULT値が含まれます。

  • 2つのコンポジット・レンジ・パーティションまたは2つのコンポジット・リスト・パーティション、レンジ-リストまたはリスト-リスト・コンポジット・パーティションをマージする場合、サブパーティションの定義は指定できません。サブパーティション化情報は、サブパーティション・テンプレートから取得できます。サブパーティションのテンプレートが指定されていない場合は、1つのMAXVALUEサブパーティションがレンジ・サブパーティションから、または1つのDEFAULTサブパーティションがリスト・サブパーティションから作成されます。

新しいパーティションに対して明示的に指定しなかった属性は、表レベルのデフォルトから継承されます。ただし、新しいパーティションに対してパーティション名を再利用すると、表レベルのデフォルト値ではなく、名前が再利用されたパーティションの値が新しいパーティションに継承されます。

選択したパーティションに対応するローカル索引パーティションは削除され、マージされたパーティションに対応するローカル索引パーティションにUNUSABLEのマークが付けられます。ヒープ構成表のすべてのグローバル索引にも、UNUSABLEのマークが付けられます。update_index_clausesを使用し、操作中にこれらすべての索引を更新できます。

tableが参照パーティション表の親表の場合は、dependent_tables_clauseを使用して、この文に指定するパーティション・メンテナンス操作を参照パーティション表のすべての子表に伝播できます。

merge_table_subpartitions

merge_table_subpartitions句を使用すると、tableの2つのレンジ・サブパーティションまたはリスト・サブパーティションの内容を1つの新しいサブパーティションにマージして、元の2つのサブパーティションを削除できます。この句はハッシュ・サブパーティションでは無効です。かわりに、coalesce_hash_subpartition句を使用してください。

各サブパーティションに、subpartitionを使用してサブパーティション名を指定するか、またはFOR句を使用して名前なしでサブパーティションを指定します。FOR句の詳細は、「パーティション表と索引の参照」を参照してください。

マージされる2つのサブパーティションは、同じパーティションに属している必要があります。レンジ・サブパーティションである場合は、隣接している必要があります。リスト・サブパーティションである場合は、隣接している必要はありません。マージの結果生成されるサブパーティション内のデータは、マージされたサブパーティションのデータが結合されたものです。

INTO句を指定する場合、range_subpartition_descまたはlist_subpartition_descで、それぞれrange_values_clauseまたはlist_values_clauseを指定することはできません。また、partitioning_storage_clauseに指定できる句は、TABLESPACEおよびtable_compressionのみです。

新しいサブパーティションに対して明示的に指定しなかった属性は、パーティション・レベルの値から継承されます。ただし、新しいサブパーティションに対してサブパーティション名を再利用すると、パーティション・レベルのデフォルト値ではなく、名前が再利用されたサブパーティションの値が新しいサブパーティションに継承されます。

対応するローカル索引のサブパーティションがマージされ、結果として生成される索引サブパーティションにはUNUSABLEのマークが付けられます。また、ヒープ構成表のパーティション化されたグローバル索引とパーティション化されていないグローバル索引の両方に対して、UNUSABLEのマークが付けられます。update_index_clausesを使用すると、操作中にすべての索引を更新できます。

exchange_partition_subpart

EXCHANGE PARTITION句またはEXCHANGE SUBPARTITION句を使用すると、次のデータおよび索引セグメントを交換できます。

  • 1つの非パーティション表と、次のいずれかを交換できます。

    • 1つのレンジ・パーティション、リスト・パーティションまたはハッシュ・パーティション

    • 1つのレンジ・サブパーティション、リスト・サブパーティションまたはハッシュ・サブパーティション

  • 1つのレンジ・パーティション表とレンジ-レンジまたはリスト-レンジ・コンポジット・パーティション表パーティションのレンジ・サブパーティション

  • 1つのハッシュ・パーティション表とレンジ-ハッシュまたはリスト-ハッシュのコンポジット・パーティション表パーティションのハッシュ・サブパーティション

  • 1つのリスト・パーティション表とレンジ-リストまたはハッシュ-リストのコンポジット・パーティション表パーティションのリスト・サブパーティション

交換対象の表、パーティションおよびサブパーティションの構造は、パーティション・キーを含め常に同じである必要があります。リスト・パーティションとリスト・サブパーティションの場合、対応する値リストも一致している必要があります。

この句をトランスポータブル表領域とともに使用すると、高速データ・ロードが容易になります。


関連項目:

トランスポータブル表領域の詳細は、『Oracle Database管理者ガイド』を参照してください。

tableにLOB列がある場合、各LOB列のLOBデータ、およびLOB索引パーティション・セグメントまたはLOB索引サブパーティション・セグメントは、tableの対応するLOBデータおよびLOB索引セグメントと交換されます。

tableにネストした表の列が含まれる場合、そのような各列のネストした表パーティション・セグメントは、非パーティション表の対応するネストした表セグメントと交換されます。

2つのオブジェクトのすべてのセグメント属性(表領域およびロギングを含む)も交換されます。

パーティション表に交換される表の既存の統計情報は、交換されます。ただし、パーティション化された表のグローバル統計は変更されません。DBMS_STATS.GATHER_TABLE_STATSプロシージャを使用すると、グローバル統計を再作成できます。GRANULARITY属性をAPPROX_GLOBAL AND PARTITIONと同じに設定して、処理速度を上げ、既存のパーティション統計に基づいて新しいグローバル統計情報を集計できます。このパッケージ・プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

交換されるオブジェクトのすべてのグローバル索引は、無効になります。update_global_index_clauseまたはupdate_all_indexes_clauseを使用し、パーティションが交換された表のグローバル索引を更新できます。update_all_indexes_clauseには、副次句ではなくUPDATE INDEXESキーワードのみを指定できます。交換される表のグローバル索引は、無効のままになります。update_global_index_clauseおよびupdate_all_indexes_clauseは、交換操作中にローカル索引を更新しません。INCLUDING | EXCLUDING INDEXES句を使用して、ローカル索引メンテナンスを指定できます。これらの句とともにparallel_clauseを指定すると、交換操作ではなく、索引の更新がパラレル化されます。

WITH TABLE パーティションまたはサブパーティションを交換するを指定します。schemaを指定しない場合、そのは自分のスキーマ内にあるとみなされます。

INCLUDING | EXCLUDING INDEXES INCLUDING INDEXESを指定すると、ローカル索引パーティションまたはサブパーティションを対応する表索引(非パーティション表の場合)またはローカル索引(ハッシュ・パーティション化表の場合)と交換できます。EXCLUDING INDEXESを指定すると、交換された表のすべての標準索引、索引パーティションおよびパーティションに対応するすべての索引パーティションまたはサブパーティションにUNUSABLEのマークを付けることができます。この句を指定しない場合、EXCLUDING INDEXESがデフォルトになります。

WITH | WITHOUT VALIDATION WITH VALIDATIONを指定すると、交換された表にあるいずれかの行が交換されたパーティションまたはサブパーティションにマップされない場合にエラーが戻されます。WITHOUT VALIDATIONを指定すると、交換された表にある行が正しくマップされたかどうかがチェックされません。この句を指定しない場合、WITH VALIDATIONがデフォルトになります。

exceptions_clause  この句の詳細は、「制約の例外の処理」を参照してください。パーティション交換のコンテキストでは、この句は、パーティション表がUNIQUE制約を使用して定義されている場合にのみ有効です。また、制約はDISABLE VALIDATEの状態である必要があります。この句は、サブパーティションではなくパーティション交換に対してのみ有効です。


関連項目:

  • SQLスクリプトの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』DBMS_IOTパッケージを参照してください。

  • 移行行および連鎖行の削除については、『Oracle Database管理者ガイド』を参照してください。

  • 制約の確認の詳細は、constraintおよび「索引構成表の例外表の作成例:」を参照してください。


パーティションまたはサブパーティションの交換の注意事項: パーティションとサブパーティションの交換時には、次の点に注意します。

  • 交換される両方の表は同じ主キーを含む必要があり、参照表が空でないかぎり、どちらの表も有効な外部キーを参照できません。

  • パーティション化された索引構成表の交換時には、次の点に注意します。

    • ソースおよびターゲットの表およびパーティションは、その主キーが同じ列に同じ順序で設定されている必要があります。

    • キー圧縮が使用可能な場合は、ソースおよびターゲットの両方で使用可能で、接頭辞の長さは同じである必要があります。

    • ソースおよびターゲットの両方は、索引構成されている必要があります。

    • ソースおよびターゲットの両方に、オーバーフロー・セグメントが必要です。または、ソースおよびターゲットの両方がオーバーフロー・セグメントを持ってはいけません。また、ソースおよびターゲットの両方ともマッピング表を含むか、または両方とも含まない必要があります。

    • ソースおよびターゲットの両方は、LOB列に対して記憶域属性が同一である必要があります。

dependent_tables_clause

この句は、参照パーティション表の親表を変更する場合にのみ有効です。この句では、親表の子の参照パーティション表の操作によって作成されるパーティションの属性を指定できます。

  • 親表がコンポジット・パーティションではない場合、1つ以上の子表を指定し、子表ごとに、親表内に作成された各パーティションの1つのpartition_specを指定します。

  • 親表がコンポジットの場合、1つ以上の子表を指定し、子表ごとに、親表内に作成された各サブパーティションの1つのpartition_specを指定します。


関連項目:

参照パーティション表の作成の詳細は、「CREATE TABLE」の句reference_partitioningを参照してください。参照によるパーティション化の概要は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

UNUSABLE LOCAL INDEXES句

この2つの句を使用すると、パーティションとサブパーティションのどちらを変更するかに応じて、partitionに対応するローカル索引パーティションおよび索引サブパーティションの属性を変更できます。

  • UNUSABLE LOCAL INDEXESを指定すると、partitionに関連付けられたローカル索引パーティションまたは索引サブパーティションに、UNUSABLEのマークが付けられます。

  • REBUILD UNUSABLE LOCAL INDEXESを指定すると、partitionに関連付けられたUNUSABLEのローカル索引パーティションまたは索引サブパーティションが再構築されます。

UNUSABLE LOCAL INDEXES句の制限事項: この句には、次の制限事項があります。

  • この句をmodify_table_partitionの他の句と同時に指定することはできません。

  • サブパーティションが含まれるパーティションに対しては、modify_table_partitionでこの句を指定できません。ただし、modify_table_subpartition句では指定できます。

update_index_clauses

update_index_clausesを使用すると、表のパーティション化操作の一部としてtableの索引を更新できます。表パーティションでDDL文を実行する場合、tableに索引が定義されていると、DDL文を実行中のパーティションだけでなく索引全体が無効になります。この句を使用すると、変更する索引パーティションをDDL操作中に更新できるため、DDL文の後で索引を再構築する必要がなくなります。

パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。

update_global_index_clause

この句を使用すると、tableのグローバル索引を更新できます。

update_all_indexes_clause

この句を使用すると、tableのすべての索引を更新できます。

update_index_partition この句は、表パーティションの操作に対してのみ有効で、ローカル索引にのみ影響を与えます。

  • index_partition_descriptionを使用すると、各ローカル索引のそれぞれのパーティションの物理属性、表領域の記憶域およびロギングを指定できます。PARTITIONキーワードのみを指定すると、索引のパーティションは次のように更新されます。

    • 単一の表パーティションに対する操作(MOVE PARTITIONSPLIT PARTITIONなど)の場合、対応する索引パーティションは処理された索引表パーティションの属性を継承します。索引パーティションの名前は生成されないため、この操作によって作成された新しい索引パーティションは、対応する新しい表パーティションから名前を継承します。

    • MERGE PARTITION操作の場合、この操作によって作成されたローカル索引パーティションは、作成された表パーティションの名前とローカル索引の属性を継承します。

    ドメイン索引の場合、PARAMETERS句を使用すると、未解析のまま適切なODCI索引タイプ・ルーチンに渡すパラメータ文字列を指定できます。PARAMETERS句は、ドメイン索引に対してのみ有効であり、ドメイン索引について指定できるindex_partition_descriptionの唯一の部分です。

    UNUSABLE句の詳細は、「ALTER INDEX」の「UNUSABLE」を参照してください。


    関連項目:

    ドメイン索引の詳細は、『Oracle Databaseデータ・カートリッジ開発者ガイド』を参照してください。

  • コンポジット・パーティション索引の場合、index_subpartition_clauseを使用すると、各サブパーティションに対して表領域の記憶域を指定できます。update_index_partition句のこのコンポーネントの詳細は、「CREATE INDEX」のindex_subpartition_clauseを参照してください。

update_index_subpartition この句が有効であるのは、操作の対象がコンポジット・パーティション表のサブパーティションの場合のみであり、この句の影響を受けるのはコンポジット・パーティション表のローカル索引のみです。1つ以上のサブパーティションに対して、格納する表領域を指定できます。

すべての索引の更新の制限事項 次の制限事項は、update_all_indexes_clauseに適用されます。

  • この句は、索引構成表に対して指定できません。

  • exchange_partition_subpart句を使用してパーティションまたはサブパーティションを交換する場合、update_all_indexes_clauseは、グローバル索引にのみ適用可能です。このため、update_index_partitionまたはupdate_index_subpartition句を指定できません。ただし、INCLUDING | EXCLUDING INDEXES句を使用して、交換操作中にローカル索引メンテナンスを指定できます。

update_global_index_clause

この句を指定すると、tableのグローバル索引のみを更新できます。tableのすべてのローカル索引には、UNUSABLEのマークが付けられます。

UPDATE GLOBAL INDEXES UPDATE GLOBAL INDEXESを指定すると、tableで定義したグローバル索引を更新できます。

グローバル索引の更新の制限事項: グローバル索引がLOB列のグローバル・ドメイン索引として定義されている場合、ドメイン索引は、更新されるのではなくUNUSABLEのマークが付けられます。

INVALIDATE GLOBAL INDEXES INVALIDATE GLOBAL INDEXESを指定すると、tableで定義したグローバル索引を無効にできます。

どちらも指定しない場合、グローバル索引は無効になります。

グローバル索引の無効化の制限事項 この句がサポートされるのは、グローバル索引に対してのみです。索引構成表に対してはサポートされません。また、この句によって更新されるのは、USABLEおよびVALIDの索引のみです。UNUSABLEの索引は使用禁止のままになり、INVALIDのグローバル索引は無視されます。

parallel_clause

parallel_clauseを使用すると、表の問合せおよびDMLに対するデフォルトの並列度を変更できます。

この句の詳細は、「CREATE TABLE」のparallel_clauseを参照してください。

表の並列化の変更の制限事項: 表の並列化の変更には、次の制限事項があります。

  • tableにLOB型またはユーザー定義オブジェクト型の列が含まれている場合、このtableでのINSERTUPDATEおよびDELETEは、通知なしに逐次実行されます。ただし、後続の問合せはパラレルで実行されます。

  • parallel_clausemove_table_clauseと組み合せて指定する場合、このパラレル化は移動のみに適用され、後続の表でのDML操作および問合せには適用されません。

move_table_clause

move_table_clauseを使用すると、非パーティション表のデータまたはパーティション表のパーティションのデータを新しいセグメントに再配置できます。オプションとして、別の表領域への配置および記憶域属性の変更を行うこともできます。

LOB_storage_clause句およびvarray_col_properties句を使用して、表またはパーティションに関連付けられたLOBデータ・セグメントを移動することもできます。この句で指定していないLOB項目は移動できません。

表を別の表領域に移動する場合、COMPATIBLEパラメータが10.0以上に設定されていると、ネストした表の列に対する記憶表は、その表が作成された表領域に残ります。COMPATIBLEが10.0未満に設定されている場合、表と記憶表は新しい表領域に自動的に移動します。

ONLINE句 この句は、トップレベルの索引構成表、および索引構成済のネストした表の記憶表に対してのみ有効です。ONLINEを指定すると、表の主キー索引の再構築中に、索引構成表に対するDML操作を実行できます。

表のオンライン化の制限事項: 表のオンライン化には、次の制限事項があります。

  • 同じ文でこの句と他の句は結合できません。

  • この句は、パーティション化された索引構成表に対して指定できません。

  • パラレルDMLおよびダイレクト・パスINSERT操作は、表に対する排他的ロックを必要とします。したがって、ロックが競合するため、これらの操作は実行中のオンライン表MOVEと同時にサポートされません。

  • 索引構成表にLOB、VARRAY、Oracleが提供する型またはユーザー定義オブジェクト型の列が含まれている場合には、この句は指定できません。

index_org_table_clause

索引構成表の場合は、move_table_clauseindex_org_table_clauseを使用するとオーバーフロー・セグメント属性も指定できます。move_table_clauseを指定すると、索引構成表の主キー索引が再構築されます。オーバーフロー・データ・セグメントは、OVERFLOWキーワードが明示的に指定されていないかぎり、再構築されません。ただし、次の場合は例外です。

  • ALTER TABLE文の一部としてPCTTHRESHOLDの値またはINCLUDING列を変更する場合は、オーバーフロー・データ・セグメントが再構築されます。

  • 索引構成表内の表外列(LOB列、VARRAY列、ネストした表の列)のいずれかを明示的に移動する場合は、オーバーフロー・データ・セグメントも再構築されます。

LOB列の索引およびデータ・セグメントは、LOB列をALTER TABLE文の一部として明示的に指定しないかぎり、再構築されません。

mapping_table_clause MAPPING TABLEを指定すると、マッピング表が存在していない場合にマッピング表を作成できます。マッピング表がすでに存在する場合、マッピング表は索引構成表とともに移動され、すべてのビットマップ索引にはUNUSABLEのマークが付けられます。新しいマッピング表は、親表と同じ表領域に作成されます。

NOMAPPINGを指定すると、既存のマッピング表が削除されます。

この句の詳細は、「CREATE TABLE」のmapping_table_clausesを参照してください。

表のマッピングの制限事項: tableでビットマップ索引が定義されている場合は、NOMAPPINGを指定できません。

key_compression key_compression句を使用すると、索引構成表のキー圧縮を使用可能または使用禁止にできます。

  • COMPRESSを指定すると、キー圧縮が使用可能になり、その結果、索引構成表における主キー列の値が重複しなくなります。integerを使用して、接頭辞の長さ(圧縮する接頭辞列数)を指定します。

    接頭辞の長さの有効範囲は、1から(主キー列数-1)までです。デフォルトでは(主キー列数-1)になります。

  • NOCOMPRESSを指定すると、索引構成表でのキー圧縮が使用禁止になります。これはデフォルトです。

TABLESPACE tablespace 再構築した索引構成表を格納する表領域を指定します。

LOB_storage_clause この句を使用すると、LOBセグメントを別の表領域に移動できます。表にLONG列が含まれている場合は、この句を使用してLOBセグメントを移動することはできません。かわりに、LONG列をLOBに変換するか、または表をエクスポートし、LOB列に必要な表領域の記憶域を指定する表を再作成して表データを再インポートする必要があります。

表の移動の制限事項: 表の移動には、次の制限事項があります。

  • MOVEを指定する場合は、ALTER TABLE文の最初の句にする必要があります。この句以外では、physical_attributes_clauseparallel_clauseおよびLOB_storage_clauseのみが指定できます。

  • LONGまたはLONG RAW列を含む表は、移動できません。

  • パーティション表(ヒープ表または索引構成表)全体の移動はできません。個々のパーティションまたはサブパーティションを移動してください。


LOBについての注意:

move_table_clauseで指定するすべてのLOB列については、次のことに注意してください。
  • 新しい表領域が指定されていない場合でも、古いLOBデータ・セグメントとこれに対応する索引セグメントは削除され、新しいセグメントが作成されます。

  • tableのLOB索引がそのLOBデータと異なる表領域にある場合、移動後のLOB索引は、LOBデータと同じ表領域にまとめて格納されます。



関連項目:

move_table_partitionおよびmove_table_subpartitionを参照してください。

enable_disable_clause

enable_disable_clauseを使用すると、Oracle Databaseが整合性制約を適用するかどうか、およびその方法を指定できます。DROPおよびKEEP句は、一意制約または主キー制約を使用禁止にする場合のみに有効です。


関連項目:

  • この句の詳細、関連する注意および制限事項については、「CREATE TABLE」のenable_disable_clauseを参照してください。

  • 索引の使用方法と制約の適用方法の詳細は、「索引による制約の適用」を参照してください。


TABLE LOCK DDL操作中にロックされた表にのみDDL操作を実行できます。このような表ロックは、DML操作中は必要ありません。


注意:

一時表に表ロックを適用することはできません。

  • ENABLE TABLE LOCKを指定すると、表ロックが有効になり、表に対するDDL操作が実行可能になります。現在実行中のすべてのトランザクションは、表ロックが有効になる前にコミットまたはロールバックする必要があります。


    注意:

    Oracle Databaseは、表をロックする前に、データベース内のアクティブなDMLトランザクションが完了するまで待機します。その結果、遅延が生じる可能性があることに注意してください。

  • DISABLE TABLE LOCKを指定すると、表ロックが無効になり、表に対するDDL操作が実行できなくなります。


    注意:

    ターゲット表の表ロックが使用禁止の場合、パラレルDML操作は実行されません。

ALL TRIGGERS ALL TRIGGERS句を使用すると、表に関連するすべてのトリガーを使用可能または使用禁止にできます。

  • ENABLE ALL TRIGGERSを指定すると、表に関連するすべてのトリガーが使用可能になります。トリガー条件が満たされた場合に、トリガーが起動されます。

    1つのトリガーを使用可能にする場合は、ALTER TRIGGERenable_clauseを使用してください。


    関連項目:

    「CREATE TRIGGER」「ALTER TRIGGER」および「トリガーを使用可能にする例:」を参照してください。

  • DISABLE ALL TRIGGERSを指定すると、表に関連するすべてのトリガーが使用禁止になります。トリガー条件が満たされた場合でも、使用禁止のトリガーは起動されません。

コレクションの取出し例: 次の文は、サンプル表sh.print_mediaのネストした表の列ad_textdocs_ntabを変更し、問合せ時にロケータのかわりに実値を戻します。

ALTER TABLE print_media MODIFY NESTED TABLE ad_textdocs_ntab
   RETURN AS VALUE; 

パラレル処理の指定例: 次の文は、サンプル表oe.customersへの問合せに対してパラレル処理を指定します。

ALTER TABLE customers
   PARALLEL;

制約状態の変更例: 次の文は、employees表のemp_manager_fkという名前の整合性制約をENABLE VALIDATE状態にします。

ALTER TABLE employees
   ENABLE VALIDATE CONSTRAINT emp_manager_fk
   EXCEPTIONS INTO exceptions;

Oracle Databaseが制約を使用可能にするためには、employees表の各行がこの制約を満たしている必要があります。制約に違反する行があれば、制約は使用禁止のままになります。すべての例外は、exceptions表に記述されます。次の文で、employees表の例外を検出することもできます。

SELECT e.*
   FROM employees e, exceptions ex
   WHERE e.rowid = ex.row_id
      AND ex.table_name = 'EMPLOYEES'
      AND ex.constraint = 'EMP_MANAGER_FK';

次の文は、employees表の2つの制約をENABLE NOVALIDATE状態にします。

ALTER TABLE employees
   ENABLE NOVALIDATE PRIMARY KEY
   ENABLE NOVALIDATE CONSTRAINT emp_last_name_nn;

この文には、次の2つのENABLE句が含まれています。

  • 1番目のENABLE句は、表の主キー制約をENABLE NOVALIDATE状態にします。

  • 2番目のENABLE句は、emp_last_name_nnという制約をENABLE NOVALIDATE状態にします。

この例では、表のそれぞれの行が2つの制約を満たす場合にかぎり、その制約が使用可能になります。どちらかの制約に違反する行があった場合、エラーが戻され、どちらの制約も使用禁止のままになります。

departments表のlocation_id列の外部キー制約について考えます。ここでは、locations表の主キーを参照しています。次の文は、locations表の主キーを使用禁止にします。

ALTER TABLE locations
   MODIFY PRIMARY KEY DISABLE CASCADE;

locations表の一意キーは、departments表の外部キーによって参照されるため、この主キーを使用禁止にする場合は、CASCADE句を指定します。この句によって、外部キーも使用禁止になります。

索引構成表の例外表の作成例: 次の例は、主キー制約に違反する索引構成表hr.countriesからの行を保持するexcept_table表を作成します。

EXECUTE DBMS_IOT.BUILD_EXCEPTIONS_TABLE ('hr', 'countries', 'except_table');
ALTER TABLE countries
   ENABLE PRIMARY KEY
   EXCEPTIONS INTO except_table;

例外表を指定する場合は、この表に行を挿入する権限が必要です。検出された例外を調べる場合、例外表を問い合せる権限が必要です。


関連項目:

表に行を挿入するために必要な権限の詳細は、「INSERT」および「SELECT」を参照してください。

CHECK制約を使用禁止にする例: 次の文は、employees表にCHECK制約を定義し、その制約を使用禁止にします。

ALTER TABLE employees ADD CONSTRAINT check_comp 
   CHECK (salary + (commission_pct*salary) <= 5000)
   DISABLE;

check_comp制約は、給与総額が$5000を超える従業員がいないことを保証します。ただし、この制約が使用禁止になっているため、従業員の給与をこの制限以上に増やすことができます。

トリガーを使用可能にする例: 次の文は、employees表に対応付けられているすべてのトリガーを使用可能にします。

ALTER TABLE employees
   ENABLE ALL TRIGGERS;

未使用領域の解放例: 次の文は、employees表で再利用できるように最高水位標がMINEXTENTSを超えるすべての未使用領域を解放します。

ALTER TABLE employees
    DEALLOCATE UNUSED;

列名の変更例: 次の文は、サンプル表oe.customersの列名をcredit_limitからcredit_amountに変更します。

ALTER TABLE customers
   RENAME COLUMN credit_limit TO credit_amount;

列の削除例: 次の文は、CASCADE CONSTRAINTSが指定されているdrop_column_clauseです。表t1が次のように作成されているとします。

CREATE TABLE t1 (
   pk NUMBER PRIMARY KEY,
   fk NUMBER,
   c1 NUMBER,
   c2 NUMBER,
   CONSTRAINT ri FOREIGN KEY (fk) REFERENCES t1,
   CONSTRAINT ck1 CHECK (pk > 0 and c1 > 0),
   CONSTRAINT ck2 CHECK (c2 > 0)
);

次の文に対してエラーが戻されます。

/* The next two statements return errors:
ALTER TABLE t1 DROP (pk);  -- pk is a parent key
ALTER TABLE t1 DROP (c1);  -- c1 is referenced by multicolumn
                           -- constraint ck1

次の文を発行すると、列pk、主キー制約、外部キー制約riおよびCHECK制約ck1が削除されます。

ALTER TABLE t1 DROP (pk) CASCADE CONSTRAINTS;

削除される列に対して定義されている制約で参照されている列も、すべて削除される場合は、CASCADE CONSTRAINTSは必要ありません。たとえば、列pkを他の表から参照する参照制約が他に存在しない場合は、次の文を指定するときにCASCADE CONSTRAINTS句がなくてもエラーにはなりません。

ALTER TABLE t1 DROP (pk, fk, c1);

索引構成表の変更例: 次の文は、hr.countriesに基づく索引構成表countries_demoの索引セグメントのINITRANSパラメータを変更します。

ALTER TABLE countries_demo INITRANS 4;

次の文は、オーバーフロー・データ・セグメントを索引構成表countriesに追加します。

ALTER TABLE countries_demo ADD OVERFLOW;

次の文は、索引構成表countriesのオーバーフロー・データ・セグメントのINITRANSパラメータを変更します。

ALTER TABLE countries_demo OVERFLOW INITRANS 4;

表のパーティションの分割例: 次の文は、サンプル表sh.salesの古いパーティションsales_q4_2000を分割して2つの新しいパーティションを作成し、1つにはsales_q4_2000bという名前を付け、もう1つには旧パーティションの名前を再利用します。

ALTER TABLE sales SPLIT PARTITION SALES_Q4_2000 
   AT (TO_DATE('15-NOV-2000','DD-MON-YYYY'))
   INTO (PARTITION SALES_Q4_2000, PARTITION SALES_Q4_2000b);

次の文は、pm.print_media表のパーティション・バージョンを作成します。print_media表のLONG列はLOBに変換されています。表は、「Oracle Managed Filesの作成例:」で作成された表領域に格納されます。ad_textdocs_ntab列およびad_header列の基礎となるオブジェクト型は、pmサンプル・スキーマを作成するスクリプトで作成されます。

CREATE TABLE print_media_part (
    product_id NUMBER(6),
    ad_id              NUMBER(6),
    ad_composite       BLOB,
    ad_sourcetext      CLOB,
    ad_finaltext       CLOB,
    ad_fltextn         NCLOB,
    ad_textdocs_ntab   TEXTDOC_TAB,
    ad_photo           BLOB,
    ad_graphic         BFILE,
    ad_header          ADHEADER_TYP)
  NESTED TABLE ad_textdocs_ntab STORE AS textdoc_nt
  PARTITION BY RANGE (product_id)
    (PARTITION p1 VALUES LESS THAN (100),
     PARTITION p2 VALUES LESS THAN (200));

次の文は、表のパーティションp2をパーティションp2ap2bに分割します。

ALTER TABLE print_media_part
   SPLIT PARTITION p2 AT (150) INTO
   (PARTITION p2a TABLESPACE omf_ts1
      LOB (ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts2),
   PARTITION p2b 
      LOB (ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts2))
   NESTED TABLE ad_textdocs_ntab INTO (PARTITION nt_p2a, PARTITION nt_p2b);

p2ap2bのパーティションでは、列ad_photoad_compositeに対するLOBセグメントが表領域omf_ts2内に作成されます。パーティションp2aのその他の列に対するLOBセグメントは、表領域omf_ts1に保存されます。パーティションp2bのその他の列に対するLOBセグメントは、このALTER文の実行前の表領域で保持されます。ただし、LOBデータおよびLOB索引セグメントが新しい表領域に移動されない場合でも、これらの新しいセグメントが作成されます。

また、ネストした表の列ad_textdocs_ntabに対する新しいセグメントも作成されます。これらの新しいセグメントの記憶表は、nt_p2aおよびnt_p2bです。

2つの表パーティションのマージ例: 次の文は、パーティション(「表のパーティションの分割例:」で作成)をマージして、1つのパーティションに戻します。

ALTER TABLE sales 
   MERGE PARTITIONS sales_q4_2000, sales_q4_2000b
   INTO PARTITION sales_q4_2000;

次の文は、「表のパーティションの分割例:」の例を無効にします。

ALTER TABLE print_media_part 
   MERGE PARTITIONS p2a, p2b INTO PARTITION p2ab TABLESPACE example
   NESTED TABLE ad_textdocs_ntab STORE AS nt_p2ab;

LOBおよびネストした表の記憶域を持つ表パーティションの追加例: 次の文は、パーティションp3print_media_part表に追加し(前述の例を参照)、BLOBCLOB、およびその表のネストした表の列の記憶特性を指定します。

ALTER TABLE print_media_part ADD PARTITION p3 VALUES LESS THAN (400)
  LOB(ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts1)
  LOB(ad_sourcetext, ad_finaltext) STORE AS (TABLESPACE omf_ts2)
  NESTED TABLE ad_textdocs_ntab STORE AS nt_p3;

パーティションp3の列ad_photoおよびad_compositeに対するLOBデータとLOB索引セグメントは、表領域omf_ts1に格納されます。LOB列の他の属性は、まず表レベルのデフォルトから継承され、次に表領域のデフォルトから継承されます。

ad_source_textおよびad_finaltextのLOBデータ・セグメントは、omf_ts2表領域に格納され、他のすべての属性は、まず表レベルのデフォルト値から継承され、次に表領域のデフォルト値から継承されます。

実表のパーティションp3に対応する、ネストした表の記憶列ad_textdocs_ntabの記憶表のパーティションの名前はnt_p3になり、他のすべての属性は、まず表レベルのデフォルト値から継承され、次に表領域のデフォルト値から継承されます。

デフォルト・リスト・パーティションの使用例: 次の文は、リスト・パーティション表(「リスト・パーティション化の例:」で作成)を使用します。最初の文は、既存のデフォルト・パーティションを新規のsouthパーティションとデフォルト・パーティションに分割します。

ALTER TABLE list_customers SPLIT PARTITION rest 
   VALUES ('MEXICO', 'COLOMBIA')
   INTO (PARTITION south, PARTITION rest);

次の文は、結果のデフォルト・パーティションをasiaパーティションとマージします。

ALTER TABLE list_customers 
   MERGE PARTITIONS asia, rest INTO PARTITION rest;

次の文は、デフォルト・パーティションを分割して、asiaパーティションを再作成します。

ALTER TABLE list_customers SPLIT PARTITION rest 
   VALUES ('CHINA', 'THAILAND')
   INTO (PARTITION asia, PARTITION rest);

表のパーティションの削除例: 次の文は、パーティションp3(「LOBおよびネストした表の記憶域を持つ表パーティションの追加例:」で作成)を削除します。

ALTER TABLE print_media_part DROP PARTITION p3;

表パーティションの交換例: 

この例では、「リスト・パーティション化の例:」で作成したlist_customers表のパーティションと同じ構造を持つexchange_table表を作成します。次に、表list_customersのパーティションrestを表exchange_tableに置き換えますが、ローカル索引パーティションと対応するexchange_tableの索引との交換は行わず、exchange_table内のデータがパーティションrestの範囲内にあるかどうかの検証も行いません。

CREATE TABLE exchange_table (
   customer_id     NUMBER(6),
   cust_first_name VARCHAR2(20),
   cust_last_name  VARCHAR2(20),
   cust_address    CUST_ADDRESS_TYP,
   nls_territory   VARCHAR2(30),
   cust_email      VARCHAR2(30));

ALTER TABLE list_customers 
   EXCHANGE PARTITION rest WITH TABLE exchange_table 
   WITHOUT VALIDATION;

表のパーティションの変更例: 次の文は、list_customers表のパーティションasiaに対応するすべてのローカル索引パーティションに、UNUSABLEのマークを付けます。

ALTER TABLE list_customers MODIFY PARTITION asia 
   UNUSABLE LOCAL INDEXES;

次の文は、UNUSABLEのマークが付けられたすべてのローカル索引パーティションを再構築します。

ALTER TABLE list_customers MODIFY PARTITION asia
   REBUILD UNUSABLE LOCAL INDEXES;

表のパーティションの移動例: 次の文は、パーティションp2b(「表のパーティションの分割例:」で作成)を表領域omf_ts1に移動します。

ALTER TABLE print_media_part 
   MOVE PARTITION p2b TABLESPACE omf_ts1;

表のパーティション名の変更例: 次の文は、sh.sales表のパーティションの名前を変更します。

ALTER TABLE sales RENAME PARTITION sales_q4_2003 TO sales_currentq;

表のパーティションの切捨て例: 次の文では、「LOB列のあるパーティション表の例:」で作成したprint_media_demo表を使用します。p1パーティション内のデータがすべて削除され、解放された領域の割当てが解除されます。

ALTER TABLE print_media_demo
   TRUNCATE PARTITION p1 DROP STORAGE;

グローバル索引の更新例: 次の文は、サンプル表sh.salesのパーティションsales_q1_2000を分割し、定義されているグローバル索引を更新します。

ALTER TABLE sales SPLIT PARTITION sales_q1_2000
   AT (TO_DATE('16-FEB-2000','DD-MON-YYYY'))
   INTO (PARTITION q1a_2000, PARTITION q1b_2000)
   UPDATE GLOBAL INDEXES;

パーティション索引の更新例: 次の文は、サンプル表sh.costsのパーティションcosts_Q4_2003を分割し、定義されているローカル索引を更新します。使用される表領域は、「基本的な一時表領域の作成例:」で作成されたものです。

CREATE INDEX cost_ix ON costs(channel_id) LOCAL;

ALTER TABLE costs
  SPLIT PARTITION costs_q4_2003 at
    (TO_DATE('01-Nov-2003','dd-mon-yyyy')) 
    INTO (PARTITION c_p1, PARTITION c_p2) 
  UPDATE INDEXES (cost_ix (PARTITION c_p1 tablespace tbs_02, 
                           PARTITION c_p2 tablespace tbs_03));

オブジェクト識別子の指定例: 次の文は、オブジェクト型、主キーに基づくオブジェクト識別子に対応するオブジェクト表、およびユーザー定義REF列を持つ表を作成します。

CREATE TYPE emp_t AS OBJECT (empno NUMBER, address CHAR(30));

CREATE TABLE emp OF emp_t (
   empno PRIMARY KEY)
   OBJECT IDENTIFIER IS PRIMARY KEY;

CREATE TABLE dept (dno NUMBER, mgr_ref REF emp_t SCOPE is emp);

次の文は、emp表を参照する制約およびユーザー定義REF列を追加します。

ALTER TABLE dept ADD CONSTRAINT mgr_cons FOREIGN KEY (mgr_ref)
   REFERENCES emp;
ALTER TABLE dept ADD sr_mgr REF emp_t REFERENCES emp;

表の列の追加例: 次の文は、NUMBERデータ型の列duty_pct、サイズが3のVARCHAR2データ型の列visa_neededおよびCHECK整合性制約をcountries表に追加します。

ALTER TABLE countries 
   ADD (duty_pct     NUMBER(2,2)  CHECK (duty_pct < 10.5),
        visa_needed  VARCHAR2(3)); 

仮想表の列の追加例: 次の文は、hr.employees表のコピーにincomeという列(給与と歩合の合計)を追加します。給与と歩合はどちらもNUMBER型の列であるため、文の中でデータ型が指定されていなくても、仮想列はNUMBER型の列として作成されます。

CREATE TABLE emp2 AS SELECT * FROM employees;

ALTER TABLE emp2 ADD (income AS (salary + (salary*commission_pct)));

表の列の変更例: 次の文は、duty_pct列のサイズを増やします。

ALTER TABLE countries
   MODIFY (duty_pct NUMBER(3,2)); 

MODIFY句には列の定義が1つのため、定義を囲むカッコは任意指定です。

次の文は、employees表のPCTFREEパラメータとPCTUSEDパラメータの値を、それぞれ30と60に変更します。

ALTER TABLE employees 
   PCTFREE 30
   PCTUSED 60; 

データの暗号化例: 次の文は、暗号化アルゴリズムAES256を使用して、hr.employees表のsalary列を暗号化します。前述の「セマンティクス」で説明したように、まず、透過的データ暗号化を有効にする必要があります。

ALTER TABLE employees
   MODIFY (salary ENCRYPT USING 'AES256' 'NOMAC');

次の文は、デフォルトの暗号化アルゴリズムAES192を使用して、暗号化された新しい列online_acct_pwoe.customers表に追加します。NO SALTを指定すると、Bツリー索引をこの列に対して作成できるようになります。

ALTER TABLE customers
   ADD (online_acct_pw VARCHAR2(8) ENCRYPT NO SALT 'NOMAC');

次の例は、customer.online_acct_pw列を復号化します。

ALTER TABLE customers
   MODIFY (online_acct_pw DECRYPT);

エクステントの割当て例: 次の文は、employees表に5KBのエクステントを割り当て、そのエクステントをインスタンス4が使用できるようにします。

ALTER TABLE employees
  ALLOCATE EXTENT (SIZE 5K INSTANCE 4); 

この文には、DATAFILEパラメータが指定されていないため、エクステントはemployees表が入っている表領域に属するデータファイルの1つに割り当てられます。

デフォルト列値の指定例: 次の文は、product_information表のmin_price列のデフォルト値を10に変更します。

ALTER TABLE product_information
  MODIFY (min_price DEFAULT 10); 

続いてmin_price列に値を指定せずに、product_information表に新しい行を追加する場合、min_price列の値は自動的に10(ゼロ)になります。

INSERT INTO product_information (product_id, product_name, 
   list_price)
   VALUES (300, 'left-handed mouse', 40.50); 

SELECT product_id, product_name, list_price, min_price 
    FROM product_information
    WHERE product_id = 300; 

PRODUCT_ID PRODUCT_NAME         LIST_PRICE  MIN_PRICE
---------- -------------------- ---------- ----------
       300 left-handed mouse          40.5         10

以前に指定したデフォルト値を中止して、新しく追加する行にその値が自動的に挿入されないようにする場合、次の文に示すように、デフォルト値をNULLに置き換えます。

ALTER TABLE product_information
   MODIFY (min_price DEFAULT NULL);

MODIFY句で指定する必要があるのは、列名と、定義のうち変更される部分のみです(列の定義をすべて指定する必要はありません)。この文は、既存の行の既存の値には影響しません。

XMLType表への制約の追加例: 次の例は、xwarehouses表(「XMLTypeの例」で作成)に主キー制約を追加します。

ALTER TABLE xwarehouses 
   ADD (PRIMARY KEY(XMLDATA."WarehouseID"));

この疑似列の詳細は、「XMLDATA疑似列」を参照してください。

制約名の変更例: 次の文は、サンプル表oe.customersの制約名をcust_fname_nnからcust_firstname_nnに変更します。

ALTER TABLE customers RENAME CONSTRAINT cust_fname_nn
   TO cust_firstname_nn;

制約の削除例: 次の文は、departments表の主キーを削除します。

ALTER TABLE departments 
    DROP PRIMARY KEY CASCADE; 

PRIMARY KEY制約の名前がpk_deptであることがわかっている場合は、次のように指定しても削除できます。

ALTER TABLE departments
    DROP CONSTRAINT pk_dept CASCADE; 

CASCADE句によって、主キーを参照するすべての外部キーが削除されます。

次の文は、employees表のemail列の一意キーを削除します。

ALTER TABLE employees 
    DROP UNIQUE (email); 

この文のDROP句ではCASCADE句を省略します。CASCADEオプションを省略することによって、一意キーを参照する外部キーがある場合、その一意キーは削除されません。

LOB列の例: 次の文は、CLOB列のresumeemployee表に追加し、新しい列のLOB記憶特性を指定します。

ALTER TABLE employees ADD (resume CLOB)
  LOB (resume) STORE AS resume_seg (TABLESPACE example);

次の文は、キャッシュを使用できるようにLOB列のresumeを変更します。

ALTER TABLE employees MODIFY LOB (resume) (CACHE); 

次の文は、SecureFiles CLOB column resume to the employee表に追加し、この新しい列のLOB記憶特性を指定します。SecureFiles LOBを格納する表領域に対しては、自動セグメント領域管理が行われている必要があります。したがって、この例のLOBデータはauto_seg_ts表領域(「表領域に対してセグメント領域管理を指定する場合の例:」で作成した表領域)に格納します。

ALTER TABLE employees ADD (resume CLOB)
LOB (resume) STORE AS SECUREFILE resume_seg (TABLESPACE auto_seg_ts);

次の文は、LOB列のresumeをキャッシュを使用しないように変更します。

ALTER TABLE employees MODIFY LOB (resume) (NOCACHE);

ネストした表の例: 次の文は、ネストした表の列skillsemployees表に追加します。

ALTER TABLE employees ADD (skills skill_table_type)
    NESTED TABLE skills STORE AS nested_skill_table;

また、ネストした表の記憶特性も変更できます。変更する場合、nested_table_col_propertiesに指定した記憶表の名前を使用してください。記憶表では、問合せまたはDML文を実行することはできません。記憶表は、ネストした表の列の記憶特性を変更するためにのみ使用します。

次の文は、ネストした表の列clientと記憶表client_tabを使用して、表vet_serviceを作成します。ネストした表client_tabを変更して制約を指定します。

CREATE TYPE pet_t AS OBJECT
   (pet_id NUMBER, pet_name VARCHAR2(10), pet_dob DATE);
/

CREATE TYPE pet AS TABLE OF pet_t;
/

CREATE TABLE vet_service (vet_name VARCHAR2(30),
                          client   pet)
  NESTED TABLE client STORE AS client_tab;

ALTER TABLE client_tab ADD UNIQUE (pet_id);

次の文は、REF値のネストした表用の記憶表を変更して、REFの範囲が限定されることを指定します。

CREATE TYPE emp_t AS OBJECT (eno number, ename char(31)); 
CREATE TYPE emps_t AS TABLE OF REF emp_t; 
CREATE TABLE emptab OF emp_t; 
CREATE TABLE dept (dno NUMBER, employees emps_t) 
   NESTED TABLE employees STORE AS deptemps; 
ALTER TABLE deptemps ADD (SCOPE FOR (COLUMN_VALUE) IS emptab); 

同様に、次の文は、REFをROWIDとともに格納することを指定します。

ALTER TABLE deptemps ADD (REF(column_value) WITH ROWID); 

これらのALTER TABLE文を正確に実行するためには、記憶表deptempsが空である必要があります。また、ネストした表は、スカラー値(REF値)の表として定義されるため、Oracle Databaseは、暗黙的に列名COLUMN_VALUEを記憶表に設定します。


関連項目:

  • ネストした表の記憶域の詳細は、「CREATE TABLE」を参照してください。

  • ネストした表の詳細は、『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照してください。


REF列の例: 次の文では、オブジェクト型dept_tを作成し、その後に表staffを作成します。

CREATE TYPE dept_t AS OBJECT 
   (deptno NUMBER, dname VARCHAR2(20));
/

CREATE TABLE staff 
   (name   VARCHAR(100), 
    salary NUMBER,
    dept   REF dept_t); 

オブジェクト表officesを次のように作成します。

CREATE TABLE offices OF dept_t; 

dept列は、任意の表に格納されたdept_tのオブジェクトに参照を格納できます。次のようにdept列に有効範囲制約を追加することによって、departments表に格納されたオブジェクトのみが参照されるように制限できます。

ALTER TABLE staff 
    ADD (SCOPE FOR (dept) IS offices); 

前述のALTER TABLE文は、staff表が空である場合のみ正常に実行されます。

次の文は、staffdept列にREF値を格納する際、ROWIDも同時に格納します。

ALTER TABLE staff 
   ADD (REF(dept) WITH ROWID);

追加の例: ALTER TABLE文を使用した整合性制約の定義例は、constraintを参照してください。

表の記憶域パラメータの変更例は、storage_clauseを参照してください。