暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 复制表需要很长时间

ASKTOM 2021-05-19
959

问题描述

您好,我是Oracle新手,在Oracle 11g上遇到以下问题:
我想复制一张表

INSERT INTO table1 (SELECT "column1", "column2" FROM table2);


该表有一个BLOB列和不到900万条记录,该过程在2,5小时后没有完成。这是正常现象还是我有奇怪的设置?

专家解答

2.5小时插入900万行听起来太长。如果斑点很大,可能会有很多数据要传输。

为了让它更快,你需要理解why目前很慢。

目标表上有触发器吗?如果是这样,请查看这些功能; 删除这些功能可能会带来良好的性能提升
是否有任何其他未提交的插入添加相同的主键/唯一值?如果是这样,请承诺!

如果这些都不适用,请查看报表计划,看看它在做什么工作。

有几种方法可以做到这一点:

-如果您获得了适当的许可 (诊断和调整包),则查看SQL monitor报告将显示您希望该语句正在执行
-如果您没有获得许可,则可以通过以下方式获取插入的执行计划:

set serveroutput off
alter session set statistics_level = all;



select * 
from   table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST'));


-跟踪会话并使用tkprof解析输出

exec DBMS_monitor.session_trace_enable ( null, null, true, true );
***your code here***
exec DBMS_monitor.session_trace_disable;


然后在数据库服务器上找到跟踪文件,并将其变成更具可读性的东西:

tkprof <跟踪 _ 文件 _ 名称> <输出 _ 文件 _ 名称>

如果您需要了解输出的帮助,请在此处发布,我们将为您提供帮助。

有关这些方法的更多信息,请参见https://blogs.oracle.com/sql/how-to-create-an-execution-plan
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论