RAC CR 블록 리시브 타임에 따른 점검사항
1. AVR CR BLOCK RECEVIE TIME < 15ms
한 Node에서 다른 Node의 데이터를 무결성 읽기를 하기 위해서 기다리는 시간을 의미 하며 정상적인 경우 15ms보다 작아야 하고, 만약 시간이 많이 걸리는 경우는 다음과 같은 사항들을 점검해서 문제를 해결해야 합니다.
- 각 Node의 CPU 부하가 심하거나, CPU 용량이 부족한지 점검 함
- 각 Node간 네트웍 성능에 문제가 없는지 점검 함
- 각 Node간 불필요한 데이터 이동이 많게 데이터 구성이나 SQL이 수행되는지 확인 함
SQL> select b1.inst_id, b2.value "CR BLOCKS RECEIVED", b1.value "CR BLOCK RECEIVE TIME", ((b1.value/b2.value)*10)"AVG CR BLOCK RECEIVE TIME (ms)" from gv$sysstatb1, gv$sysstatb2 where b1.name = 'globalcache crblock receive time' and b2.name = 'globalcache crblocksreceived' and b1.inst_id = b2.inst_id ;
2. GLOBAL CACHE LOCK GET TIME < 20ms
RAC 환경에서 Cache에 있는 LOCK을 획득하기 위해서 걸리는 시간이 정상적인 경우 20ms 보다 작아야 하며, 이보다 큰 경우가 자주 발생하는 경우 이를 해결하기 위해서 다음과 같은 사항들을 점검해야 합니다.
- 서로 다른 Node에서 동일 DB Objects를 자주 Access해서 발생하는 Application Lock이 심한지 점검 함
- 각ode간 네트웍 성능에 문제가 없는지 점검 함
- 각 Node의 CPU 부하가 심하거나, CPU 용량이 부족한지 점검 함
SQL> select b1.inst_id, (b1.value + b2.value)"GLOBAL LOCK GETS", b3.value "GLOBAL LOCK GET TIME", (b3.value /(b1.value + b2.value)*10)"AVG GLOBAL LOCK GET TIME (ms)" from gv$sysstatb1,gv$sysstatb2,gv$sysstatb3 where b1.name = 'globallock sync gets' and b2.name = 'globallock async gets' and b3.name = 'globallock gettime' and b1.inst_id = b2.inst_id and b2.inst_id = b3.inst_id;
RAC 환경에서는 1,2 번을 주기적으로 점검하여 결과치가 적정한 범위를 벗어나는지 아닌지 모니터링을 하는 것이 바람직합니다.
최신 댓글