我需要通过 Dblink 将 1000 万条记录插入到我的数据库中。
正常的插入语句 insert into select * from 是正确的还是最佳的方式?
还有什么其他选择可以插入此卷的数据?
我正在使用 Oracle 11g。
我需要通过 Dblink 将 1000 万条记录插入到我的数据库中。
正常的插入语句 insert into select * from 是正确的还是最佳的方式?
还有什么其他选择可以插入此卷的数据?
我正在使用 Oracle 11g。
对于 1000 万条记录,我们可以使用 EXPDP/IMPDP 还要注意我们不能跨 dblink 复制分区表的数据(我们需要在本地创建临时非分区表加载数据,然后通过数据库链接复制)
谢谢, 卡利安
要找到最佳方式(使用 DBLINK),您必须定义优化标准...
简单先估计一下插入所需的时间。测试 10.000 行并将时间乘以 1.000 - 您将获得整个语句持续时间的近似值。如果时间可以接受,你就完成了。
如果不是,请计算达到的传输速率 MB/秒,并将其与您的网络吞吐量进行比较。您将看到是否有改进的可能。
下一个选项是直接路径插入- 使用 APPEND 提示(在目标端)并通过远程端的链接进行选择。
如果这种改进还不够(并且您仍然有理论上的改进),最后的手段是并行插入。不幸的是,这不可能通过 PARALLEL 提示进行,您必须打开 N 次插入到 N 个临时表或临时表的 N 个分区。
您看到提高速度需要付出一些努力,因此您必须找到自己的最佳...
我没有详细介绍每个选项,因为它很容易找到其他信息。