Database 在Oracle中,删除包含大量数据的表是否安全?

Database 在Oracle中,删除包含大量数据的表是否安全?,database,oracle,Database,Oracle,我有一个Oracle生产数据库,其中包含大量备份在表中的数据,这些表是在以前的工作中创建的。这些表彼此独立,并且与数据库的其余部分独立 我想删除这些备份,最好一次删除。我知道,在较新版本的Oracle中,删除的表在从回收站中清除之前实际上不会被删除。我会接受的 一次扔掉它们安全吗?在跌落操作过程中是否存在性能损失?在操作过程中是否有可能耗尽资源 做这件事最安全的方法是什么?一次扔掉它们可能是安全的 通常,不管表的大小如何,删除表都非常快。DROP并没有真正更改任何数据,Oracle只是更改数据字

我有一个Oracle生产数据库,其中包含大量备份在表中的数据,这些表是在以前的工作中创建的。这些表彼此独立,并且与数据库的其余部分独立

我想删除这些备份,最好一次删除。我知道,在较新版本的Oracle中,删除的表在从回收站中清除之前实际上不会被删除。我会接受的

一次扔掉它们安全吗?在跌落操作过程中是否存在性能损失?在操作过程中是否有可能耗尽资源


做这件事最安全的方法是什么?

一次扔掉它们可能是安全的

通常,不管表的大小如何,删除表都非常快。DROP并没有真正更改任何数据,Oracle只是更改数据字典以将空间标记为可用。我删除了很多包含数百GB或更多数据的表,从来没有遇到过问题。(数据文件的大小可能不再合适,但这是另一个问题。)

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


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

如果表没有依赖项且未在使用中,则可以一次将它们全部删除。如果您担心新的recyclebin功能,您可以执行“删除表格\u名称清除”,它将绕过recyclebin并进行清除,而无需从recyclebin中清除它们。

执行删除和清除(或截断然后删除)