最近,一环境在压测的时候出现大量的等待事件"enq: US - contention",导致库很卡,客户DBA重启了好几次解决。该等待事件主要是因为系统activity增加或者降低的时候,oracle SMON进程会自动ONLINE或者OFFLINE rollback segments。这样导致某些与undo segments相关的latch或者enqueue被hold住太长时间,导致系统很多活跃session都开始等待enq: US - contention
简单的方法时禁用undo的自动调整功能,即执行alter system set "_undo_autotune"= false;,还有几种方法也可以缓解,https://blog.csdn.net/duanning397/article/details/7668703,不过根据历史印象,他们不一定总是生效,隐含参数效果最直接。
根本性问题是因为做压测时大量的高并发DML产生的。