在 oracle 数据库 12c 中删除对象而不生成归档日志

Posted

技术标签:

【中文标题】在 oracle 数据库 12c 中删除对象而不生成归档日志【英文标题】:dropping objects in oracle database 12c without generating archivelogs 【发布时间】:2017-03-24 11:43:08 【问题描述】:

有什么方法可以在 ORACLE DB 中删除模式的对象和包而不生成存档日志?

我有一个已退役的庞大架构。我想先删除它的所有对象,但它会生成大量归档日志,这些日志填满了我的快速恢复区。

如果您知道任何不生成存档日志的架构对象的解决方案,请提供帮助。

我尝试使用 drop 例如: drop package xyz 它产生了大量的归档日志。

注意: 数据库服务器同时保存活动和非活动模式,我需要的是删除旧的非活动模式而不生成存档日志。

提前谢谢你, 维萨姆。

【问题讨论】:

你也要删除 USER 吗? 我将在最后删除用户和表空间,但如果我执行 drop user xyz cascade;它需要很长时间才能完成 跟进问题:您为什么关心它需要多长时间?您要解决的问题是什么? 跟进回答:我的问题是,当删除对象时,数据库会在删除期间生成大量归档日志,这些日志填满了我的 FRA,我不得不从 FRA 中删除备份和文件以释放一些空间。执行 drop 用户所花费的时间对我来说很重要,因为我有截止日期删除退役的服务器和数据库模式以释放资源。 这里有没有可能有别的东西在起作用。我看不到包的丢弃如何创建足够的重做来填充 FRA。一个或多个表,也许是一个包? 【参考方案1】:

如果系统真的是decommissioned,那么您可以更改系统并首先设置存档模式,然后开始删除对象。

禁用归档日志模式的方法是:

关机编辑 pfile/spfile(spfile 当实例启动时)说 log_archive_start = false。

启动挂载

alter database noarchivelog;

更改数据库打开;

在here了解更多信息。

【讨论】:

数据库服务器同时持有活动和非活动模式,我需要的是删除旧的非活动模式而不生成存档日志。 您的问题中缺少此信息。请把它放在更准确的解决方案 感谢问题附有此信息。抱歉,我不小心没有提到这一点。 实现日志设置在数据库级别而不是架构级别。因此,如果您真的想避免归档日志,那么您必须遵循上述方式。我认为没有其他方法。

以上是关于在 oracle 数据库 12c 中删除对象而不生成归档日志的主要内容,如果未能解决你的问题,请参考以下文章

Oracle12c中数据删除(delete)新特性之数据库内归档功能

Oracle 12c 新特性之 数据库内归档(In-Database Archiving)

Oracle12c创建及删除PDB

如何安装Oracle 12c数据库软件

需要帮助在 12c 中优化 Oracle 查询

如何安装oracle12c数据库实例