我有一个生产Oracle数据库,该数据库包含大量数据,这些数据备份在先前工作期间制作的表中。这些表与数据库的其余部分彼此独立。

我想删除这些备份,最好一次删除。我知道在Oracle的最新版本中,只有从回收站中删除表后,删除表才真正被删除。我会考虑的。

一次全部删除它们是否安全? DROP操作期间是否会降低性能?手术期间是否有机会用尽资源?

最安全的方法是什么?

最佳答案

一次全部删除它们可能很安全。

通常,删除表的速度非常快,无论表的大小如何。 DROP并不会真正更改任何数据,Oracle只是更改数据字典以将空间标记为可用。我删除了很多具有数百GB或更多数据的表,但从未遇到问题。 (您的数据文件的大小可能不再正确,但这是另一个问题。)

除了依赖关系和锁定之外,我见过一次删除(相对)较长的时间是因为延迟了块清除。基本上,如果您更新,删除或插入(不附加)大量数据,Oracle可能会将一些事务数据写入块中。这样做的原因是使COMMIT瞬间生效,但这意味着甚至从表中读取的下一个查询也可能必须清除旧的事务条目。

但是遇到这个问题的机会很小。如果您有非常大的表,则它们可能是通过直接路径插入创建的,或者其他人已经查询了该表并清除了这些块。即使在最坏的情况下,如果您的系统足以写入数据,那么它也可能足以消除该数据(尽管如果事务太旧或归档不足,您可能会遇到ORA-01555快照太旧的情况)延迟空间清除等额外重做的日志空间等)。

08-07 05:40
查看更多