본문 바로가기

IT관련

오라클 RAC 에서 MGMTDB (GIMR, CHM) 는 뭔가요?

Oracle 12c 이상의 RAC DB 환경에 보면 DB중에 MGMTDB 라는 것이 있습니다.

 

 

이게 1번 노드(Master Node)에만 떠있고, 2번 노드에는 떠 있지 않습니다.

 

MGMTDB 는 Managment DB 또는 GIMR (Grid Infrastructure Management Repository) 이라고 합니다.

DB 운영에 꼭 필요한 것은 아니고, Oracle DB 서버의 여러가지 진단정보들을 수집하는 관리용 DB 입니다.

RAC에 Hang 이 걸리거나 문제가 생겼을때, 여기 DB에 등록되어 있는 정보들을 활용할 수가 있습니다.

따라서 이게 Down 되었다고 무슨 문제가 발생하거나 하지는 않습니다.

 

11g 까지는 이 정보를 berkley DB 형태로 저장하고 있었다가 12c 부터 Oracle DB에 저장하는 것으로 바꼈습니다.

 

crsctl stat res -t 명령어로 클러스터 정보를 조회해보면 아래와 같이 ora.mgmtdb 라고 등록되어 있는 것을 확인할 수 있습니다.

 

 

1번노드(Master Node)에만 싱글DB 형태로 떠있고, 1번노드에 장애가 발생하면 2번노드에서 자동으로 기동됩니다.

 

이 MGMT DB 에 저장되어 있는 진단정보를 CHM (Cluster Health Monitor) 라고 부릅니다.

RAC 에 장애 발생시 오라클에 SR 을 생성해서 문의하면 분석을 위해 이 CHM 정보를 달라고 할 수도 있습니다.

CHM 정보를 수집할때는 아래와 같이 하는데, 이게 좀 많고 오래 걸릴 수 있어서 특정 시점의 정보만 수집하는 옵션들이 있습니다. 아마 이건 Oracle RC 에서 정보를 요청할 때 자세한 명령어를 함께 알려줄 겁니다.

 


     $GI_HOME/bin/diagcollection.pl --collect --chmos
     

 

결국, 장애시 시스템의 정보를 수집하는 목적인데, 사실 오라클에 이미 비슷한 게 있습니다. OSWatcher !!

vmstat, top, ps, iostat, netstat, mpstat, meminfo 등의 정보를 OSWatcher 가 수집합니다.

 

이 OSWatcher 가 있는데도 불구하고, MGMT DB 가 있는 이유는

장애상황에서 CPU 부하가 극심한 경우, OSWatcher 는 정보를 수집할 수 없다고 합니다. 하지만 MGMT DB는 정확한 정보를 다 가지고 있습니다. 그래서 MGMT DB가 필요하다고 하네요.

 

가장 이상적인 것은 둘다 사용하는 거라고 합니다. OSWatcher 에서 수집하는 정보와 MGMT DB가 수집하는 정보가 조금 다르기 때문에 둘다 있는게 장애진단에 더 좋다고 합니다.

 

어쨌든, 결론적으로 이 MGMTDB는 오라클에서 진단을 위해서 존재하는 DB로 사용자가 이걸 어떻게 건들거나 신경쓸 필요는 없겠습니다.