我在Oracle 12.1上开发了一个数据库。每当我们因任何原因丢弃一张桌子时,它都会进入回收站。通常,每当我们构建另一个需要更多空间的表时,空间就会自动打开回收站。最近,回收站根本没有释放空间。我必须手动清除回收站,否则我无法构建需要该空间的表。
如何确保将回收站设置为仅在必要时自动清除自身?我不想要自定义脚本或自动化;我想按照设计和预期的方式使用回收站。
答案 0 :(得分:1)
您不应该依赖Oracle自动清除回收站,因为它的行为没有正确记录。手动清洗回收站可能是最佳选择。
根据Oracle 10g文档,回收站首先根据space pressure进行首先清除。如果用户用完配额或表空间已满或需要扩展数据文件,则会发生空间压力。
这是一个良好的开端,但该文档存在一些问题 - 它并未涵盖所有空间场景,如完整的ASM磁盘组或OS驱动器,并且它不存在于版本11g或后来。我也无法在My Oracle Support上找到任何相关信息。
Oracle通常拥有出色的文档,并且看到这样的概念从手册中消失是不寻常的。也许这种行为在现代版本中完全改变了,现在它变得如此奇怪和复杂,没有人想要记录它。或许他们只是忘了。
尽可能使用手动清洗。或者考虑缩小一些数据文件以更接近地匹配磁盘组或操作系统限制;也许那时甲骨文会"看到"空间压力。
答案 1 :(得分:1)
每当我重新启动Oracle时,bug就会消失。我仍然没有根本原因解释这个错误。
根据@Jon Heller的回应,依靠recyclebin立即完成其工作并不一定安全。在这种情况下,我的团队在适当情况下创建了低风险的“清除”声明。