Installation
CRS는 $ORACLE_HOME과는 별도의 경로에 $ORA_CRS_HOME이라는 환경 변수를 설정 후, 이 directory에 install합니다.
Install과정의 마지막 부분에 root.sh shell을 실행하도록 message가 나타납니다.
이 root.sh는 inittab file에 crs process들이 booting시 startup되도록 inittab에 관련 정보를 기록합니다.
이 inittab들 보면 crs는 root권한으로 evm은 oracle권한으로 기동되며, process fail시 자동으로 재기동됩니다.
Css는 oracle권한으로 기동되며, fatal mode로 기동되므로 process fail시 os reboot이 됩니다.
Booting시 실행되는 script는 init.crsd, init.cssd, init.evmd 이 세개가 실행되어 crs가 기동되게 됩니다.
이 process들은 $ORA_CRS_HOME/<process명>/log directory에 각각의 log를 관리합니다.
따라서 각 process에 이상 발생시 우선적으로 이 log directory를 참조 하시기 바랍니다.
Install시 root.sh가 모든 node에서 실행되어야 합니다. 만약 정상적으로 실행되지 않은 경우라면, 문제발생시 원인을 찾기 힘들게 됩니다.
Starting CRS
CRS 가 start 되는 과정을 다시 한번 review 해보겠습니다.
Init.crsd, init.evmd, init.cssd 는 init.crs 에 의해 call 이 되어, manual 하게 start 될 수 있습니다.
‘Init.crs start’ 명령이 발생하면, 먼저 cssd 를 start 하여 cluster 를 형성하게 되고, 이후 evm 이 start 됩니다.
마지막으로 crsd 가 start 되어 crs 가 모두 기동됩니다.
Css 의 주요 thread 는 voting disk polling thread 와 network heartbeat thread입니다.
Disk polling thread 는 매 초마다 voting disk 를 read 합니다.
Heartbeat thread 도 또한 매초마다 작업합니다.
Css 는 이외에 timer thread, 기타 관리를 위한 thread 등이 있습니다.
Css 는 startup 하면서 OCR 과 voting disk 를 읽어 cluster node 들을 확인합니다.
이 단계에서 OCR이나 Voting disk 를 read 할 수 없는 상황이 되면 start 되지 못합니다.
이후 evm 이 start 됩니다.
CRSD 가 start 되면서 OCR data 를 cache 하기 위해 OCR cache thread 를 기동합니다.
OCR cache 는 node 간에 master-slave 관계를 갖게 되는데, 가장 먼저 booting 된 node 가 master 가 되고,
OCR disk 에 대한 write 는 이 master 에 의해서만 이루어집니다.
이후 변경된 data 의 전파도 이 master crs 가 하게 됩니다.
Crsd 는 ocr 을 읽어서 모든 resource 들을 파악하고, 이들간의 dependency 도 확인합니다.
이후 racgwrap 을 call 하여 각각의 resource 들을 start합니다.
Racgwrap 은 racgmail 을 call 하면서 argument 로써 resource name 과 start 를 넘겨줍니다.
각각의 resource 의 health check 를 하기 위해 매 초마다 sga의 특정 영역을 polling 합니다.
이 단계를 마치게 되면 모든 crs daemon들과 nodeapps, database, instance등의 resource가 모든 node에서 기동된 상태가 됩니다.
Diagnostics
다음은 문제 초기단계에서 볼 수 있는 trace file들을 확인해보겠습니다.
Crs, css, evm은 Oracle 10g R1 의 경우는 $ORA_CRS_HOME directory 밑에 process 명 아래에 log directory에 해당 log가 있습니다.
우선적으로 봐야 할 log file 은 이 log file 들입니다.
Css 의 경우는 interconnect 의 networking 이 안 되는 경우도 있으므로, css 의 network trace file인
$ORA_CRS_HOME/css/log/ocsns*.log 가 필요할 수도 있습니다.
그리고 network configuration 을 파악하기 위해 hosts, netstat 결과도 확인이 필요합니다.
Emvd의 log는 각각 다음과 같습니다.
EVM daemon log 는 $ORA_CRS_HOME/evm/init/<hostname>.log
EVM event logger log 는 $ORA_CRS_HOME/evm/log/<hostname>_evmdaemon.log
Oprocd 가 있는 경우는 $ORA_CRS_HOME/log에oprocd log file 이 있습니다.
Ocr의 이상 시는 먼저 ocr 의 위치를 지정하고 있는 ocr.loc file을 확인하세요.
이 file은 linux 의 경우는 /etc/oracle, 기타 unix 는 /var/opt/oracle 에 위치합니다.
Ocr 내부의 data를 확인하기 위해 ocrdump 명령을 사용할 수 있습니다.
별도의 이름을 주지 않은 경우 OCRDUMP 라는 file명으로 생성됩니다.
공통적으로 OS system log를 확인하여, network error나 io error, 혹은 다른 message가 있는지 확인이 필요합니다.
CRS의 경우도 여러 형태의 문제가 발생할 수 있기 때문에 문제 유형별로 trace를 발생시킬 수 있습니다.
이 내용에 대해서는 iSeminar에서 언급하지는 않겠습니다.
위의 기본적인log file들과 함께 Oracle Suppport Engineer와 함께 진행하시기 바랍니다.