ヘッダーをスキップ

Oracle Database SQL言語リファレンス
11g リリース1(11.1)

E05750-03
目次
目次
索引
索引

戻る 次へ

12 SQL文: ALTER TABLE〜ALTER TABLESPACE

この章では、次のSQL文について説明します。


ALTER TABLE

用途

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

参照:

  • 表の作成については、「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システム権限が必要です。

オブジェクト型を使用する場合のその他の前提条件

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

フラッシュバック・データ・アーカイブ操作におけるその他の前提条件

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

参照:

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

構文

alter_table::=

画像の説明


注意:

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


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

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

alter_table_properties::=

画像の説明

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_XMLSchemas_clauseを参照)

physical_attributes_clause::=

画像の説明

storage_clause::=を参照)

logging_clause::=

画像の説明

table_compression::=

画像の説明

supplemental_table_logging::=

画像の説明

supplemental_log_grp_clause::=

画像の説明

supplemental_id_key_clause::=

画像の説明

allocate_extent_clause::=

画像の説明

size_clause::=を参照)

deallocate_unused_clause::=

画像の説明

size_clause::=を参照)

shrink_clause::=

画像の説明

upgrade_table_clause::=

画像の説明

column_properties::=を参照)

records_per_block_clause::=

画像の説明

parallel_clause::=

画像の説明

row_movement_clause::=

画像の説明

alter_iot_clauses::=

画像の説明

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

index_org_table_clause::=

画像の説明

mapping_table_clauses::=

画像の説明

key_compression::=

画像の説明

index_org_overflow_clause::=

画像の説明

segment_attributes_clause::=を参照)

partition_extended_name::=

画像の説明

subpartition_extended_name::=

画像の説明

segment_attributes_clause::=

画像の説明

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

alter_overflow_clause::=

画像の説明

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

add_overflow_clause::=

画像の説明

segment_attributes_clause::=を参照)

alter_mapping_table_clauses::=

画像の説明

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

column_clauses::=

画像の説明

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::=

画像の説明

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

column_definition::=

画像の説明

encryption_spec::=constraint::=の「inline_constraint」および「inline_ref_constraintを参照)

virtual_column_definition::=

画像の説明

modify_column_clauses::=

画像の説明

modify_col_properties::=

画像の説明

encryption_spec::=constraint::=の「inline_constraint」およびLOB_storage_clause::=を参照)

encryption_spec::=

画像の説明

modify_col_substitutable::=

画像の説明

drop_column_clause::=

画像の説明

rename_column_clause::=

画像の説明

modify_collection_retrieval::=

画像の説明

constraint_clauses::=

画像の説明

constraint::=の「constraint_state: 」を参照)

drop_constraint_clause::=

画像の説明

column_properties::=

画像の説明

object_type_col_properties::=

画像の説明

substitutable_column_clause::=

画像の説明

nested_table_col_properties::=

画像の説明

object_properties::=

画像の説明

constraint::=の「inline_constraint」、「inline_ref_constraint」、「out_of_line_constraint」および「out_of_line_ref_constraint」を参照)

supplemental_logging_props::=

画像の説明

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

physical_properties::=

画像の説明

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

varray_col_properties::=

画像の説明

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

varray_storage_clause::=

画像の説明

LOB_parameters::=を参照)

LOB_storage_clause::=

画像の説明

LOB_storage_parameters::=を参照)

LOB_storage_parameters::=

画像の説明

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

LOB_parameters::=

画像の説明

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

modify_LOB_storage_clause::=

画像の説明

modify_LOB_parameters::=

画像の説明

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

LOB_retention_clause::=

画像の説明

LOB_deduplicate_clause::=

画像の説明

LOB_compression_clause::=

画像の説明

alter_varray_col_properties::=

画像の説明

modify_LOB_parameters::=を参照)

LOB_partition_storage::=

画像の説明

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

LOB_partitioning_storage::=

画像の説明

XMLType_column_properties::=

画像の説明

XMLType_storage::=

画像の説明

XMLSchema_spec::=

画像の説明

single_XMLSchema_spec::=

画像の説明

multiple_XMLSchema_spec::=

画像の説明

alter_XMLSchemas_clause::=

画像の説明

alter_external_table::=

画像の説明

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

external_data_properties::=

画像の説明

alter_table_partitioning::=

画像の説明

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::=

画像の説明

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

alter_interval_partitioning::=

画像の説明

set_subpartition_template::=

画像の説明

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

modify_table_partition::=

画像の説明

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

modify_range_partition::=

画像の説明

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::=

画像の説明

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

modify_list_partition::=

画像の説明

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

modify_table_subpartition::=

画像の説明

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

move_table_partition::=

画像の説明

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

move_table_subpartition::=

画像の説明

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

add_table_partition::=

画像の説明

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

add_range_partition_clause::=

画像の説明

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

add_hash_partition_clause::=

画像の説明

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

add_list_partition_clause::=

画像の説明

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

add_system_partition_clause::=

画像の説明

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

add_range_subpartition::=

画像の説明

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

add_hash_subpartition::=

画像の説明

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

add_list_subpartition::=

画像の説明

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

dependent_tables_clause:=

画像の説明

partition_spec::=を参照)

coalesce_table_partition::=

画像の説明

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

coalesce_table_subpartition::=

画像の説明

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

drop_table_partition::=

画像の説明

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

drop_table_subpartition::=

画像の説明

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

rename_partition_subpart::=

画像の説明

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

truncate_partition_subpart::=

画像の説明

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

split_table_partition::=

画像の説明

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

split_table_subpartition::=

画像の説明

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

merge_table_partitions::=

画像の説明

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

merge_table_subpartitions::=

画像の説明

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

exchange_partition_subpart::=

画像の説明

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

exceptions_clause::=

画像の説明

range_values_clause::=

画像の説明

list_values_clause::=

画像の説明

table_partition_description::=

画像の説明

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

range_partition_desc::=

画像の説明

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

list_partition_desc::=

画像の説明

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

range_subpartition_desc::=

画像の説明

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

