2011-08-12 12 views
0

アーカイブ戦略を見ると、特定のデータセットをアーカイブする必要があります。特定のサブパーティションのパーティション交換ロード

挿入/削除ルーチンではなく、パーティション交換を使用することを考えていました。

対象アーカイブ表は、日付にパーティション化された間隔範囲で、国のリスト・サブパーティションです。

交換を分割したいのは特定の国のためです。

create table 
test_table 
(tbl_id number, 
country varchar2(2), 
sales_dt date, 
volume number) 
partition by range (sales_dt) interval (NUMTOYMINTERVAL(1,'Month')) 
subpartition by list (country) 
Subpartition template 
(subpartition p_ireland values ('IR'), 
subpartition p_france values ('FR'), 
subpartition p_other values (DEFAULT)) 
(partition before_2008 values less than (to_date('01-JAN-2008','DD-MON-YYYY'))); 

ロードされたデータは、パーティションとサブパーティションに正しく分類されます。すべてのパーティション名がシステム生成されます。

私がすべての 'FR'サブパーティションのパーティション交換に来たとき、私はロジックを特定できません。

Alter table test_table 
exchange subpartition system_generated_name 
with table TEST_TABLE_ARCH; 

を使用して

私は、特定の '知られている' サブパーティションを交換することができます。

Oracle 11gで 'for'ロジックを使用することはできますが、構文を使用することはできません。

アイデア?

答えて

0

私たちは過去にこれをテストし、正しく実行するための手順を考えなければならないと考えました。目的は、ソーステーブルと空のスワップテーブルの間の2つのパーティションスワップと、現在のスワップテーブルとアーカイブテーブルの間の2つ目のパーティションスワップを実行することです。

前提条件:ソーステーブルでパーティションスワップを実行する空のスワップテーブルを作成します。また、パーティション化されるアーカイブテーブルも作成します。

ハイレベルのプロセス:

  • は、アーカイブテーブルに新しい空のパーティションを作成します。
  • あなたが アーカイブするスワップテーブルとソースパーティション間のパーティション交換を行います(結果:スワップテーブル内のパーティションをアーカイブし、ソーステーブルの空のパーティションを)
  • アーカイブテーブル内のスワップテーブルと新しい空のパーティション間のパーティション交換を行います。 (結果は:元のソース表のパーティションは現在、アーカイブ・テーブル内のパーティションで、スワップテーブルが空の状態に戻っている)
(あなたはそれを再利用したくないと仮定した場合)ソース・テーブル内の
  • ドロップ空きパーティション

    これをコード化したことはありませんので、このプロセスでは微調整が必​​要な場合がありますが、このような戦略を追求した場合はこれが必要でした。

  • +0

    フィードバックいただきありがとうございます。優れた手順に沿って基本的なパーティション交換を行うことはできましたが、特定のサブパーティションを対象にすることはできませんでした。私は、アーカイブテーブルに挿入するマッピングと削除するマッピングの2つのマッピングのルートをたどった。 – Nitibob

    関連する問題