【问题标题】:How to detach a partition from a table and attach it to another in oracle?如何从表中分离分区并将其附加到oracle中的另一个分区?
【发布时间】:2012-01-25 17:49:06
【问题描述】:

我有一个包含 5 年的大量数据的表(比如数百万条记录,但这只是一个案例研究!),每年都有一个分区。现在我想保留过去 2 年的数据,并将剩下的 3 年数据转移到一个名为存档的新表中?

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

【问题讨论】:

  • 对于亲密的选民:这是一个关于数据操作的问题。在大多数情况下,DBA 不会参与其中。 db 程序员必须自己做。
  • @FlorinGhita Database Administrators 处理的不仅仅是 DBA 的东西 ;) 虽然我不是 VtC 的人
  • @Sathya 我明白了。但我认为这个问题在这里很合适,在stackoverflow上。 dba.stackexchange.com 可能没问题,但这里也可以。

标签: oracle oracle11g partitioning


【解决方案1】:
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;

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

【讨论】:

  • 感谢您的回复,我想知道目标表拱门是否需要分区。
  • 是的,这是绝对必要的。它是示例中的第二行(添加分区)。我建议你这些表应该有相同的分区,相同的范围。
  • 目标Table不一定有Partition。
  • 所以,请添加它。没有它,exchange 命令将无法工作。 Alter table add partiton 是命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多