list_subpartition_desc::=

画像の説明

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

individual_hash_subparts::=

画像の説明

hash_subparts_by_quantity::=

画像の説明

partitioning_storage_clause::=

画像の説明

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

LOB_partitioning_storage::=

画像の説明

partition_attributes::=

画像の説明

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

partition_spec::=

画像の説明

table_partition_description::=を参照)

update_index_clauses::=

画像の説明

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

update_global_index_clause::=

画像の説明

update_all_indexes_clause::=

画像の説明

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

update_index_partition::=

画像の説明

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

update_index_subpartition::=

画像の説明

index_partition_description::=

画像の説明

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

index_subpartition_clause::=

画像の説明

parallel_clause::=

画像の説明

move_table_clause::=

画像の説明

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

flashback_archive_clause::=

画像の説明

enable_disable_clause::=

画像の説明

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

using_index_clause::=

画像の説明

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

index_properties::=

画像の説明

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

index_attributes::=

画像の説明

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データ・ウェアハウス・ガイド』を参照してください。 

一時表の変更の制限事項:

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

外部表の変更の制限事項:

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

alter_table_properties

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

physical_attributes_clause

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

表の物理属性の変更の制限事項:

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

表の物理属性の変更の注意事項:

この句で指定する値が表に与える影響を次に示します。

logging_clause

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

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

参照:

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

  • logging_clauseおよびパラレルDMLの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

 

table_compression

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


注意:

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


参照:

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

supplemental_table_logging

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

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には、次の制限事項があります。

CACHE | NOCACHE

CACHE句およびNOCACHE句のセマンティクスは、CREATE TABLE文およびALTER TABLE文で同じです。これらの句の詳細は、「CREATE TABLE」の「CACHE | NOCACHE | CACHE READS」を参照してください。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

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オブジェクト権限が必要です。この句を使用すると、表の履歴追跡を有効または無効にできます。

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句を使用すると、パーティションによるセグメントに対する表領域の記憶域を指定できます。

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

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

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

オーバーフロー属性の制限事項:

segment_attributes_clauseでは、次のことに注意します。

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_XMLSchemas_clause

この句は、XMLType表を変更する場合にのみ、alter_table_propertiesの一部として有効です。詳細は、「alter_XMLSchemas_clause」を参照してください。

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操作の一部として、Oracle Databaseは新しく作成された列内の行をデフォルト値で更新し、表に定義されたAFTER UPDATEトリガーを起動していました。ただし、最適化された動作には、次の制限事項があります。

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

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

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

virtual_column_definition

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

参照:

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

列の追加の制限事項:

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

DEFAULT

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

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

列のデフォルト値の制限事項:

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

inline_constraint

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

inline_ref_constraint

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

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句を使用すると、ネストした表に対して別の記憶特性を指定し、そのネストした表を索引構成表として定義できます。ネストした表の型を持つ列または列属性付きで表を作成する場合は、この句を挿入する必要があります。(この句の中で、親オブジェクト表に対する場合と同じ働きをする句は、ここでは繰り返されません)。

ネストした表の列のプロパティの制限事項:

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

varray_col_properties

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

VARRAY列のプロパティの制限事項:

VARRAY列に対し、LOB_parametersの一部としてTABLESPACEを指定することはできません。VARRAYに対するLOB表領域のデフォルトは、表を含む表領域になります。

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

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

FREEPOOLS integer

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

XMLSchema_spec

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

alter_XMLSchemas_clause

この句を使用すると、1つ以上のXMLSchema指定をXMLType表に追加または削除できます。

modify_column_clauses

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

参照:

「表の列の変更例:」 

modify_col_properties

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

datatype

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

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

すべての行にNULL値が存在するどうかにかかわらず、文字型またはRAW型の列のサイズ、または数値型の列の精度は、いつでも大きくすることができます。また、変更を行ってもデータを変更しなくて済む場合、列のデータ型のサイズを小さくすることができます。既存のデータがスキャンされ、新しいサイズの制限を超えるデータが存在する場合はエラーが戻されます。

DATE列をTIMESTAMPまたはTIMESTAMP WITH LOCAL TIME ZONEに変更できます。すべてのTIMESTAMP WITH LOCAL TIME ZONEDATE列に変更できます。


注意:

TIMESTAMP WITH LOCAL TIME ZONE列をDATE列に変更すると、秒の小数部およびタイムゾーンで調整されたデータが失われます。

  • TIMESTAMP WITH LOCAL TIME ZONEデータに秒の小数部がある場合、秒の小数部を丸めて列の行データが更新されます。

  • TIMESTAMP WITH LOCAL TIME ZONEデータに60以上の分フィールドがある場合(夏時間の規則が切り換えられた場合に境界で発生)、その分フィールドから60を引いて列の行データが更新されます。

 

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

LONG列はCLOBまたはNCLOB列に、LONG RAW列はBLOB列に変更できます。

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句を参照してください。

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

参照:

「データの暗号化例:」 

inline_constraint

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

LOB_storage_clause

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

alter_XMLSchemas_clause

この句は、XMLType表のmodify_col_properties内でのみ有効です。詳細は、「alter_XMLSchemas_clause」を参照してください。

列のプロパティの変更の制限事項:

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

modify_col_substitutable

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

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

列の代替性の変更の制限事項:

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

drop_column_clause

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

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列を追加できません。 


DROP句

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

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

DROP UNUSED COLUMNS句

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

column

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

CASCADE CONSTRAINTS

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

INVALIDATE

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

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

参照:

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

CHECKPOINT

CHECKPOINTを指定すると、integer行を処理した後にDROP COLUMN操作のチェックポイントが適用されます。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を指定すると、中断されたところから列削除操作を続行できます。表が無効な状態にあるときにこの文を発行すると、エラーになります。

列の削除の制限事項:

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

rename_column_clause

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

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

列名の変更の制限事項:

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

modify_collection_retrieval

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

collection_item

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

RETURN AS

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

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」を参照してください。


注意:

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


PCTVERSION integer

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

LOB_retention_clause

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

