如何在oracle中从表中分离分区并将其附加到另一个表?

azz*_*axp 4 oracle partitioning oracle11g

我有一个包含 5 年的海量数据(比如数百万条记录,但这只是一个案例研究!)的表,每年都有一个分区。现在我想保留最近 2 年的数据,并将其余 3 年的数据传输到一个名为存档的新表中?

停机时间最短且性能较高的理想方法是什么?

Flo*_*ita 5

alter table exchange partition 
Run Code Online (Sandbox Code Playgroud)

就是答案。该命令将分区的段与表的段交换。它的速度是光速,因为它只进行一些参考交换。所以,你需要一些临时表,因为据我所知你不能直接交换它们。

就像是:

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;
Run Code Online (Sandbox Code Playgroud)

请在运行之前测试您的代码。