Oracle Database SQL言語リファレンス 11g リリース1(11.1) E05750-03 |
|
この章では、次のSQL文について説明します。
ALTER
TABLE
を使用すると、非パーティション表、パーティション表、表パーティションおよび表サブパーティションの定義を変更できます。オブジェクト表またはオブジェクト列を含むリレーショナル表の場合は、ALTER
TABLE
を使用して型が変更された後に、表を参照する型の最新の定義に変換します。
参照:
|
表が自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、その表に対するALTER
オブジェクト権限またはALTER
ANY
TABLE
システム権限が必要です。
表の所有者でない場合、drop_table_partition
またはtruncate_table_partition
句を使用するには、DROP
ANY
TABLE
権限が必要です。
add_table_partition
、modify_table_partition
、move_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
としてログインしている必要があります。
ALTER TABLE構文のグループは、次のとおりです。
各句の後には、そのコンポーネントの副次句の参照先が記載されています。
(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を参照)
(storage_clause::=を参照)
(size_clause::=を参照)
(size_clause::=を参照)
(column_properties::=を参照)
(alter_overflow_clause::=、alter_mapping_table_clauses::=を参照)
(segment_attributes_clause::=を参照)
(physical_attributes_clause::=、logging_clause::=を参照)
(segment_attributes_clause::=、allocate_extent_clause::=、shrink_clause::=、deallocate_unused_clause::=を参照)
(segment_attributes_clause::=を参照)
(allocate_extent_clause::=、deallocate_unused_clause::=を参照)
(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::=を参照)
(column_definition::=、column_properties::=を参照)
(encryption_spec::=、constraint::=の「inline_constraint
」および「inline_ref_constraint
を参照)
(encryption_spec::=、constraint::=の「inline_constraint
」およびLOB_storage_clause::=を参照)
(constraint::=の「constraint_state
: 」を参照)
(constraint::=の「inline_constraint
」、「inline_ref_constraint
」、「out_of_line_constraint
」および「out_of_line_ref_constraint
」を参照)
(supplemental_log_grp_clause::=、supplemental_id_key_clause::=を参照)
(segment_attributes_clause::=、index_org_table_clause::=、external_data_properties::=を参照)
(substitutable_column_clause::=、varray_storage_clause::=を参照)
(LOB_parameters::=を参照)
(LOB_storage_parameters::=を参照)
(LOB_parameters::=、storage_clause::=を参照)
(LOB_retention_clause::=、LOB_deduplicate_clause::=、LOB_compression_clause::=、encryption_spec::=、logging_clause::=を参照)
(storage_clause::=、LOB_retention_clause::=、LOB_compression_clause::=、encryption_spec::=、logging_clause::=、allocate_extent_clause::=、shrink_clause::=、deallocate_unused_clause::=を参照)
(LOB_storage_clause::=、varray_col_properties::=、LOB_partitioning_storage::=を参照)
(add_column_clause::=、modify_column_clauses::=、drop_column_clause::=、drop_constraint_clause::=、parallel_clause::=を参照)
(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::=を参照)
(partition_extended_name::=、segment_attributes_clause::=、table_compression::=、key_compression::=、alter_overflow_clause::=、LOB_parameters::=を参照)
(range_subpartition_desc::=、list_subpartition_desc::=を参照)
(modify_range_partition::=、modify_hash_partition::=、modify_list_partition::=を参照)
(partition_extended_name::=、partition_attributes::=、add_range_subpartition::=、add_hash_subpartition::=、add_list_subpartition::=、update_index_clauses::=、parallel_clause::=、alter_mapping_table_clauses::=を参照)
(partition_extended_name::=、partition_attributes::=、 alter_mapping_table_clauses::=を参照)
(partition_extended_name::=、partition_attributes::=、add_range_subpartition::=、add_list_subpartition::=、add_hash_subpartition::=を参照)
(subpartition_extended_name::=、allocate_extent_clause::=、deallocate_unused_clause::=、shrink_clause::=、modify_LOB_parameters::=を参照)
(partition_extended_name::=、table_partition_description::=、update_index_clauses::=、parallel_clause::=を参照)
(range_subpartition_desc::=、list_subpartition_desc::=、hash_subparts_by_quantity::=、update_index_clauses::=、 parallel_clause::=を参照)
(add_range_partition_clause::=、add_hash_partition_clause::=、add_list_partition_clause::=、add_system_partition_clause::=、dependent_tables_clause:=を参照)
(range_values_clause::=、table_partition_description::=、range_subpartition_desc::=、list_subpartition_desc::=、hash_subparts_by_quantity::=、update_index_clauses::=を参照)
(partitioning_storage_clause::=、update_index_clauses::=、parallel_clause::=を参照)
(list_values_clause::=、table_partition_description::=、range_subpartition_desc::=、list_subpartition_desc::=、hash_subparts_by_quantity::=、update_index_clauses::=を参照)
(table_partition_description::=、update_index_clauses::=を参照)
(range_subpartition_desc::=、update_index_clauses::=、parallel_clause::=を参照)
(hash_subparts_by_quantity::=、update_index_clauses::=、parallel_clause::=を参照)
(list_subpartition_desc::=、update_index_clauses::=を参照)
(partition_spec::=を参照)
(update_index_clauses::=、parallel_clause::=を参照)
(update_index_clauses::=、parallel_clause::=を参照)
(partition_extended_name::=、update_index_clauses::=、parallel_clause::=を参照)
(subpartition_extended_name::=、update_index_clauses::=、parallel_clause::=を参照)
(partition_extended_name::=、subpartition_extended_name::=を参照)
(partition_extended_name::=、subpartition_extended_name::=、update_index_clauses::=、parallel_clause::=を参照)
(partition_extended_name::=、range_partition_desc::=、list_partition_desc::=、dependent_tables_clause:=、update_index_clauses::=、parallel_clause::=を参照)
(subpartition_extended_name::=、range_subpartition_desc::=、list_subpartition_desc::=、update_index_clauses::=、parallel_clause::=を参照)
(partition_extended_name::=、partition_spec::=、dependent_tables_clause:=、update_index_clauses::=、parallel_clause::=を参照)
(subpartition_extended_name::=、range_subpartition_desc::=、list_subpartition_desc::=、update_index_clauses::=、parallel_clause::=を参照)
(partition_extended_name::=、subpartition_extended_name::=、exceptions_clause::=、update_index_clauses::=、parallel_clause::=を参照)
(segment_attributes_clause::=、table_compression::=、key_compression::=、LOB_storage_clause::=、varray_col_properties::=を参照)
(range_values_clause::=、table_partition_description::=、range_subpartition_desc::=、list_subpartition_desc::=を参照)
(list_values_clause::=、table_partition_description::=、range_subpartition_desc::=、list_subpartition_desc::=を参照)
(range_values_clause::=、partitioning_storage_clause::=を参照)
(list_values_clause::=、partitioning_storage_clause::=を参照)
(table_compression::=、LOB_partitioning_storage::=を参照)
(physical_attributes_clause::=、logging_clause::=、allocate_extent_clause::=、deallocate_unused_clause::=、shrink_clause::=、table_compression::=、modify_LOB_parameters::=を参照)
(table_partition_description::=を参照)
(update_global_index_clause::=、update_all_indexes_clause::=を参照)
(update_index_partition::=、update_index_subpartition::=を参照)
(index_partition_description::=、index_subpartition_clause::=を参照)
(segment_attributes_clause::=、key_compression::=を参照)
(segment_attributes_clause::=、table_compression::=、 index_org_table_clause::=、LOB_storage_clause::=、varray_col_properties::=を参照)
(using_index_clause::=、exceptions_clause::=を参照)
(create_index::=、index_properties::=を参照)
(「CREATE
INDEX
」の項にあるglobal_partitioned_index::=とlocal_partitioned_index::=、およびindex_attributes::=を参照。domain_index_clause
は、using_index_clause
ではサポートされていません。)
(physical_attributes_clause::=、logging_clause::=、key_compression::=を参照。parallel_clause
は、using_index_clause
ではサポートされていません。)
ALTER
TABLE
文の多くの句の機能は、CREATE
TABLE
文での機能と同じです。これらの句の詳細は、「CREATE TABLE」を参照してください。
表が含まれているスキーマを指定します。schema
の指定を省略した場合、表は自分のスキーマ内にあるとみなされます。
変更する表の名前を指定します。
注意
1つ以上のマテリアライズド・ビューのマスター表となっている表を変更した場合、マテリアライズド・ビューには |
一時表の変更、一時表内の列の削除または一時表の名前の変更を実行できます。ただし、一時表に対して次のことはできません。
LOB_storage_clause
の句の指定: TABLESPACE
、storage_clause
、logging_clause
、allocate_extent_clause
またはdeallocate_unused_clause
physical_attributes_clause
、nested_table_col_properties
、parallel_clause
、allocate_extent_clause
、deallocate_unused_clause
または索引構成表(IOT)句の指定
logging_clause
の指定
MOVE
の指定
外部表の列を追加、削除または変更できます。ただし、外部表に対して次のことはできません。
LONG
、LOBまたはオブジェクト型の列の追加、または外部表の列のデータ型をこれらのデータ型のいずれかに変換
logging_clause
の指定
MOVE
の指定
alter_table_clauses
を使用すると、データベースの表を変更できます。
physical_attributes_clause
を使用すると、PCTFREE
、PCTUSED
およびINITRANS
パラメータの値と記憶特性を変更できます。これらのパラメータおよび特性の詳細は、「physical_attributes_clause」および「storage_clause」を参照してください。
物理属性の変更には、次の制限事項があります。
PCTUSED
パラメータは、索引構成表の索引セグメントに対して指定できません。
PCTUSED
設定の変更は無視されます。PCTFREE
設定を変更した場合、その変更をセグメントに割当て済のブロックに実装するには、DBMS_REPAIR.SEGMENT_FIX_STATUS
プロシージャを実行する必要があります。
この句で指定する値が表に与える影響を次に示します。
modify_table_default_attrs
を使用してください。
FOR
PARTITION
句とともにmodify_table_default_attrs
を使用してください。
logging_clause
を使用すると、表のロギング属性を変更できます。また、logging_clause
では、後続のALTER
TABLE
... MOVE
およびALTER
TABLE
... SPLIT操作のログを記録するかどうかも指定します。
modify_table_default_attrs
句とともにこの句を使用した場合、パーティション表のロギング属性が影響を受けます。
参照:
|
table_compression
句は、ヒープ構成表に対してのみ有効です。この句を使用すると、ディスクおよびメモリーの使用量を削減するために、データ・セグメントを圧縮するかどうかを指定できます。この句のセマンティクスの詳細および表の圧縮を使用したオブジェクトの作成方法の詳細は、「CREATE
TABLE
」の「table_compression」を参照してください。
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」を参照してください。
allocate_extent_clause
を使用すると、表、パーティション、サブパーティション、オーバーフロー・データ・セグメント、LOBデータ・セグメントまたはLOB索引に新しいエクステントを明示的に割り当てることができます。
一時表、レンジ・パーティション表またはコンポジット・パーティション表にエクステントを割り当てることはできません。
deallocate_unused_clause
を使用すると、表、パーティション、サブパーティション、オーバーフロー・データ・セグメント、LOBデータ・セグメントまたはLOB索引の最後にある未使用領域の割当てを明示的に解除できます。解放された領域は、表領域の他のセグメントから利用できます。
shrink_clauseを使用すると、表、索引構成表またはそのオーバーフロー・セグメント、索引、パーティション、サブパーティション、LOBセグメント、マテリアライズド・ビューまたはマテリアライズド・ビュー・ログの領域を手動で縮小できます。この句は、自動セグメント管理を使用した表領域のセグメントに対してのみ有効です。デフォルトでは、セグメントが縮小されて最高水位標が調整され、再生領域がすぐに解放されます。
セグメントの縮小では、行移動が必要です。したがって、この句を指定する前に、縮小するオブジェクトの行移動を使用可能にする必要があります。また、アプリケーションでROWIDに基づいたトリガーを使用している場合、この句を発行する前にこのトリガーを使用禁止にする必要があります。
COMPACT
を指定すると、セグメント領域のデフラグのみが行われ、後で領域を解放できるように表の行が縮小されます。最高水位標の再調整および領域の解放は、すぐに行われません。操作を完了するには、後で別のALTER
TABLE
... SHRINK
SPACE
文を発行する必要があります。この句は、1回の長い手順のかわりに2回の短い手順で縮小操作を実行する場合に便利です。
索引または索引構成表では、ALTER
[INDEX
| TABLE
] ... SHRINK
SPACE
COMPACT
を指定することは、ALTER
[INDEX
| TABLE
] ... COALESCE
を指定することと同じです。shrink_clause
はカスケード実行できます(次のCASCADE
を参照)。また、結合操作の場合よりセグメントを高密度に圧縮できるため、パフォーマンスが向上します。ただし、未使用領域を解放しない場合は、適切なCOALESCE
句を使用します。
CASCADE
を指定すると、table
のすべての依存オブジェクト(索引構成表の2次索引を含む)に対して同じ操作を実行できます。
shrink_clause
には、次の制限事項があります。
ALTER
TABLE
文で、この句と別の句を組み合せて使用することはできません。この句は、クラスタ、クラスタ化表またはLONG
列を含むすべてのオブジェクトには指定できません。
CASCADE
を指定しても、この句では索引構成表のマッピング表を縮小できません。
ON
COMMIT
マテリアライズド・ビューのマスター表は縮小できません。ROWIDマテリアライズド・ビューは、縮小操作の実行後に再構築する必要があります。
CACHE
句およびNOCACHE
句のセマンティクスは、CREATE
TABLE
文およびALTER
TABLE
文で同じです。これらの句の詳細は、「CREATE
TABLE
」の「CACHE | NOCACHE | CACHE READS」を参照してください。ALTER
TABLE
文でこれらの句をいずれも省略した場合、既存の値は変更されません。
upgrade_table_clause
は、オブジェクト表およびオブジェクト列を含むリレーショナル表に対して有効です。この句を使用すると、ターゲットとなる表のメタデータが参照される各型の最新バージョンに準拠する型に変換されます。表が有効な場合、表のメタデータは変更されないままとなります。
この句の中では、object_type_col_properties
をcolumn_properties
句として指定できません。
INCLUDING
DATA
を指定すると、表のデータを型の最新バージョンの形式に変換できます。column_propertiesおよびLOB_partition_storageを使用して表を更新する間に、新しいすべての列の記憶域を定義できます。これはデフォルトです。
ALTER
TYPE
文のdependent_handling_clause
にCASCADE
INCLUDING
TABLE
DATA
を指定すると、型の更新時に表のデータを変換できます。この句の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。表が古いバージョンの型に基づくデータを含むかどうかを確認するには、USER_TAB_COLUMNS
データ・ディクショナリ・ビューのDATA_UPGRADED
列を参照します。
NOT
INCLUDING
DATA
を指定すると、列データは変更されません。
表がOracle8リリース8.0.xのイメージ・フォーマットを含む場合、NOT
INCLUDING
DATA
を指定できません。表がこのような列を含むかどうかを確認するには、USER_TAB_COLUMNS
データ・ディクショナリ・ビューのV80_FMT_IMAGE
列を参照します。
参照:
|
records_per_block_clause
を使用すると、1ブロックに格納できるレコード数を制限するかどうかを指定できます。この句によって、この後、表に作成されるビットマップ索引はできるだけ縮小されます。
record_per_block_clause
には、次の制限事項があります。
MINIMIZE
またはNOMINIMIZE
のいずれも指定できません。まず、ビットマップ索引を削除する必要があります。
MINIMIZE
を指定すると、表の各ブロックの最大レコード数を計算し、ブロックに含まれるレコード数がその数を超えないように挿入操作を制限できます。
MINIMIZE
を指定する前に、表にデータのサンプル・セットを定義しておくことをお薦めします。表の圧縮を使用している場合(「table_compression」を参照)、圧縮データのサンプル・セットは、すでに表に存在している必要があります。
MINIMIZE
は、空の表に対して指定できません。
NOMINIMIZE
を指定すると、MINIMIZE
機能が無効になります。これはデフォルトです。
親表でも行の移動が無効化されている場合を除き、参照パーティション表で行の移動を無効にすることはできません。それ以外では、この句のセマンティクスは、CREATE
TABLE
文およびALTER
TABLE
文で同じです。これらの句の詳細は、「CREATE
TABLE
」の「row_movement_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
句を使用すると、表の名前をnew_table_name
に変更できます。
この句を使用した場合、依存するすべてのマテリアライズド・ビューは無効になります。マテリアライズド・ビューの詳細は、「CREATE MATERIALIZED VIEW」および『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
表にドメイン索引が定義されている場合、ODCIIndexAlter()メソッドがRENAME
オプション付きで起動されます。この操作によって、索引タイプ・メタデータと実表の間の対応が確立されます。
READ
ONLY
を指定すると、表を読取り専用モードに設定できます。表がREAD
ONLY
モードの場合は、表に影響するDML文またはSELECT
... FOR
UPDATE
文は発行できません。表データを変更しないDDL文は発行できます。表がREAD
ONLY
モードの場合は、表に関連する索引の操作は可能です。
READ
WRITE
を指定すると、読取り専用表を読取り/書込みモードに戻すことができます。
REKEY
句を使用すると、新しい暗号化キーの生成または異なるアルゴリズム間の切替えができます。この操作は、表内のLOB列を含むすべての暗号化された列が再度暗号化された後にのみ戻されます。
この句を使用すると、既存の索引構成表の特性の一部を変更できます。索引構成表は、主キーによってソートされたデータを保持する表であり、主キーに基づくアクセスおよび操作には最適です。詳細は、「CREATE
TABLE
」の「index_org_table_clause」を参照してください。
この句は、table
が索引構成されている場合のみ有効です。COMPRESS
を指定すると、ブロックを再利用するために、索引構成表の主キー索引ブロックを空きブロックに結合できます(可能な場合)。この句はparallel_clause
とあわせて指定できます。
「CREATE
TABLE
」の「PCTTHRESHOLD integer」を参照してください。
「CREATE
TABLE
」の「INCLUDING column_name」を参照してください。
overflow_attributes
を使用すると、索引構成表に対して、変更するオーバーフロー・データ・セグメントの物理記憶域属性およびロギング属性を指定できます。この句に指定するパラメータの値は、オーバーフロー・データ・セグメントにのみ適用されます。
add_overflow_clause
を使用すると、指定した索引構成表にオーバーフロー・データ・セグメントを追加できます。また、この句を使用すると、エクステントを明示的に割り当てたり、既存のオーバーフロー・セグメントから未使用領域の割当てを解除することができます。
STORE
IN
tablespace
句を使用すると、オーバーフロー・セグメント全体に対する表領域の記憶域を指定できます。PARTITION
句を使用すると、パーティションによるセグメントに対する表領域の記憶域を指定できます。
パーティション化された索引構成表の場合、次の点に注意してください。
PARTITION
を指定しない場合、それぞれのパーティションに自動的にオーバーフロー・セグメントが割り当てられます。これらのセグメントの物理属性は表のレベルから継承されます。
パーティションの順番を確認するには、USER_IND_PARTITIONS
ビューのPARTITION_NAME
およびPARTITION_POSITION
列を問い合せます。
TABLESPACE
を指定していないパーティションがある場合、表に対して指定された表領域が使用されます。表レベルでTABLESPACE
を指定していない場合は、そのパーティションの主キー索引セグメントの表領域が使用されます。
segment_attributes_clause
では、次のことに注意します。
physical_attributes_clause
のOPTIMAL
パラメータを指定できません。
ALTER
TABLE
... MOVE
... OVERFLOW
を使用して、セグメントを異なる表領域に移動します。パーティション表の場合、ALTER
TABLE
... MODIFY
DEFAULT
ATTRIBUTES
... OVERFLOW
を使用して、オーバーフロー・セグメントのデフォルト表領域を変更します。
table
がローカル管理表領域にある場合、表領域のセグメント属性の中にはデータベースによって自動的に管理されるものがあるため、制限事項が追加されます。
alter_overflow_clause
を使用すると、既存の索引構成表のオーバーフロー・セグメントの定義を変更できます。
add_overflow_clause
の制限事項は、alter_overflow_clause
にも適用されます。
alter_mapping_table_clauses
は、table
が索引構成されており、マッピング表を持つ場合にのみ有効です。
allocate_extent_clause
を使用すると、新しいエクステントを索引構成表のマッピング表の終わりに割り当てることができます。この句の詳細は、「allocate_extent_clause」を参照してください。
deallocate_unused_clause
を指定すると、索引構成表のマッピング表の終わりにある未使用領域の割当てを解除できます。この句の詳細は、「deallocate_unused_clause」を参照してください。
マッピング表またはそのパーティションに関する他のすべての属性は、自動的に管理されます。
COALESCE
を指定すると、ブロックを再利用するために、索引構成表の管理に使用される索引の索引ブロックの内容を空きブロックにマージできます(可能な場合)。この句とshrink_clauseの関係については、「shrink_clause」を参照してください。
この句は、XMLType
表を変更する場合にのみ、alter_table_properties
の一部として有効です。詳細は、「alter_XMLSchemas_clause」を参照してください。
これらの句を指定すると、列を追加、削除または変更できます。
add_column_clause
を使用すると、表に列を追加できます。
既存の表に列を追加するときの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
は列を追加する場合、列を作成する場合と同じセマンティクスを持ちます。
列の追加には、次の制限事項があります。
TABLESPACE
のみです。
table
に行がある場合、DEFAULT
句を指定しないかぎり、NOT
NULL
制約のある列を追加できません。
DEFAULT
句を使用すると、新しい列にデフォルト値を指定したり、既存の列に新しいデフォルト値を指定することができます。後続のINSERT
文で列に値を指定しない場合、この値が自動的に割り当てられます。表に新しい列を追加する場合、デフォルト値を指定すると、その表のすべての行にデフォルトの列値が挿入されます。
デフォルト値のデータ型は、列に対して指定したデータ型と一致している必要があります。また、列には、このデフォルト値を保持できる十分な大きさが必要です。
列のデフォルト値には、次の制限事項があります。
DEFAULT
式に、他の列、疑似列CURRVAL
、NEXTVAL
、LEVEL
およびROWNUM
、または完全には指定されていない日付定数に対する参照を指定することはできません。
inline_constraint
を使用すると、新しい列に制約を追加できます。
inline_ref_constraintを使用すると、新しいREF
型の列を定義できます。制約の型の構文や制限などの詳細は、「constraint」を参照してください。
column_properties
の句を使用すると、オブジェクト型、ネストした表、VARRAYまたはLOB列の記憶特性を指定できます。
この句は新しいオブジェクト型列や属性を追加する場合にのみ有効です。modify_column_clauses
を使用すると、既存のオブジェクト型列のプロパティを変更できます。この句のセマンティクスは、特に指定がないかぎり、CREATE
TABLE
と同じです。
object_type_col_properties
句を使用すると、新しいオブジェクト列、オブジェクト属性、コレクション列およびコレクション属性の要素に対する記憶特性を指定できます。
この句の詳細は、「CREATE
TABLE
」の「object_type_col_properties」を参照してください。
nested_table_col_properties
句を使用すると、ネストした表に対して別の記憶特性を指定し、そのネストした表を索引構成表として定義できます。ネストした表の型を持つ列または列属性付きで表を作成する場合は、この句を挿入する必要があります。(この句の中で、親オブジェクト表に対する場合と同じ働きをする句は、ここでは繰り返されません)。
nested_item
には、型がネストした表である列(または、ネストした表のオブジェクト型の最上位の属性)の名前を指定します。ネストした表がマルチレベル・コレクションで、内部のネストした表には名前が割り当てられていない場合、nested_item
名のかわりにCOLUMN_VALUE
を指定します。
storage_table
には、nested_item
の行を含む表の名前を指定します。記憶表は、親表と同じスキーマ、および親表と同じ表領域内に作成されます。
ネストした表の列のプロパティには、次の制限事項があります。
varray_col_properties
を使用すると、VARRAY型のデータが格納されているLOBに対して、別の記憶特性を指定できます。この句を指定する場合、インラインに格納できるほど小さい値でも、VARRAYは必ずLOBに格納されます。varray_item
がマルチレベル・コレクションの場合、varray_item
内にネストされたすべてのコレクション項目は、常にvarray_item
と同じLOBに格納されます。
VARRAY列に対し、LOB_parameters
の一部としてTABLESPACE
を指定することはできません。VARRAYに対するLOB表領域のデフォルトは、表を含む表領域になります。
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_parameters
のパラメータは、TABLESPACE
のみです。
新しいLOB列を追加するときに、CACHE
READS
でロギング属性を指定できます。作成時にLOB列を定義するときにも指定できます。この句の詳細は、「CREATE
TABLE
」の句「CACHE READS」を参照してください。
STORAGE
IN
ROW
は、一度設定すると変更できません。したがって、この句はmodify_col_properties
句の一部には指定できません。ただし、新しい列を追加するとき(add_column_clause)、または表を移動するとき(move_table_clause)に、この設定を変更することはできます。この句の詳細は、「CREATE
TABLE
」の句「ENABLE STORAGE IN ROW」を参照してください。
modify_col_properties
句を使用して、設定後のCHUNK
の値を変更することはできません。作成後の列に異なるCHUNK
値が必要な場合は、ALTER
TABLE
… MOVE
を使用します。詳細は、「CREATE
TABLE
」の句「CHUNK integer」を参照してください。
BasicFile LOBについては、データベースが自動UNDOモードで稼働している場合、旧バージョンのLOBを保持するには、PCTVERSION
ではなくRETENTION
を指定します。この句によって、PCTVERSION
のこれまでの設定が上書きされます。このパラメータの詳細は、「CREATE
TABLE
」の句「LOB_retention_clause」を参照してください。
データベースが自動UNDOモードで稼働している場合、BasicFile LOBに対してこの句を使用するとLOBの空きリスト・グループ数を指定できます。この句によって、FREELIST
GROUPS
のこれまでの設定が上書きされます。このパラメータの詳細は、「CREATE
TABLE
」の句「FREEPOOLS integer」を参照してください。SecureFile LOBの場合は、データベースはこのパラメータを無視します。
1つのALTER
TABLE
文では、LOB_partition_storage
のリストを1つのみ指定できます。すべてのLOB_storage_clauses
およびvarray_col_properties
句は、LOB_partition_storage
句のリストの前に指定する必要があります。制限を含むこの句の詳細は、「CREATE
TABLE
」の句「LOB_partition_storage」を参照してください。
この句の詳細は、「CREATE
TABLE
」の句「XMLType_column_properties」を参照してください。
この句の詳細は、「CREATE
TABLE
」の句「XMLSchema_spec」を参照してください。
この句を使用すると、1つ以上のXMLSchema指定をXMLType表に追加または削除できます。
ALLOW
| DISALLOW
句は、BINARY
XML
記憶域を指定したXMLType
列に対してのみ有効です。これらの句の詳細は、「CREATE
TABLE
」の「XMLSchema_spec」を参照してください。
参照:
LOB_segname
およびLOB_parameters
句の詳細は、「LOB_storage_clause」を参照してください。
XMLType
列の例は、「XMLType列の例:」を参照してください。XMLSchemaの作成例は、「SQL文でのXMLの使用方法」を参照してください。
XMLType
列と表およびXMLSchemaの作成の詳細は、『Oracle XML DB開発者ガイド』を参照してください。
modify_column_clauses
を使用すると、既存の列のプロパティや既存のオブジェクト型の列の代替性を変更できます。
この句を使用すると、列のプロパティを変更できます。この句で省略した列定義のオプション部分(データ型、デフォルト値、制約)は、変更されません。
列のすべての行がNULLの場合、列のデータ型を変更できます。ただし、マテリアライズド・ビューのコンテナ表にある列のデータ型を変更した場合、それに対応するマテリアライズド・ビューが無効になります。
参照整合性制約の外部キーの一部として、文で列が指定されている場合のみ、データ型を省略できます。参照整合性制約の参照キーに対応する列のデータ型が、その列に自動的に割り当てられます。
すべての行にNULL値が存在するどうかにかかわらず、文字型またはRAW型の列のサイズ、または数値型の列の精度は、いつでも大きくすることができます。また、変更を行ってもデータを変更しなくて済む場合、列のデータ型のサイズを小さくすることができます。既存のデータがスキャンされ、新しいサイズの制限を超えるデータが存在する場合はエラーが戻されます。
DATE
列をTIMESTAMP
またはTIMESTAMP
WITH
LOCAL
TIME
ZONE
に変更できます。すべてのTIMESTAMP
WITH
LOCAL
TIME
ZONE
をDATE
列に変更できます。
表が空の場合、日時列または期間列の先行フィールドまたは秒の小数部を増やすことも減らすこともできます。表が空でない場合、日時列または期間列の先行フィールドまたは秒の小数部を増やすことのみできます。
LONG
列はCLOB
またはNCLOB
列に、LONG
RAW
列はBLOB
列に変更できます。
LONG
列で定義されたすべての制約およびトリガーを継承します。いずれかの制約を変更する場合、後続のALTER
TABLE
文で変更する必要があります。
LONG
列で定義されている場合、列をLOBに変更する前に削除する必要があります。
参照:
LONG
からLOBへの移行の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。
CHAR
およびVARCHAR2
列の場合、CHAR
(元々バイトで指定されていた列に対するキャラクタ・セマンティクス)またはBYTE
(元々文字で指定されていた列に対するバイト・セマンティクス)を指定すると、長さセマンティクスを変更できます。既存の列の長さを確認するには、ALL_TAB_COLUMNS
、USER_TAB_COLUMNS
またはDBA_TAB_COLUMNS
データ・ディクショナリ・ビューのCHAR_USED
列を問い合せます。
この句は、暗号化された列の復号化、暗号化されていない列の暗号化、または暗号化された列のSALT
オプションを変更するために使用します。
encryption_spec
を指定して既存の列を暗号化する場合は、同じ表内で暗号化されている他の列の暗号化仕様と一致させることが必要です。encryption_spec
の詳細や制限事項は、「CREATE
TABLE
」のencryption_spec句を参照してください。
新規または既存の列がLOB列の場合は、列をSecureFile LOBとして格納する必要があり、SALT
オプションは指定できません。
この句を使用すると、変更する列に対する制約を追加できます。既存の列に設定されている既存の制約の状態を変更する場合は、constraint_clauses
を使用します。
LOB_storage_clause
は、LONG
列をLOB列に変換する場合のみ、modify_col_properties
内で使用できます。この場合のみ、LOB_storage_clause
を使用して列に対するLOB記憶域を指定できます。ただし、LOB_item
。LOB_storage_clause
で省略したすべての属性には、デフォルトのLOB記憶域属性が適用されます。
この句は、XMLType
表のmodify_col_properties
内でのみ有効です。詳細は、「alter_XMLSchemas_clause」を参照してください。
列のプロパティの変更には、次の制限事項があります。
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_clause
をmodify_col_properties
の一部として指定できます。
ROWID
データ型の列は指定できませんが、UROWID
型の列は指定できます。
REF
に変更できません。この句を使用すると、既存のオブジェクト型列の代替性を設定または変更できます。
FORCE
キーワードを指定すると、型ID情報またはサブタイプ属性に関するデータが含まれる非表示列が削除されます。オブジェクト型の列または属性がFINAL
でない場合、FORCE
を指定する必要があります。
列の代替性の変更には、次の制限事項があります。
ALTER
TABLE
文には、この句を1度のみ指定できます。
IS
OF
TYPE
構文を使用して列を作成または追加した場合は、この句を指定できません。この構文によって、オブジェクト列や属性で使用できるサブタイプの範囲が、特定のサブタイプに制限されます。IS
OF
TYPE
構文の詳細は、「CREATE
TABLE
」の「substitutable_column_clause」を参照してください。
FINAL
以外)が含まれる場合、FORCE
を指定しても、VARRAY列をNOT
SUBSTITUTABLE
に変更できません。
drop_column_clause
を使用すると、不要になった列を削除したり、将来、システム・リソースへの要求が少なくなったときに削除するように列にマークを付けることによって、データベースの領域を解放できます。
BFILE
列を削除すると、その列に格納されたロケータのみ削除され、ロケータによって参照されるファイルは削除されません。
INCLUDING
列として定義した列を削除(または未使用とマーク)すると、この列の直前に格納された列が新しいINCLUDING
列になります。
SET
UNUSED
を使用すると、1つ以上の列が未使用としてマーク付けされます。内部ヒープ構成表の場合、この句を指定すると、対象の列は表の各行から実際には削除されません。これらの列が使用しているディスク領域はリストアされません。このため、応答時間はDROP
句を使用した場合よりも短縮されます。
外部表内の列に対してこの句を指定すると、句は透過的にALTER
TABLE
... DROP
COLUMN
文に変換されます。その理由は、外部表に対する操作はメタデータのみの操作であるため、2つのコマンドのパフォーマンスに違いがないためです。
UNUSED
のマークが付いた列を持つすべての表は、データ・ディクショナリ・ビューUSER_UNUSED_COL_TABS
、DBA_UNUSED_COL_TABS
およびALL_UNUSED_COL_TABS
で参照できます。
未使用列のデータは表の行に残っていますが、この列は削除されたものとして扱われます。UNUSED
のマークが付けられた列にはアクセスできなくなります。SELECT
*
問合せでも、未使用列からデータを取り出すことはできません。また、UNUSED
のマークが付けられた列の名前および型は、DESCRIBE
コマンドでは表示されず、未使用列と同じ名前の新しい列を表に追加できます。
注意:
これらの列を実際に削除するまでは、表当たり1000列の制限に対して、これらの列もカウント対象になります。ただし、すべてのDDL文と同様に、この句の結果をロールバックすることはできません。
また、 |
DROP
を指定すると、表のそれぞれの行から、対象となる列に関連付けられた列記述子およびデータを削除できます。特定の列を明示的に削除した場合、対象の表でUNUSED
のマークが付いている列もすべて同時に削除されます。
列データを削除した場合、次のものが削除されます。
FORCE
オプションによって、関連付けは解除され、その統計タイプを使用して収集したすべての統計情報は削除されます。DROP
UNUSED
COLUMNS
を指定すると、未使用とマークされているすべての列を表から削除できます。表の未使用の列からディスク領域を回収する場合に、この文を使用します。表に未使用の列がない場合でも、エラーは戻されません。
未使用として設定または削除する1つ以上の列を指定します。列を1つのみ指定する場合にかぎり、COLUMN
キーワードを使用します。列リストを指定する場合、リストには重複する列を指定できません。
CASCADE
CONSTRAINTS
を指定すると、削除する列に定義されている主キーおよび一意キーを参照する外部キー制約をすべて削除したり、削除する列に定義されているすべての複数列制約を削除することができます。他の表の列、または対象である表の他の列が参照している制約がある場合は、CASCADE
CONSTRAINTS
を指定する必要があります。CASCADE CONSTRAINTSを指定しない場合、その文は異常終了し、エラーが戻されます。
INVALIDATE
キーワードはオプションです。ビュー、トリガー、ストアド・プログラム・ユニットなどのすべての依存オブジェクトが自動的に無効になります。オブジェクトの無効化は再帰的プロセスです。したがって、すべての直接的な依存オブジェクトおよび間接的な依存オブジェクトが無効になります。ただし、データベースでは、リモート依存性をローカル依存性と別に管理しているため、ローカル依存性のみが無効になります。
この文によって無効となったオブジェクトは、次に参照された際に自動的に再検証されます。オブジェクトを参照する前に、オブジェクトに存在するエラーは、すべて修正しておく必要があります。
CHECKPOINT
を指定すると、integer
行を処理した後にDROP
COLUMN
操作のチェックポイントが適用されます。integer
はオプションであり、1以上である必要があります。integer
が表の行数より大きい場合、すべての行が処理された後にチェックポイントが適用されます。integer
を指定しない場合、デフォルトの512が設定されます。チェックポイントは、DROP
COLUMN
操作中に蓄積されたUNDOログの量を削減し、UNDO領域の不足を回避します。ただし、チェックポイントが適用された後にこの文が中断された場合、表は使用禁止の状態のままになります。表が使用できない間、その表に対して実行可能な操作は、DROP
TABLE
、TRUNCATE
TABLE
およびALTER
TABLE
DROP
... COLUMNS
CONTINUE
(後述)のみです。
この句は列データを削除しないため、SET
UNUSED
と同時に使用できません。
DROP
COLUMNS
CONTINUE
を指定すると、中断されたところから列削除操作を続行できます。表が無効な状態にあるときにこの文を発行すると、エラーになります。
列の削除には、次の制限事項があります。
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
を指定しても主キー列は削除できません。
drop_column_clause
のすべての句は、すべての操作のために圧縮された表に対して有効です。詳細は、「table_compression」のセマンティクスを参照してください。
REF
列からはSCOPE
表制約およびWITH
ROWID
制約を削除できません。
rename_column_clause
を使用すると、table
の列名を変更できます。新しい列には、table
内の他の列と同じ名前を指定しないでください。
列名を変更すると、依存オブジェクトは次のように処理されます。
RENAME
オプション付きで起動されます。この操作によって、索引タイプ・メタデータと実表の間の対応が確立されます。
列名の変更には、次の制限事項があります。
column_clauses
と同時に使用することはできません。
modify_collection_retrieval
を使用すると、データベースからコレクション型の項目が取り出されたときの戻り値を変更できます。
ネストした表型またはVARRAY型の列修飾属性の名前を指定します。
問合せの結果として何を戻り値とするかを指定します。
modify_LOB_storage_clause
を使用すると、LOB_item
の物理属性を変更できます。各modify_LOB_storage_clause
に対して、LOB_item
を1つのみ指定できます。
以降の項では、modify_LOB_parametersに固有のパラメータのセマンティクスについて説明します。この項で特に指定がない場合は、残りのLOBパラメータのセマンティクスは、表の作成時と表の変更時で同じです。詳細は、この項の最後にある制限と、「CREATE
TABLE
」の句「LOB_storage_parameters」を参照してください。
この句の詳細は、「CREATE
TABLE
」の句「PCTVERSION integer」を参照してください。
データベースが自動UNDOモードで稼働している場合、旧バージョンのLOBを保持するには、PCTVERSION
ではなくRETENTION
を指定します。この句によって、PCTVERSION
のこれまでの設定が上書きされます。
データベースが自動UNDOモードで稼働している場合、BasicFile LOBに対してこの句を使用するとLOBの空きリスト・グループ数を指定できます。この句によって、FREELIST
GROUPS
のこれまでの設定が上書きされます。このパラメータの詳細は、「CREATE
TABLE
」の句「FREEPOOLS integer」を参照してください。SecureFile LOBの場合は、データベースはこのパラメータを無視します。
この句は、BasicFile LOBにのみ適用されます。SecureFile LOBには適用されません。REBUILD
FREEPOOLS
句を指定すると、LOB列から古いバージョンのデータがすべて削除されます。この句は、LOBセグメント内に保持されている古いバージョンの領域をすべて削除し、その領域を新しいLOBデータがすぐに使用できるように解放する場合に有効です。
この句は、SecureFile LOBに対してのみ有効です。KEEP_DUPLICATES
は、LOB重複除外を無効にします。DEDUPLICATE
は、LOB重複除外を有効にします。セグメント内のすべてのLOBが読み取られ、一致するLOBがある場合は重複が除外されてから戻されます。
この句は、SecureFile LOBに対してのみ有効です。COMPRESS
は、セグメント内のすべてのLOBを圧縮して戻します。NOCOMPRESS
は、セグメント内のすべてのLOBを圧縮解除して戻します。
LOB暗号化は、一般に列の暗号化と同じセマンティクスを持ちます。詳細は、「ENCRYPT encryption_spec | DECRYPT」を参照してください。
CACHE
またはNOCACHE
からCACHE
READS
へ、またはCACHE
READS
からCACHE
またはNOCACHE
へLOB列を変更するときに、ロギング属性を変更できます。LOGGING
またはNOLOGGING
を指定しない場合、LOB列の現行ロギング属性がデフォルトになります。CACHE
、NOCACHE
またはCACHE
READS
を指定しない場合、Oracle Databaseは、LOB属性の既存の値を保持します。
LOB記憶域の変更には、次の制限事項があります。
storage_clause
のINITIAL
パラメータの値は変更できません。
allocate_extent_clause
とdeallocate_unused_clause
の両方を指定することはできません。
PCTVERSION
パラメータとRETENTION
パラメータの両方を指定することはできません。
shrink_clause
は、SecureFile LOBに対して指定できません。alter_varray_col_properties
を使用すると、VARRAYが格納されている既存のLOBの記憶特性を変更できます。
LOB_parameters
のTABLESPACE
句は、この句の一部として指定できません。VARRAYに対するLOB表領域のデフォルトは、表を含む表領域になります。
REKEY
句は、データベースで新しい暗号化キーを生成します。表内の暗号化されている列はすべて、新しいキーを使用して再度暗号化されます。その際encryption_spec
のUSING
句を指定すると、新しい暗号化アルゴリズムが使用されます。このALTER
TABLE
文で、この句と別の句を組み合せて使用することはできません。
constraint_clauses
を使用すると、アウトライン宣言を使用して新しい制約を追加、既存の制約の状態を変更、および制約を削除できます。アウトライン制約およびconstraint_state
のすべてのキーワードとパラメータの詳細は、「constraint」を参照してください。
ADD
句を使用すると、アウトライン制約またはアウトラインREF
制約を表に追加できます。
MODIFY
CONSTRAINT
句を使用すると、既存の制約の状態を変更できます。
制約の変更には、次の制限事項があります。
NOT
DEFERRABLE
制約は、INITIALLY
DEFERRED
には変更できません。
NOT
NULL
制約は変更できません。また、参照パーティション表の参照制約のパーティション化状態は変更できません。RENAME
CONSTRAINT
句を使用すると、table
の既存の制約名を変更できます。新しい制約名は、同一スキーマ内にあるオブジェクトの既存の制約と同じ名前にはできません。制約に依存するすべてのオブジェクトは、引き続き有効です。
drop_constraint_clause
を使用すると、データベースの整合性制約を削除できます。制約の適用を中止し、データ・ディクショナリから制約が削除されます。各drop_constraint_clause
には、制約を1つのみ指定できますが、1つの文の中では、複数のdrop_constraint_clauses
を指定できます。
参照パーティション表の外部キー列のNOT
NULL
制約は削除できません。また、参照パーティション表の参照制約のパーティション化は削除できません。
PRIMARY
KEY
を指定すると、table
の主キー制約を削除できます。
UNIQUE
を指定すると、指定した列の一意制約を削除できます。
ビットマップ結合索引が定義されている列から主キー制約または一意制約を削除すると、索引は無効になります。ビットマップ結合索引の詳細は、「CREATE INDEX」を参照してください。
CONSTRAINT
constraint
を指定すると、主キー制約または一意制約以外の整合性制約を削除できます。
CASCADE
を指定すると、削除する整合性制約に依存するその他の整合性制約もすべて削除できます。
KEEP
INDEX
またはDROP
INDEX
を指定すると、主キーまたは一意制約の適用に使用する索引を残すか削除するかを指定できます。
制約の削除には、次の制限事項があります。
CASCADE
句を使用してください。CASCADE
を省略すると、外部キーによって参照される主キー制約および一意制約は削除されません。
CASCADE
句を使用しても)削除できません。
REF
列の参照整合性制約を削除した場合、REF
列の有効範囲には参照先の表が含まれたままになります。
REF
列の有効範囲は削除できません。alter_external_table
句を使用すると、外部表の特性を変更できます。この句は、外部データには影響しません。parallel_clause
、enable_disable_clause
、external_data_properties
およびREJECT
LIMIT
句の構文およびセマンティクスは、CREATE
TABLE
の内容と同じです。「CREATE
TABLE
」の「external_table_clause」を参照してください。
この句を使用すると、後続の問合せで、アクセス・ドライバが外部表に含まれる行を検証する方法を指定できます。デフォルトはPROJECT
COLUMN
ALL
で、この場合、アクセス・ドライバは、選択されている列にかかわらず、すべての列の値を処理し、列のエントリが有効な行のみを検証します。いずれかの列の値でデータ型変換エラーなどのエラーが発生すると、その列がSELECT構文のリスト内で参照されていない場合でも、行が拒否されます。PROJECT
COLUMN
REFERENCED
を指定すると、アクセス・ドライバはSELECT構文のリスト内の列のみを処理します。
ALL
設定の場合、一貫した結果セットが保証されます。REFERENCED
設定の場合、後続の問合せで参照される列の数に応じて、戻される行の数が異なる可能性がありますが、ALL
設定よりも高速です。後続の問合せで外部表のすべての列が選択されている場合、2つの設定の動作は同じになります。
外部表の変更には、次の制限事項があります。
LONG
、VARRAYまたはオブジェクト型の列は外部表に追加できません。また、外部表の列のデータ型を、これらの型に変更できません。
ここで説明する句は、パーティション表にのみ適用されます。1つのALTER
TABLE
文の中では、パーティション操作を他のパーティション操作または実表での操作と組み合せて使用することはできません。
表パーティションの変更には、次の注意事項があります。
table
にビットマップ結合索引が定義されている場合、table
のパーティションの変更操作を実行すると、索引にUNUSABLE
のマークが付けられます。
alter_table_partitioning
句は、modify_table_default_attrs
、move_table_[sub]partition
、truncate_partition_subpart
およびexchange_partition_subpart
のみです。これらの操作は、参照パーティション表の子表に対してカスケードしません。これ以外のパーティション・メンテナンス操作は、参照パーティション表に対しては有効ではありませんが、参照パーティション表の親表に対しては指定できます。操作は、子の参照パーティション表にカスケードします。
関連するCONTEXT
ドメイン索引が含まれる表におけるパーティション操作の詳細は、『Oracle Textリファレンス』を参照してください。
ブロック・サイズが異なる表領域のパーティション化されたデータベース・エンティティの記憶域には、制限事項があります。これらの制限事項については、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。
modify_table_default_attrs
を使用すると、table
の属性に対する新しいデフォルト値を指定できます。文に指定した属性のみが影響を受けます。その後に作成するパーティションおよびLOBパーティションは、パーティションまたはLOBパーティションの作成時に明示的に上書きしないかぎり、この値を継承します。既存のパーティションおよびLOBパーティションは、この句の影響を受けません。
文の中で指定した属性のみが影響を受けます。指定されたデフォルト値は、個々のパーティションまたはLOBパーティションのレベルで指定された属性で上書きされます。
FOR
partition_extended_name
は、コンポジット・パーティション表にのみ適用されます。この句は、partition_extended_name
で指定されたパーティションの属性に新しいデフォルト値を指定します。その後に作成するパーティションのサブパーティションおよびLOBパーティションは、サブパーティションまたはLOBパーティションの作成時に明示的に上書きしないかぎり、この値を継承します。既存のサブパーティションは、この句の影響を受けません。
PCTTHRESHOLD
、key_compression
およびalter_overflow_clause
は、パーティション化された索引構成表にのみ有効です。
COMPRESS
キーワードの後にint型を指定することはできません。キー圧縮の長さは、表の作成時にのみ指定できます。
segment_attributes
句でPCTUSED
パラメータを指定できません。
次の場合にこの句を使用します。
SET
INTERVAL
()
を使用して、時間隔パーティションを無効にします。データベースは、作成されるレンジ・パーティションの上限として、作成済の時間隔パーティションの上限を使用し、既存の時間隔パーティションをレンジ・パーティションに変換します。
expr
には、有効な数値または期間式を指定します。
set_subpartition_template
句を使用すると、表パーティションに対するデフォルトのレンジ、リストまたはハッシュ・サブパーティション定義を作成したり、既存の定義を置き換えることができます。この句は、コンポジット・パーティション表に対してのみ有効です。この句によって、既存のサブパーティション・テンプレートは置き換えられます。既存のテンプレートがない場合は新規のテンプレートが作成されます。既存のサブパーティション、ローカル索引およびグローバル索引は影響を受けません。ただし、その後のパーティション化操作(追加操作やマージ操作)では、新規テンプレートが使用されます。
既存のサブパーティション・テンプレートを削除するには、ALTER
TABLE
table
SET
SUBPARTITION
TEMPLATE
()
を指定します。
「CREATE
TABLE
」の「サブパーティションのテンプレートの制限事項:」を参照してください。
modify_table_partition
句を使用すると、レンジ・パーティション、ハッシュ・パーティション、リスト・パーティションまたはシステム・パーティションの実際の物理属性を変更できます。そのパーティションの1つ以上のLOB項目の記憶域属性を任意に変更できます。物理属性(制限事項については後述)、ロギングおよび記憶域パラメータに対して、新しい値を指定できます。
すべてのタイプのパーティションについて、パーティションを変更した結果、使用不可能になったローカル索引の処理方法も指定できます。「UNUSABLE LOCAL INDEXES句」を参照してください。
パーティション化された索引構成表の場合、パーティションの変更時にマッピング表も同時に更新できます。「alter_mapping_table_clauses」を参照してください。
レンジ、リストおよびハッシュ表パーティションの操作に、次の制限事項が適用されます。
partition_attributes
句でshrink_clause
を使用すると、各パーティションのセグメントを縮小できます。この句の詳細は、「shrink_clause」を参照してください。
table
がコンポジット・パーティション化されている場合:
partition_attributes
の残りの句の動作は、パーティション表の作成時と同じです。詳細は、「CREATE
TABLE
」の「table_partitioning_clauses」を参照してください。この句を使用すると、レンジ・パーティションの特性を変更できます。
この句は、レンジ-レンジ・コンポジット・パーティションに対してのみ有効です。レンジ・サブパーティションをpartition
に追加できます。
この句は、レンジ-ハッシュ・コンポジット・パーティションに対してのみ有効です。add_hash_subpartition
句を使用すると、ハッシュ・サブパーティションをpartition
に追加できます。Oracle Databaseは、ハッシュ・ファンクションによってpartition
の他のサブパーティションから再ハッシュされた行を、新しいサブパーティションに移入します。ロード・バランシングを最適化する場合、サブパーティションの合計数は2の累乗にする必要があります。
partitioning_storage_clause
でサブパーティションに対して指定できる句は、TABLESPACE
句のみです。TABLESPACE
を指定しなかった場合、新しいサブパーティションはpartition
のデフォルトの表領域に格納されます。
選択したパーティションに対応するローカル索引パーティションが追加されます。
追加したパーティションに対応するローカル索引パーティションにUNUSABLE
のマークが付けられます。ヒープ構成表のすべての索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。
この句は、レンジ-リストおよびリスト-リスト・コンポジット・パーティションに対してのみ有効です。リスト・サブパーティションをpartition
に追加できます。ただし、DEFAULT
サブパーティションを作成していない場合にのみです。
list_values_clause
が必要です。また、list_values_clause
には、partition
のその他のサブパーティションには存在していない値を指定する必要があります。ただし、他のパーティションのサブパーティションで使用されている値は指定できます。
partitioning_storage_clause
でサブパーティションに対して指定できる句は、TABLESPACE
句および表の圧縮のみです。
表のすべてのローカル索引パーティションには、同じ値リストを持つサブパーティションも追加されます。表の既存のローカル索引パーティションおよびグローバル索引パーティションは影響を受けません。
パーティションにデフォルト・サブパーティションがすでに作成されている場合は、この句を指定できません。その場合、split_list_subpartition
句を使用して、デフォルト・パーティションを分割する必要があります。
COALESCE
SUBPARTITION
は、ハッシュ・サブパーティションにのみ適用されます。COALESCE
SUBPARTITION
を使用すると、最後のハッシュ・サブパーティションが選択され、その内容が1つ以上の残りのサブパーティション(ハッシュ・ファンクションが決定)に分散された後、選択されたサブパーティションが削除されます。
UNUSABLE
のマークが付けられます。ヒープ構成表のすべてのグローバル索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。
partition_attributes
でハッシュ・パーティションを変更する場合、allocate_extent_clause
およびdeallocate_unused_clause
のみを指定できます。パーティションのその他の属性は、表レベルのデフォルトから継承されます。ただし、TABLESPACE
は、作成時と同じ状態です。
リスト・パーティションを変更するときに使用できる句のセマンティクスは、レンジ・パーティションを変更するときと同じです。リスト・パーティションを変更する場合、次の句も使用できます。
これらの句は、コンポジット・パーティションを変更する場合のみ有効です。これらの句によって、表のローカル索引とグローバル索引が影響を受けることはありません。
ADD
VALUES
句を使用すると、partition
のpartition_value
リストが拡張され、追加した値が含まれます。追加するパーティションの値は、「CREATE
TABLE
」の句list_partitionsに示すすべての規則および制限事項に準拠する必要があります。
DROP
VALUES
句を使用すると、1つ以上のpartition_value
が削除され、partition
のpartition_value
リストが縮小されます。この句を指定すると、Oracle Databaseはこの値の行が存在しないことを検証します。そのような行が存在する場合は、エラーが戻されます。リスト値の追加と削除には、次の制限事項があります。
table
にデフォルト・パーティションが定義されている場合、デフォルト・パーティション以外に値を追加しようとすると、その値がデフォルト・パーティションに存在しているかどうかが確認されます。デフォルト・パーティションにその値が存在する場合、エラーが戻されます。
この句は、コンポジット・パーティション表にのみ適用されます。その副次句によって、個別のレンジ、リストまたはハッシュ・サブパーティションの特性を変更できます。
shrink_clause
を使用すると、サブパーティションの各セグメントを縮小できます。この句の詳細は、「shrink_clause」を参照してください。
また、パーティションを変更した結果、使用不可能になったローカル索引の処理方法も指定できます。「UNUSABLE LOCAL INDEXES句」を参照してください。
サブパーティションに指定できるmodify_LOB_parameters
は、allocate_extent_clause
およびdeallocate_unused_clause
のみです。
これらの句は、リスト・サブパーティションを変更する場合のみ有効です。これらの句によって、表のローカル索引とグローバル索引が影響を受けることはありません。
ADD
VALUES
句を使用すると、subpartition
のpartition_value
リストが拡張され、追加した値が含まれます。追加するパーティションの値は、「CREATE
TABLE
」の句list_partitionsに示すすべての規則および制限事項に準拠する必要があります。
DROP
VALUES
句を使用すると、1つ以上のpartition_value
が削除され、subpartition
のpartition_value
リストが縮小されます。この句を指定すると、Oracle Databaseはこの値の行が存在しないことを検証します。そのような行が存在する場合は、エラーが戻されます。
また、パーティションを変更した結果、使用不可能になったローカル索引の処理方法も指定できます。「UNUSABLE LOCAL INDEXES句」を参照してください。
サブパーティションに指定できるmodify_LOB_parameters
は、allocate_extent_clause
およびdeallocate_unused_clause
のみです。
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
PARTITION
でparallel_clause
を指定した場合、table
のデフォルトのパラレル属性は変更されません。
MAPPING
TABLE
句は、マッピング表が定義されている索引構成表のみに有効です。マッピング表は、索引構成表のパーティションとともに移動されます。マッピング表のパーティションは、移動した索引構成表のパーティションの物理属性を継承します。これは、マッピング表のパーティションの属性を変更する唯一の方法です。この句を省略した場合、マッピング表のパーティションでは、元の属性が保持されます。
対応するすべてのビットマップ索引パーティションにはUNUSABLE
のマークが付けられます。
この句の詳細は、「CREATE
TABLE
」の「mapping_table_clauses」を参照してください。
表パーティションの移動には、次の制限事項があります。
partition
がハッシュ・パーティションである場合、この句にTABLESPACE
の属性以外は指定できません。
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
句を使用すると、table
にハッシュ・パーティション、レンジ・パーティション、リスト・パーティションまたはシステム・パーティションを追加できます。
table
で定義されているローカル索引に、実表のパーティションと同じ名前で新しいパーティションが追加されます。索引に同じ名前のパーティションがすでに存在する場合、SYS_P
n
という形式でパーティションの名前が生成されます。
table
が索引構成されている場合、表で定義されたすべてのマッピング表およびオーバーフロー領域に、パーティションが追加されます。
table
が参照パーティション表の親表の場合は、dependent_tables_clause
を使用して、この文に指定するパーティション・メンテナンス操作を参照パーティション表のすべての子表に伝播できます。
コンポジット・パーティション表の場合、table
に定義されたすべてのローカル索引に対して、同じサブパーティションを持つ新規の索引パーティションが追加されます。table
のグローバル索引が影響を受けることはありません。
add_range_partition_clause
を使用すると、新しいレンジ・パーティションをレンジ・パーティション表またはコンポジット・レンジ・パーティション表の一番上(最後の既存のパーティションの後)に追加できます。
ドメイン索引がtable
で定義されている場合、IN_PROGRESS
またはFAILED
のマークが付いていると無効になります。
レンジ・パーティションの追加には、次の制限事項があります。
MAXVALUE
の場合、表にパーティションを追加できません。そのかわり、split_table_partition
句を使用して、表の始めまたは中間にパーティションを追加します。
key_compression
およびOVERFLOW
は、パーティション化された索引構成表に対してのみ有効です。パーティション表にすでにオーバーフロー・セグメントが存在する場合にかぎり、OVERFLOW
を指定できます。表レベルでキー圧縮が使用可能な場合にかぎり、キー圧縮を指定できます。
PCTUSED
パラメータは、索引構成表の索引セグメントに対して指定できません。
新しいパーティションの上限を指定します。value_list
は、パーティション・キー列に対応するリテラル値を順序どおりにカンマで区切ったリストです。value_list
の値は、表内にある既存の最上位パーティションのパーティション境界より大きくする必要があります。
この句を使用すると、新しいパーティションに作成時の物理属性を指定できます。表にLOB列が含まれている場合、1つ以上のLOB項目にパーティション・レベルの属性を指定することもできます。
これらの句は、コンポジット・パーティション表に対してのみ有効です。新しいパーティションのサブパーティションを指定する場合は、range_subpartition_desc
、list_subpartition_desc
またはhash_subpartition_desc
を適切に使用します。この句によって、表レベルでsubpartition_template
に定義された任意のサブパーティションの設定は上書きされます。
add_hash_partition_clause
を使用すると、ハッシュ・パーティション表の一番上に新しいハッシュ・パーティションを追加できます。Oracle Databaseは、ハッシュ・ファンクションによってtable
の他のパーティションから再ハッシュされた行を、新しいパーティションに移入します。ロード・バランシングを最適化する場合、パーティションの合計数は2の累乗にする必要があります。
パーティション名を指定します。また、パーティションが格納される表領域を指定することもできます。名前を指定しない場合、SYS_P
n
という形式でパーティション名が割り当てられます。TABLESPACE
を指定しなかった場合、新しいパーティションは表のデフォルトの表領域に格納されます。他の属性は、常に、表レベルのデフォルトから継承されます。
この操作によってパーティション間でデータが再ハッシュされると、対応するすべてのローカル索引パーティションにUNUSABLE
のマークが付けられます。update_index_clausesを使用し、操作中にヒープ構成表のすべての索引を更新できます。
parallel_clause
を使用すると、新しいパーティションの作成をパラレル化するかどうかを指定できます。
add_list_partition_clause
を使用すると、パーティションの新しい一連の値を使用して、table
に新しいパーティションを追加できます。新しいパーティションに作成時の物理属性を指定できます。表にLOB列が含まれている場合、1つ以上のLOB項目にパーティション・レベルの属性を指定することもできます。
表のデフォルト・パーティションがすでに定義されている場合は、リスト・パーティションを追加できません。その場合、split_table_partition
句を使用して、デフォルト・パーティションを分割する必要があります。
この句を使用すると、パーティションをシステム・パーティション表に追加できます。表に定義されているすべてのローカル索引に、対応する索引パーティションが追加されます。
BEFORE
句によって、既存のパーティションとの関係で新しいパーティションが追加される場所を指定できます。システム・パーティションは分割できません。そのため、この句は、既存の1つのパーティションの内容を複数の新しいパーティションに分割する場合に有効です。この句を省略した場合、新しいパーティションは既存のパーティションの後に追加されます。
table_partition_description
によって、新しいパーティションのパーティション・レベルの属性を指定できます。指定しない属性の値は、表レベルの値から継承されます。
システム・パーティションを追加する場合、OVERFLOW
句は指定できません。
COALESCE
は、ハッシュ・パーティションにのみ適用されます。coalesce_table_partition
句を使用すると、最後のハッシュ・パーティションが選択され、その内容がハッシュ・ファンクションによって決定される1つ以上の残りのパーティションに分散された後、選択されたパーティションが削除されます。
選択したパーティションに対応するローカル索引パーティションが削除されます。1つ以上の吸収パーティションに対応するローカル索引パーティションにUNUSABLE
のマークが付けられます。ヒープ構成表のすべての索引が無効になります。update_index_clausesを使用すると、操作中にすべての索引を更新できます。
update_all_indexes_clause
を使用してグローバル索引を更新する場合、副次句ではなくUPDATE
INDEXES
キーワードのみを指定できます。
drop_table_partition
句を使用すると、パーティション表から、partition_extended_name
で指定されるパーティションおよびそのパーティション内のデータを削除できます。データを表に残したままパーティションを削除する場合は、そのパーティションを隣接するパーティションにマージする必要があります。
table
にLOB列が存在する場合、partition
に対応するLOBデータ、LOB索引パーティションおよび(存在する場合は)サブパーティションも削除されます。
table
が索引構成されており、定義されたマッピング表を持つ場合、対応するマッピング表のパーティションも同様に削除されます。
UNUSABLE
のマークが付いている場合でも削除されます。
update_index_clausesを使用し、操作中にtable
のグローバル索引を更新できます。update_index_clauses
とともにparallel_clause
を指定すると、削除操作ではなく、索引の更新がパラレル化されます。
レンジ・パーティションを削除し、その後、削除したパーティションに属していた行を挿入した場合、1つ上位のパーティションに行が格納されます。ただし、そのパーティションが最上位のパーティションである場合、削除したパーティションが表していた値の範囲が表に対して無効になるため、挿入は失敗します。
表パーティションの削除には、次の制限事項があります。
coalesce_table_partition
句を使用してください。
table
にパーティションが1つのみ存在する場合は、このパーティションを削除できません。その表を削除する必要があります。
UPDATE
INDEXES
キーワードのみを指定できます。この句を使用すると、レンジまたはリスト・コンポジット・パーティション表からレンジ、リストまたはハッシュ・サブパーティションを削除できます。削除対象のサブパーティション内の行はすべて削除されます。
ローカル索引の対応するサブパーティションは、自動的に削除されます。その他の索引サブパーティションには影響がありません。update_global_index_clause
またはupdate_all_indexes_clause
を指定しないかぎり、グローバル索引にはUNUSABLE
のマークが付けられます。
表サブパーティションの削除には、次の制限事項があります。
MODIFY
PARTITION
... COALESCE
SUBPARTITION
構文を使用してください。
drop_table_partition
句を使用してください。
update_all_indexes_clause
のオプションの副次句を指定することはできません。
rename_partition_subpart
句を使用すると、表パーティションまたは表サブパーティションの名前をnew_name
に変更できます。パーティションおよびサブパーティションのどちらの場合も、new_name
は同じ表に存在するすべてのパーティションおよびサブパーティションと異なる値である必要があります。
table
が索引構成されている場合、対応する主キー索引パーティションに、既存のオーバーフロー・パーティションおよびマッピング表パーティションと同じ名前が割り当てられます。
TRUNCATE
PARTITION
を指定すると、partition_extended_name
で指定されるパーティションからすべての行を削除できます。表がコンポジット・パーティション化されている場合は、そのパーティションのサブパーティションからすべての行が削除されます。TRUNCATE
SUBPARTITION
を指定すると、個別のサブパーティションからすべての行が削除されます。table
が索引構成されている場合、対応するすべてのマッピング表のパーティションおよびオーバーフロー領域のパーティションが切り捨てられます。
table
にLOB列が存在する場合、このパーティションのLOBデータおよびLOB索引セグメントも切り捨てられます。table
がコンポジット・パーティション化されている場合、このパーティションのサブパーティションのLOBデータおよびLOB索引セグメントは切り捨てられます。
table
でドメイン索引が定義されている場合、索引にIN_PROGRESS
またはFAILED
のマークが付いていると無効になります。また、切り捨てられる表パーティションに対応する索引パーティションにIN_PROGRESS
のマークが付いていると無効になります。
切り捨てられるそれぞれのパーティションまたはサブパーティションでは、対応するローカル索引パーティションおよびサブパーティションも切り捨てられます。これらの索引パーティションまたはサブパーティションにUNUSABLE
のマークが付いている場合、これらは切り捨てられ、UNUSABLE
のマークはVALID
にリセットされます。
update_global_index_clauseまたはupdate_all_indexes_clauseを使用し、操作中にtable
のグローバル索引を更新できます。これらの句とともにparallel_clause
を指定すると、切捨て操作ではなく、索引の更新がパラレル化されます。
DROP
STORAGE
を指定すると、削除した行が占有していた領域の割当てを解除できます。解放された領域は、表領域の他のスキーマ・オブジェクトが利用できます。
REUSE
STORAGE
を指定すると、削除した行が占有していた領域をパーティションまたはサブパーティションに割り当てることができます。この領域は、そのパーティションまたはサブパーティションに対する後続の挿入および更新のためにのみ使用できます。
update_all_indexes_clause
を使用してグローバル索引を更新する場合、副次句ではなくUPDATE
INDEXES
キーワードのみを指定できます。
split_table_partition
句を使用すると、partition_extended_name
によって指定されるパーティションから新しいセグメント、物理属性および初期エクステントをそれぞれ含む、2つの新しいパーティションが作成されます。現行パーティションに対応付けられたセグメントは、廃棄されます。
新しいパーティションは、指定されていないすべての物理属性を現行パーティションから継承します。
table
が索引構成されている場合、対応するマッピング表のパーティションが分割され、親の索引構成表のパーティションと同じ表領域に配置されます。対応するオーバーフロー領域も分割されます。OVERFLOW
句を使用すると、新しいオーバーフロー領域にセグメント属性を指定できます。
table
にLOB列がある場合、LOB_storage_clause
を使用して、分割の結果生成されたLOBデータ・セグメントに対して個々のLOB記憶域属性を指定できます。現行パーティションのLOBデータおよびLOB索引セグメントが削除された後、新しい表領域を指定しなくても、各パーティションの各LOB列に新しいセグメントが作成されます。
対応するローカル索引パーティションにUNUSABLE
のマークが付いている場合でも、それらは分割されます。UNUSABLE
のマークが付けられ、ユーザーは、分割パーティションに対応するローカル索引パーティションを再構築する必要があります。新しい索引パーティションの属性は、分割されたパーティションから継承されます。新しい索引パーティションは、分割された索引パーティションのデフォルト表領域に格納されます。索引パーティションにデフォルト表領域が定義されていない場合、基礎となる新しい表のパーティションの表領域が使用されます。
AT
句は、レンジ・パーティションのみに適用されます。新しい2つのパーティションのうちの最初の方に、新しい上限(境界を含まない)を指定します。値リストは、現行パーティションの元のパーティション境界より小さく、その次に小さいパーティション(そのようなパーティションがある場合)のパーティション境界より大きい値にする必要があります。
VALUES
句は、リスト・パーティションのみに適用されます。新しい2つのパーティションのうちの最初の方に含まれるパーティションの値を指定します。指定したパーティションの値リストに基づいて新しい1番目のパーティションがOracle Databaseによって作成されます。また、現行パーティションのその他のパーティション値に基づいて新しい2番目のパーティションが作成されます。このため、値リストには現行パーティションのすべてのパーティション値を含めることはできません。また、現行パーティションに存在しないパーティション値も含めることはできません。
INTO
句を使用すると、分割の結果生成された2つのパーティションを定義できます。分割の結果生成される2つのパーティションにオプションの名前および物理属性を指定しない場合でも、range_partition_desc
またはlist_partition_desc
にはPARTITION
キーワードを適切に指定する必要があります。新しいパーティション名を指定しない場合、SYS_P
n
という形式の名前が割り当てられます。指定しないすべての属性は、現行パーティションから継承されます。
レンジ-ハッシュ・コンポジット・パーティション表の場合、新しいパーティションにサブパーティションを指定するとき、サブパーティションに対してTABLESPACE
および表の圧縮のみを指定できます。他のすべての属性は、現行パーティションから継承されます。新しいパーティションにサブパーティション化を指定しない場合は、表領域も現行パーティションから継承されます。
レンジ-リストおよびリスト-リスト・コンポジット・パーティション表の場合、新しいパーティションにサブパーティションを指定できません。分割パーティションのリスト・サブパーティションでは、サブパーティションの数および値リストは現行パーティションから継承されます。
新しく作成したサブパーティションに対して名前を指定しなかったすべてのコンポジット・パーティション表では、次のように名前が親パーティションから継承されます。
partition_name
アンダースコア(_)subpartition_name
という形式の名前(たとえば、P1_SUBP1
)を持つ場合、新しいパーティション名に基づいて、サブパーティションの名前が生成されます(たとえば、P1A_SUB1
やP1B_SUB1
)。
SYS_SUBP
n
という形式のサブパーティション名が生成されます。
索引にUNUSABLE
のマークが付いている場合でも、table
で定義されている各ローカル索引の対応するパーティションが分割されます。
ヒープ構成表のすべての索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。
table
が参照パーティション表の親表の場合は、dependent_tables_clause
を使用して、この文に指定するパーティション・メンテナンス操作を参照パーティション表のすべての子表に伝播できます。
parallel_clause
を使用すると、表のデフォルトのパラレル属性を変更せずに、分割操作をパラレル化できます。
この句は、ハッシュ・パーティションに対して指定できません。
この句を使用すると、重複しない値リストを持つ2つのサブパーティションにリスト・サブパーティションを分割できます。
AT
句は、レンジ・サブパーティションに対してのみ有効です。新しい2つのサブパーティションのうちの1つ目に、新しく上限(この値は含まない)を指定します。値リストは、subpartition_extended_name
で指定されるサブパーティションの元のサブパーティション境界より小さく、その次に小さいパーティション(そのようなパーティションがある場合)のパーティション境界より大きい値にする必要があります。
VALUES
句は、リスト・サブパーティションに対してのみ有効です。新しい2つのサブパーティションのうち、1番目のサブパーティションに含める値を指定します。同じパーティション内の別のサブパーティションに対してNULL
を指定していない場合は、NULL
を指定できます。指定したサブパーティションの値リストに基づいて新しい1番目のサブパーティションが作成されます。また、現行のサブパーティションのその他のパーティション値に基づいて新しい2番目のサブパーティションが作成されます。このため、値リストには現行のサブパーティションのすべてのパーティション値を含めることはできません。また、現行のサブパーティションに存在しないパーティション値も含めることはできません。
レンジ・サブパーティションとリスト・サブパーティションのどちらに対しても、INTO
句を使用すると、分割の結果生成された2つのサブパーティションを定義できます。2つのサブパーティションにオプションの名前および属性を指定しない場合でも、range_subpartition_desc
またはlist_subpartition_desc
ではSUBPARTITION
キーワードを適切に指定する必要があります。指定しないすべての属性は、現行のサブパーティションから継承されます。
対応するローカル索引サブパーティションにUNUSABLE
のマークが付いている場合でも、それらは分割されます。新しい索引サブパーティションに名前があらかじめ指定されていないかぎり、新しい表のサブパーティションの名前が継承されます。この場合、SYS_SUBPn
という形式の新しい索引サブパーティション名が割り当てられます。新しい索引サブパーティションの物理属性は、親サブパーティションから継承されます。親サブパーティションにデフォルトのTABLESPACE
属性が定義されていない場合、対応する新しい表のサブパーティションの表領域が継承されます。
ヒープ構成表の索引が無効になります。update_index_clausesを使用し、これらの索引を更新できます。
表サブパーティションの分割には、次の制限事項があります。
partitioning_storage_clause
の句は、TABLESPACE
および表の圧縮のみです。
merge_table_partitions
句を使用すると、table
の2つのレンジ・パーティションまたは2つのリスト・パーティションの内容を1つの新しいパーティションにマージして、元の2つのパーティションを削除できます。この句はハッシュ・パーティションでは無効です。かわりに、coalesce_table_partition
句を使用してください。
MAXVALUE
サブパーティションがレンジ・サブパーティションから、または1つのデフォルト・サブパーティションがリスト・サブパーティションから作成されます。
segment_attributes_clause
に指定されていない属性はすべて、表レベルのデフォルトから継承されます。
選択したパーティションに対応するローカル索引パーティションは削除され、マージされたパーティションに対応するローカル索引パーティションにUNUSABLE
のマークが付けられます。ヒープ構成表のすべてのグローバル索引にも、UNUSABLE
のマークが付けられます。update_index_clausesを使用し、操作中にこれらすべての索引を更新できます。
table
が参照パーティション表の親表の場合は、dependent_tables_clause
を使用して、この文に指定するパーティション・メンテナンス操作を参照パーティション表のすべての子表に伝播できます。
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
句またはEXCHANGE
SUBPARTITION
句を使用すると、次のデータおよび索引セグメントを交換できます。
交換対象の表、パーティションおよびサブパーティションの構造は、パーティション・キーを含め常に同じである必要があります。リスト・パーティションとリスト・サブパーティションの場合、対応する値リストも一致している必要があります。
この句をトランスポータブル表領域とともに使用すると、高速データ・ロードが容易になります。
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
を指定すると、交換操作ではなく、索引の更新がパラレル化されます。
パーティションまたはサブパーティションを交換する表を指定します。
INCLUDING
INDEXES
を指定すると、ローカル索引パーティションまたはサブパーティションを対応する表索引(非パーティション表の場合)またはローカル索引(ハッシュ・パーティション化表の場合)と交換できます。EXCLUDING
INDEXES
を指定すると、交換された表のすべての標準索引、索引パーティションおよびパーティションに対応するすべての索引パーティションまたはサブパーティションにUNUSABLE
のマークを付けることができます。
WITH
VALIDATION
を指定すると、交換された表にあるいずれかの行が交換されたパーティションまたはサブパーティションにマップされない場合にエラーが戻されます。WITHOUT
VALIDATION
を指定すると、交換された表にある行が正しくマップされたかどうかがチェックされません。
この句の詳細は、「制約の例外の処理」を参照してください。パーティション交換のコンテキストでは、この句は、パーティション表が一意制約を使用して定義されている場合にのみ有効です。また、制約はDISABLE
VALIDATE
の状態である必要があります。この句は、サブパーティションではなくパーティション交換に対してのみ有効です。
参照:
|
パーティションとサブパーティションの交換時には、次の点に注意します。
この句は、参照パーティション表の親表を変更する場合にのみ有効です。この句では、親表の子の参照パーティション表の操作によって作成されるパーティションの属性を指定できます。
partition_spec
を指定します。
partition_spec
を指定します。
参照パーティション表の作成の詳細は、「
参照:
CREATE
TABLE
」の句「reference_partitioning」を参照してください。一般的な参照によるパーティション化の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。
この2つの句を使用すると、パーティションとサブパーティションのどちらを変更するかに応じて、partition
に対応するローカル索引パーティションおよび索引サブパーティションの属性を変更できます。
UNUSABLE
LOCAL
INDEXES
を指定すると、partition
に関連付けられたローカル索引パーティションまたは索引サブパーティションに、UNUSABLE
のマークが付けられます。
REBUILD
UNUSABLE
LOCAL
INDEXES
を指定すると、partition
に関連付けられたUNUSABLEのローカル索引パーティションまたは索引サブパーティションが再構築されます。
この句には、次の制限事項があります。
modify_table_partition
の他の句と同時に指定することはできません。
modify_table_partition
でこの句を指定できません。ただし、modify_range_subpartition
、modify_hash_subpartition
またはmodify_list_subpartition
句では指定できます。
update_index_clauses
を使用すると、表のパーティション化操作の一部としてtable
の索引を更新できます。表パーティションでDDL文を実行する場合、table
に索引が定義されていると、DDL文を実行中のパーティションだけでなく索引全体が無効になります。この句を使用すると、変更する索引パーティションをDDL操作中に更新できるため、DDL文の後で索引を再構築する必要がなくなります。
パーティション化された索引構成表では、update_index_clauses
は不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLE
のままです。
この句を使用すると、table
のグローバル索引を更新できます。
この句を使用すると、table
のすべての索引を更新できます。
この句は、表パーティションの操作に対してのみ有効で、ローカル索引にのみ影響を与えます。
index_partition_description
を使用すると、各ローカル索引のそれぞれのパーティションの物理属性、表領域の記憶域およびロギングを指定できます。PARTITION
キーワードのみを指定すると、索引のパーティションは次のように更新されます。
MOVE
PARTITION
、SPLIT
PARTITION
など)の場合、対応する索引パーティションは処理された索引表パーティションの属性を継承します。索引パーティションの名前は生成されないため、この操作によって作成された新しい索引パーティションは、対応する新しい表パーティションから名前を継承します。
MERGE
PARTITION
操作の場合、この操作によって作成されたローカル索引パーティションは、作成された表パーティションの名前とローカル索引の属性を継承します。
ドメイン索引の場合、PARAMETERS
句を使用すると、未解析のまま適切なODCI索引タイプ・ルーチンに渡すパラメータ文字列を指定できます。PARAMETERS
句は、ドメイン索引に対してのみ有効であり、ドメイン索引について指定できるindex_partition_description
の唯一の部分です。
index_subpartition_clause
を使用すると、各サブパーティションに対して表領域の記憶域を指定できます。update_index_partition
句のこのコンポーネントの詳細は、「CREATE
INDEX
」の「index_subpartition_clause」を参照してください。
この句は、コンポジット・パーティション表のサブパーティションの操作に対してのみ有効で、コンポジット・パーティション表のローカル索引にのみ影響を与えます。1つ以上のサブパーティションに表領域の記憶域を指定できます。
この句は、索引構成表に対して指定できません。
この句を指定すると、table
のグローバル索引のみを更新できます。table
のすべてのローカル索引には、UNUSABLE
のマークが付けられます。
UPDATE
GLOBAL
INDEXES
を指定すると、table
で定義したグローバル索引を更新できます。
グローバル索引がLOB列のグローバル・ドメイン索引として定義されている場合、ドメイン索引は、更新されるのではなくUNUSABLE
のマークが付けられます。
INVALIDATE
GLOBAL
INDEXES
を指定すると、table
で定義したグローバル索引を無効にできます。
どちらも指定しない場合、グローバル索引は無効になります。
この句はグローバル索引のみをサポートしています。索引構成表はサポートしていません。また、この句ではUSABLE
およびVALID
の索引のみが更新されます。UNUSABLE
の索引は使用禁止のままになり、INVALID
のグローバル索引は無視されます。
parallel_clause
を使用すると、表の問合せおよびDMLに対するデフォルトの並列度を変更できます。
この句の詳細は、「CREATE
TABLE
」の「parallel_clause」を参照してください。
表の並列化の変更には、次の制限事項があります。
table
にLOB型またはユーザー定義オブジェクト型の列が含まれている場合、このtable
でのINSERT
、UPDATE
およびDELETE
は、通知なしに逐次実行されます。ただし、後続の問合せはパラレルで実行されます。
parallel_clause
をmove_table_clause
と組み合せて指定する場合、このパラレル化は移動のみに適用され、後続の表でのDML操作および問合せには適用されません。move_table_clause
を使用すると、非パーティション表のデータまたはパーティション表のパーティションのデータを新しいセグメントに再配置できます。オプションとして、別の表領域への配置および記憶域属性の変更を行うこともできます。
LOB_storage_clause
句およびvarray_col_properties
句を使用して、表またはパーティションに関連付けられたLOBデータ・セグメントを移動することもできます。この句で指定していないLOB項目は移動できません。
表を別の表領域に移動する場合、COMPATIBLE
パラメータが10.0以上に設定されていると、ネストした表の列に対する記憶表は、その表が作成された表領域に残ります。COMPATIBLE
が10.0未満に設定されている場合、表と記憶表は新しい表領域に自動的に移動します。
この句は、トップレベルの索引構成表、および索引構成済のネストした表の記憶表に対してのみ有効です。ONLINE
を指定すると、表の主キー索引の再構築中に、索引構成表に対するDML操作を実行できます。
表のオンライン化には、次の制限事項があります。
MOVE
中のパラレルDMLはサポートされていません。ONLINE
を指定し、パラレルDML文を発行すると、Oracle Databaseはエラーを戻します。
VARRAY
、Oracleが提供する型またはユーザー定義オブジェクト型の列が含まれている場合には、この句は指定できません。
索引構成表の場合、move_table_clause
のindex_org_table_clause
を使用すると、オーバーフロー・セグメント属性も指定できます。move_table_clause
を使用すると、索引構成表の主キー索引が再構築されます。オーバーフロー・データ・セグメントは、キーワードOVERFLOW
が明示的に指定されていないかぎり、再構築されません。ただし、次の場合は例外です。
ALTER
TABLE
文の一部としてPCTTHRESHOLD
の値またはINCLUDING
列を変更する場合は、オーバーフロー・データ・セグメントが再構築されます。
LOB列の索引およびデータ・セグメントは、LOB列をALTER
TABLE
文の一部として明示的に指定しないかぎり、再構築されません。
MAPPING
TABLE
を指定すると、マッピング表が存在していない場合にマッピング表を作成できます。マッピング表がすでに存在する場合、マッピング表は索引構成表とともに移動され、すべてのビットマップ索引にはUNUSABLE
のマークが付けられます。新しいマッピング表は、親表と同じ表領域に作成されます。
NOMAPPING
を指定すると、既存のマッピング表が削除されます。
この句の詳細は、「CREATE
TABLE
」の「mapping_table_clauses」を参照してください。
table
でビットマップ索引が定義されている場合は、NOMAPPING
を指定できません。
key_compression
句を使用すると、索引構成表のキー圧縮を使用可能または使用禁止にできます。
COMPRESS
を指定すると、キー圧縮が使用可能になります。これによって、索引構成表の主キー列の値が重複しなくなります。integer
を使用して、接頭辞の長さ(圧縮する接頭辞列数)を指定します。接頭辞の長さの有効範囲は、1〜(主キー列数-1)までです。デフォルトでは(主キー列数-1)になります。
NOCOMPRESS
を指定すると、索引構成表でのキー圧縮が使用禁止になります。これはデフォルトです。
再構築した索引構成表を格納する表領域を指定します。
この句を使用すると、LOBセグメントを別の表領域に移動できます。表にLONG
列が含まれている場合は、この句を使用してLOBセグメントを移動することはできません。かわりに、LONG
列をLOBに変換するか、または表をエクスポートし、LOB列に必要な表領域の記憶域を指定する表を再作成して表データを再インポートする必要があります。
表の移動には、次の制限事項があります。
MOVE
を指定する場合は、ALTER
TABLE
文の最初の句にする必要があります。この句以外では、physical_attributes_clause
、parallel_clause
およびLOB_storage_clause
のみが指定できます。
LONG
またはLONG
RAW
列を含む表は、移動できません。
enable_disable_clause
を使用すると、Oracle Databaseが整合性制約を適用するかどうか、およびその方法を指定できます。DROP
およびKEEP
句は、一意制約または主キー制約を使用禁止にする場合のみに有効です。
参照:
|
DDL操作中にロックされた表にのみDDL操作を実行できます。このような表ロックは、DML操作中は必要ありません。
ENABLE
TABLE
LOCK
を指定すると、表ロックが有効になり、表に対するDDL操作が実行可能になります。現在実行中のすべてのトランザクションは、表ロックが有効になる前にコミットまたはロールバックする必要があります。
DISABLE
TABLE
LOCK
を指定すると、表ロックが無効になり、表に対するDDL操作が実行できなくなります。
ALL
TRIGGERS
句を使用すると、表に関連するすべてのトリガーを使用可能または使用禁止にできます。
ENABLE
ALL
TRIGGERS
を指定すると、表に関連するすべてのトリガーが使用可能になります。トリガー条件が満たされた場合に、トリガーが起動されます。
1つのトリガーを使用可能にする場合は、ALTER
TRIGGER
のenable_clause
を使用してください。
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
句が含まれています。
ENABLE
NOVALIDATE
状態にします。
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;
例外表を指定する場合は、この表に行を挿入する権限が必要です。検出された例外を調べる場合、例外表を問い合せる権限が必要です。
次の文は、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_media
のLONG
列をLOBに変換する必要があります)。次の文は、表のパーティションp2
をパーティションp2a
とp2b
に分割します。
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));
p2a
とp2b
のパーティションでは、列ad_photo
とad_composite
に対するLOBセグメントが表領域omb_ts2
内に作成されます。パーティションp2aのその他の列に対するLOBセグメントは、表領域omf_ts1に保存されます。パーティションp2bのその他の列に対するLOBセグメントは、このALTER
文の実行前の表領域で保持されます。ただし、LOBデータおよびLOB索引セグメントが新しい表領域に移動されない場合でも、これらの新しいセグメントが作成されます。
次の文は、パーティションp3
をprint_media_part
表に追加し(前述の例を参照)、表のBLOB
とCLOB
列の記憶特性を指定します。
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);
次の文は、パーティション(「表のパーティションの分割例:」で作成)をマージして、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));
次の文は、列income
をhr.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_pw
をoe.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
句には、列の定義をすべて指定する必要はありません。列名および変更部分のみを指定してください。この文は、既存の行の既存の値には影響しません。
次の例は、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オプションを省略することによって、一意キーを参照する外部キーがある場合、その一意キーは削除されません。
次の文は、CLOB
列のresume
をemployee
表に追加し、新しい列の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
列のresume
をemployee
表に追加し、新しい列の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);
次の文は、ネストした表の列skills
をemployees
表に追加します。
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
を記憶表に設定します。
参照:
|
次の文では、オブジェクト型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
表が空である場合のみ正常に実行されます。
次の文は、staff
のdept
列にREF
値を格納する際、ROWIDも同時に格納します。
ALTER TABLE staff ADD (REF(dept) WITH ROWID);
ALTER
TABLE
文を使用した整合性制約の定義例は、「constraint」を参照してください。
表の記憶域パラメータの変更例は、「storage_clause」を参照してください。
ALTER
TABLESPACE
を使用すると、既存の表領域、1つ以上のデータ・ファイルまたは一時ファイルを変更できます。
この句では、ディクショナリ管理表領域をローカル管理表領域に変換することはできません。変換するには、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』に記載されているDBMS_SPACE_ADMIN
パッケージを使用してください。
SYSAUX
表領域を変更する場合は、SYSDBA
システム権限が必要です。
ALTER
TABLESPACE
システム権限を持っている場合、すべてのALTER
TABLESPACE
操作を実行できます。MANAGE
TABLESPACE
システム権限を持っている場合は、次の操作のみを実行できます。
表領域を読取り専用にする場合、次の条件が満たされている必要があります。
SYSTEM
表領域にはSYSTEM
ロールバック・セグメントがあるため、読取り専用にはできません。また、読取り専用表領域のロールバック・セグメントにはアクセスできないため、ロールバック・セグメントを削除してから、表領域を読取り専用にすることをお薦めします。
これらの条件を満たすために、制限モードでこの機能を実行すると有効です。制限モードでは、RESTRICTED
SESSION
システム権限を持つユーザーのみがログインできます。
(「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::=を参照)
(logging_clause::=を参照)
(size_clause::=を参照)
(size_clause::=を参照)
変更する表領域の名前を指定します。
表領域の変更には、次の制限事項があります。
tablespace
がUNDO表領域の場合、この文ではADD
DATAFILE
、RENAME
DATAFILE
、RENAME
TO
(表領域の名前の変更)、DATAFILE
... ONLINE
、DATAFILE
... OFFLINE
、BEGIN
BACKUP
およびEND
BACKUP
のみが指定可能です。
SYSTEM
表領域を、読取り専用または一時表領域にしたり、オフラインにすることはできません。
ADD
句のみです。DEFAULT
storage_clause
を使用すると、表領域に作成される後続のオブジェクトに対して新しいデフォルトの記憶域パラメータを指定できます。ディクショナリ管理の一時表の場合は、storage_clause
のNEXT
パラメータのみが考慮されます。
詳細は、「storage_clause」を参照してください。
この句は、ローカル管理表領域に対して指定できません。
この句は、永続的なディクショナリ管理表領域に対してのみ有効です。MINIMUM
EXTENT
句を指定すると、表領域内のすべての使用済エクステントまたは未使用エクステントの大きさが、size_clause
で指定したサイズ以上であること、およびその倍数であることが保証され、表領域における空き領域の断片化を制御できます。
この句は、ローカル管理の表領域またはディクショナリ管理の一時表領域に対して指定できません。
参照:
この句の詳細は、「size_clause」を参照してください。 |
この句は、bigfile表領域に対してのみ有効です。この句を使用すると、1つのデータ・ファイルのサイズを絶対サイズの値まで増やしたり減らすことができます。K
、M
、G
またはT
を使用して、それぞれKB、MB、GBまたはTB単位で指定することもできます。
smallfile表領域に新しく追加されたデータ・ファイルまたは一時ファイルのサイズを変更するには、ALTER
DATABASE
... autoextend_clause
を使用します(「database_file_clauses」を参照)。
この句を使用すると、表領域内の各データ・ファイルで、連続する未使用エクステントをすべて結合し、連続するより大きいエクステントを作成します。
この句は一時表領域に対してのみ有効です。表領域が使用する領域を削減できます。オプションのKEEP
句では、size_clause
によって、表領域を縮小できる下限が定義されます。これは、自動拡張可能な表領域のMAXSIZE
とは反対の機能です。KEEP
句を省略すると、表領域の他の記憶域属性を満たしている場合、データベースはできるだけ表領域を縮小しようとします。
この句を指定すると、tablespace
の名前を変更できます。この句は、tablespace
およびそのすべてのデータ・ファイルがオンラインで、COMPATIBLE
パラメータが10.0.0以上に設定されている場合にのみ有効です。名前の変更は、永続表領域および一時表領域の両方に対して実行できます。
tablespace
が読取り専用の場合、データ・ファイルのヘッダーは更新されず、新しい名前は反映されません。アラート・ログに、データ・ファイルのヘッダーが更新されなかったことが記録されます。
tablespace
が、Oracle Real Application Clusters(RAC)環境のインスタンスに対するUNDO表領域として指定されており、データベースの起動にサーバー・パラメータ・ファイルが使用されている場合、そのサーバー・パラメータ・ファイル(SPFILE
)で、インスタンスに対するUNDO_TABLESPACE
パラメータの値は、新しい表領域の名前を反映するように変更されます。単一インスタンス・データベースで、spfileのかわりにパラメータ・ファイル(pfile)が使用されている場合、データベース管理者にpfile内の値を手動で変更することを推奨するメッセージがアラート・ログに書き込まれます。
SYSTEM
表領域またはSYSAUX
表領域の名前は変更できません。
この句を使用すると、表領域のすべてのデータ・ファイルをオンライン(ホット)・バックアップ・モードにしたり、このモードから戻すことができます。
参照:
|
BEGIN
BACKUP
を指定すると、表領域を構成するデータ・ファイルのオープン・バックアップを実行することを示すことができます。この句を指定することによって、ユーザーがこの表領域にアクセスできなくなることはありません。オープン・バックアップを開始する前に、この句を指定してください。
表領域のバックアップ開始には、次の制限事項があります。
END
BACKUP
を指定すると、表領域のオンライン・バックアップが完了したことを示すことができます。オンライン・バックアップの完了後、できるだけ早くこの句を指定してください。インスタンスに障害またはSHUTDOWN
ABORT
が発生した場合、次のインスタンス起動時にメディア・リカバリ(必要に応じて、アーカイブREDOログも)が必要であるとみなされます。
この句は、読取り専用表領域に対して使用できません。
datafile_tempfile_clausesを使用すると、データ・ファイルまたは一時ファイルを追加および変更できます。
ADD
を指定すると、file_specification
によって指定されたデータ・ファイルまたは一時ファイルを表領域に追加できます。オペレーティング・システムのファイル・システム内の標準データファイルと一時ファイル、または自動ストレージ管理ディスク・グループのファイルを指定するには、file_specification
のdatafile_tempfile_spec書式(「file_specification」を参照)を使用します。
この句は、ローカル管理の一時表領域に対して、どんな場合でも指定できる唯一の句です。
file_specification
を指定しないと、AUTOEXTEND
が有効になった100MBのOracle管理ファイルが作成されます。
データ・ファイルまたは一時ファイルを、オンラインのローカル管理表領域、またはオンラインまたはオフラインのディクショナリ管理表領域に追加できます。なお、そのデータ・ファイルが別のデータベースで使用中でないことを確認してください。
この句は、表領域に1つのデータ・ファイルまたは一時ファイルのみが含まれるbigfile(単一ファイル)表領域に対して指定できません。
DROP
を指定すると、filename
やfile_number
によって指定された空のデータ・ファイルまたは一時ファイルを表領域から削除できます。この句は、データ・ファイルまたは一時ファイルをデータ・ディクショナリから削除し、オペレーティング・システムから削除します。この句を指定するときには、データベースがオープンしている必要があります。
ALTER
TABLESPACE
... DROP
TEMPFILE
文は、ALTER
DATABASE
TEMPFILE
... DROP
INCLUDING
DATAFILES
を指定することと同じです。
データ・ファイルまたは一時ファイルを削除するには、これらのファイルが次の条件を満たしている必要があります。
参照:
ALTER
DATABASE
」の「alter_tempfile_clause」を参照してください。
この句は一時表領域を変更する場合にのみ有効です。指定した一時ファイルが使用する領域を削減できます。オプションのKEEP
句では、size_clause
によって、一時ファイルを縮小できる下限が定義されます。これは、自動拡張可能な表領域のMAXSIZE
とは反対の機能です。KEEP
句を省略すると、他の記憶域属性を満たしている場合、データベースはできるだけ一時ファイルを縮小しようとします。
RENAME
DATAFILE
を指定すると、表領域の1つ以上のデータ・ファイルの名前を変更できます。データベースをオープンしておくこと、および名前の変更前に表領域をオフラインにすることが必要です。それぞれのfilename
には、ご使用のオペレーティング・システムのファイル名の表記規則に従って、データ・ファイル名を完全に指定してください。
この句では、表領域を古いファイルではなく新しいファイルに対応付けます。オペレーティング・システムのファイル名は実際には変更されません。このため、オペレーティング・システム上でこのファイル名を変更する必要があります。
これらの句を使用すると、表領域のすべてのデータ・ファイルまたは一時ファイルを、オフラインまたはオンラインにできます。これらの句は、表領域のONLINE
またはOFFLINE
状態には影響しません。
データベースは、マウントされている必要があります。tablespace
がSYSTEM
、UNDO表領域、またはデフォルトの一時表領域の場合、データベースをオープンしないでおく必要があります。
この句を使用すると、表領域のロギング特性を設定または変更できます。
LOGGING
を指定すると、表領域内のすべての表、索引およびパーティションのロギング属性を指定できます。表レベル、索引レベルおよびパーティション・レベルでのロギング指定によって、表領域レベルのロギング属性を上書きできます。
既存の表領域のロギング属性をALTER
TABLESPACE
文によって変更した場合、この文の実行後に作成されたすべての表、索引およびパーティションに、新しいデフォルトのロギング属性(これは後で上書きもできます)が適用されます。既存のオブジェクトのロギング属性は変更されません。
FORCE
LOGGING
モードの表領域がある場合、この文でNOLOGGING
を指定すると、表領域のデフォルト・ロギング・モードをNOLOGGING
に設定できます。ただし、この設定によって表領域のFORCE
LOGGING
モードは解除されません。
この句を使用すると、表領域で強制ロギング・モードを有効または無効にできます。データベースをオープンし、READ
WRITE
モードにしておく必要があります。この設定により、表領域のデフォルトLOGGING
モードまたはNOLOGGING
モードは変更されません。
FORCE
LOGGING
は、UNDO表領域および一時表領域に対して指定できません。
この句は、ローカル管理の一時表領域に対してのみ有効です。この句を使用すると、tablespace_group_name
表領域グループに対してtablespace
を追加または削除できます。
tablespace
がその表領域グループのメンバーであることを示すことができます。tablespace_group_name
が存在しない場合、表領域を変更して表領域グループのメンバーにすると、その表領域グループが暗黙的に作成されます。
tablespace_group_name
表領域グループからtablespace
を削除できます。
表領域グループは、永続表領域またはディクショナリ管理の一時表領域には指定できません。
この句を使用すると、表領域の状態を設定または変更できます。
ONLINE
を指定すると、表領域をオンラインにできます。OFFLINE
を指定すると、表領域をオフラインにし、そのセグメントへの後続のアクセスを禁止できます。表領域をオフラインにすると、そのすべてのデータ・ファイルもオフラインになります。
提案 表領域を長期間オフラインにする前に、デフォルト表領域または一時表領域としてその表領域が割り当てられているユーザーに対して、表領域の割当てを変更することを検討します。表領域をオフラインにしている間は、これらのユーザーは、その表領域内でオブジェクトに対して領域を割り当てたり、領域をソートすることはできません。ユーザーへの表領域の割当ての詳細は、「ALTER USER」を参照してください。 |
一時表領域はオフラインにできません。
NORMAL
を指定すると、システム・グローバル領域(SGA)以外にある表領域のすべてのデータ・ファイルにあるすべてのブロックをフラッシュできます。データ・ファイルをオンラインに戻す前に、表領域のメディア・リカバリを行う必要はありません。これはデフォルトです。
TEMPORARY
を指定すると、Oracle Databaseは表領域内のすべてのオンライン・データ・ファイルに対してチェックポイントを実行しますが、すべてのファイルに対して書込みを実行できるかどうかは保証しません。この文の発行時にオフラインであったファイルは、表領域をオンラインに戻す前に、メディア・リカバリを行う必要があります。
IMMEDIATE
を指定すると、Oracle Databaseは表領域のファイルが使用可能であることを保証しません。また、チェックポイントも実行しません。表領域をオンラインに戻す前に、メディア・リカバリを行う必要があります。
READ
ONLY
を指定すると、表領域を読取り専用遷移モードに設定できます。この状態では、既存のトランザクションは完了(コミットまたはロールバック)できますが、表領域内のブロックを変更した既存のトランザクションをロールバックすること以外は、その表領域に対してさらにDML操作を行うことはできません。SYSAUX
表領域は、READ
ONLY
に設定できません。
表領域が読取り専用の場合は、そのファイルを読取り専用メディアにコピーできます。その場合、SQL文のALTER
DATABASE
... RENAME
を使用して、新しいファイル位置を示すように制御ファイル内のデータ・ファイルの名前を変更する必要があります。
READ
WRITE
を指定すると、読取り専用に指定されている表領域に対して書込み操作を実行できるようになります。
PERMANENT
を指定すると、一時表領域を永続表領域に変換できます。永続表領域とは、永続的なデータベース・オブジェクトを格納できる場所です。表領域を作成するときのデフォルトです。
TEMPORARY
を指定すると、永続表領域を一時表領域に変換できます。一時表領域とは、永続的なデータベース・オブジェクトを格納できない表領域です。一時表領域の中のオブジェクトはセッション中のみ保持されます。
一時表領域には、次の制限事項があります。
SYSAUX
表領域には、TEMPORARY
を指定できません。
tablespace
を標準的なブロック・サイズで作成しなかった場合、永続表領域を一時表領域に変換できません。
FORCE
LOGGING
モードでは、表領域に対してTEMPORARY
を指定できません。
この句は、bigfile(単一ファイル)表領域に対してのみ有効です。この句を使用すると、表領域内の単一のデータ・ファイルに対して自動拡張を使用可能または使用禁止にできます。smallfile表領域に新しく追加されたデータ・ファイルまたは一時ファイルの自動拡張を使用可能または使用禁止にするには、ALTER
DATABASE
文でautoextend_clause
を使用します(「database_file_clauses」を参照)。
参照:
|
この句を使用すると、後続のFLASHBACK
DATABASE
操作でこの表領域を使用するかどうかを指定できます。
FLASHBACK
モードをオンにするには、データベースはマウント済(オープン状態またはクローズ状態)である必要があります。
FLASHBACK
モードをオフにするには、データベースはマウント済で、クローズ状態である必要があります。
この句は一時表領域では無効です。
この句の詳細は、「CREATE TABLESPACE」を参照してください。
この句のセマンティクスは、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
に移動して、名前を変更します。
OFFLINE
句を指定したALTER
TABLESPACE
文を使用して、この表領域をオフラインにします。
ALTER TABLESPACE tbs_02 OFFLINE NORMAL;
diskb:tbs_f5.dat
からdiska:tbs_f5.dat
にコピーします。
RENAME
DATAFILE
句を指定したALTER
TABLESPACE
文を使用して、このデータ・ファイルの名前を変更します。
ALTER TABLESPACE tbs_02 RENAME DATAFILE 'diskb:tbs_f5.dat' TO 'diska:tbs_f5.dat';
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のデータ・ファイルをomf_ts1
表領域に追加します(この表領域の作成の詳細は、「Oracle Managed Filesの作成例:」を参照してください)。新しいデータ・ファイルは100MBで、最大サイズが制限なしで自動拡張されます。
ALTER TABLESPACE omf_ts1 ADD DATAFILE;
次の例は、表領域のデフォルトのロギング属性をNOLOGGING
に変更します。
ALTER TABLESPACE tbs_03 NOLOGGING;
表領域のロギング属性を変更した場合でも、その表領域内の既存のスキーマ・オブジェクトのロギング属性には影響しません。表レベル、索引レベルおよびパーティション・レベルでのロギング指定によって、表領域レベルのロギング属性を上書きできます。
次の文は、undots1
表領域のUNDOデータの保持を、通常のUNDOデータの動作に変更します。
ALTER TABLESPACE undots1 RETENTION NOGUARANTEE;
次の文は、undots1
表領域のUNDOデータの保持を、期限が切れていないUNDOデータを保持する動作に変更します。
ALTER TABLESPACE undots1 RETENTION GUARANTEE;
|
![]() Copyright © 1996, 2008, Oracle Corporation. All Rights Reserved. |
|