FREEPOOLS integer

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

REBUILD FREEPOOLS

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

LOB_deduplicate_clause

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

LOB_compression_clause

この句は、SecureFile 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記憶域の変更には、次の制限事項があります。

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制約を表に追加できます。

参照:

「CHECK制約を使用禁止にする例:」「オブジェクト識別子の指定例:」および「REF列の例:」を参照してください。 

制約の変更

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

制約変更の制限事項:

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

制約名の変更

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

参照:

「制約名の変更例:」 

drop_constraint_clause

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

制約削除の制限事項:

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

PRIMARY KEY

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

UNIQUE

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

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

CONSTRAINT

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

CASCADE

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

KEEP INDEX | DROP INDEX

KEEP INDEXまたはDROP INDEXを指定すると、主キーまたは一意制約の適用に使用する索引を残すか削除するかを指定できます。

制約削除の制限事項:

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

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つの設定の動作は同じになります。

外部表の変更の制限事項:

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

alter_table_partitioning

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

表パーティションの変更の制限事項:

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

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

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

modify_table_default_attrs

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

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

alter_interval_partitioning

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

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

参照:

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

set_subpartition_template

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

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


注意:

サブパーティションのテンプレートに対して表領域の記憶域を指定しても、tableのパーティションに対して明示的に指定した表領域の記憶域は上書きされません。サブパーティションに対して表領域の記憶域を指定するには、次のいずれかの操作を実行します。

  • パーティション・レベルでの表領域の記憶域を省略し、サブパーティションのテンプレートに対して表領域の記憶域を指定します。

  • 固有の表領域の記憶域を持つサブパーティションを個別に定義します。

 

サブパーティションのテンプレートの制限事項:

CREATE TABLE」の「サブパーティションのテンプレートの制限事項:」を参照してください。

modify_table_partition

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

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

パーティション化された索引構成表の場合、パーティションの変更時にマッピング表も同時に更新できます。「alter_mapping_table_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サブパーティションを作成していない場合にのみです。

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

リスト・サブパーティションの追加の制限事項:

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

COALESCE SUBPARTITION

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

modify_hash_partition

partition_attributesでハッシュ・パーティションを変更する場合、allocate_extent_clauseおよびdeallocate_unused_clauseのみを指定できます。パーティションのその他の属性は、表レベルのデフォルトから継承されます。ただし、TABLESPACEは、作成時と同じ状態です。

modify_list_partition

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

ADD | DROP VALUES句

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

リスト値の追加と削除の制限事項:

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

modify_table_subpartition

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

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

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

ハッシュ・サブパーティションの変更の制限事項:

サブパーティションに指定できるmodify_LOB_parametersは、allocate_extent_clauseおよびdeallocate_unused_clauseのみです。

ADD | DROP VALUES句

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

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

リスト・サブパーティションの変更の制限事項:

サブパーティションに指定できるmodify_LOB_parametersは、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索引セグメントは移動されません。

選択したパーティションに対応するローカル索引パーティションが、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」を参照してください。

表パーティションの移動の制限事項:

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

move_table_subpartition

move_table_subpartition句を使用すると、subpartitionを別のセグメントへ移動できます。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のグローバル索引が影響を受けることはありません。

参照:

「LOBを持つ表パーティションの追加例:」 

add_range_partition_clause

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

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

レンジ・パーティションの追加の制限事項:

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

range_values_clause

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

table_partition_description

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

サブパーティションの定義

これらの句は、コンポジット・パーティション表に対してのみ有効です。新しいパーティションのサブパーティションを指定する場合は、range_subpartition_desclist_subpartition_descまたはhash_subpartition_descを適切に使用します。この句によって、表レベルで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項目にパーティション・レベルの属性を指定することもできます。

リスト・パーティションの追加の制限事項:

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

参照:

 

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」 

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

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

表パーティションの削除の制限事項:

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

drop_table_subpartition

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

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

表サブパーティションの削除の制限事項:

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

rename_partition_subpart

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

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

参照:

「表のパーティション名の変更例:」 

truncate_partition_subpart

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

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

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

DROP STORAGE

DROP STORAGEを指定すると、削除した行が占有していた領域の割当てを解除できます。解放された領域は、表領域の他のスキーマ・オブジェクトが利用できます。

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およびパーティショニング・ガイド』を参照してください。 


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

AT句

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

VALUES句

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

INTO句

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

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

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

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

索引に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つのサブパーティションのうち、1番目のサブパーティションに含める値を指定します。同じパーティション内の別のサブパーティションに対してNULLを指定していない場合は、NULLを指定できます。指定したサブパーティションの値リストに基づいて新しい1番目のサブパーティションが作成されます。また、現行のサブパーティションのその他のパーティション値に基づいて新しい2番目のサブパーティションが作成されます。このため、値リストには現行のサブパーティションのすべてのパーティション値を含めることはできません。また、現行のサブパーティションに存在しないパーティション値も含めることはできません。

INTO句

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

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

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

表サブパーティションの分割の制限事項:

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

merge_table_partitions

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

segment_attributes_clauseに指定されていない属性はすべて、表レベルのデフォルトから継承されます。

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

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

参照:

「2つの表パーティションのマージ例:」および「デフォルト・リスト・パーティションの使用例:」を参照してください。 

merge_table_subpartitions

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

マージされる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句を使用すると、次のデータおよび索引セグメントを交換できます。

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

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

参照:

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

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

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

表またはパーティションの統計およびヒストグラムは交換されません。DBMS_STATSパッケージを使用して、新しいパーティションを受け取る表について、統計を再集計するか、ヒストグラムを作成します。

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

参照:

「パーティションまたはサブパーティションの交換の注意事項:」 

WITH TABLE table

パーティションまたはサブパーティションを交換する表を指定します。

INCLUDING | EXCLUDING INDEXES

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

WITH | WITHOUT VALIDATION

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

exceptions_clause

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

参照:

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

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

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

 

パーティションまたはサブパーティションの交換の注意事項:

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

dependent_tables_clause

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

UNUSABLE LOCAL INDEXES句

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

