我们有一个用于将转储文件导入数据库的 shell 脚本。该脚本实际上调用了 impdp 实用程序。但在此之前,它会禁用目标数据库上的存档日志,以便在此操作期间禁用存档重做日志文件的生成。
最近,我们不可能在impdp(技术要求)之前关闭数据库。这样存档日志模式就不能被禁用:-(
我的问题是,即使数据库处于归档日志模式,我们如何才能在导入时减少生成的归档重做日志文件的数量?
我试图将所有永久表空间置于 NOLOGGING 模式,但我仍然生成了很多归档重做日志文件......
使用Oracle 12c,您可以禁用重做日志(请参阅Oracle 文档)
impdp [...] transform=disable_archive_logging:y
来自“Burleson”的这篇文章为您提供了一个全面的概述。
禁用每个索引(通过禁用所有主要/唯一约束并将ALTER
所有索引设置为UNUSABLE
)可以提供帮助。NOLOGGING
然后,您可以在mode 下重建所有不可用的索引。
最后我找到了解决我的问题的方法。首先,我发现在 NOLOGGING 模式下设置 tabespaces 没有任何影响的原因。事实上,在检查转储文件时,我发现这些表是使用 LOGGING 模式创建的。这会覆盖表空间上的设置。
解决方案是分两个阶段导入: