Oracle Data Pump Export(expdp)锁定表(或类似的东西)

时间:2011-07-01 19:44:12

标签: oracle oracle11g database-partitioning table-locking

我必须从具有全局索引的分区表中导出数据,该索引必须始终在线,但我在这方面遇到了麻烦。 对于数据导出我使用Data Pump Export - expdp,我只导出一个分区。最古老的,不是活跃的。

我的expdp命令导出正确的数据,它看起来像这样:

expdp user/pass@SID DIRECTORY=EXP_DIR 
DUMPFILE=part23.dmp TABLES=SCHEMA_NAME.TABLE_NAME:TABLE_PARTITION_23`

使用数据库的应用程序的连接超时为10秒。此参数无法更改。如果INSERT查询未在10秒内完成,则数据将写入备份文件。

我的问题是,在持续几分钟的导出过程中,某些数据最终会出现在备份文件中,而不会出现在数据库中。我想知道为什么,并避免它。

每周组织一次分区,我保持4个分区处于活动状态(过去4周)。每个分区最多3 GB。

我正在使用Oracle 11.2

1 个答案:

答案 0 :(得分:1)

您是否获得使用AWR的许可?如果是这样,当超时发生时,您是否有快照的AWR报告?

Oracle读者不会阻止编写者,导出过程也没有理由锁定任何会影响新插入的内容。

这是一个超时为10秒的INSERT操作(即您在单个INSERT语句中插入了大量行)吗?或者这是一批单独的插入,使得一些插入可以在10秒窗口中成功,有些可能会失败?你说“一些数据最终会出现在备份文件中”,但我不确定这些场景中哪些更准确。

在正常操作期间,您与10秒超时有多接近?

系统是否可能受I / O限制,并且执行导出会增加I / O系统的负载,导致所有操作变慢?如果你有一个I / O瓶颈,你添加了一个必须读取3 GB分区并将该数据写入磁盘的导出过程(可能也在数据库服务器上),这肯定会导致整体放缓。如果你已经合理地接近10秒超时,那肯定会让你超越边缘。