UNUSABLE LOCAL INDEXES句の制限事項:

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

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

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

update_index_subpartition

この句は、コンポジット・パーティション表のサブパーティションの操作に対してのみ有効で、コンポジット・パーティション表のローカル索引にのみ影響を与えます。1つ以上のサブパーティションに表領域の記憶域を指定できます。

すべての索引の更新の制限事項:

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

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」を参照してください。

表の並列化の変更の制限事項:

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

move_table_clause

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

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

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

ONLINE句

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

表のオンライン化の制限事項:

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

index_org_table_clause

索引構成表の場合、move_table_clauseindex_org_table_clauseを使用すると、オーバーフロー・セグメント属性も指定できます。move_table_clauseを使用すると、索引構成表の主キー索引が再構築されます。オーバーフロー・データ・セグメントは、キーワードOVERFLOWが明示的に指定されていないかぎり、再構築されません。ただし、次の場合は例外です。

LOB列の索引およびデータ・セグメントは、LOB列をALTER TABLE文の一部として明示的に指定しないかぎり、再構築されません。

mapping_table_clauses

MAPPING TABLEを指定すると、マッピング表が存在していない場合にマッピング表を作成できます。マッピング表がすでに存在する場合、マッピング表は索引構成表とともに移動され、すべてのビットマップ索引にはUNUSABLEのマークが付けられます。新しいマッピング表は、親表と同じ表領域に作成されます。

NOMAPPINGを指定すると、既存のマッピング表が削除されます。

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

表のマッピングの制限事項:

tableでビットマップ索引が定義されている場合は、NOMAPPINGを指定できません。

key_compression

key_compression句を使用すると、索引構成表のキー圧縮を使用可能または使用禁止にできます。

TABLESPACE tablespace

再構築した索引構成表を格納する表領域を指定します。

LOB_storage_clause

この句を使用すると、LOBセグメントを別の表領域に移動できます。表にLONG列が含まれている場合は、この句を使用してLOBセグメントを移動することはできません。かわりに、LONG列をLOBに変換するか、または表をエクスポートし、LOB列に必要な表領域の記憶域を指定する表を再作成して表データを再インポートする必要があります。

表の移動の制限事項:

表の移動には、次の制限事項があります。

enable_disable_clause

enable_disable_clauseを使用すると、Oracle Databaseが整合性制約を適用するかどうか、およびその方法を指定できます。DROPおよびKEEP句は、一意制約または主キー制約を使用禁止にする場合のみに有効です。

参照:

  • この句の詳細、関連する注意および制限事項については、「CREATE TABLE」の「enable_disable_clause」を参照してください。

  • 索引の使用方法と制約の適用方法の詳細は、「索引による制約の適用」を参照してください。

 

TABLE LOCK

DDL操作中にロックされた表にのみDDL操作を実行できます。このような表ロックは、DML操作中は必要ありません。


注意:

一時表に表ロックを適用することはできません。 


ENABLE TABLE LOCK

ENABLE TABLE LOCKを指定すると、表ロックが有効になり、表に対するDDL操作が実行可能になります。現在実行中のすべてのトランザクションは、表ロックが有効になる前にコミットまたはロールバックする必要があります。


注意:

Oracle Databaseは、表をロックする前に、データベース内のアクティブなDMLトランザクションが完了するまで待機します。その結果、遅延が生じる可能性があることに注意してください。 


DISABLE TABLE LOCK

DISABLE TABLE LOCKを指定すると、表ロックが無効になり、表に対するDDL操作が実行できなくなります。

ALL TRIGGERS

ALL TRIGGERS句を使用すると、表に関連するすべてのトリガーを使用可能または使用禁止にできます。

ENABLE ALL TRIGGERS

ENABLE ALL TRIGGERSを指定すると、表に関連するすべてのトリガーが使用可能になります。トリガー条件が満たされた場合に、トリガーが起動されます。

1つのトリガーを使用可能にする場合は、ALTER TRIGGERenable_clauseを使用してください。

参照:

CREATE TRIGGER」、「ALTER TRIGGER」および「トリガーを使用可能にする例:」を参照してください。 

DISABLE ALL TRIGGERS

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句が含まれています。

この例では、表のそれぞれの行が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は、パーティションp1とパーティションp2にレンジ・パーティション化されたとします(表をパーティション化する前に、print_mediaLONG列をLOBに変換する必要があります)。次の文は、表のパーティション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));

p2ap2bのパーティションでは、列ad_photoad_compositeに対するLOBセグメントが表領域omb_ts2内に作成されます。パーティションp2aのその他の列に対するLOBセグメントは、表領域omf_ts1に保存されます。パーティションp2bのその他の列に対するLOBセグメントは、このALTER文の実行前の表領域で保持されます。ただし、LOBデータおよびLOB索引セグメントが新しい表領域に移動されない場合でも、これらの新しいセグメントが作成されます。

LOBを持つ表パーティションの追加例:

次の文は、パーティションp3print_media_part表に追加し(前述の例を参照)、表のBLOBCLOB列の記憶特性を指定します。

ALTER TABLE print_media_part ADD PARTITION p3 VALUES LESS THAN (MAXVALUE)
   LOB (ad_photo, ad_composite) STORE AS (TABLESPACE omf_ts2)
   LOB (ad_sourcetext, ad_finaltext) STORE AS (TABLESPACE omf_ts1);

パーティションp3の列ad_photoおよびad_compositeに対するLOBデータとLOB索引セグメントは、表領域omf_ts2に格納されます。LOB列の他の属性は、まず表レベルのデフォルトから継承され、次に表領域のデフォルトから継承されます。

ad_source_textおよびad_finaltextのLOBデータ・セグメントは、omf_ts1表領域に格納され、他のすべての属性は、表レベルのデフォルト値から継承され、次に表領域のデフォルト値から継承されます。

デフォルト・リスト・パーティションの使用例:

次の文は、リスト・パーティション表(「リスト・パーティション化の例:」で作成)を使用します。最初の文は、既存のデフォルト・パーティションを新規の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);
2つの表パーティションのマージ例:

