Oracle:TRUNCATE 有时需要很长时间

Oracle:TRUNCATE 有时需要很长时间

通常,截断表需要 5-10 秒。但是当几个人处理同一个数据库实例(但不同的表)时,该操作可能需要一个多小时。我该如何调试?

答案1

'truncate table' 命令使用的表或数据字典资源上的锁可能会导致这种情况。系统可能正在等待资源释放,然后才能执行截断。

检查会话是否被阻塞以等待锁被释放。

看一下orafaq.com/node/854或者dba-oracle.com/t_locked_rows_user_locks.htm找出哪些锁可能被阻塞。

答案2

使用 SAN 存储时,filesystemio_options应检查参数设置。将参数设置为SETALLASYNCH可减轻截断执行期间的日志文件同步等待时间。

在繁忙的系统上,也建议运行额外的 DB 编写器。

相关内容