0

我需要通过 Dblink 将 1000 万条记录插入到我的数据库中。

正常的插入语句 insert into select * from 是正确的还是最佳的方式?

还有什么其他选择可以插入此卷的数据?

我正在使用 Oracle 11g。

4

2 回答 2

0

对于 1000 万条记录,我们可以使用 EXPDP/IMPDP 还要注意我们不能跨 dblink 复制分区表的数据(我们需要在本地创建临时非分区表加载数据,然后通过数据库链接复制)

谢谢, 卡利安

于 2015-10-30T11:49:28.357 回答
0

要找到最佳方式(使用 DBLINK),您必须定义优化标准...

简单先估计一下插入所需的时间。测试 10.000 行并将时间乘以 1.000 - 您将获得整个语句持续时间的近似值。如果时间可以接受,你就完成了。

如果不是,请计算达到的传输速率 MB/秒,并将其与您的网络吞吐量进行比较。您将看到是否有改进的可能。

下一个选项是直接路径插入- 使用 APPEND 提示(在目标端)并通过远程端的链接进行选择。

如果这种改进还不够(并且您仍然有理论上的改进),最后的手段是并行插入。不幸的是,这不可能通过 PARALLEL 提示进行,您必须打开 N 次插入到 N 个临时表或临时表的 N 个分区。

您看到提高速度需要付出一些努力,因此您必须找到自己的最佳...

我没有详细介绍每个选项,因为它很容易找到其他信息。

于 2015-10-30T13:52:52.027 回答