次の文は、パーティション(「表のパーティションの分割例:」で作成)をマージして、1つのパーティションに戻します。

ALTER TABLE sales 
   MERGE PARTITIONS sales_q4_2000, sales_q4_2000b
   INTO PARTITION sales_q4_2000;
表のパーティションの削除例:

次の文は、パーティションp3「LOBを持つ表パーティションの追加例:」で作成)を削除します。

ALTER TABLE print_media_part DROP PARTITION p3;
表パーティションの交換例:

次の例では、list_customers表(「リスト・パーティション化の例:」で作成)のパーティションと同じ構造を持つexchange_table表を作成します。次に、パーティション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 feb97 WITH TABLE sales_feb97 
   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;
表のパーティションの切捨て例:

次の文は、print_media_demo表(「LOB列のあるパーティション表の例:」で作成)を使用します。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)); 
仮想表の列の追加例:

次の文は、列incomehr.employees表のコピーに追加します。この列は、給与と歩合の合計です。給与と歩合はどちらも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; 
データの暗号化例:

次の文は、暗号化アルゴリズム3DES168を使用して、hr.employees表のsalary列を暗号化します。前述の「セマンティクス」で説明したように、まず、データの透過的暗号化を有効にする必要があります。

ALTER TABLE employees 
   MODIFY (salary ENCRYPT USING '3DES168');

次の文は、暗号化された新しい列online_acct_pwoe.customers表に追加します。

ALTER TABLE customers
   ADD (online_acct_pw VARCHAR2(8) ENCRYPT);

次の例は、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列の値は自動的に0(ゼロ)になります。

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; 

主キー制約の名前が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); 

次の文は、SecureFile CLOB列のresumeemployee表に追加し、新しい列のLOB記憶特性を指定します。SecureFile 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」を参照してください。


ALTER TABLESPACE

用途

ALTER TABLESPACEを使用すると、既存の表領域、1つ以上のデータ・ファイルまたは一時ファイルを変更できます。

この句では、ディクショナリ管理表領域をローカル管理表領域に変換することはできません。変換するには、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』に記載されているDBMS_SPACE_ADMINパッケージを使用してください。

参照:

表領域作成の詳細は、『Oracle Database管理者ガイド』および「CREATE TABLESPACE」を参照してください。 

前提条件

SYSAUX表領域を変更する場合は、SYSDBAシステム権限が必要です。

ALTER TABLESPACEシステム権限を持っている場合、すべてのALTER TABLESPACE操作を実行できます。MANAGE TABLESPACEシステム権限を持っている場合は、次の操作のみを実行できます。

表領域を読取り専用にする場合、次の条件が満たされている必要があります。

これらの条件を満たすために、制限モードでこの機能を実行すると有効です。制限モードでは、RESTRICTED SESSIONシステム権限を持つユーザーのみがログインできます。

構文

alter_tablespace::=

画像の説明

(「ALTER TABLE」の項にあるtable_compression::=storage_clause::=size_clause::=datafile_tempfile_clauses::=tablespace_logging_clauses::=tablespace_group_clause::=tablespace_state_clauses::=autoextend_clause::=flashback_mode_clause::=tablespace_retention_clause::=を参照)

datafile_tempfile_clauses::=

画像の説明

file_specification::=を参照)

tablespace_logging_clauses::=

画像の説明

logging_clause::=を参照)

tablespace_group_clause::=

画像の説明

tablespace_state_clauses::=

画像の説明

autoextend_clause::=

画像の説明

size_clause::=を参照)

maxsize_clause::=

画像の説明

size_clause::=を参照)

flashback_mode_clause::=

画像の説明

tablespace_retention_clause::=

画像の説明

セマンティクス

tablespace

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

表領域の変更の制限事項:

表領域の変更には、次の制限事項があります。

DEFAULT storage_clause

DEFAULT storage_clauseを使用すると、表領域に作成される後続のオブジェクトに対して新しいデフォルトの記憶域パラメータを指定できます。ディクショナリ管理の一時表の場合は、storage_clauseNEXTパラメータのみが考慮されます。

詳細は、「storage_clause」を参照してください。

表領域のデフォルト記憶域の制限事項:

この句は、ローカル管理表領域に対して指定できません。

MINIMUM EXTENT

この句は、永続的なディクショナリ管理表領域に対してのみ有効です。MINIMUM EXTENT句を指定すると、表領域内のすべての使用済エクステントまたは未使用エクステントの大きさが、size_clauseで指定したサイズ以上であること、およびその倍数であることが保証され、表領域における空き領域の断片化を制御できます。

MINIMUM EXTENTの制限事項:

この句は、ローカル管理の表領域またはディクショナリ管理の一時表領域に対して指定できません。

参照:

この句の詳細は、「size_clause」を参照してください。MINIMUM EXTENTを使用した領域の断片化の制御の詳細は、『Oracle Database管理者ガイド』を参照してください。 

RESIZE句

この句は、bigfile表領域に対してのみ有効です。この句を使用すると、1つのデータ・ファイルのサイズを絶対サイズの値まで増やしたり減らすことができます。KMGまたはTを使用して、それぞれKB、MB、GBまたはTB単位で指定することもできます。

smallfile表領域に新しく追加されたデータ・ファイルまたは一時ファイルのサイズを変更するには、ALTER DATABASE ... autoextend_clauseを使用します(「database_file_clauses」を参照)。

参照:

bigfile表領域については、「BIGFILE | SMALLFILE」を参照してください。 

COALESCE

この句を使用すると、表領域内の各データ・ファイルで、連続する未使用エクステントをすべて結合し、連続するより大きいエクステントを作成します。

SHRINK SPACE句

この句は一時表領域に対してのみ有効です。表領域が使用する領域を削減できます。オプションのKEEP句では、size_clauseによって、表領域を縮小できる下限が定義されます。これは、自動拡張可能な表領域のMAXSIZEとは反対の機能です。KEEP句を省略すると、表領域の他の記憶域属性を満たしている場合、データベースはできるだけ表領域を縮小しようとします。

