通常,截断表需要 5-10 秒。但是当几个人处理同一个数据库实例(但不同的表)时,该操作可能需要一个多小时。我该如何调试?
答案1
'truncate table' 命令使用的表或数据字典资源上的锁可能会导致这种情况。系统可能正在等待资源释放,然后才能执行截断。
检查会话是否被阻塞以等待锁被释放。
看一下orafaq.com/node/854或者dba-oracle.com/t_locked_rows_user_locks.htm找出哪些锁可能被阻塞。
答案2
使用 SAN 存储时,filesystemio_options
应检查参数设置。将参数设置为SETALL
或ASYNCH
可减轻截断执行期间的日志文件同步等待时间。
在繁忙的系统上,也建议运行额外的 DB 编写器。