web-dev-qa-db-ja.com

同じ名前のパーティションを持つ2つのテーブル間のパーティションを交換できますか?

バックアップテーブルから1つのパーティションを復元しようとしています。両方のテーブルに同じ名前のパーティションがあります。私の目標は、バックアップテーブルパーティションxからデータを取得し、元のテーブルパーティションxに配置することです。 xはパーティションの名前です。

私は補助テーブルを使用してそれをやろうとしました。それらを直接交換する方法、またはより優れたパフォーマンスを持つ他のソリューションはありますか?

2
Sameer Pradhan

これ見たことある? https://community.Oracle.com/thread/889338?start=0&tstart=

これは、パーティション化されたテーブルからパーティション化されていないテーブルへ、またはその逆にのみパーティションを交換できることを示しています。

パーティションを一時的な非パーティション化テーブルに一時的に交換してから、ターゲットパーティションテーブルに交換する必要があります。

上記の広義のルールには興味深いしわがあります。 Oracleのドキュメントから抜粋した次の抜粋を参照してください。

exchange_partition_subpart

EXCHANGE PARTITIONまたはEXCHANGE SUBPARTITION句を使用して、次のデータおよびインデックスセグメントを交換します。

  • 次のものを含む1つの非パーティションテーブル:

    1. 1つの範囲、リスト、またはハッシュパーティション

    2. 1つの範囲、リスト、またはハッシュサブパーティション

  • 範囲範囲またはリスト範囲のコンポジットパーティションテーブルパーティションの範囲サブパーティションを持つ1つの範囲パーティションテーブル

  • 範囲ハッシュまたはリストハッシュコンポジットパーティションテーブルパーティションのハッシュサブパーティションを含む1つのハッシュパーティションテーブル

  • 範囲リストまたはハッシュリストの複合パーティションテーブルパーティションのリストサブパーティションを持つ1つのリストパーティションテーブル

すべての場合において、テーブルの構造と、パーティションキーを含む交換されるパーティションまたはサブパーティションは、同一である必要があります。リストパーティションとサブパーティションの場合、対応する値リストも一致する必要があります。

7
Max Vernon