RENAME句

この句を指定すると、tablespaceの名前を変更できます。この句は、tablespaceおよびそのすべてのデータ・ファイルがオンラインで、COMPATIBLEパラメータが10.0.0以上に設定されている場合にのみ有効です。名前の変更は、永続表領域および一時表領域の両方に対して実行できます。

tablespaceが読取り専用の場合、データ・ファイルのヘッダーは更新されず、新しい名前は反映されません。アラート・ログに、データ・ファイルのヘッダーが更新されなかったことが記録されます。


注意:

バックアップからリストアしたデータ・ファイルを使用して制御ファイルを再作成する場合、データ・ファイルのヘッダーに古い表領域の名前が反映されていると、再作成された制御ファイルにも古い表領域の名前が反映されます。ただし、データベースが完全にリカバリされた後は、制御ファイルに新しい名前が反映されます。 


tablespaceが、Oracle Real Application Clusters(RAC)環境のインスタンスに対するUNDO表領域として指定されており、データベースの起動にサーバー・パラメータ・ファイルが使用されている場合、そのサーバー・パラメータ・ファイル(SPFILE)で、インスタンスに対するUNDO_TABLESPACEパラメータの値は、新しい表領域の名前を反映するように変更されます。単一インスタンス・データベースで、spfileのかわりにパラメータ・ファイル(pfile)が使用されている場合、データベース管理者にpfile内の値を手動で変更することを推奨するメッセージがアラート・ログに書き込まれます。

表領域の名前の変更の制限事項:

SYSTEM表領域またはSYSAUX表領域の名前は変更できません。

BACKUP句

この句を使用すると、表領域のすべてのデータ・ファイルをオンライン(ホット)・バックアップ・モードにしたり、このモードから戻すことができます。

参照:

  • メディア・リカバリなしでデータベースを再起動する場合の詳細は、『Oracle Database管理者ガイド』を参照してください。

  • データベース内のすべてのデータ・ファイルに対するオンライン・バックアップ・モードの設定または解除の詳細は、「ALTER DATABASE」の「BACKUP句」を参照してください。

  • 個々のデータ・ファイルをオンライン・バックアップ・モードから解除する場合の詳細は、「ALTER DATABASE」の「alter_datafile_clause」を参照してください。

 

BEGIN BACKUP

BEGIN BACKUPを指定すると、表領域を構成するデータ・ファイルのオープン・バックアップを実行することを示すことができます。この句を指定することによって、ユーザーがこの表領域にアクセスできなくなることはありません。オープン・バックアップを開始する前に、この句を指定してください。

表領域のバックアップ開始の制限事項:

表領域のバックアップ開始には、次の制限事項があります。

END BACKUP

END BACKUPを指定すると、表領域のオンライン・バックアップが完了したことを示すことができます。オンライン・バックアップの完了後、できるだけ早くこの句を指定してください。インスタンスに障害またはSHUTDOWN ABORTが発生した場合、次のインスタンス起動時にメディア・リカバリ(必要に応じて、アーカイブREDOログも)が必要であるとみなされます。

表領域のバックアップ終了の制限事項:

この句は、読取り専用表領域に対して使用できません。

datafile_tempfile_clauses

datafile_tempfile_clausesを使用すると、データ・ファイルまたは一時ファイルを追加および変更できます。

ADD句

ADDを指定すると、file_specificationによって指定されたデータ・ファイルまたは一時ファイルを表領域に追加できます。オペレーティング・システムのファイル・システム内の標準データファイルと一時ファイル、または自動ストレージ管理ディスク・グループのファイルを指定するには、file_specificationのdatafile_tempfile_spec書式(「file_specification」を参照)を使用します。

この句は、ローカル管理の一時表領域に対して、どんな場合でも指定できる唯一の句です。

file_specificationを指定しないと、AUTOEXTENDが有効になった100MBのOracle管理ファイルが作成されます。

データ・ファイルまたは一時ファイルを、オンラインのローカル管理表領域、またはオンラインまたはオフラインのディクショナリ管理表領域に追加できます。なお、そのデータ・ファイルが別のデータベースで使用中でないことを確認してください。

データ・ファイルおよび一時ファイルの追加の制限事項:

この句は、表領域に1つのデータ・ファイルまたは一時ファイルのみが含まれるbigfile(単一ファイル)表領域に対して指定できません。


注意:

オペレーティング・システムによっては、一時ファイルのブロックが実際にアクセスされるまで、一時ファイル用の領域が割り当てられない場合があります。領域の割当ての遅延のため、一時ファイルの作成およびサイズ変更が速くなります。ただし、後で一時ファイルが使用されるときに、十分なディスク領域を使用可能にする必要があります。発生する可能性がある問題を回避するには、一時ファイルを作成またはサイズ変更する前に、ディスク領域が、新しく作成する一時ファイルまたはサイズ変更後の一時ファイルのサイズより大きいことを確認してください。ディスク領域に余裕を持たせることによって、関連のない操作が原因で増加が予想されるディスク使用量に対応できます。十分な領域があることを確認した後で、作成またはサイズ変更操作を実行してください。 


参照:

file_specification」、「データ・ファイルおよび一時ファイルの追加例と削除例:」および「Oracle Managed Filesのデータ・ファイルの追加例:」を参照してください。 

DROP句

DROPを指定すると、filenamefile_numberによって指定された空のデータ・ファイルまたは一時ファイルを表領域から削除できます。この句は、データ・ファイルまたは一時ファイルをデータ・ディクショナリから削除し、オペレーティング・システムから削除します。この句を指定するときには、データベースがオープンしている必要があります。

ALTER TABLESPACE ... DROP TEMPFILE文は、ALTER DATABASE TEMPFILE ... DROP INCLUDING DATAFILESを指定することと同じです。

ファイル削除の制限事項:

データ・ファイルまたは一時ファイルを削除するには、これらのファイルが次の条件を満たしている必要があります。

SHRINK TEMPFILE句

