RAC CR 블록 리시브 타임에 따른 점검사항

1. AVR CR BLOCK RECEVIE TIME < 15ms 


한 Node에서 다른 Node의 데이터를 무결성 읽기를 하기 위해서 기다리는 

시간을 의미 하며 정상적인 경우 15ms보다 작아야 하고, 만약 시간이 많이 

걸리는 경우는 다음과 같은 사항들을 점검해서 문제를 해결해야 한다.


(1) 각 Node의 CPU 부하가 심하거나, CPU 용량이 부족한지 점검 함 

(2) 각 Node간 네트웍 성능에 문제가 없는지 점검 함 

(3) 각 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 보다 작아야 하며, 이보다 큰 경우가 자주 발생하는 

경우 이를 해결하기 위해서 다음과 같은 사항들을 점검해야 한다. 


(1) 서로 다른 Node에서 동일 DB Objects를 자주 Access해서 발생하는 

Application Lock이 심한지 점검 함 

(2) 각 Node간 네트웍 성능에 문제가 없는지 점검 함 

(3) 각 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 번을 주기적으로 점검하여 결과치가 적정한 범위를 벗어

나는지 아닌지 모니터링을 하는 것이 바람직하다.

티스토리 툴바