私は5年の巨大なデータを持つテーブルを持っています(何百万というレコード、そのちょっとしたケーススタディです!)、毎年パーティションがあります。今私は最後の2年間のデータを保持し、アーカイブと呼ばれる新しいテーブルに3年間のデータの残りを転送するでしょうか?パーティションをテーブルから切り離して、Oracleで別のパーティションに接続する方法はありますか。
ダウンタイムが短く高性能で理想的な方法は何ですか?
私は5年の巨大なデータを持つテーブルを持っています(何百万というレコード、そのちょっとしたケーススタディです!)、毎年パーティションがあります。今私は最後の2年間のデータを保持し、アーカイブと呼ばれる新しいテーブルに3年間のデータの残りを転送するでしょうか?パーティションをテーブルから切り離して、Oracleで別のパーティションに接続する方法はありますか。
ダウンタイムが短く高性能で理想的な方法は何ですか?
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;
実行する前に、あなたのコードをテストし、テストしてください。
クローズ有権者用:これはデータ操作に関する質問です。ほとんどの場合、DBAはこれに関与しません。 dbプログラマは、それ自身を行う必要があります。 –
@FlorinGhita [dba.se]はDBAのもの以上のものを扱っています;)私はVtC – Sathya
@ Sathyaへのものではありませんでしたが、私は理解しています。しかし、私はこの質問がここでうまくいくと思う、stackoverflowで。 dba.stackexchange.comの場合はおそらく問題ありませんが、ここでもOKです。 –