この句は一時表領域を変更する場合にのみ有効です。指定した一時ファイルが使用する領域を削減できます。オプションのKEEP句では、size_clauseによって、一時ファイルを縮小できる下限が定義されます。これは、自動拡張可能な表領域のMAXSIZEとは反対の機能です。KEEP句を省略すると、他の記憶域属性を満たしている場合、データベースはできるだけ一時ファイルを縮小しようとします。

RENAME DATAFILE句

RENAME DATAFILEを指定すると、表領域の1つ以上のデータ・ファイルの名前を変更できます。データベースをオープンしておくこと、および名前の変更前に表領域をオフラインにすることが必要です。それぞれのfilenameには、ご使用のオペレーティング・システムのファイル名の表記規則に従って、データ・ファイル名を完全に指定してください。

この句では、表領域を古いファイルではなく新しいファイルに対応付けます。オペレーティング・システムのファイル名は実際には変更されません。このため、オペレーティング・システム上でこのファイル名を変更する必要があります。

参照:

「表領域の移動および名前の変更例:」 

ONLINE | OFFLINE句

これらの句を使用すると、表領域のすべてのデータ・ファイルまたは一時ファイルを、オフラインまたはオンラインにできます。これらの句は、表領域のONLINEまたはOFFLINE状態には影響しません。

データベースは、マウントされている必要があります。tablespaceSYSTEM、UNDO表領域、またはデフォルトの一時表領域の場合、データベースをオープンしないでおく必要があります。

tablespace_logging_clauses

この句を使用すると、表領域のロギング特性を設定または変更できます。

logging_clause

LOGGINGを指定すると、表領域内のすべての表、索引およびパーティションのロギング属性を指定できます。表レベル、索引レベルおよびパーティション・レベルでのロギング指定によって、表領域レベルのロギング属性を上書きできます。

既存の表領域のロギング属性をALTER TABLESPACE文によって変更した場合、この文の実行後に作成されたすべての表、索引およびパーティションに、新しいデフォルトのロギング属性(これは後で上書きもできます)が適用されます。既存のオブジェクトのロギング属性は変更されません。

FORCE LOGGINGモードの表領域がある場合、この文でNOLOGGINGを指定すると、表領域のデフォルト・ロギング・モードをNOLOGGINGに設定できます。ただし、この設定によって表領域のFORCE LOGGINGモードは解除されません。

[NO] FORCE LOGGING

この句を使用すると、表領域で強制ロギング・モードを有効または無効にできます。データベースをオープンし、READ WRITEモードにしておく必要があります。この設定により、表領域のデフォルトLOGGINGモードまたはNOLOGGINGモードは変更されません。

強制ロギング・モードの制限事項:

FORCE LOGGINGは、UNDO表領域および一時表領域に対して指定できません。

参照:

FORCE LOGGINGモードの使用方法の詳細は、『Oracle Database管理者ガイド』および「表領域のロギング属性の変更例:」を参照してください。 

tablespace_group_clause

この句は、ローカル管理の一時表領域に対してのみ有効です。この句を使用すると、tablespace_group_name表領域グループに対してtablespaceを追加または削除できます。

表領域グループの制限事項:

表領域グループは、永続表領域またはディクショナリ管理の一時表領域には指定できません。

参照:

表領域グループの詳細は、『Oracle Database管理者ガイド』を参照してください。「表領域グループの割当て例:」も参照してください。 

tablespace_state_clauses

この句を使用すると、表領域の状態を設定または変更できます。

ONLINE | OFFLINE

ONLINEを指定すると、表領域をオンラインにできます。OFFLINEを指定すると、表領域をオフラインにし、そのセグメントへの後続のアクセスを禁止できます。表領域をオフラインにすると、そのすべてのデータ・ファイルもオフラインになります。


提案

表領域を長期間オフラインにする前に、デフォルト表領域または一時表領域としてその表領域が割り当てられているユーザーに対して、表領域の割当てを変更することを検討します。表領域をオフラインにしている間は、これらのユーザーは、その表領域内でオブジェクトに対して領域を割り当てたり、領域をソートすることはできません。ユーザーへの表領域の割当ての詳細は、「ALTER USER」を参照してください。 


表領域をオフラインにする場合の制限事項:

一時表領域はオフラインにできません。

OFFLINE NORMAL

NORMALを指定すると、システム・グローバル領域(SGA)以外にある表領域のすべてのデータ・ファイルにあるすべてのブロックをフラッシュできます。データ・ファイルをオンラインに戻す前に、表領域のメディア・リカバリを行う必要はありません。これはデフォルトです。

OFFLINE TEMPORARY

TEMPORARYを指定すると、Oracle Databaseは表領域内のすべてのオンライン・データ・ファイルに対してチェックポイントを実行しますが、すべてのファイルに対して書込みを実行できるかどうかは保証しません。この文の発行時にオフラインであったファイルは、表領域をオンラインに戻す前に、メディア・リカバリを行う必要があります。

OFFLINE IMMEDIATE

IMMEDIATEを指定すると、Oracle Databaseは表領域のファイルが使用可能であることを保証しません。また、チェックポイントも実行しません。表領域をオンラインに戻す前に、メディア・リカバリを行う必要があります。


注意:

ALTER TABLESPACE ... OFFLINEに対するFOR RECOVER設定は、非推奨になっています。この構文は、下位互換性を保つためにのみサポートされています。ただし、表領域のリカバリにはトランスポータブル表領域機能を使用することをお薦めします。 


参照:

メディア・リカバリを実行するトランスポータブル表領域の使用の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 

READ ONLY | READ WRITE

READ ONLYを指定すると、表領域を読取り専用遷移モードに設定できます。この状態では、既存のトランザクションは完了(コミットまたはロールバック)できますが、表領域内のブロックを変更した既存のトランザクションをロールバックすること以外は、その表領域に対してさらにDML操作を行うことはできません。SYSAUX表領域は、READ ONLYに設定できません。

表領域が読取り専用の場合は、そのファイルを読取り専用メディアにコピーできます。その場合、SQL文のALTER DATABASE ... RENAMEを使用して、新しいファイル位置を示すように制御ファイル内のデータ・ファイルの名前を変更する必要があります。

