Oracle Reyclebin不释放空间

时间:2018-05-21 19:10:32

标签: sql oracle recycle-bin

我在Oracle 12.1上开发了一个数据库。每当我们因任何原因丢弃一张桌子时,它都会进入回收站。通常,每当我们构建另一个需要更多空间的表时,空间就会自动打开回收站。最近,回收站根本没有释放空间。我必须手动清除回收站,否则我无法构建需要该空间的表。

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

2 个答案:

答案 0 :(得分:1)

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

根据Oracle 10g文档,回收站首先根据space pressure进行首先清除。如果用户用完配额或表空间已满或需要扩展数据文件,则会发生空间压力。

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

Oracle通常拥有出色的文档,并且看到这样的概念从手册中消失是不寻常的。也许这种行为在现代版本中完全改变了,现在它变得如此奇怪和复杂,没有人想要记录它。或许他们只是忘了。

尽可能使用手动清洗。或者考虑缩小一些数据文件以更接近地匹配磁盘组或操作系统限制;也许那时甲骨文会"看到"空间压力。

答案 1 :(得分:1)

已解决:重启Oracle

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

中学:“清除”安全网

根据@Jon Heller的回应,依靠recyclebin立即完成其工作并不一定安全。在这种情况下,我的团队在适当情况下创建了低风险的“清除”声明。