将范围间隔分区数据从一个 table 移动到其他数据库中的历史记录 table

Move Range Interval partition data from one table to history table in other database

我们有一个主要的 table,它是按日期分区的范围,间隔为 1 个月。它也是一个包含 4 个不同值的子分区列表。所以本质上它是一个有 4 个子分区的一个月分区。

数据库:Oracle 19c

我需要有关如何有效地将 partition/sub-partition 数据从活动模式移动到另一个数据库中的历史模式的建议。

此外,还有大约 30 个 table 在主 table 上被引用分区,数据也需要移动。总的来说,我希望移动大约 2500 个子分区

我不确定在这种情况下交换分区是否是正确的方法?

TIA

可以使用交换快速获取数据out 的活动 table,但您仍然会通过线路将 table 发送到远程历史数据库以加载它。

在这种情况下,使用“交换”可能只是在过程中增加了更多步骤而收效甚微。 (这里仍有潜在用途,具体取决于您要如何处理索引等)。

但最简单的可能只是传输数据,假设两个 table 之间有一个共同的结构,即

insert /*+ APPEND */ into history_table@remote_db
select * from active_table partition ( myparname )

我不记得 db 是否支持分区命名语法 link,但如果不支持,则相应的日期谓词将执行相同的操作,然后跟进:

alter table active_table truncate partition myparname;