Oracle Reyclebin 未发布 Space

Oracle Reyclebin Not Releasing Space

我在 Oracle 12.1 上的数据库上工作。每当我们出于任何原因丢弃 table 时,它都会进入回收站。通常,每当我们构建另一个需要更多 space 的 table 时,space 会自动在回收站中打开。最近,回收站根本没有释放 space。我必须手动清除回收站,否则我无法构建需要 space.

的 tables

如何确保回收站设置为仅在必要时自动清除自身?我不想要自定义脚本或自动化;我想按照设计和预期的方式使用回收站。

您不应该依赖 Oracle 自动清除回收站,因为它的行为没有正确记录。手动清除回收站可能是最好的选择。

根据 Oracle 10g 文档,回收站是根据 space pressure 先进先出清除的。 Space 如果用户用完配额或 tablespace 已满或需要扩展数据文件,就会出现压力。

这是一个好的开始,但该文档存在一些问题 - 它没有涵盖所有 space 场景,例如完整的 ASM 磁盘组或 OS 驱动器,并且它不存在于版本 11g 或更高版本。我在 My Oracle Support 上也找不到任何相关信息。

Oracle 通常有很好的文档,像这样的概念从手册中消失并不常见。也许行为在现代版本中完全改变了,现在它变得如此怪异和复杂以至于没有人愿意记录它。或者也许他们只是忘记了。

如果可能,请使用手动清除。或者考虑缩小一些数据文件以更接近磁盘组或操作系统限制;也许那时 Oracle 会 "see" space 压力。

已解决:重启 Oracle

每当我重新启动 Oracle 时,错误就消失了。我仍然没有这个错误的根本原因解释。

中学:"Purge"安全网

根据@Jon Heller 的回复,现在依靠回收站完成其工作不一定安全。在这种情况下,在适当的情况下,我的团队创建了低风险 "purge" 语句。