缓冲区忙等待常见原因是对属于表和索引的数据块的争用,以及对段头的争用。回退段和回退段块的争用也可能发生。

SQL – 定位争用发生的位置

SELECT class, tt, count FROM v$waitstat WHERE count > 0 ORDER BY count DESC;

如果出现在数据块上,可以通过增加pctfree参数来降低每个数据块的行数,或增加initrans参数减少来自竞争事务的争用。如果出现在段头上,可考虑增加表或索引的区段尺寸。