Xử lý cảnh báo enq: SQ - contention làm wait nhiều khi ứng dụng lớn cần truy cập vào sequence. Hiện tượng khi đọc AWR --> Top 5 Timed Foreground Events có event:
Event | Waits | Time(s) | Avg wait (ms) | % DB time | Wait Class |
---|---|---|---|---|---|
enq: SQ - contention | 1,299 | 179,881 | 138477 | 67.56 | Configuration |
db file sequential read | 2,180,717 | 28,784 | 13 | 10.81 | User I/O |
DB CPU | 20,496 | 7.70 | |||
SQL*Net message from dblink | 13,679,745 | 13,515 | 1 | 5.08 | Network |
gc buffer busy release | 157,257 | 3,078 | 20 | 1.16 | Cluster |
2. Nguyên nhân:
Nhiều sequence cần truy cập đang có giá trị default bằng 20
3. Cách xử lý:
Theo khuyến cáo của Oracle Doc ID 2156730.1 liên quan đến cải thiện hiệu năng việc sử dụng sequence trên RAC, với các sequence có giá trị default bằng 20 để tăng hiệu năng sử dụng sequence trên môi trường RAC thiết lập lại 1000
Em query trong database billing thấy có nhiều sequence để
giá trị cache size default:
select distinct sequence_owner from dba_sequences
where cache_size=20;
select 'alter sequence ' || sequence_owner || '.' || sequence_name || ' cache 1000;' from dba_sequences
where sequence_owner in ('USER') and cache_size=20
order by 1;
Chạy script trên