转储导入停止并且没有错误消息

Dump import stops and no error message

我正在使用此命令(使用 Putty)从远程桌面将 .dmp 文件导入 Oracle 数据库:

imp system/xxxxx@RDJD1 file=livraison_1.dmp fromuser=bob_rp touser=bob_rp log=livraison_1.log

导入运行但几分钟后卡住了。我认为可能是因为超时,所以在 Putty 的连接配置中我添加了一个计时器来发送空数据包以保持会话处于活动状态。 但是导入完全卡在同一个 table 上(这不是一个很大的 table)。

这是我最后的终端输出(没有错误消息):

. . Importing table "C_TABLE16" 900789 rows
. . Importing table "C_TABLE17" 127 rows
. . Importing table "C_TABLE18"

(此外,我认为它是相关的:导入失败后,当我关闭终端并想要连接到 sqlplus 时,我收到一条错误消息:

ORA-00257: archiver error. Connect internal only, until freed.

如果我在几分钟后重试,那么我可以正确连接到 sqlplus。

您需要与您的 DBA 讨论存档日志设置。导入正在等待归档器错误被清除,并且在这种情况发生之前将不允许新的连接。如果您等待足够长的时间,导入应该会自行恢复 - 同时,您将能够通过 SQL*Plus 进行连接。它们都受到同一个问题的影响,但效果不同,因为 imp 已经有一个 connection/session,而 SQL*Plus 正在要求一个新的。

本质上,您正在将数据写入 tables 并导致重做日志切换的速度比那些日志文件可以交换和归档的速度更快。可能没有足够的重做组,或者日志太小,或者存在存储层问题,或者归档日志太小而无法在备份和删除之前容纳它们。

如果 DBA 调查并更改设置,可能会帮助它更顺利地完成。目前要么过一段时间才赶上,要么DBA收到警报,手动解决问题。

(顺便说一下,您可能会发现 feedback parameter 有助于监控进度;不会避免这个问题,但您可能会在停止前看到一些点,然后您会看到它们在出现错误时恢复清除 - 而不是等待整个 table 完成)。