参照:

  • 読取り専用の表領域の詳細は、『Oracle Database概要』を参照してください。

  • 「ALTER DATABASE」

 

READ WRITEを指定すると、読取り専用に指定されている表領域に対して書込み操作を実行できるようになります。

PERMANENT | TEMPORARY

PERMANENTを指定すると、一時表領域を永続表領域に変換できます。永続表領域とは、永続的なデータベース・オブジェクトを格納できる場所です。表領域を作成するときのデフォルトです。

TEMPORARYを指定すると、永続表領域を一時表領域に変換できます。一時表領域とは、永続的なデータベース・オブジェクトを格納できない表領域です。一時表領域の中のオブジェクトはセッション中のみ保持されます。

一時表領域の制限事項:

一時表領域には、次の制限事項があります。

autoextend_clause

この句は、bigfile(単一ファイル)表領域に対してのみ有効です。この句を使用すると、表領域内の単一のデータ・ファイルに対して自動拡張を使用可能または使用禁止にできます。smallfile表領域に新しく追加されたデータ・ファイルまたは一時ファイルの自動拡張を使用可能または使用禁止にするには、ALTER DATABASE文でautoextend_clauseを使用します(「database_file_clauses」を参照)。

参照:

  • bigfile(単一ファイル)表領域については、『Oracle Database管理者ガイド』を参照してください。

  • autoextend_clauseの詳細は、「file_specification」を参照してください。

 

flashback_mode_clause

この句を使用すると、後続のFLASHBACK DATABASE操作でこの表領域を使用するかどうかを指定できます。

この句は一時表領域では無効です。

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

参照:

データベースのフラッシュバックの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 

tablespace_retention_clause

この句のセマンティクスは、CREATE TABLESPACE文およびALTER TABLESPACE文で同じです。「CREATE TABLESPACE」の「tablespace_retention_clause」を参照してください。

表領域のバックアップ例:

次の文は、バックアップの開始をデータベースに通知します。

ALTER TABLESPACE tbs_01 
    BEGIN BACKUP; 

次の文は、バックアップが終了したことをデータベースに通知します。

ALTER TABLESPACE tbs_01 
   END BACKUP; 
表領域の移動および名前の変更例:

次の例は、tbs_02表領域(「表領域の自動拡張を使用可能にする場合の例:」で作成)に関連付けられたデータ・ファイルを、diskb:tbs_f5.datからdiska:tbs_f5.datに移動して、名前を変更します。

  1. OFFLINE句を指定したALTER TABLESPACE文を使用して、この表領域をオフラインにします。

    ALTER TABLESPACE tbs_02 OFFLINE NORMAL; 
    
    
  2. オペレーティング・システムのコマンドを使用して、このファイルをdiskb:tbs_f5.datからdiska:tbs_f5.datにコピーします。

  3. RENAME DATAFILE句を指定したALTER TABLESPACE文を使用して、このデータ・ファイルの名前を変更します。

    ALTER TABLESPACE tbs_02
      RENAME DATAFILE 'diskb:tbs_f5.dat'
      TO              'diska:tbs_f5.dat'; 
    
    
  4. ONLINE句を指定したALTER TABLESPACE文を使用して、この表領域をオンラインに戻します。

    ALTER TABLESPACE tbs_02 ONLINE;
    
データ・ファイルおよび一時ファイルの追加例と削除例:

次の文は、表領域にデータ・ファイルを追加します。さらに多くの領域が必要な場合、10KBの新しいエクステントが最大100KBまで追加されます。

ALTER TABLESPACE tbs_03 
    ADD DATAFILE 'tbs_f04.dbf'
    SIZE 100K
    AUTOEXTEND ON
    NEXT 10K
    MAXSIZE 100K;

次の文は、空のデータ・ファイルを削除します。

ALTER TABLESPACE tbs_03
    DROP DATAFILE 'tbs_f04.dbf';

次の文は、「一時表領域の作成例:」で作成された一時表領域に一時ファイルを追加してから削除します。

ALTER TABLESPACE temp_demo ADD TEMPFILE 'temp05.dbf' SIZE 5 AUTOEXTEND ON;

ALTER TABLESPACE temp_demo DROP TEMPFILE 'temp05.dbf';
一時表領域の領域の管理例:

次の文は、SHRINK SPACE句を使用して、一時表領域(「一時表領域の作成例:」で作成)内の領域を管理します。KEEP句を省略します。これにより、表領域の他の記憶域属性を満たしている場合、データベースはできるだけ表領域を縮小しようとします。

ALTER TABLESPACE temp_demo SHRINK SPACE;
Oracle Managed Filesのデータ・ファイルの追加例:

次の例は、Oracle Managed Filesのデータ・ファイルをomf_ts1表領域に追加します(この表領域の作成の詳細は、「Oracle Managed Filesの作成例:」を参照してください)。新しいデータ・ファイルは100MBで、最大サイズが制限なしで自動拡張されます。

ALTER TABLESPACE omf_ts1 ADD DATAFILE; 
表領域のロギング属性の変更例:

次の例は、表領域のデフォルトのロギング属性をNOLOGGINGに変更します。

ALTER TABLESPACE tbs_03 NOLOGGING;

表領域のロギング属性を変更した場合でも、その表領域内の既存のスキーマ・オブジェクトのロギング属性には影響しません。表レベル、索引レベルおよびパーティション・レベルでのロギング指定によって、表領域レベルのロギング属性を上書きできます。

UNDOデータの保持の変更例:

次の文は、undots1表領域のUNDOデータの保持を、通常のUNDOデータの動作に変更します。

ALTER TABLESPACE undots1
  RETENTION NOGUARANTEE;

次の文は、undots1表領域のUNDOデータの保持を、期限が切れていないUNDOデータを保持する動作に変更します。

ALTER TABLESPACE undots1
  RETENTION GUARANTEE;


戻る 次へ
Oracle
Copyright © 1996, 2008, Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引