gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:54:45 24 4
gpt4 key购买 nike

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

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

一次删除它们安全吗? DROP 操作期间是否有性能损失?在操作过程中是否有机会耗尽资源?

最安全的方法是什么?

最佳答案

一次放下它们可能是安全的。

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

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

但是您遇到该问题的可能性很小。如果您有非常大的表,它们可能是使用直接路径插入创建的,或者其他人已经查询过该表并清除了 block 。即使在最坏的情况下,如果您的系统足以写入数据,它也可能足以摆脱它(尽管如果事务太旧或存档不足,您可能会遇到 ORA-01555 snapshot too old来自延迟 block 清除等的额外重做的日志空间)。

关于database - 在 Oracle 中,删除包含大量数据的表是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6338767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com