| Oracle Database SQLリファレンス 10g リリース2(10.2) B19201-02 |
|
この章では、次の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データベースでは、表を含むスキーマにおいて、一意キーまたは主キーの列に索引を作成するため、この権限が必要になります。
トリガーを使用可能または使用禁止にする場合、トリガーが自分のスキーマ内にある必要があります。自分のスキーマにない場合は、ALTER ANY TRIGGERシステム権限が必要です。
表を変更するときに列定義でオブジェクト型を使用する場合、そのオブジェクトが、変更する表と同じスキーマに属している必要があります。または、EXECUTE ANY TYPEシステム権限またはそのオブジェクト型に対するEXECUTEスキーマ・オブジェクト権限が必要です。
ALTER TABLE構文のグループは、次のとおりです。
各句の後には、そのコンポーネントの副次句の参照先が記載されています。
(physical_attributes_clause::=、logging_clause::=、table_compression::=、supplemental_table_logging::=、allocate_extent_clause::=、deallocate_unused_clause::= 、shrink_clause::=、upgrade_table_clause::=、records_per_block_clause::=、parallel_clause::=、row_movement_clause::=、alter_iot_clauses::=を参照)
(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::=を参照)
(storage_clause::=、logging_clause::=を参照)
(storage_clause::=、logging_clause::=、allocate_extent_clause::=、shrink_clause::=、deallocate_unused_clause::=を参照)
(LOB_storage_clause::=、varray_col_properties::=を参照)
(add_column_clause::=、modify_column_clauses::=、drop_column_clause::=、drop_constraint_clause::=、parallel_clause::=を参照)
(modify_table_default_attrs::=、set_subpartition_template::=、modify_table_partition::=、modify_table_subpartition::=、move_table_partition::=、move_table_subpartition::=、add_table_partition::=、coalesce_table_partition::=、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::=を参照)
(segment_attributes_clause::=、table_compression::=、key_compression::=、LOB_parameters::=、alter_overflow_clause::=を参照)
(list_values_clause::=、partitioning_storage_clause::=を参照)
(modify_range_partition::=、modify_hash_partition::=、modify_list_partition::=を参照)
(partition_attributes::=、update_index_clauses::=、alter_mapping_table_clauses::=を参照)
(partition_attributes::=、add_hash_subpartition::=、parallel_clause、alter_mapping_table_clauses::=を参照)
(partition_attributes::=、add_list_subpartition::=を参照)
(modify_hash_subpartition::=、modify_list_subpartition::=を参照)
(table_partition_description::=、update_index_clauses::=、parallel_clause::=を参照)
(subpartition_spec::=、update_index_clauses::=、 parallel_clause::=を参照)
(range_values_clause::=、table_partition_description::=、update_index_clauses::=を参照)
(partitioning_storage_clause::=、update_index_clauses::=、parallel_clause::=を参照)
(list_values_clause::=、table_partition_description::=、update_index_clauses::=を参照)
(update_index_clauses::=、parallel_clause::=を参照)
(update_index_clauses::=、parallel_clause::=を参照)
(update_index_clauses::=、parallel_clause::=を参照)
(update_index_clauses::=、parallel_clause::=を参照)
(partition_spec::=、update_index_clauses::=、parallel_clause::=を参照)
(subpartition_spec::=、update_index_clauses::=、parallel_clause::=を参照)
(partition_spec::=、update_index_clauses::=、parallel_clause::=を参照)
(subpartition_spec::=、parallel_clause::=を参照)
(update_index_clauses::=、parallel_clause::=を参照)
(physical_attributes_clause::=、logging_clause::=、allocate_extent_clause::=、deallocate_unused_clause::=、shrink_clause::=、table_compression::=、modify_LOB_parameters::=を参照)
(subpartition_spec::=、update_index_clauses::=、parallel_clause::=を参照)
(subpartition_spec::=、update_index_clauses::=を参照)
(allocate_extent_clause::=、deallocate_unused_clause::=、shrink_clause::=、modify_LOB_parameters::=を参照)
(allocate_extent_clause::=、deallocate_unused_clause::=、shrink_clause::=、modify_LOB_parameters::=を参照)
(segment_attributes_clause::=、table_compression::=、key_compression::=、LOB_storage_clause::=、varray_col_properties::=を参照)
(subpartition_spec::=を参照)
(table_partition_description::=を参照)
(list_values_clause::=、partitioning_storage_clause::=を参照)
(update_global_index_clause::=、update_all_indexes_clause::=を参照)
(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句は、ヒープ構成表に対してのみ有効です。この句を使用すると、ディスクおよびメモリーの使用量を削減するために、データ・セグメントを圧縮するかどうかを指定できます。COMPRESSキーワードを指定すると、表の圧縮が使用可能になります。NOCOMPRESSキーワードを指定すると、表の圧縮が使用禁止になります。
|
参照:
|
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には、次の制限事項があります。
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を指定すると、型の更新時に表のデータを変換できます。「dependent_handling_clause」を参照してください。表が古いバージョンの型に基づくデータを含むかどうかを確認するには、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」を参照してください。
RENAME句を使用すると、表の名前をnew_table_nameに変更できます。
|
注意: この句を使用した場合、依存するすべてのマテリアライズド・ビューは無効になります。マテリアライズド・ビューの詳細は、「CREATE MATERIALIZED VIEW」および『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。 |
この句を使用すると、索引構成表以外の表を索引構成表に変更できます。索引構成表は、主キーによってソートされたデータを保持する表であり、主キーに基づくアクセスおよび操作には最適です。詳細は、「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」を参照してください。
これらの句を指定すると、列を追加、削除または変更できます。
add_column_clauseを使用すると、表に列を追加できます。
既存の表に列を追加するときのcolumn_definitionの要素の動作は、この項で特に述べられていないかぎり、新しい表の作成時に列を追加するときの動作と同じです。詳細は、「column_definition」を参照してください。
SORTパラメータは、新しい表を作成する場合にのみ有効です。ALTER TABLE ... ADD文のcolumn_definitionでは、SORTを指定できません。
列を追加した場合、DEFAULT句を指定しないかぎり、新しい列の各行には初期値としてNULLが設定されます。DEFAULT句を指定した場合、新しい列の各行は、DEFAULTで指定した値で更新されます。この更新操作によって、表に定義されたAFTER UPDATEトリガーが起動します。
パーティション化された索引構成表の各パーティションには、オーバーフロー・データ・セグメントを追加できます。
非パーティションおよびパーティション表にLOB列を追加できます。表、およびパーティションまたはサブパーティションのレベルでLOB記憶域を指定できます。
SELECT *構文を使用して、表からすべての列を選択するように指定した問合せを使用してビューを作成した場合、tableに列を追加しても、新しい列がビューに自動的に追加されることはありません。ビューに新しい列を追加する場合、CREATE VIEW文にOR REPLACE句を指定してビューを再作成してください。詳細は、「CREATE VIEW」を参照してください。
列の追加には、次の制限事項があります。
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列、パーティション、サブパーティションまたはLONG列からLOB列への変換時のLOB記憶特性を指定できます。この句では、既存のLOBを変更できません。その場合は、modify_LOB_storage_clauseを使用してください。
CACHE READSはLOB記憶域にのみ適用されます。LOB値が書込み操作中ではなく読取り操作中にバッファに入れられることを指定します。
LOB_itemには、表とは異なる表領域および記憶特性を明示的に定義する、LOB列名またはLOBオブジェクト属性を指定します。
LOB_segnameには、LOBデータ・セグメントの名前を指定します。LOB_itemが複数指定されている場合は、LOB_segnameを使用できません。
新しいLOB列を追加するときに、CACHE READSでロギング属性を指定できます。作成時にLOB列を定義するときにも指定できます。
CACHEまたはNOCACHEからCACHE READSへ、またはCACHE READSからCACHEまたはNOCACHEへLOB列を変更するときに、ロギング属性を変更できます。LOGGINGまたはNOLOGGINGを指定しない場合、LOB列の現行ロギング属性がデフォルトになります。
既存のLOBに対し、CACHE、NOCACHEまたはCACHE READSを指定しない場合、Oracleデータベースは、LOB属性の既存値を保持します。
ハッシュ・パーティションまたはハッシュ・サブパーティションに指定できるLOB_parametersのパラメータは、TABLESPACEのみです。
LOB値をインライン(行内)またはアウトライン(行外)のどちらに格納するかを指定します。LOB値が格納されている場所にかかわらず、LOBロケータは、常にインラインに格納されます。
ENABLEを指定すると、LOB値の長さが、約4000バイトからシステム制御情報分を引いた長さより小さい場合、LOB値はインラインに格納されます。これはデフォルトです。
DISABLEを指定すると、LOB値の長さにかかわらず、LOB値はアウトラインに格納されます。
STORAGE IN ROWは、一度設定すると変更できません。したがって、この句はmodify_col_properties句の一部には指定できません。ただし、新しい列を追加するとき(add_column_clause)、または表を移動するとき(move_table_clause)に、この設定を変更することはできます。
LOBの操作用に割り当てるバイト数を指定します。integerにデータベースのブロック・サイズの倍数を指定しなかった場合、自動的に次に大きい倍数(バイト単位)に切り上げられます。たとえば、データベース・ブロック・サイズが2048の場合、integerに2050を指定すると、4096バイト(2ブロック)が割り当てられます。最大値は32768(32KB)で、これがOracleデータベースで使用可能なブロック・サイズの最大値です。デフォルトのCHUNKサイズは、Oracleでの1データベース・ブロックです。
CHUNKパラメータには、次の制限事項があります。
CHUNKの値は、一度設定すると変更できません。
CHUNKの値は、NEXTの値(デフォルト値または記憶域句で指定した値)以下である必要があります。CHUNKの値がNEXTの値を超えると、エラーが戻ります。
LOBの記憶域全体のうち、旧バージョンのLOBの保持に使用される割合(パーセント)の最大値を指定します。デフォルト値は10です。これは、LOBの記憶域全体の10%が使用されるまで以前のバージョンのLOBデータが上書きされないことを意味します。
データベースが自動UNDOモードで稼働している場合、旧バージョンのLOBを保持するには、PCTVERSIONではなくRETENTIONを指定します。この句によって、PCTVERSIONのこれまでの設定が上書きされます。
データベースが手動UNDOモードで稼働している場合は、RETENTIONを指定できません。RETENTIONパラメータの詳細は、「LOB_parameters」を参照してください。
データベースが自動UNDOモードで稼働している場合、この句を使用するとLOBの空きリスト・グループ数を指定できます。この句によって、FREELIST GROUPSのこれまでの設定が上書きされます。
データベースが手動UNDOモードで稼働している場合は、FREEPOOLSを指定できません。FREEPOOLSパラメータの詳細は、「LOB_parameters」を参照してください。
LOB_partition_storage句を使用すると、各パーティションに、別のLOB_storage_clauseまたはvarray_col_propertiesを指定できます。パーティションは、その位置の順に指定してください。パーティションの順番を確認するには、USER_IND_PARTITIONSビューのPARTITION_NAMEおよびPARTITION_POSITION列を問い合せます。
特定のパーティションに、LOB_storage_clauseまたはvarray_col_properties句を指定しなかった場合、表レベルでLOB項目に指定された記憶特性が設定されます。表のレベルでもLOB項目に記憶特性を指定しなかった場合、LOBデータ・パーティションは、対応する表パーティションと同じ表領域に格納されます。
1つのALTER TABLE文では、LOB_partition_storageのリストを1つのみ指定できます。すべてのLOB_storage_clausesおよびvarray_col_properties句は、LOB_partition_storage句のリストの前に指定する必要があります。
この句の詳細は、「CREATE TABLE」の「XMLType_column_properties」を参照してください。
この句の詳細は、「CREATE TABLE」の「XMLSchema_spec」を参照してください。
|
参照:
|
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アプリケーション開発者ガイド-基礎編』を参照してください。
LONGからLOBへの移行の詳細は、『Oracle Databaseアプリケーション開発者ガイド-ラージ・オブジェクト』を参照してください。
CHARおよびVARCHAR2列の場合、CHAR(元々バイトで指定されていた列に対するキャラクタ・セマンティクス)またはBYTE(元々文字で指定されていた列に対するバイト・セマンティクス)を指定すると、長さセマンティクスを変更できます。既存の列の長さを確認するには、ALL_TAB_COLUMNS、USER_TAB_COLUMNSまたはDBA_TAB_COLUMNSデータ・ディクショナリ・ビューのCHAR_USED列を問い合せます。
この句は、暗号化された列の復号化、暗号化されていない列の暗号化、または暗号化された列のSALTオプションを変更するために使用します。
encryption_specを指定して既存の列を暗号化する場合は、同じ表内で暗号化されている他の列の暗号化仕様と一致させることが必要です。encryption_specの詳細や制限事項は、「CREATE TABLE」のENCRYPT encryption_spec句を参照してください。
この句を使用すると、変更する列に対する制約を追加できます。既存の列に設定されている既存の制約の状態を変更する場合は、constraint_clausesを使用します。
LOB_storage_clauseは、LONG列をLOB列に変換する場合のみ、modify_col_properties内で使用できます。この場合のみ、LOB_storage_clauseを使用して列に対するLOB記憶域を指定できます。ただし、LOB_item。LOB_storage_clauseで省略したすべての属性には、デフォルトのLOB記憶域属性が適用されます。
列のプロパティの変更には、次の制限事項があります。
CHAR型の列をVARCHAR2(またはVARCHAR)型に変更またはVARCHAR2(またはVARCHAR)型の列をCHAR型に変更できるのは、BLANK_TRIMMING初期化パラメータがTRUEに設定され、列のサイズが同じまたは増加する場合のみです。BLANK_TRIMMING初期化パラメータがTRUEに設定されている場合、列のサイズを切捨て後のデータの最大値以上の値まで減らすこともできます。
LONGまたはLONG RAW列をLOBに変更できません。LONGまたはLONG RAW列をLOBに変更する場合は、同じALTER TABLE文では、DEFAULT句およびLOB_storage_clause以外は指定できません。
LONGまたはLONG RAW列をLOBに変更する場合のみ、LOB_storage_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句を使用した場合よりも短縮されます。
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句とともに使用します。属性の削除は、すべての依存オブジェクトに影響することに注意してください。詳細は、「DROP ATTRIBUTE」を参照してください。
DROP句を指定して削除する場合は、まず、その表またはパーティションのデータ圧縮機能を無効にする必要があります。SET UNUSED句のみを使用できます。
CASCADE CONSTRAINTSを指定しても主キー列は削除できません。
REF列からはSCOPE表制約およびWITH ROWID制約を削除できません。
rename_column_clauseを使用すると、tableの列名を変更できます。新しい列には、table内の他の列と同じ名前を指定しないでください。
列名を変更すると、依存オブジェクトは次のように処理されます。
列名の変更には、次の制限事項があります。
column_clausesと同時に使用することはできません。
modify_collection_retrievalを使用すると、データベースからコレクション型の項目が取り出されたときの戻り値を変更できます。
ネストした表型またはVARRAY型の列修飾属性の名前を指定します。
問合せの結果として何を戻り値とするかを指定します。
modify_LOB_storage_clauseを使用すると、LOB_itemの物理属性を変更できます。各modify_LOB_storage_clauseに対して、LOB_itemを1つのみ指定できます。
REBUILD FREEPOOLS句を指定すると、LOB列から古いデータがすべて削除されます。この句は、LOBの管理目的でPCTVERSIONに戻す場合にのみ有効です。古いデータ・ブロックを管理するために、この処理を実行する場合があります。
LOB記憶域の変更には、次の制限事項があります。
storage_clauseのINITIALパラメータの値は変更できません。
allocate_extent_clauseとdeallocate_unused_clauseの両方を指定することはできません。
PCTVERSIONパラメータとRETENTIONパラメータの両方を指定することはできません。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句を使用すると、既存の制約の状態を変更できます。
制約の変更には、次の制限事項があります。
RENAME CONSTRAINT句を使用すると、tableの既存の制約名を変更できます。新しい制約名は、同一スキーマ内にあるオブジェクトの既存の制約と同じ名前にはできません。制約に依存するすべてのオブジェクトは、引き続き有効です。
drop_constraint_clauseを使用すると、データベースの整合性制約を削除できます。制約の適用を中止し、データ・ディクショナリから制約が削除されます。各drop_constraint_clauseには、制約を1つのみ指定できますが、1つの文の中では、複数のdrop_constraint_clausesを指定できます。
PRIMARY KEYを指定すると、tableの主キー制約を削除できます。
UNIQUEを指定すると、指定した列の一意制約を削除できます。
ビットマップ結合索引が定義されている列から主キー制約または一意制約を削除すると、索引は無効になります。ビットマップ結合索引の詳細は、「CREATE INDEX」を参照してください。
CONSTRAINT constraintを指定すると、主キー制約または一意制約以外の整合性制約を削除できます。
CASCADEを指定すると、削除する整合性制約に依存するその他の整合性制約もすべて削除できます。
KEEP INDEXまたはDROP INDEXを指定すると、主キーまたは一意制約の適用に使用する索引を残すか削除するかを指定できます。
制約の削除には、次の制限事項があります。
CASCADE句を使用してください。CASCADEを省略すると、外部キーによって参照される主キー制約および一意制約は削除されません。
CASCADE句を使用しても)削除できません。
REF列の参照整合性制約を削除した場合、REF列の有効範囲には参照先の表が含まれたままになります。
REF列の有効範囲は削除できません。alter_external_table_clausesを使用すると、外部表の特性を変更できます。この句は、外部データには影響しません。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のマークが付けられます。
関連するCONTEXTドメイン索引が含まれる表におけるパーティション操作の詳細は、『Oracle Textリファレンス』を参照してください。
ブロック・サイズが異なる表領域のパーティション化されたデータベース・エンティティの記憶域には、制限事項があります。これらの制限事項については、『Oracle Database管理者ガイド』を参照してください。
modify_table_default_attrsを使用すると、tableの属性に対する新しいデフォルト値を指定できます。その後に作成するパーティションおよびLOBパーティションは、パーティションまたはLOBパーティションの作成時に明示的に上書きしないかぎり、この値を継承します。既存のパーティションおよびLOBパーティションは、この句の影響を受けません。
文の中で指定した属性のみが影響を受けます。指定されたデフォルト値は、個々のパーティションまたはLOBパーティションのレベルで指定された属性で上書きされます。
FOR PARTITIONは、コンポジット・パーティション表にのみ適用されます。partitionの属性に新しいデフォルト値を指定します。その後に作成するpartitionのサブパーティションおよびLOBパーティションは、サブパーティションまたはLOBパーティションの作成時に明示的に上書きしないかぎり、この値を継承します。既存のサブパーティションは、この句の影響を受けません。
PCTTHRESHOLD、key_compressionおよびalter_overflow_clauseは、パーティション化された索引構成表にのみ有効です。また、key_compression句では、COMPRESSキーワードの後にint型を指定できません。キー圧縮の長さは、表の作成時にのみ指定できます。
segment_attributes句でPCTUSEDパラメータを指定できません。
set_subpartition_template句を使用すると、表パーティションに対するデフォルト・リスト定義またはハッシュ・サブパーティション定義を作成したり、既存の定義を置き換えることができます。この句は、コンポジット・パーティション表に対してのみ有効です。この句によって、既存のサブパーティション・テンプレートは置き換えられます。既存のテンプレートがない場合は新規のテンプレートが作成されます。既存のサブパーティション、ローカル索引およびグローバル索引は影響を受けません。ただし、その後のパーティション化操作(追加操作やマージ操作)では、新規テンプレートが使用されます。
既存のサブパーティション・テンプレートを削除するには、ALTER TABLE table SET SUBPARTITION TEMPLATE ()を指定します。
詳細は、「CREATE TABLE」の「サブパーティションのテンプレートの制限事項:」を参照してください。
modify_table_partition句を使用すると、レンジ・パーティション、ハッシュ・パーティションおよびリスト・パーティションの実際の物理属性を変更できます。そのパーティションの1つ以上のLOB項目の記憶域属性を任意に変更できます。物理属性(制限事項については後述)、ロギングおよび記憶域パラメータに対して、新しい値を指定できます。
また、パーティションを変更した結果、使用不可能になったローカル索引の処理方法も指定できます。「UNUSABLE LOCAL INDEXES句」を参照してください。
partition_attribute句でshrink_clauseを使用すると、各パーティションのセグメントを縮小できます。この句の詳細は、「shrink_clause」を参照してください。
パーティション化された索引構成表の場合、パーティションの変更時にマッピング表も同時に更新できます。「alter_mapping_table_clauses」を参照してください。
tableがコンポジット・パーティションで、レンジ・パーティションを変更する場合、この句を使用します。
allocate_extent_clauseを指定すると、partitionのそれぞれのサブパーティションにエクステントが割り当てられます。
deallocate_unused_clauseを指定すると、partitionのそれぞれのサブパーティションから未使用の記憶域の割当てが解除されます。
partitionのサブパーティションでも変更され、既存の値は上書きされます。既存のサブパーティションの属性が変更されないようにするには、modify_table_default_attrsのFOR PARTITION句を使用します。
UNUSABLE LOCAL INDEXESを指定すると、modify_range_partitionのその他の句は指定できません。
この句は、レンジ-ハッシュ・コンポジット・パーティションに対してのみ有効です。add_hash_subpartition句を使用すると、ハッシュ・サブパーティションをpartitionに追加できます。Oracleデータベースは、ハッシュ・ファンクションによってpartitionの他のサブパーティションから再ハッシュされた行を、新しいサブパーティションに移入します。ロード・バランシングを最適化する場合、サブパーティションの合計数は2の累乗にする必要があります。
subpartitionを指定しなかった場合、SYS_SUBPnという形式の名前が割り当てられます。
list_values_clauseは有効ではありません。
partitioning_storage_clauseでサブパーティションに対して指定できる句は、TABLESPACE句のみです。TABLESPACEを指定しなかった場合、新しいサブパーティションはpartitionのデフォルトの表領域に格納されます。
選択したパーティションに対応するローカル索引パーティションが追加されます。
追加したパーティションに対応するローカル索引パーティションにUNUSABLEのマークが付けられます。ヒープ構成表のすべての索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
add_list_subpartitionを使用すると、パーティションにリスト・サブパーティションを追加できます。この句は、レンジ-リスト・コンポジット・パーティションにデフォルト・サブパーティションを作成していない場合にのみ有効です。
subpartitionを指定しなかった場合、SYS_SUBPnという形式の名前が割り当てられます。
list_values_clauseが必要です。また、list_values_clauseには、partitionのその他のサブパーティションには存在していない値を指定する必要があります。ただし、他のパーティションのサブパーティションで使用されている値は指定できます。
partitioning_storage_clauseでサブパーティションに対して指定できる句は、TABLESPACE句のみです。TABLESPACEを指定しなかった場合、新しいサブパーティションはpartitionのデフォルトの表領域に格納されます。パーティションにデフォルト表領域が定義されていない場合は、表のデフォルト表領域が使用されます。表にもデフォルト表領域が定義されていない場合は、ユーザーのデフォルト表領域が使用されます。
表のすべてのローカル索引パーティションには、同じ値リストを持つサブパーティションも追加されます。表の既存のローカル索引パーティションおよびグローバル索引パーティションは影響を受けません。
パーティションにデフォルト・サブパーティションがすでに作成されている場合は、この句を指定できません。その場合、split_list_subpartition句を使用して、デフォルト・パーティションを分割する必要があります。
partition_attributesでハッシュ・パーティションを変更する場合、allocate_extent_clauseおよびdeallocate_unused_clauseのみを指定できます。パーティションのその他の属性は、表レベルのデフォルトから継承されます。ただし、TABLESPACEは、作成時と同じ状態です。
COALESCE SUBPARTITIONは、ハッシュ・サブパーティションにのみ適用されます。COALESCE SUBPARTITIONを使用すると、最後のハッシュ・サブパーティションが選択され、その内容が1つ以上の残りのサブパーティション(ハッシュ・ファンクションが決定)に分散された後、選択されたサブパーティションが削除されます。
選択したパーティションに対応するローカル索引パーティションが削除されます。
1つ以上の結合パーティションに対応するローカル索引パーティションにUNUSABLEのマークが付けられます。ヒープ構成表のすべてのグローバル索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
ハッシュ・パーティションの変更には、次の制限事項があります。
UNUSABLE LOCAL INDEXESを指定すると、modify_hash_partitionのその他の句は指定できません。
update_all_indexes_clauseを使用してグローバル索引を更新する場合、副次句ではなくUPDATE INDEXESキーワードのみを指定できます。
リスト・パーティションを変更する場合、次の句も使用できます。
UNUSABLE LOCAL INDEXESを指定すると、modify_list_partitionのその他の句は指定できません。
これらの句は、リスト・パーティションを変更する場合のみ有効です。これらの句によって、表のローカル索引とグローバル索引が影響を受けることはありません。
ADD VALUES句を使用すると、partitionのpartition_valueリストが拡張され、追加した値が含まれます。追加するパーティションの値は、「CREATE TABLE」の「list_partitioning」に示すすべての規則および制限事項に準拠する必要があります。
DROP VALUES句を使用すると、1つ以上のpartition_valueが削除され、partitionのpartition_valueリストが縮小されます。この句を指定すると、Oracleデータベースはこの値の行が存在しないことを検証します。そのような行が存在する場合は、エラーが戻されます。リスト値の追加と削除には、次の制限事項があります。
tableにデフォルト・パーティションが定義されている場合、デフォルト・パーティション以外に値を追加しようとすると、その値がデフォルト・パーティションにすでに存在しているかどうかが確認されます。デフォルト・パーティションにその値が存在している場合、エラーが戻されます。
この句は、コンポジット・パーティション表にのみ適用されます。
modify_hash_subpartition句を使用すると、tableの個々のサブパーティションに対して記憶域の割当てまたは割当て解除を行うことができます。この句は、レンジ-ハッシュ・コンポジット・パーティション表に対してのみ有効です。
shrink_clauseを使用すると、サブパーティションの各セグメントを縮小できます。この句の詳細は、「shrink_clause」を参照してください。
また、パーティションを変更した結果、使用不可能になったローカル索引の処理方法も指定できます。「UNUSABLE LOCAL INDEXES句」を参照してください。
サブパーティションに指定できるmodify_LOB_parametersは、allocate_extent_clauseおよびdeallocate_unused_clauseのみです。
modify_list_subpartition句を指定すると、リスト・サブパーティションをハッシュ・サブパーティションと同様に変更できます。また、リスト・サブパーティションの値リストに値を追加したり、この値リストから値を削除することができます。この句は、レンジ-リスト・コンポジット・パーティション表に対してのみ有効です。
shrink_clauseを使用すると、サブパーティションの各セグメントを縮小できます。この句の詳細は、「shrink_clause」を参照してください。
ADD VALUESを指定すると、subpartitionの値リストを拡張できます。
subpartitionおよび同じパーティション内のその他のサブパーティションの値リストにすでに存在する値は指定できません。ただし、他のパーティションのサブパーティションの値リストに定義されている値は指定できます。
DROP VALUESを指定すると、subpartitionの値リストから1つ以上の値を削除できます。
subpartitionの既存値のサブセットにする必要があります。
ALTER TABLE ... DROP SUBPARTITION文を使用する必要があります。
subpartition内の行に削除対象の値が含まれる場合、この操作は実行されずに、エラーが戻されます。最初に削除対象の値が含まれる行を削除してから、この文を再発行する必要があります。
また、パーティションを変更した結果、使用不可能になったローカル索引の処理方法も指定できます。「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索引セグメントは移動されません。
選択したパーティションに対応するローカル索引パーティションが移動されます。移動したパーティションが空でない場合、UNUSABLEのマークが付けられます。ヒープ構成表のグローバル索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
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を使用し、操作中にヒープ構成表のすべての索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
表にLOB列が含まれている場合、LOB_storage_clauseを使用して、このサブパーティションに関連付けられたLOBデータおよびLOB索引セグメントを移動できます。この場合、指定したLOBのみが影響を受けます。特定のLOB列にLOB_storage_clauseを指定しなかった場合、その列のLOBデータおよびLOB索引セグメントは移動されません。
LOBデータ・セグメントを移動する場合、古いデータ・セグメントおよび対応する索引セグメントが削除され、新しい表領域を指定しない場合でも、新しいセグメントが作成されます。
subpartition_specで指定できるpartitioning_storage_clauseの句は、TABLESPACEのみです。
add_table_partition句を使用すると、tableにハッシュ・パーティション、レンジ・パーティションまたはリスト・パーティションを追加できます。
tableで定義されているローカル索引に、実表のパーティションと同じ名前で新しいパーティションが追加されます。索引に同じ名前のパーティションがすでに存在する場合、SYS_Pnという形式でパーティションの名前が生成されます。
tableが索引構成されている場合、表で定義されたすべてのマッピング表およびオーバーフロー領域に、パーティションが追加されます。
add_range_partition_clauseを使用すると、新しいレンジ・パーティションをパーティション表の一番上(最後の既存のパーティションの後)に追加できます。新しいパーティションに作成時の物理属性を指定できます。表にLOB列が含まれている場合、1つ以上のLOB項目にパーティション・レベルの属性を指定することもできます。
新しいpartition_nameを指定しなかった場合、SYS_Pnという形式でパーティション名が割り当てられます。コンポジット・パーティション表にレンジ・パーティションを追加してサブパーティションを定義しなかった場合、「partition_level_subpartition」で説明するとおり、サブパーティション名は自動的に割り当てられます。
ドメイン索引がtableで定義されている場合、IN_PROGRESSまたはFAILEDのマークが付いていると無効になります。
1つの表当たりのパーティションの上限は64KB-1です。
レンジ・パーティションの追加には、次の制限事項があります。
MAXVALUEの場合、表にパーティションを追加できません。そのかわり、split_table_partition句を使用して、表の始めまたは中間にパーティションを追加します。
key_compressionおよびOVERFLOWは、パーティション化された索引構成表に対してのみ有効です。パーティション表にすでにオーバーフロー・セグメントが存在する場合にかぎり、OVERFLOWを指定できます。表レベルでキー圧縮が使用可能な場合にかぎり、キー圧縮を指定できます。
PCTUSEDパラメータは、索引構成表の索引セグメントに対して指定できません。
新しいパーティションの上限を指定します。value_listは、column_listに対応するリテラル値を順序どおりにカンマで区切ったリストです。value_listの値は、表内にある既存の最上位パーティションのパーティション境界より大きくする必要があります。
partition_level_subpartition句(table_partition_description内)は、コンポジット・パーティション表に対してのみ使用できます。この句を使用すると、新しいレンジ-ハッシュ・コンポジット・パーティションまたはレンジ-リスト・コンポジット・パーティションのハッシュ・サブパーティションまたはリスト・サブパーティションを指定できます。この句によって、表レベルでsubpartition_templateに定義された任意のサブパーティションの設定は上書きされます。
この句の詳細は、「CREATE TABLE」の「partition_level_subpartition」を参照してください。詳細は、「CREATE TABLE」を参照してください。
tableに定義されたすべてのローカル索引に対して、同じサブパーティションを持つ新規の索引パーティションが追加されます。tableのグローバル索引が影響を受けることはありません。
add_hash_partition_clauseを使用すると、パーティション表の一番上に新しいハッシュ・パーティションを追加できます。Oracleデータベースは、ハッシュ・ファンクションによってtableの他のパーティションから再ハッシュされた行を、新しいパーティションに移入します。ロード・バランシングを最適化する場合、パーティションの合計数は2の累乗にする必要があります。
パーティション名を指定します。また、パーティションが格納される表領域を指定することもできます。名前を指定しない場合、SYS_Pnという形式でパーティション名が割り当てられます。TABLESPACEを指定しなかった場合、新しいパーティションは表のデフォルトの表領域に格納されます。他の属性は、常に、表レベルのデフォルトから継承されます。
この操作によってパーティション間でデータが再ハッシュされると、対応するすべてのローカル索引パーティションにUNUSABLEのマークが付けられます。update_index_clausesを使用し、操作中にヒープ構成表のすべての索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
parallel_clauseを使用すると、新しいパーティションの作成をパラレル化するかどうかを指定できます。
partition_level_subpartitionは、table_partition_descriptionに対して指定できません。
add_list_partition_clauseを使用すると、パーティションの新しい一連の値を使用して、tableに新しいパーティションを追加できます。新しいパーティションに作成時の物理属性を指定できます。表にLOB列が含まれている場合、1つ以上のLOB項目にパーティション・レベルの属性を指定することもできます。
表にリスト・パーティションを追加すると、表に定義されているすべてのローカル索引に、対応する索引パーティションが同じ値のリストで追加されます。グローバル索引には影響がありません。
リスト・パーティションの追加には、次の制限事項があります。
partition_level_subpartitionは、table_partition_descriptionに対して指定できません。
split_table_partition句を使用して、デフォルト・パーティションを分割する必要があります。
参照:
CREATE TABLE」の「list_partitioning」を参照してください。
COALESCEは、ハッシュ・パーティションにのみ適用されます。coalesce_table_partition句を使用すると、最後のハッシュ・パーティションが選択され、その内容がハッシュ・ファンクションによって決定される1つ以上の残りのパーティションに分散された後、選択されたパーティションが削除されます。
選択したパーティションに対応するローカル索引パーティションが削除されます。1つ以上の吸収パーティションに対応するローカル索引パーティションにUNUSABLEのマークが付けられます。ヒープ構成表のすべての索引が無効になります。update_index_clausesを使用すると、操作中にすべての索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
update_all_indexes_clauseを使用してグローバル索引を更新する場合、副次句ではなくUPDATE INDEXESキーワードのみを指定できます。
drop_table_partition句を使用すると、パーティション表から、partitionおよびそのパーティション内のデータを削除できます。データを表に残したままパーティションを削除する場合は、そのパーティションを隣接するパーティションにマージする必要があります。
tableにLOB列が存在する場合、partitionに対応するLOBデータ、LOB索引パーティションおよび(存在する場合は)サブパーティションも削除されます。
tableが索引構成されており、定義されたマッピング表を持つ場合、対応するマッピング表のパーティションも同様に削除されます。
partitionに対応するローカル索引パーティションおよびサブパーティションは、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_table_partitionを使用すると、表パーティションまたは表サブパーティションの名前をcurrent_nameからnew_nameに変更できます。パーティションおよびサブパーティションのどちらの場合も、new_nameは同じ表に存在するすべてのパーティションおよびサブパーティションと異なる値である必要があります。
tableが索引構成されている場合、対応する主キー索引パーティションに、既存のオーバーフロー・パーティションおよびマッピング表パーティションと同じ名前が割り当てられます。
TRUNCATE PARTITIONを指定すると、partitionからすべての行を削除できます。表がコンポジット・パーティション化されている場合は、partitionのサブパーティションからすべての行が削除されます。TRUNCATE SUBPARTITIONを指定すると、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句を使用すると、current_partitionから新しいセグメント、物理属性および初期エクステントをそれぞれ含む、2つの新しいパーティションが作成されます。current_partitionに対応付けられたセグメントは、廃棄されます。
新しいパーティションは、指定されていないすべての物理属性をcurrent_partitionから継承します。
デフォルト・リスト・パーティションを分割すると、作成される1つ目のパーティションには分割値が格納され、2つ目のパーティションにはデフォルト値が格納されます。
tableが索引構成されている場合、対応するマッピング表のパーティションが分割され、親の索引構成表のパーティションと同じ表領域に配置されます。対応するオーバーフロー領域も分割されます。OVERFLOW句を使用すると、新しいオーバーフロー領域にセグメント属性を指定できます。
対応するローカル索引パーティションにUNUSABLEのマークが付いている場合でも、それらは分割されます。UNUSABLEのマークが付けられ、ユーザーは、分割パーティションに対応するローカル索引パーティションを再構築する必要があります。新しい索引パーティションの属性は、分割されたパーティションから継承されます。新しい索引パーティションは、分割された索引パーティションのデフォルト表領域に格納されます。索引パーティションにデフォルト表領域が定義されていない場合、基礎となる新しい表のパーティションの表領域が使用されます。
tableにLOB列がある場合、LOB_storage_clauseを使用して、分割の結果生成されたLOBデータ・セグメントに対して個々のLOB記憶域属性を指定できます。current_partitionのLOBデータおよびLOB索引セグメントが削除され、新しい表領域を指定しなくても、各LOB列または各パーティションに新しいセグメントが作成されます。
AT句は、レンジ・パーティションのみに適用されます。新しい2つのパーティションのうちの最初の方に、新しい上限(境界を含まない)を指定します。値リストは、current_partitionの元のパーティション境界より小さく、その次に小さいパーティション(そのようなパーティションがある場合)のパーティション境界より大きい値にする必要があります。
VALUES句は、リスト・パーティションのみに適用されます。新しい2つのパーティションのうちの最初の方に含まれるパーティションの値を指定します。指定したパーティションの値リストに基づいて新しい1番目のパーティションが作成されます。また、current_partitionのその他のパーティション値に基づいて新しい2番目のパーティションが作成されます。このため、値リストにはcurrent_partitionのすべてのパーティション値を含めることはできません。また、current_partitionに存在していないパーティション値を含めることもできません。
INTO句を使用すると、分割の結果生成された2つのパ−ティションを定義できます。分割の結果生成される2つのパーティションにオプションの名前および物理属性を指定しない場合でも、partition_specにはPARTITIONキーワードを指定する必要があります。新しいパーティション名を指定しない場合、SYS_Pnという形式の名前が割り当てられます。指定しないすべての属性は、current_partitionから継承されます。
レンジ-ハッシュ・コンポジット・パーティション表の場合、新しいパーティションにサブパーティションを指定するとき、サブパーティションに対してTABLESPACEのみを指定できます。他のすべての属性は、current_partitionから継承されます。新しいパーティションに対してサブパーティションを指定しなかった場合、パーティションの表領域もcurrent_partitionから継承されます。
レンジ-リスト・コンポジット・パーティション表の場合、新しいパーティションにはサブパーティションを指定できません(table_partition_descriptionのpartition_level_subpartitionを使用)。サブパーティションの数および値リストは、current_partitionから継承されます。
すべてのレンジ-リスト・コンポジット・パーティション表およびレンジ-ハッシュ・コンポジット・パーティション表において、新しく作成したサブパーティションに対して名前を指定しなかった場合、親パーティションから名前が次のとおり継承されます。
partition_nameアンダースコア(_)subpartition_nameという形式の名前(たとえば、P1_SUBP1)を持つ場合、新しいパーティション名に基づいて、サブパーティションの名前が生成されます(たとえば、P1A_SUB1やP1B_SUB1)。
SYS_SUBPnという形式のサブパーティション名が生成されます。
索引にUNUSABLEのマークが付いている場合でも、tableで定義されている各ローカル索引の対応するパーティションが分割されます。
ヒープ構成表のすべての索引が無効になります。update_index_clausesを使用し、操作中にこれらの索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
parallel_clauseを使用すると、表のデフォルトのパラレル属性を変更せずに、分割操作をパラレル化できます。
表パーティションの分割には、次の制限事項があります。
subpartition_specで指定できるpartitioning_storage_clauseの句は、TABLESPACEのみです。
この句を使用すると、重複しない値リストを持つ2つのサブパーティションにリスト・サブパーティションを分割できます。
VALUES句では、新しい2つのサブパーティションのうち、1番目のサブパーティションに含める値を指定します。同じパーティション内の別のサブパーティションに対してNULLを指定していない場合は、NULLを指定できます。指定したサブパーティションの値リストに基づいて新しい1番目のサブパーティションが作成されます。また、現行のサブパーティションのその他のパーティション値に基づいて新しい2番目のサブパーティションが作成されます。このため、値リストには現行のサブパーティションのすべてのパーティション値を含めることはできません。また、現行のサブパーティションに存在しないパーティション値も含めることはできません。
INTO句を使用すると、分割の結果生成された2つのサブパ−ティションを定義できます。2つのサブパーティションにオプションの名前および属性を指定しない場合でも、subpartition_specではSUBPARTITIONキーワードを指定する必要があります。新しいサブパーティション名を指定しない場合、またはこの句全体を指定しない場合、SYS_SUBPnという形式の名前が割り当てられます。指定しないすべての属性は、現行のサブパーティションから継承されます。
対応するローカル索引サブパーティションにUNUSABLEのマークが付いている場合でも、それらは分割されます。新しい索引サブパーティションに名前があらかじめ指定されていないかぎり、新しい表のサブパーティションの名前が継承されます。この場合、SYS_SUBPnという形式の新しい索引サブパーティション名が割り当てられます。新しい索引サブパーティションの物理属性は、親サブパーティションから継承されます。親サブパーティションにデフォルトのTABLESPACE属性が定義されていない場合、対応する新しい表のサブパーティションの表領域が継承されます。
ヒープ構成表の索引が無効になります。update_index_clausesを使用し、これらの索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
表サブパーティションの分割には、次の制限事項があります。
subpartition_specで指定できるpartitioning_storage_clauseの句は、TABLESPACEのみです。
merge_table_partitions句を使用すると、tableの2つのパーティションの内容を1つの新しいパーティションにマージして、元の2つのパーティションを削除できます。
partition_level_subpartitionは指定できません。サブパーティション・テンプレートからサブパーティションの情報が取得されます。サブパーティションのテンプレートを定義していない場合、1つのデフォルト・サブパーティションが作成されます。
segment_attributes_clauseに指定されていない属性はすべて、表レベルのデフォルトから継承されます。
新しいpartition_nameを指定しなかった場合、SYS_Pnという形式でパーティション名が割り当てられます。新しいパーティションにサブパーティションがある場合、「partition_level_subpartition」で説明するとおりにサブパーティション名が割り当てられます。
選択したパーティションに対応するローカル索引パーティションは削除され、マージされたパーティションに対応するローカル索引パーティションにUNUSABLEのマークが付けられます。ヒープ構成表のすべてのグローバル索引にも、UNUSABLEのマークが付けられます。update_index_clausesを使用し、操作中にこれらすべての索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
この句は、ハッシュ・パーティション表に対して指定できません。かわりに、coalesce_table_partition句を使用してください。
partition_level_subpartition句は、レンジ-ハッシュ・コンポジット・パーティションをマージする場合にのみ有効です。この句を使用すると、新しくマージしたパーティションに対してサブパーティション属性を指定できます。この句に指定されていないすべての属性は、表レベルの値から継承されます。この句を指定しない場合、マージされた新しいパーティションは、表レベルのデフォルトからサブパーティション属性を継承します。
この句を指定しない場合、新しいパーティションでは、定義したサブパーティションのテンプレートからサブパーティションの定義が継承されます。サブパーティションのテンプレートを定義していない場合、新しくマージされたパーティションに1つのサブパーティションが作成されます。
parallel_clauseを指定すると、マージ操作がパラレル化されます。
この句は、レンジ-リスト・コンポジット・パーティションに対して指定できません。
merge_table_subpartitions句を使用すると、tableの2つのリスト・サブパーティションの内容を1つの新しいサブパーティションにマージして、元の2つのサブパーティションを削除できます。マージ対象の2つのサブパーティションは同一パーティションに属している必要がありますが、隣接している必要はありません。マージの結果生成されるサブパーティション内のデータは、マージされたサブパーティションのデータが結合されたものです。
INTO句全体を指定しない場合、SYS_SUBPnという形式の名前が割り当てられます。
INTO句を指定しない場合、subpartition_specでキーワードSUBPARTITIONを指定する必要があります。list_values_clauseは指定できません。partitioning_storage_clauseで指定できるのは、TABLESPACE句のみです。
新しいサブパーティションに対して明示的に指定しなかった属性は、パーティション・レベルの値から継承されます。新しいサブパーティションに対してサブパーティション名を再利用すると、新しいサブパーティションでは、パーティション・レベルのデフォルト値ではなく、名前が再利用されたサブパーティションの値が継承されます。
対応するローカル索引のサブパーティションがマージされ、結果として生成される索引サブパーティションにはUNUSABLEのマークが付けられます。また、ヒープ構成表のパーティション化されたグローバル索引とパーティション化されていないグローバル索引の両方に対して、UNUSABLEのマークが付けられます。update_index_clausesを使用すると、操作中にすべての索引を更新できます。
パーティション化された索引構成表では、update_index_clausesは不要であり、無効です。索引構成表は主キー・ベースであるため、値を変更せずにデータを移動する操作では、グローバル索引はUSABLEのままです。
この句は、ハッシュ・サブパーティションに対して指定できません。
EXCHANGE PARTITION句またはEXCHANGE SUBPARTITION句を使用すると、次のデータおよび索引セグメントを交換できます。
交換対象の表、パーティションおよびサブパーティションの構造は、パーティション・キーを含め常に同じである必要があります。リスト・パーティションとリスト・サブパーティションの場合、対応する値リストも一致している必要があります。
この句をトランスポータブル表領域とともに使用すると、高速データ・ロードが容易になります。
tableにLOB列がある場合、各LOB列のLOBデータ、およびLOB索引パーティション・セグメントまたはLOB索引サブパーティション・セグメントは、tableの対応するLOBデータおよびLOB索引セグメントと交換されます。
2つのオブジェクトのすべてのセグメント属性(表領域およびロギングを含む)も交換されます。
表およびパーティションのすべての統計情報(表、列、索引統計情報およびヒストグラムを含む)が交換されます。新しいパーティションを受け取る表の集計統計は再計算されます。
交換されるオブジェクトのすべてのグローバル索引は、無効になります。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の状態である必要があります。制約に違反するすべての行のROWIDを格納する表を指定します。schemaを指定しない場合、自分のスキーマ内に例外表があるとみなされます。この句自体を指定しない場合、表の名前はEXCEPTIONSになります。例外表は、ローカル・データベース内にある必要があります。
次のいずれかのスクリプトを使用して、EXCEPTIONS表を作成できます。
UTLEXCPT.SQLは、物理ROWIDを使用します。そのため、行は、索引構成表からではなく従来表から収集されます
UTLEXPT1.SQLは、ユニバーサルROWIDを使用します。そのため、行は、ヒープ構成表と索引構成表の両方から収集されます。
独自の例外表を作成する場合、これら2つのスクリプトのいずれかで規定される形式に従う必要があります。
ユニバーサルROWIDではなく、主キーに基づく索引構成表から例外を収集する場合、索引構成表ごとに別の例外表を作成し、主キー記憶域を確保する必要があります。スクリプトを変更および再発行することによって、別の名前の例外表を複数作成できます。
この句はサブパーティションの交換では無効です。
|
参照:
|
この2つの句を使用すると、パーティションとサブパーティションのどちらを変更するかに応じて、partitionに対応するローカル索引パーティションおよび索引サブパーティションの属性を変更できます。
UNUSABLE LOCAL INDEXESを指定すると、partitionに関連付けられたローカル索引パーティションまたは索引サブパーティションに、UNUSABLEのマークが付けられます。
REBUILD UNUSABLE LOCAL INDEXESを指定すると、partitionに関連付けられたUNUSABLEのローカル索引パーティションまたは索引サブパーティションが再構築されます。
この句には、次の制限事項があります。
modify_table_partitionの他の句と同時に指定することはできません。
modify_table_partitionでこの句を指定できません。ただし、modify_hash_subpartitionまたはmodify_list_subpartition句では指定できます。
update_index_clausesを使用すると、表のパーティション化操作の一部としてtableの索引を更新できます。表パーティションでDDL文を実行する場合、tableに索引が定義されていると、DDL文を実行中のパーティションだけでなく索引全体が無効になります。この句を使用すると、変更する索引パーティションをDDL操作中に更新できるため、DDL文の後で索引を再構築する必要がなくなります。
この句を使用すると、tableのすべての索引を更新できます。
この句は、表パーティションの操作に対してのみ有効で、ローカル索引にのみ影響を与えます。
index_partition_descriptionを使用すると、各ローカル索引のそれぞれのパーティションの物理属性、表領域の記憶域およびロギングを指定できます。PARTITIONキーワードのみを指定すると、索引のパーティションは次のように更新されます。
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未満に設定されている場合、表と記憶表は新しい表領域に自動的に移動します。
索引構成表の場合、move_table_clauseのindex_org_table_clauseを使用すると、オーバーフロー・セグメント属性も指定できます。move_table_clauseを使用すると、索引構成表の主キー索引が再構築されます。オーバーフロー・データ・セグメントは、キーワードOVERFLOWが明示的に指定されていないかぎり、再構築されません。ただし、次の場合は例外です。
ALTER TABLE文の一部としてPCTTHRESHOLDの値またはINCLUDING列を変更する場合は、オーバーフロー・データ・セグメントが再構築されます。
LOB列の索引およびデータ・セグメントは、LOB列をALTER TABLE文の一部として明示的に指定しないかぎり、再構築されません。
この句は、索引構成表に対してのみ有効です。ONLINEを指定すると、表の主キー索引の再構築中に、索引構成表に対するDML操作を実行できます。
表のオンライン化には、次の制限事項があります。
MOVE中のパラレルDMLはサポートされていません。ONLINEを指定し、パラレルDML文を発行すると、Oracleデータベースはエラーを戻します。
MAPPING TABLEを指定すると、マッピング表が存在していない場合にマッピング表を作成できます。マッピング表がすでに存在する場合、マッピング表は索引構成表とともに移動され、すべてのビットマップ索引にはUNUSABLEのマークが付けられます。新しいマッピング表は、親表と同じ表領域に作成されます。
NOMAPPINGを指定すると、既存のマッピング表が削除されます。
この句の詳細は、「CREATE TABLE」の「mapping_table_clauses」を参照してください。
tableでビットマップ索引が定義されている場合は、NOMAPPINGを指定できません。
key_compression句を使用すると、索引構成表のキー圧縮を使用可能または使用禁止にできます。
COMPRESSを指定すると、キー圧縮が使用可能になります。これによって、索引構成表の主キー列の値が重複しなくなります。integerを使用して、接頭辞の長さ(圧縮する接頭辞列数)を指定します。接頭辞の長さの有効範囲は、1〜(主キー列数-1)までです。デフォルトでは(主キー列数-1)になります。
NOCOMPRESSを指定すると、索引構成表でのキー圧縮が使用禁止になります。これはデフォルトです。
再構築した索引構成表を格納する表領域を指定します。
表の移動には、次の制限事項があります。
MOVEを指定する場合は、ALTER TABLE文の最初の句にする必要があります。この句以外では、physical_attributes_clause、parallel_clauseおよびLOB_storage_clauseのみが指定できます。
LONGまたはLONG RAW列を含む表は、移動できません。
enable_disable_clauseを使用すると、Oracleデータベースが整合性制約を適用するかどうか、およびその方法を指定できます。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データベースが制約を使用可能にするためには、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;
次の文は、オブジェクト型、主キーに基づくオブジェクト識別子に対応するオブジェクト表、およびユーザー定義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整合性制約を追加します。
ALTER TABLE countries ADD (duty_pct NUMBER(2,2) CHECK (duty_pct < 10.5), visa_needed VARCHAR2(3));
次の文は、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);
次の文は、ネストした表の列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データベースは、暗黙的に列名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」を参照)。
この句を使用すると、表領域内の各データ・ファイルで、連続する未使用エクステントをすべて結合し、連続するより大きいエクステントを作成します。
この句を指定すると、tablespaceの名前を変更できます。この句は、tablespaceおよびそのすべてのデータ・ファイルがオンラインで、COMPATIBLEパラメータが10.0.0以上に設定されている場合にのみ有効です。名前の変更は、永続表領域および一時表領域の両方に対して実行できます。
tablespaceが読取り専用の場合、データ・ファイルのヘッダーは更新されず、新しい名前は反映されません。アラート・ログに、データ・ファイルのヘッダーが更新されなかったことが記録されます。
tablespaceが、Real Application Clusters環境のインスタンスに対する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」を参照してください。
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データベースは表領域内のすべてのオンライン・データ・ファイルに対してチェックポイントを実行しますが、すべてのファイルに対して書込みを実行できるかどうかは保証しません。この文の発行時にオフラインであったファイルは、表領域をオンラインに戻す前に、メディア・リカバリを行う必要があります。
IMMEDIATEを指定すると、Oracleデータベースは表領域のファイルが使用可能であることを保証しません。また、チェックポイントも実行しません。表領域をオンラインに戻す前に、メディア・リカバリを行う必要があります。
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';
次の例は、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 © 2006 Oracle Corporation. All Rights Reserved. |
|