2012-01-25 19 views
4

私は5年の巨大なデータを持つテーブルを持っています(何百万というレコード、そのちょっとしたケーススタディです!)、毎年パーティションがあります。今私は最後の2年間のデータを保持し、アーカイブと呼ばれる新しいテーブルに3年間のデータの残りを転送するでしょうか?パーティションをテーブルから切り離して、Oracleで別のパーティションに接続する方法はありますか。

ダウンタイムが短く高性能で理想的な方法は何ですか?

+0

クローズ有権者用:これはデータ操作に関する質問です。ほとんどの場合、DBAはこれに関与しません。 dbプログラマは、それ自身を行う必要があります。 –

+0

@FlorinGhita [dba.se]はDBAのもの以上のものを扱っています;)私はVtC – Sathya

+1

@ Sathyaへのものではありませんでしたが、私は理解しています。しかし、私はこの質問がここでうまくいくと思う、stackoverflowで。 dba.stackexchange.comの場合はおそらく問題ありませんが、ここでもOKです。 –

答えて

4
alter table exchange partition 

です。このコマンドは、パーティションのセグメントをテーブルのセグメントで拡張します。それはいくつかの参照インターチェンジしか行わないので、それは光速です。 AFAIKは直接テーブルを交換できないので、一時テーブルが必要です。以下のような

何か:

create table tmp_table(same columns); 
Add partition p_2011 in table ARCH_TABLE; 

ALTER TABLE CURR_TABLE EXCHANGE PARTITION P_2011 WITH TABLE tmp_table; 
ALTER TABLE ARCH_TABLE EXCHANGE PARTITION P_2011 WITH TABLE tmp_table; 

実行する前に、あなたのコードをテストし、テストしてください。

+0

、私は宛先テーブルのアーチがパーティションを持っている必要があるかどうかを知りたいです。 – azzaxp

+0

はい、絶対に必要です。この例の2行目(パーティションの追加)です。そして、私はテーブルが同じパーティションでなければならないことをお勧めします。 –

+0

宛先テーブルに必ずしもパーティションがあるとは限りません。 – azzaxp