データ・セグメントを交換することで、パーティションまたはサブパーティションを非パーティション表に、非パーティション表をパーティション表のパーティションまたはサブパーティションに変換できます。ハッシュ・パーティション表をコンポジット* - ハッシュ・パーティション表のパーティションに変換することも、コンポジット* - ハッシュ・パーティション表のパーティションをハッシュ・パーティション表に変換することも可能です。同様に、レンジ - リスト・パーティション表をコンポジット* - レンジまたはリスト・パーティション表のパーティションに変換することも、コンポジット* - レンジまたはリスト・パーティション表のパーティションをレンジ - リスト・パーティション表に変換することも可能です。
表パーティションの交換は、パーティション表の内外で迅速にデータを取得するのに便利です。たとえば、データ・ウェアハウス環境で、パーティションの交換を行うと、新しい増分データの既存のパーティション表への高速データ・ローディングが容易になります。
OLTP環境やデータ・ウェアハウス環境では、パーティション表の古いデータ・パーティションを交換することで利点が得られます。実際には削除されずにパーティション表からデータがパージされ、後から個別にアーカイブできます。
パーティションを交換すると、ロギング属性が保持されます。INCLUDING
INDEXES
句でローカル索引も交換するかどうか、およびWITH
VALIDATION
句で行が適切にマッピングされていることを検証するかどうかをオプションで指定できます。
注意:
パーティションの交換操作にWITHOUT
VALIDATION
を指定する場合、これに関連するのはデータ・ディクショナリの更新のみであるため、通常は高速な操作です。ただし、交換操作に関連する表またはパーティション表に主キーがある場合や一意制約が有効化されている場合には、制約の整合性を維持するため、交換操作はWITH
VALIDATION
が指定されているように実行されます。
この検証アクティビティのオーバーヘッドを避けるには、パーティションの交換操作を実行する前に、各制約に対して次の文を発行します。
ALTER TABLE table_name DISABLE CONSTRAINT constraint_name KEEP INDEX
交換後に制約を有効化します。
WITHOUT
VALIDATION
を指定する場合は、交換するデータが交換するパーティションに含まれることを確認する必要があります。
UPDATE
INDEXES
を指定しないかぎり、パーティションをUNUSABLE
として交換する表のグローバル索引またはすべてのグローバル索引パーティションが、Oracle Databaseによりマークされます。交換が行われる表のグローバル索引またはグローバル索引パーティションは、無効化されたままになります。
索引構成表にはUPDATE
INDEXES
は使用できません。かわりにUPDATE
GLOBAL
INDEXES
を使用してください。
DBMS_STATS
表プリファレンスのINCREMENTAL
がtrueに設定され、INCREMENTAL_LEVEL
がTABLE
に設定されると、統計が非パーティション表で収集された場合にパーティション表の増分統計がパーティション交換操作でメンテナンスされます。
注意:
仮想列の列統計が不適当な場合、その古い統計を保持するのではなく、列統計は削除されます。この削除についての情報は、アラート・ログ・ファイルに書き込まれます。
関連項目:
増分統計の詳細は、Oracle Database SQLチューニング・ガイドを参照してください
DBMS_STATS
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
ビューを使用したパーティション表および索引の監視の詳細は、「パーティション表および索引の情報の表示」を参照してください。
この項の内容は次のとおりです。