如何在ORACLE上将带有BLOB的110GB表从一个模式复制到另一个模式

时间:2010-05-12 10:40:18

标签: sql oracle

我在一个模式中有一个包含110GB BLOB的表,我想将它复制到另一个模式到另一个模式。

我只想复制源表的一列,所以我使用UPDATE语句,但复制3 GB数据需要2.5小时。

有更快的方法吗?

更新

我使用的代码非常简单:

update schema1.A a set blobA = (select blobB from schema2.B b where b.IDB = a.IDA);

ida和idb是索引。

3 个答案:

答案 0 :(得分:1)

检查目标表上是否存在导致性能问题的索引,如果是,请暂时禁用它们,然后在将数据从源表中的一列复制到目标表中的列之后重新创建它们。

答案 1 :(得分:0)

如果您使用的是Oracle 10或11,请检查ADDM以查看导致问题的原因。它可能是I / O或事务日志问题。

这是什么类型的光盘存储?您是否尝试在该光盘系统上将110 GB文件从一个位置复制到另一个位置?需要多长时间?

答案 2 :(得分:0)

我不知道oracle是否会自动增加数据库大小。如果是,则在运行查询之前增加分配给数据库的空间量,使其超过您要增长的空间量。

我知道在SQL服务器中,在默认设置下,当您开始填充时,它会自动分配额外10%的数据库大小。当它填满时,它会停止一切并重新分配另外10%。运行批量加载数据的查询时,这会严重降低查询速度。

另外,正如zendar所指出的,检查磁盘IO。如果它具有较高的队列长度,那么您可能会受到驱动器运行速度快的限制。