并行INSERT APPEND
使用NOLOGGING
将是这样做的方法,然后与所有的NOLOGGING操作,立即采取备份的完成。首先将索引标记为不可用,禁用约束,更改表,执行操作,然后重新启用约束等。
Append 会导致 Oracle 始终获取当前高水位线以上的空闲空间,因此在重用段中的空间方面效率不高,但它避免了摆弄空闲列表和 UNDO 开销。如果您出于任何原因必须重新开始TRUNCATE
,请不要DELETE
。
至于增量提交,这将取决于您的数据是如何分割的,您能否轻松地说一次移动一个月的价值(例如,源和目标的分区方案是否相同)?因为请记住,如果您需要满足某个谓词,那显然会减慢您的速度。测试以确保操作不会在逻辑上失败(例如,源和目标中的数据类型不兼容)然后分配足够的资源并在一个事务中执行它。祝你好运!
小智 3
如果分区方案相同(表 1 中的分区 a 的数据转到表 2 中的分区 a 等),那么我将进行多个会话,并让每个会话将其数据附加到其“自己的”分区中。这可以防止大量锁定并具有最佳速度。根据硬件的不同,您可以将 HBA 卡填充到其颈部。每个分区的提交 - 假设每个分区多于几行 - 不会成为问题,我当然会这样做。假设应用程序在迁移期间关闭,回退很简单:在重试之前不要更改应用程序并截断 table2 的分区,至少对于应用程序在第二次运行之前更改数据的部分。
我希望这有帮助