我在Oracle 12.1上的数据库上工作。每当我们出于任何原因丢下一张桌子,它就会转到回收站。通常,每当我们构建另一个需要更多空间的表时,回收站上的空间就会自动打开。最近,回收站根本没有释放空间。我必须手动清除回收站,否则我无法构建需要该空间的表。
只有在必要的时候,我才能确保回收箱被设置为自动清除自身?我不想要一个自定义脚本或自动化;我想使用回收站的方式,它的设计和预期。
发布于 2018-05-24 17:19:46
解决:重新启动Oracle
每当我重新启动Oracle时,bug就消失了。我仍然没有对这个错误的根本原因作出解释。
中学:“清除”安全网
根据乔恩·海勒(Jon)的回复,现在依靠回收箱完成工作不一定安全。在适当的情况下,我的团队创建了低风险的“清除”语句。
发布于 2018-05-24 04:58:33
您不应该依赖Oracle自动清除回收站,因为它的行为没有被正确地记录下来。手动清除回收站可能是最好的选择。
根据Oracle10g文档,回收站是基于空间压力先入先出的。当用户用完配额或表空间已满或需要扩展数据文件时,空间压力就会发生。
这是一个很好的开始,但该文档存在一些问题--它没有涵盖所有的空间场景,比如完整的ASM磁盘组或OS驱动器,而且它也不存在于版本11g或更高版本中。我也找不到关于Oracle支持的任何相关信息。
Oracle通常有很好的文档,在手册中看到这样的概念消失是不寻常的。也许这种行为在现代版本中完全改变了,现在它变得如此怪异和复杂,以至于没有人想要记录它。或者他们只是忘了。
如果可能的话,使用手动清洗。或者考虑缩小一些数据文件,以更接近于磁盘组或操作系统的限制;也许Oracle会“看到”空间压力。
https://stackoverflow.com/questions/50455221
复制相似问题