当业务卡的时候,发现大量等待事件为enq: SQ – contention,检查awr的top 5事件:
sql语句对sequence的调用非常频繁:
对这些语句排查发现sequence cache值均为默认20,调大cache到1000值:
SQL> select SEQUENCE_OWNER,SEQUENCE_NAME,CACHE_SIZE from dba_sequences where SEQUENCE_name='SQ_SNO';
SEQUENCE_OWNER SEQUENCE_NAME CACHE_SIZE
------------------------------ ------------------------------ ----------
DQYB SQ_SNO 20
调整该sequence的cache_size大小
SQL> alter sequence SQ_SNO cache 1000;
SQL> alter sequence SB_PRSENO cache 1000;
数据库性能得到了很大的提升,dbtime从600多min降到24min,业务也恢复正常。