Oracle 10g RAC 환경에서의 CRS Value 의 변경 Author 이창수/손재완 Creation Date 2008-09-03 Last Updated 2008-09-03 Version 1.0 Copyright(C) 2004 Goodus Inc. All Rights Reserved Version 변경일자 변경자(작성자) 주요내용 1 2008-09-03 이창수 문서 최초 작성 2 3
Contents 1. AUTO_START=1(always) 기본값...3 1.1. TestCase...3 1.1.1. 확인방법... 3 1.1.2. auto_start=1 의 기능... 5 2. AUTO_START=2(never)...7 2.1. Test Case...7 2.1.1. 변경방법... 7 2.1.2. auto_start=2 의 기능... 7 3. AUTO_START=0(restore)...9 3.1. TestCase...9 3.1.1. 변경방법... 9 3.1.2. AUTO_START=0 의 기능... 9 4. Listener CI/ST 값 변경...11 4.1. TestCase... 11 4.1.1. 변경방법... 11 5. RESTART_ATTEMPTS 값 변경...13 5.1. TestCase... 13 5.1.1. 변경방법... 13 5.1.2. RESTART_ATTEMPTS=0 의 기능... 14 6. crsctl disable(enable) crs...15 6.1. TestCase... 15 6.1.1. 변경방법... 15-2 -
Test 환경 OS : CentOS release 4.2 (Final) Clusterware : Oracle Clusterware 10.2.0.3.0 Oracle Version : 10.2.0.3.0-32bit ASM : 사용 안함. 참고: 문서에서 사용하는 cs 명령어는 crs_stat 의 변경된 스트립트인 crsstat 의 alias 임. 1. AUTO_START=1(always) 기본값 1.1. TestCase CRS설치를 하게 되면 기본적으로 auto_start 의 값은 1이다. 여기서는 기본설정인 1에 대한 기능만을 기술한다. 1.1.1. 확인방법 wolgwang:/oracle>$crs_stat p NAME=ora.wolgwang.LISTENER_WOLGWANG.lsnr TYPE=application ACTION_SCRIPT=/oracle/app/oracle/product/10.2/db/bin/racgwrap ACTIVE_PLACEMENT=0 AUTO_START=1 CHECK_INTERVAL=600 DESCRIPTION=CRS application for listener on node FAILOVER_DELAY=0 FAILURE_INTERVAL=0 FAILURE_THRESHOLD=0 HOSTING_MEMBERS=wolgwang OPTIONAL_RESOURCES= PLACEMENT=restricted REQUIRED_RESOURCES=ora.wolgwang.vip RESTART_ATTEMPTS=5 SCRIPT_TIMEOUT=600 START_TIMEOUT=0 STOP_TIMEOUT=0 UPTIME_THRESHOLD=7d USR_ORA_ALERT_NAME= USR_ORA_CHECK_TIMEOUT=0 USR_ORA_CONNECT_STR=/ as sysdba USR_ORA_DEBUG=0 USR_ORA_DISCONNECT=false USR_ORA_FLAGS= USR_ORA_IF= USR_ORA_INST_NOT_SHUTDOWN= USR_ORA_LANG= USR_ORA_NETMASK= USR_ORA_OPEN_MODE= USR_ORA_OPI=false USR_ORA_PFILE= USR_ORA_PRECONNECT=none USR_ORA_SRV= USR_ORA_START_TIMEOUT=0 USR_ORA_STOP_MODE=immediate USR_ORA_STOP_TIMEOUT=0 USR_ORA_VIP= NAME=ora.wolgwang.gsd TYPE=application ACTION_SCRIPT=/oracle/app/oracle/product/10.2/crs/bin/racgwrap ACTIVE_PLACEMENT=0 AUTO_START=1 CHECK_INTERVAL=600-3 -
DESCRIPTION=CRS application for GSD on node FAILOVER_DELAY=0 FAILURE_INTERVAL=0 FAILURE_THRESHOLD=0 HOSTING_MEMBERS=wolgwang OPTIONAL_RESOURCES= PLACEMENT=restricted REQUIRED_RESOURCES= RESTART_ATTEMPTS=5 SCRIPT_TIMEOUT=600 START_TIMEOUT=0 STOP_TIMEOUT=0 UPTIME_THRESHOLD=7d USR_ORA_ALERT_NAME= USR_ORA_CHECK_TIMEOUT=0 USR_ORA_CONNECT_STR=/ as sysdba USR_ORA_DEBUG=0 USR_ORA_DISCONNECT=false USR_ORA_FLAGS= USR_ORA_IF= USR_ORA_INST_NOT_SHUTDOWN= USR_ORA_LANG= USR_ORA_NETMASK= USR_ORA_OPEN_MODE= USR_ORA_OPI=false USR_ORA_PFILE= USR_ORA_PRECONNECT=none USR_ORA_SRV= USR_ORA_START_TIMEOUT=0 USR_ORA_STOP_MODE=immediate USR_ORA_STOP_TIMEOUT=0 USR_ORA_VIP= NAME=ora.wolgwang.ons TYPE=application ACTION_SCRIPT=/oracle/app/oracle/product/10.2/crs/bin/racgwrap ACTIVE_PLACEMENT=0 AUTO_START=1 CHECK_INTERVAL=600 DESCRIPTION=CRS application for ONS on node FAILOVER_DELAY=0 FAILURE_INTERVAL=0 FAILURE_THRESHOLD=0 HOSTING_MEMBERS=wolgwang OPTIONAL_RESOURCES= PLACEMENT=restricted REQUIRED_RESOURCES= RESTART_ATTEMPTS=3 SCRIPT_TIMEOUT=600 START_TIMEOUT=0 STOP_TIMEOUT=0 UPTIME_THRESHOLD=7d USR_ORA_ALERT_NAME= USR_ORA_CHECK_TIMEOUT=0 USR_ORA_CONNECT_STR=/ as sysdba USR_ORA_DEBUG=0 USR_ORA_DISCONNECT=false USR_ORA_FLAGS= USR_ORA_IF= USR_ORA_INST_NOT_SHUTDOWN= USR_ORA_LANG= USR_ORA_NETMASK= USR_ORA_OPEN_MODE= USR_ORA_OPI=false USR_ORA_PFILE= USR_ORA_PRECONNECT=none USR_ORA_SRV= USR_ORA_START_TIMEOUT=0-4 -
USR_ORA_STOP_MODE=immediate USR_ORA_STOP_TIMEOUT=0 USR_ORA_VIP= NAME=ora.wolgwang.vip TYPE=application ACTION_SCRIPT=/oracle/app/oracle/product/10.2/crs/bin/racgwrap ACTIVE_PLACEMENT=1 AUTO_START=1 CHECK_INTERVAL=60 DESCRIPTION=CRS application for VIP on a node FAILOVER_DELAY=0 FAILURE_INTERVAL=0 FAILURE_THRESHOLD=0 HOSTING_MEMBERS=wolgwang OPTIONAL_RESOURCES= PLACEMENT=favored REQUIRED_RESOURCES= RESTART_ATTEMPTS=0 SCRIPT_TIMEOUT=60 START_TIMEOUT=0 STOP_TIMEOUT=0 UPTIME_THRESHOLD=7d USR_ORA_ALERT_NAME= USR_ORA_CHECK_TIMEOUT=0 USR_ORA_CONNECT_STR=/ as sysdba USR_ORA_DEBUG=0 USR_ORA_DISCONNECT=false USR_ORA_FLAGS= USR_ORA_IF=eth0 USR_ORA_INST_NOT_SHUTDOWN= USR_ORA_LANG= USR_ORA_NETMASK=255.255.255.0 USR_ORA_OPEN_MODE= USR_ORA_OPI=false USR_ORA_PFILE= USR_ORA_PRECONNECT=none USR_ORA_SRV= USR_ORA_START_TIMEOUT=0 USR_ORA_STOP_MODE=immediate USR_ORA_STOP_TIMEOUT=0 USR_ORA_VIP=61.250.123.70 1.1.2. auto_start=1의 기능 bichang:/oracle>$crs_stop ora.wolgwang.ons Attempting to stop `ora.wolgwang.ons` on member `wolgwang` Stop of `ora.wolgwang.ons` on member `wolgwang` succeeded. bichang:/oracle>$crs_stat -p ora.wolgwang.gsd grep AUTO AUTO_START=1 bichang:/oracle>$bichang:/oracle>$cs ora.bichang.gsd ONLINE ONLINE on bichang ora.bichang.ons ONLINE ONLINE on bichang ora.wolgwang.gsd OFFLINE OFFLINE - 5 -
ora.wolgwang.ons OFFLINE OFFLINE lkb1 위의 결과처럼 wolgwang노드의 리소스중에서 gsd, ons를 crs_stop 으로 내렸다. 그런후에 재부팅을 한다. 반대쪽 노드에서 확인을 하면 아래와 같다. ora.bichang.gsd ONLINE ONLINE on bichang ora.bichang.ons ONLINE ONLINE on bichang ora.wolgwang.listener_wolgwang.lsnr ONLINE OFFLINE ora.wolgwang.gsd OFFLINE OFFLINE ora.wolgwang.ons OFFLINE OFFLINE ora.wolgwang.vip ONLINE ONLINE on bichang 재부팅이 되었기 때문에 wolgwang노드의 vip 항목이 bichang노드로 Take-Over 되었다. 재부팅이 완료된 후에 wolgwang노드의 상태를 보면 아래와 같이 모든 리소스가 ONLINE이 되어 있다. wolgwang:/oracle>$cs ora.bichang.gsd ONLINE ONLINE on bichang ora.bichang.ons ONLINE ONLINE on bichang 위의 테스트의 결과를 보면 auto_start=1 로 설정이 되면 그 전의 상태가 어떠했는지는 상관이 없이 하드웨어와 설정상태만 정상이라면 crs 재구동시 리소스는 시작시 ONLINE 상태로 되어진다. 참고: 위의 리소스중 OCFS instance, RAC instance, ASM은 auto_start=2 로 설정이 되어 있다. - 6 -
2. AUTO_START=2(never) 2.1. Test Case auto_start=2 로 설정을 하게 되면 모든 리소스를 수동으로 시작시켜야 한다. 2.1.1. 변경방법 wolgwang:/oracle/app/oracle/product/10.2/crs/crs/profile>$srvctl stop instance d OCFS I OCFS1 wolgwang:/oracle/app/oracle/product/10.2/crs/crs/profile>$srvctl stop nodeapps -n wolgwang wolgwang:/oracle/app/oracle/product/10.2/crs/crs/profile>$crsstat ora.bichang.listener_bichang.lsnr OFFLINE OFFLINE ora.bichang.gsd OFFLINE OFFLINE ora.bichang.ons OFFLINE OFFLINE ora.bichang.vip OFFLINE OFFLINE ora.wolgwang.listener_wolgwang.lsnr OFFLINE OFFLINE ora.wolgwang.gsd OFFLINE OFFLINE ora.wolgwang.ons OFFLINE OFFLINE ora.wolgwang.vip OFFLINE OFFLINE wolgwang: >$crs_stat -p ora.wolgwang.listener_wolgwang.lsnr > ora.wolgwang.listener_wolgwang.lsnr.cap wolgwang: >$crs_profile -update ora.wolgwang.listener_wolgwang.lsnr -o as=2 wolgwang: >$crs_register u ora.wolgwang.listener_wolgwang.lsnr wolgwang: >$crs_stat -p ora.wolgwang.gsd > ora.wolgwang.gsd.cap wolgwang: >$crs_profile -update ora.wolgwang.gsd -o as=2 wolgwang: >$crs_register -u ora.wolgwang.gsd wolgwang: >$crs_stat -p ora.wolgwang.ons > ora.wolgwang.ons.cap wolgwang: >$crs_profile -update ora.wolgwang.ons -o as=2 wolgwang: >$crs_register -u ora.wolgwang.ons wolgwang: >$crs_stat -p ora.wolgwang.vip > ora.wolgwang.vip.cap wolgwang: >$crs_profile -update ora.wolgwang.vip -o as=2 wolgwang: >$crs_register -u ora.wolgwang.vip wolgwang:/root>$crs_stat -p ora.wolgwang.vip grep AUTO AUTO_START=2 2.1.2. auto_start=2의 기능 auto_start=2 설정한 상태에서 crs를 STOP/START 한다. [root@wolgwang ~]# crsctl stop crs Stopping resources. This could take several minutes. Successfully stopped CRS resources. Stopping CSSD. Shutting down CSS daemon. Shutdown request successfully issued. [root@wolgwang ~]# ps -ef grep d.bin root 18059 4469 0 16:08 pts/0 00:00:00 grep d.bin [root@wolgwang ~]# crsctl start crs Attempting to start CRS stack The CRS stack will be started shortly [root@wolgwang ~]# ps -ef grep d.bin oracle 19732 19717 0 16:11? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/evmd.bin - 7 -
root 19877 17741 1 16:11? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/crsd.bin reboot oracle 20150 19753 0 16:11? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/ocssd.bin wolgwang:/oracle>$cs ora.bichang.listener_bichang.lsnr OFFLINE OFFLINE ora.bichang.gsd OFFLINE OFFLINE ora.bichang.ons OFFLINE OFFLINE ora.bichang.vip OFFLINE OFFLINE ora.wolgwang.listener_wolgwang.lsnr OFFLINE OFFLINE ora.wolgwang.gsd OFFLINE OFFLINE ora.wolgwang.ons OFFLINE OFFLINE ora.wolgwang.vip OFFLINE OFFLINE 정상적으로 crs를 시작했지만, auto_start=2 설정 되어서 어떠한 리소스도 시작을 하지 않는다. 아래와 같이 수동으로 시작을 해야 한다. wolgwang:/oracle>$srvctl start nodeapps -n wolgwang wolgwang:/oracle>$cs ora.bichang.listener_bichang.lsnr OFFLINE OFFLINE ora.bichang.gsd OFFLINE OFFLINE ora.bichang.ons OFFLINE OFFLINE ora.bichang.vip OFFLINE OFFLINE CRS리소스의 시작/종료를 수동으로 하고 싶은 경우는 위와 같이 설정을 해야 한다. - 8 -
3. AUTO_START=0(restore) 3.1. TestCase auto_start=0 로 설정을 하게 되면 모든 리소스는 내리기 전의 상태로 복귀한다. 3.1.1. 변경방법 Bichang:>$crs_stat -p ora.bichang.gsd > ora.bichang.gsd.cap bichang:>$crs_stat -p ora.bichang.ons > ora.bichang.ons.cap bichang:>$crs_stat -p ora.bichang.vip > ora.bichang.vip.cap bichang:>$crs_profile -update ora.bichang.gsd -o as=0 bichang:>$crs_register -u ora.bichang.gsd bichang:>$crs_profile -update ora.bichang.vip -o as=0 bichang:>$crs_register -u ora.bichang.vip bichang:>$crs_profile -update ora.bichang.ons -o as=0 bichang:>$crs_register -u ora.bichang.ons bichang:/oracle>$crs_stat -p ora.bichang.vip grep AUTO AUTO_START=0 bichang:/oracle>$cs ora.bichang.listener_bichang.lsnr OFFLINE OFFLINE ora.bichang.gsd OFFLINE OFFLINE ora.bichang.ons OFFLINE OFFLINE ora.bichang.vip OFFLINE OFFLINE ora.wolgwang.listener_wolgwang.lsnr OFFLINE OFFLINE ora.wolgwang.gsd OFFLINE OFFLINE ora.wolgwang.ons OFFLINE OFFLINE ora.wolgwang.vip OFFLINE OFFLINE 3.1.2. AUTO_START=0의 기능 bichang:/oracle>$crs_stop ora.bichang.gsd Attempting to stop `ora.bichang.gsd` on member `bichang` Stop of `ora.bichang.gsd` on member `bichang` succeeded. bichang:/oracle>$crs_stop ora.bichang.ons Attempting to stop `ora.bichang.ons` on member `bichang` Stop of `ora.bichang.ons` on member `bichang` succeeded. bichang:/oracle>$cs - 9 -
ora.bichang.gsd OFFLINE OFFLINE ora.bichang.ons OFFLINE OFFLINE bichang:/oracle>$ bichang:/oracle>$exit [root@bichang ~]# shutdown -r now -wolgwang노드의 gsd, ons를 수동으로 중지시키고, 시스템을 재부팅 한다. ora.bichang.gsd OFFLINE OFFLINE ora.bichang.ons OFFLINE OFFLINE 재부팅 후 crs를 시작하면 위와 같은 상태로 된다. gsd, ons는 시스템 재부팅 전의 상태(OFFLINE)로 복귀된다. auto_start=0(=restore)인 이유가 여기에 있다. 기존에 시스템이 정지될때의 상태로 crs 리소스가 올라오게 된다. [root@bichang ~]# su - oracle bichang:/oracle>$cs ora.bichang.gsd OFFLINE OFFLINE ora.bichang.ons OFFLINE OFFLINE bichang:/oracle>$exit [root@bichang ~]# crsctl stop crs Stopping resources. This could take several minutes. - 10 -
Successfully stopped CRS resources. Stopping CSSD. Shutting down CSS daemon. Shutdown request successfully issued. [root@bichang ~]# [root@bichang ~]# ps -ef grep d.bin root 6025 6394 0 14:44 pts/1 00:00:00 grep d.bin [root@bichang ~]# crsctl start crs Attempting to start CRS stack The CRS stack will be started shortly [root@bichang ~]# ps -ef grep d.bin oracle 6470 6455 0 14:44? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/evmd.bin root 6598 4486 2 14:44? 00:00:01 /oracle/app/oracle/product/10.2/crs/bin/crsd.bin reboot oracle 6911 6485 0 14:44? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/ocssd.bin [root@bichang ~]# su - oracle bichang:/oracle>$cs ora.bichang.gsd OFFLINE OFFLINE ora.bichang.ons OFFLINE OFFLINE 시스템 재부팅이 아니라 crsctl stop crs로 중지하고 crsctl start crs를 해도 역시 예전의 상태로 돌아간다. 정리를 하면 0(restore): crs가 정지될때의 resource의 상태를 기억하고 있다가 재시작시 내려갔을때의 상태로 복귀가 된다. 1(always) : resource의 상태와 관계없이 crs 재시작시 1로 설정된 리소스를 online으로 만든다. 2(never) : resource의 상태와 관계없이 2로 설정된 리소스를 offline상태로 올린다. (모든 리소스를 수동으로 기동시켜야 한다.) 이 파라미터를 적용하는 상황은 모든 리소스의 수동관리를 원할 때, 또는 CRS의 문제나 시스템의 문제상황을 해결하기 위하여 설정후 하나씩 테스트를 할 때. 4. Listener CI/ST 값 변경 4.1. TestCase Crs의 등록된 listener의 check interval 과 script_timeout 의 값의 변경으로 장애시 listener의 기동을 빠르게 한다. 4.1.1. 변경방법 - 11 -
Node1 실행 srvctl stop instance -d DEVNA -i DEVNA1 srvctl stop nodeapps -n OFDB1 crs_stat -p ora.ofdb1.listener_ofdb1.lsnr > /tmp/ora.ofdb1.listener_ofdb1.cap crs_profile -update ora.ofdb1.listener_ofdb1.lsnr -dir /tmp -o ci=60,st=60 crs_register ora.ofdb1.listener_ofdb1.lsnr -dir /tmp -u crs_stat -p ora.ofdb1.listener_ofdb1.lsnr grep CHECK_INTERVAL CHECK_INTERVAL=60 crs_stat -p ora.ofdb1.listener_ofdb1.lsnr grep SCRIPT_TIMEOUT SCRIPT_TIMEOUT=60 srvctl start nodeapps -n OFDB1 srvctl start instance -d DEVNA -i DEVNA1 Node2 실행 srvctl stop instance -d DEVNA -i DEVNA2 srvctl stop nodeapps -n OFDB2 crs_stat -p ora.ofdb2.listener_ofdb2.lsnr > /tmp/ora.ofdb2.listener_ofdb2.lsnr.cap crs_profile -update ora.ofdb2.listener_ofdb2.lsnr -dir /tmp -o ci=60,st=60 crs_register ora.ofdb2.listener_ofdb2.lsnr -dir /tmp -u crs_stat -p ora.ofdb2.listener_ofdb2.lsnr grep CHECK_INTERVAL CHECK_INTERVAL=60 crs_stat -p ora.ofdb2.listener_ofdb2.lsnr grep SCRIPT_TIMEOUT SCRIPT_TIMEOUT=60 srvctl start nodeapps -n OFDB2 srvctl start instance -d DEVNA -i DEVNA2 위의 내용은 check_interval과 script_timeout의 기본값을 600(10분)에서 60(1분)으로 변경을 하는 방법임. 보통 RAC 설치후에 기본값을 사용하는 곳이 많은데, 위와 같이 설정을 하게 되면, 리스너의 Fail시 조금 더 빠른 Fail-Over를 보장하게 된다.(리스너의 재기동이 1분내에 시작된다.) - 12 -
5. RESTART_ATTEMPTS 값 변경 5.1. TestCase RAC 운영에 있어서 문제 발생시 특정노드의 재시작은 굉장히 중요한 기능중의 하나이다. 그렇지만 어떤 특정 케이스에서는, 문제가 발생을 해서 중지된 노드를 정확한 이유를 모르는 상태에서 다시 시작을 하게 된다면, 또 다른 문제가 발생을 할 수가 있다. 이번 파라미터는 그런 케이스에 적용을 한다면 유용하게 사용을 할 수가 있다. 5.1.1. 변경방법 Node1 실행 wolgwang:/oracle>$srvctl stop instance -d OCFS -i OCFS1 wolgwang:/oracle>srvctl stop nodeapps -n wolgwang wolgwang:/oracle>$cs ora.ocfs.ocfs2.inst ONLINE ONLINE on bichang ora.ocfs.db ONLINE ONLINE on wolgwang ora.bichang.gsd ONLINE ONLINE on bichang ora.bichang.ons ONLINE ONLINE on bichang ora.wolgwang.listener_wolgwang.lsnr OFFLINE OFFLINE ora.wolgwang.gsd OFFLINE OFFLINE ora.wolgwang.ons OFFLINE OFFLINE ora.wolgwang.vip OFFLINE OFFLINE wolgwang:/oracle>$crs_stat -p ora.ocfs.ocfs1.inst > /tmp/ora.ocfs.ocfs1.inst.cap wolgwang:/oracle>$crs_profile -update ora.ocfs.ocfs1.inst -dir /tmp -o ra=0 wolgwang:/oracle>$crs_register ora.ocfs.ocfs1.inst -dir /tmp -u wolgwang:/oracle>$crs_stat -p ora.ocfs.ocfs1.inst grep RESTART RESTART_ATTEMPTS=0 wolgwang:/oracle>$srvctl start nodeapps -n wolgwang wolgwang:/oracle>$srvctl start instance -d OCFS -i OCFS1 wolgwang:/oracle>$cs ora.ocfs.ocfs1.inst ONLINE ONLINE on wolgwang ora.ocfs.ocfs2.inst ONLINE ONLINE on bichang ora.ocfs.db ONLINE ONLINE on wolgwang ora.bichang.gsd ONLINE ONLINE on bichang ora.bichang.ons ONLINE ONLINE on bichang 위와 같이 RESTART_ATTEMPTS=0 으로 설정을 하고 인스턴스를 다시 시작했다. - 13 -
5.1.2. RESTART_ATTEMPTS=0 의 기능 Node1 실행 wolgwang:/oracle>$ps -ef grep ora_ oracle 1478 1 0 02:44? 00:00:00 ora_pmon_ocfs1 oracle 1485 1 0 02:44? 00:00:00 ora_diag_ocfs1 oracle 1489 1 0 02:44? 00:00:00 ora_psp0_ocfs1 oracle 1508 1 0 02:44? 00:00:00 ora_lmon_ocfs1 oracle 1510 1 0 02:44? 00:00:01 ora_lmd0_ocfs1 oracle 1512 1 0 02:44? 00:00:01 ora_lms0_ocfs1 oracle 1520 1 0 02:44? 00:00:00 ora_mman_ocfs1 oracle 1522 1 0 02:44? 00:00:00 ora_dbw0_ocfs1 oracle 1524 1 0 02:44? 00:00:00 ora_lgwr_ocfs1 oracle 1526 1 0 02:44? 00:00:00 ora_ckpt_ocfs1 oracle 1530 1 0 02:44? 00:00:00 ora_reco_ocfs1 oracle 1532 1 0 02:44? 00:00:00 ora_cjq0_ocfs1 oracle 1534 1 0 02:44? 00:00:01 ora_mmon_ocfs1 oracle 1544 1 0 02:44? 00:00:00 ora_mmnl_ocfs1 oracle 1611 1 0 02:44? 00:00:01 ora_lck0_ocfs1 oracle 1528 1 0 02:44? 00:00:00 ora_smon_ocfs1 oracle 2721 1 0 02:45? 00:00:00 ora_qmnc_ocfs1 oracle 3163 1 0 02:45? 00:00:00 ora_pz99_ocfs1 oracle 3202 1 0 02:45? 00:00:00 ora_q001_ocfs1 oracle 3204 1 0 02:45? 00:00:00 ora_q002_ocfs1 oracle 11164 14972 0 02:48 pts/0 00:00:00 grep ora_ wolgwang:/oracle>$ps -ef grep smon oracle 1528 1 0 02:44? 00:00:00 ora_smon_ocfs1 oracle 15214 14972 0 02:49 pts/0 00:00:00 grep smon wolgwang:/oracle>$cs ora.ocfs.ocfs1.inst ONLINE ONLINE on wolgwang ora.ocfs.ocfs2.inst ONLINE ONLINE on bichang ora.ocfs.db ONLINE ONLINE on wolgwang ora.bichang.gsd ONLINE ONLINE on bichang ora.bichang.ons ONLINE ONLINE on bichang wolgwang:/oracle>$kill -9 1528 => SMON KILL!!! (instance terminated) wolgwang:/oracle>$ps -ef grep ora_ wolgwang:/oracle>$ wolgwang:/oracle>$cs ora.ocfs.ocfs1.inst ONLINE OFFLINE ora.ocfs.ocfs2.inst ONLINE ONLINE on bichang ora.ocfs.db ONLINE ONLINE on wolgwang ora.bichang.gsd ONLINE ONLINE on bichang ora.bichang.ons ONLINE ONLINE on bichang - 14 -
Alert Log > Mon Oct 10 03:01:30 2008 Errors in file /oracle/app/oracle/admin/ocfs/bdump/ocfs1_pmon_1478.trc: ORA-00474: SMON process terminated with error Mon Oct 10 03:01:30 2008 PMON: terminating instance due to error 474 Mon Oct 10 03:01:30 2008 System state dump is made for local instance System State dumped to trace file /oracle/app/oracle/admin/ocfs/bdump/ocfs1_diag_1485.trc Mon Oct 10 03:01:34 2008 Trace dumping is performing id=[cdmp_20081013030130] Mon Oct 10 03:01:35 2008 Instance terminated by PMON, pid = 1478 위의 경우에서 보시면 인스턴스가 내려간 후에 재시작 되지 않음을 알수 있다. RESTART_ATTEMPTS=0 아니라 1이상의 수치가 들어가 있었다면, 당연히 인스턴스 재시작은 되었을 것이다. 이 테스트에서는 단지 SMON을 KILL시킨후에 테스틀 했지만, 실제 운영환경에서는 다양한 문제로 인스턴스가 내려갈 수가 있다. 그런 상황에서 인스턴스를 무조건 다시 기동을 시키는 방법보다는 내려간 원인을 정확하게 파악한후 재시작을 시키는게 더 좋은 방법일 수도 있다. 6. crsctl disable(enable) crs 6.1. TestCase 시스템 시작과 동시에 CRS를 시작하게 하기 위해서는 crsctl enable crs(default)란 명령어를 사용하게 된다. 반대로 시스템 시작과 함께 CRS를 시작하지 않으려면 crsctl disable crs 를 적용하면 된다. 하지만 crsctl 로 시작을 하는 명령어는 CRS가 정상적으로 작동중인 상태에서 사용이 가능하다. 만약 CRS에 문제가 생겨서 뭔가 제대로 작동하지 않는 상황에서는 사용하기 어렵다. 실제 crsctl disable(enable) crs 를 하는 경우 변경되는 파일을 수정해서 적용이 가능하다. 6.1.1. 변경방법 현재 CRS의 작동상태는 정상이며, Default로 설정이 되어 있다.(시스템 시작과 동시에 CRS 시작됨.) [root@wolgwang ~]# crsctl enable crs => 정확한 테스트를 위해 다시 설정. 이렇게 위와 같이 설정을 하는 경우 아래의 위치에 저장이 된다. /etc/oracle/scls_scr/wolgwang/root/crsstart [root@wolgwang ~]# cat /etc/oracle/scls_scr/wolgwang/root/crsstart enable [root@wolgwang ~]# 현재 상태는 enable이며 vi를 사용해서 crsstart 파일의 내용을 disable로 수정한다. [root@wolgwang ~]#vi crsstat [root@wolgwang root]# ls crsdboot crsstart cssrun noclsvmon nooprocd [root@wolgwang root]# cat crsstart disable crsctl disable crs를 사용해서 변경한게 아니며, vi를 사용해서 편집을 했다. 파일의 형식은 [root@wolgwang root]# file crsstart crsstart: ASCII text, with no line terminators 이제 이 상태에서 시스템 재부팅을 한다. - 15 -
[root@wolgwang root]# shutdown -r now Broadcast message from root (pts/0) (Mon Oct 10 03:59:18 2008): The system is going down for reboot NOW! 재부팅 완료 후에 아래와 같이 CRS가 시작되지 않은 상태가 확인되었다. [root@wolgwang ~]# ps -ef grep crs root 3793 1 0 04:05? 00:00:00 /bin/sh /etc/init.d/init.crsd run root 6904 3397 0 04:09 pts/0 00:00:00 grep crs [root@wolgwang ~]# ps -ef grep d.bin root 6906 3397 0 04:09 pts/0 00:00:00 grep d.bin 이번에는 다시 원래 상태로 변경을 한 후에 재부팅을 해보자. [root@wolgwang root]# vi crsstart enable => disable에서 enable로 변경했다. [root@wolgwang root]# cat crsstart enable [root@wolgwang root]# shutdown -r now Broadcast message from root (pts/0) (Mon Oct 10 04:11:17 2008): The system is going down for reboot NOW! 재부팅 후에 아래와 같이 CRS관련 데몬이 시작된 상태가 확인되었다. [root@wolgwang ~]# ps -ef grep crs root 3617 1 0 04:16? 00:00:00 /bin/su -l oracle -c sh -c 'ulimit -c unlimited; cd /oracle/app/oracle/product/10.2/crs/log/wolgwang/evmd; exec /oracle/app/oracle/product/10.2/crs/bin/evmd ' root 3860 1 0 04:16? 00:00:00 /bin/sh /etc/init.d/init.crsd run oracle 4596 3617 0 04:17? 00:00:00 -ksh -c sh -c 'ulimit -c unlimited; cd /oracle/app/oracle/product/10.2/crs/log/wolgwang/evmd; exec /oracle/app/oracle/product/10.2/crs/bin/evmd ' oracle 4616 4596 0 04:17? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/evmd.bin root 4692 3860 0 04:17? 00:00:01 /oracle/app/oracle/product/10.2/crs/bin/crsd.bin reboot root 4831 4564 0 04:17? 00:00:00 /bin/su -l oracle -c /bin/sh -c 'cd /oracle/app/oracle/product/10.2/crs/log/wolgwang/cssd/oclsomon; ulimit -c unlimited; /oracle/app/oracle/product/10.2/crs/bin/oclsomon exit $?' oracle 4832 4831 0 04:17? 00:00:00 -ksh -c /bin/sh -c 'cd /oracle/app/oracle/product/10.2/crs/log/wolgwang/cssd/oclsomon; ulimit -c unlimited; /oracle/app/oracle/product/10.2/crs/bin/oclsomon exit $?' oracle 4847 4832 0 04:17? 00:00:00 /bin/sh -c cd /oracle/app/oracle/product/10.2/crs/log/wolgwang/cssd/oclsomon; ulimit -c unlimited; /oracle/app/oracle/product/10.2/crs/bin/oclsomon exit $? oracle 4848 4847 0 04:17? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/oclsomon.bin oracle 5002 4567 0 04:17? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/ocssd.bin oracle 5590 4616 0 04:17? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/evmlogger.bin -o /oracle/app/oracle/product/10.2/crs/evm/log/evmlogger.info -l /oracle/app/oracle/product/10.2/crs/evm/log/evmlogger.log root 25468 25287 0 04:23 pts/0 00:00:00 grep crs [root@wolgwang ~]# ps -ef grep d.bin oracle 4616 4596 0 04:17? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/evmd.bin root 4692 3860 0 04:17? 00:00:01 /oracle/app/oracle/product/10.2/crs/bin/crsd.bin reboot oracle 5002 4567 0 04:17? 00:00:00 /oracle/app/oracle/product/10.2/crs/bin/ocssd.bin - 16 -
이렇게 O.S 영역의 파일을 변경하기 때문에, 장비를 변경한 후 기존에 crsctl disable crs 라고 설정이 되어 있는 상태에서도, crs재구성을 한 다른 장비에서는 디폴트 값인 enable로 설정이 되어 버린다. 그 이유는 바로 위에서와 같이 파일에 업데이트를 하기 때문에 그렇게 되는 것이다. 만약에 장비를 변경한 후에도 계속 disable를 사용하고 싶다면, crsctl disable crs를 하거나 파일을 변경하면 된다.(crs 재구성을 통한 장비교체) 앞부분에서도 언급을 했지만, CRS쪽 문제로 crsctl 명령어로 업데이트가 되지 않을 때 유용하게 사용될수 있다. - 17 -