在 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)新特性之数据库内归档功能