행위

"오라클 rac 시작 종료"의 두 판 사이의 차이

DB CAFE

(새 문서: Oracle RAC 11gR2 Management 1.GRID & DB 기동 및 종료 ① 기동 - 데이터베이스 기동과 관련된 절차는 다음과 같다. 순서 작업 비고 1 CRS 기...)
 
340번째 줄: 340번째 줄:
  
 
$srvctl stop database -d SID
 
$srvctl stop database -d SID
 +
 +
 +
------------------
 +
 +
 +
 +
티스토리 메뉴 펼치기검색로그인
 +
티스토리 서비스 메인
 +
프로필 이미지
 +
DB에 대하여
 +
전체 글 보기(250)
 +
개발(0)
 +
윈도우즈서버2008(0)
 +
IIS웹서버(0)
 +
SQLServer(0)
 +
리눅스(44)
 +
솔라리스(18)
 +
오라클 설치(23)
 +
오라클관리실무(17)
 +
오라클백업복구(19)
 +
오라클 성능관리(0)
 +
RAC 운영(6)
 +
SQL과 PL/SQL(20)
 +
SQL전문가가이드(49)
 +
성능고도화1(6)
 +
성능고도화2(7)
 +
SQL 튜닝(2)
 +
OWI(11)
 +
모델링(7)
 +
대용량DB솔루션(0)
 +
ETL(5)
 +
빅데이터(15)
 +
트러블슈팅(1)
 +
기타(0)
 +
Oracle Database 10g: SQL Fundamentals I(0)
 +
방명록
 +
글쓰기, 알림, 통계 확인은 티스토리앱에서
 +
04 RAC 운영하기
 +
티스토리 메뉴 펼치기댓글수0메뉴 더보기
 +
RAC 운영
 +
04 RAC 운영하기
 +
김성율
 +
2014.01.07 15:07댓글수0
 +
앞에서  RAC  설치와  기본  개념들을  살펴보았습니다.
 +
 +
이번  장에서는  RAC  설치가  완료  된  후  관리해야  하는  부분들과  주요  명령어들을  살펴보겠습니다.
 +
 +
 +
 +
1.  현재  상태  확인하기
 +
 +
현재  RAC  관련된  주요  상태를  확인하는  명령어는  crs_stat  입니다.
 +
 +
주요  문법은  아래와  같습니다.
 +
 +
[oracle@rac1 ~]$ crs_stat -h
 +
 +
Usage:  crs_stat [resource_name [...]] [-v] [-l] [-q] [-c cluster_member]
 +
 +
crs_stat [resource_name [...]] -t [-v] [-q] [-c cluster_member]
 +
 +
crs_stat -p [resource_name [...]] [-q]
 +
 +
crs_stat [-a] application -g
 +
 +
crs_stat [-a] application -r [-c cluster_member]
 +
 +
crs_stat -f [resource_name [...]] [-q] [-c cluster_member]
 +
 +
crs_stat -ls [resource_name [...]] [-q]
 +
 +
 +
 +
위 옵션 중 현재 상태를 확인할 때 쓰는 옵션은 -t
 +
 +
$ crs_stat -t
 +
 +
 +
 +
* Target  :  목표  상태
 +
 +
* State :  현재  상태
 +
 +
* Host :  작동  노드
 +
 +
 +
 +
Target  와  State  가  모두  Online 상태가  되면  정상적으로  작동하고  있는  것입니다.
 +
 +
 +
 +
실시간으로  위와  같은  상황을  조회하려면  리눅스에서는  watch  명령을  아래와  같이  사용하면  1초에  1번씩  refresh  하여  실시간  상황을  보여줍니다.
 +
 +
$ watch -n 1 'crs_stat -t'
 +
 +
위  명령에서  -n  은  시간을  지정하며  1  은  1  초마다  '명령어'  를  반복해서  수행하라는  의미입니다
 +
 +
 +
 +
위의  방법  말고  srvctl  이라는  명령어를  사용해서  보다  세부적으로  상태를  조회할  수도  있습니다.
 +
 +
$ srvctl
 +
 +
 +
 +
주요  문법은  아래와  같습니다.
 +
 +
$srvctl status database -d <database-name> [-f][-v][-S <level>]
 +
 +
$srvctl status instance -d <database-name> -i <instance-name>
 +
 +
[<instancename-list>][-f][-v]-S <level>]
 +
 +
$srvctl status service -d <database-name> -s <service_name>
 +
 +
[<service-namelist>][-f][-v][-S <level>]
 +
 +
$srvctl status nodeapps [-n <node-name>]
 +
 +
$srcvtl status asm -n <node_name>
 +
 +
 +
 +
위  명령어들을  사용하여  몇  가지  조회를  해  보겠습니다
 +
 +
1.  데이터베이스의  상태,  모든 인스턴스와 모든  서비스의  상태  확인
 +
 +
$ srvctl status database -d rac -v
 +
 +
 +
 +
2.  특정  인스턴스의 상태와  현재  서비스의  상태  확인
 +
 +
$ srvctl status instance -d rac -i rac1, rac2
 +
 +
 +
 +
3.  모든  node의  상태를  확인합니다
 +
 +
$ srvctl status nodeapps -n rac1
 +
 +
$ srvctl status nodeapps -n rac2
 +
 +
 +
 +
 +
 +
 +
 +
2. RAC 중단하기
 +
 +
RAC  를  설치하면  여러  가지  관련  서비스들과  Application,  Instance  가  복합적으로  동작을  하게 됩니다.
 +
 +
그래서  RAC  를  중단  할  때는  순서가  아주  중요합니다.
 +
 +
srvctl  명령을  사용하며  중단을  시키는  순서는 
 +
 +
Instance  -->  asm  (asm  으로  구성되었을  경우)  --> application  순서입니다. 
 +
 +
주요  명령어를  먼저  살펴보겠습니다.
 +
 +
 +
 +
$srvctl  stop  database -d <database-name> [-o <stop-options>]
 +
 +
[-c <connect-string> | -q]
 +
 +
$srvctl  stop  instance -d <database-name> -i <instance-name>
 +
 +
[,<instance-namelist>][-o <stop-option>][-c <connect -string> | -q]
 +
 +
$srvctl  stop    service -d <database-name> [-s <service-name> [, <service-namelist>]]
 +
 +
[-i <instance-name][-c <connect -string> | -q][-f]
 +
 +
$srvctl    stop    nodeapps -n <node-name>
 +
 +
$srvctl    stop    asm -n <node_name> [-i ][-o <start_option>
 +
 +
 +
 +
위  명령을  사용하여  아래와  같이  종료하면  됩니다.
 +
 +
[oracle@rac2 ~]$ srvctl  stop instance -d RAC -i rac1
 +
 +
 +
 +
위  명령어에서  -d  옵션은  DB  이름을  지정하는  것이고  -i  는  instance  이름을  지정하는  것입니다.
 +
 +
이  명령  수행  후  crs_stat -t  로  확인해  보겠습니다
 +
 +
 +
 +
Instance1  이  종료된  것이 확인됩니다. 그러나  Database  는  아직 중단이  되지  않고  있습니다.
 +
 +
Instance2  가  운영  중이기 때문입니다.
 +
 +
 +
 +
나머지  Instance 2  도  종료하고  다시  확인  해  보겠습니다
 +
 +
[oracle@rac2 ~]$ srvctl  stop instance -d RAC -i rac2
 +
 +
 +
 +
모든  Instance  와  Database 가  OFFLINE  된  것이  확인됩니다.  이제  나머지  구성 요소들을  종료하면  됩니다.
 +
 +
 +
 +
[oracle@rac2 ~]$ srvctl  stop nodeapps -n  rac1
 +
 +
[oracle@rac2 ~]$ srvctl  stop nodeapps -n  rac2
 +
 +
 +
 +
모두  정상적으로  OFFLINE  된  것이 확인됩니다.
 +
 +
 +
 +
위  작업을  한번에  해  주는  명령어가  crs_stop -all  입니다.
 +
 +
위와  같이  한  단계씩  수동으로  종료할  수도  있고  crs_stop  -all  명령을  이용해서  한꺼번에  자동으로  종료시킬  수도  있습니다.
 +
 +
 +
 +
 +
 +
 +
 +
3. RAC  시작하기
 +
 +
앞에서  잠시  언급한  대로  시작하는  순서는  중단  순서와  반대입니다.
 +
 +
즉  application --> ASM (ASM  일경우) --> Instance  순서로  시작하면  됩니다.
 +
 +
종료할  때와  마찬가지로  srvctl  명령으로  시작합니다.
 +
 +
주요  명령어를  먼저  살펴  보겠습니다.
 +
 +
 +
 +
$srvctl start database -d <database-name> [-o <start-options>][-c <connect-string> | -q]
 +
 +
$srvctl start instance -d <database-name> -i <instance-name> [,<instance-name-list>]
 +
 +
[-o <start-option>][-c <connect -string> | -q]
 +
 +
$srvctl start service -d <database-name> [-s <service-name> [, <service-namelist>]]
 +
 +
[-i <instance-name>][-o <start-option>][-c <connect -string> | -q]
 +
 +
$srvctl start nodeapps -n <node-name>
 +
 +
$srvctl start asm -n <node_name> [-i ][-o <start_options>]
 +
 +
 +
 +
$ crs_stat -t
 +
 +
현재 상태는 모두 offline 입니다.
 +
 +
 +
 +
먼저 node application 부터 시작합니다.
 +
 +
[oracle@rac2 ~]$ srvctl  start    nodeapps    -n  rac1
 +
 +
 +
 +
rac1  에서  application  이  실행  된  것을  확인  할  수  있습니다.
 +
 +
여기서  중요한  것은  vip  와  listener  입니다.
 +
 +
 +
 +
나머지  rac2  에서도  application  을  시작합니다.
 +
 +
[oracle@rac2 ~]$ srvctl  start nodeapps -n  rac2
 +
 +
 +
 +
rac1  과  rac2  에서  node application  이  모두  정상적으로  시작  된  것이  확인됩니다.
 +
 +
만약  ASM  으로  구성되었을  경우는  양쪽  노드  모두에서  아래와  같이  ASM  을  시작하면  됩니다.
 +
 +
 +
 +
[oracle@rac2 ~]$ srvctl  start asm  -n  rac1
 +
 +
[oracle@rac2 ~]$ srvctl  start asm  -n  rac2
 +
 +
 +
 +
이제  Instance  를  시작하면  됩니다
 +
 +
[oracle@rac2 ~]$ srvctl  start  instance  -d  rac  -i  rac1
 +
 +
 +
 +
 +
 +
위  화면에서  볼  수  있듯이  Instance  가  1  개라도  시작이  되면  Database  가  시작됨을  알  수  있습니다. 
 +
 +
나머지  Instance  도  시작하겠습니다
 +
 +
[oracle@rac2 ~]$ srvctl  start  instance  -d  rac  -i  rac2
 +
 +
 +
 +
Instance  가  모두  시작  되어도  서비스가  시작이  안  될  경우  아래와  같이  특정  서비스를  실행하면 됩니다.
 +
 +
다만  db  를  생성할  때  함께  만들어진  내부  서비스는  아래와  같은  에러가  발생합니다.
 +
 +
$ srvctl start service -d rac -s rac -i rac1
 +
 +
 +
 +
이럴  경우는  crs_start  -all  명령어를  수행해서  시작하면  되며  crs_start  -all  명령은  위  단계들을 모두  한꺼번에  모아서  실행하는  스크립트입니다.
 +
 +
모두가  정상적으로  시작되었습니다
 +
 +
 +
 +
 +
 +
 +
 +
4. RAC  에  자원  추가  및  제거하기
 +
 +
자원의  시작과  종료  외에도  srvctl  명령을  사용하여  운영  중인  RAC  에서  여러  가지  자원을  추가할  수  있습니다.
 +
 +
아래에서  주요  문법을  살펴보겠습니다.
 +
 +
 +
 +
$srvctl add database -d <name> -o <oracle_home> [-m <domain_name>][-p <spfile>]
 +
 +
[-A <name|ip>/netmask][-r{PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}]
 +
 +
[-s <start_options>][-n <db_name>]
 +
 +
$srvctl add instance -d <name> -i <inst_name> -n <node_name>
 +
 +
$srvctl add service -d <name> -s <service_name> -r <preferred_list> [-a ]
 +
 +
[-P <TAF_policy>][-u]
 +
 +
$srvctl add noeapps -n <node_name> -o <oracle_home> [-A <name|ip>/netmask[/if1[|if2|….]]]
 +
 +
$srvctl add asm -n <node_name> i -o <oracle_home>
 +
 +
 +
 +
 +
 +
위 예 중에서  새로운  서비스를  추가  해  보겠습니다.
 +
 +
인사  관리작업을  위한  insa  서비스를  추가하되  rac2  에서  서비스  하고  rac1  에서는  대기  상태로 생성하겠습니다.
 +
 +
$ srvctl add service -d rac -s insa -r rac2 -a rac1
 +
 +
 +
 +
위와  같이  서비스를  생성  한  후  crs_stat -t  로  확인합니다.
 +
 +
insa  서비스가  생성은  되었으나 실행은  되지  않습니다. 명령어로  실행을  시켜야  합니다.
 +
 +
 +
 +
아래와  같이  해당  서비스를  명령어로  실행  시킵니다.
 +
 +
$ srvctl start service -d rac -s insa
 +
 +
 +
 +
정상적으로  잘  실행  되는  것을  확인  할  수  있습니다.
 +
 +
srvctl  명령어를  이용해서  기존에  존재하는  자원을  제거  할  수도  있습니다.
 +
 +
 +
 +
주요  명령어는  아래와  같습니다
 +
 +
$ srvctl remove database -d <database-name>
 +
 +
$ srvctl remove database -d <database-name> [-i <instance-name>]
 +
 +
$ srvctl remove database -d <database-name> -s <service-name>
 +
 +
[-i <instance-name>]
 +
 +
 +
 +
위에서  생성했던  insa  서비스를  제거해  보겠습니다.
 +
 +
$ srvctl remove service -d rac -s insa
 +
 +
$ srvctl stop service -d rac -s insa
 +
 +
$ srvctl remove service -d rac -s insa
 +
 +
 +
 +
위  화면을  보면  실행  중인  서비스는  먼저  중지를  하고  제거해야  됨을  알  수  있습니다.
 +
 +
만약  여러  개의  인스턴스에서  실행  중인  서비스인  경우  특정  인스턴스에서만  제거를  해야  할
 +
 +
경우에는  아래와  같이  -i  옵션을  함께  사용하면  됩니다.
 +
 +
$ srvctl remove service -d rac -s insa -i rac1
 +
 +
 +
 +
 +
 +
 +
 +
5. srvctl  명령을  사용하여  rac service  관련  설정  변경하기
 +
 +
srvctl modify  라는  명령을  사용하여  현재  설정되어  있는  값을  변경할  수  있습니다.
 +
 +
 +
 +
srvctl    modify    database  Database  와  관련된  설정을  변경할  수  있습니다.
 +
 +
srvctl    modify    instance  Instance  와  관련된  설정을  변경할  수  있습니다.
 +
 +
srvctl    modify    service  Service  와  관련된  설정을  변경할  수  있습니다.
 +
 +
srvctl    modify    nodeapps  node application  과  관련된  설정을  변경할  수  있습니다.
 +
 +
 +
 +
1) srvctl    modify    database
 +
 +
srvctl modify database -d db_unique_name [-n db_name] [-o oracle_home] [-m domain_name]
 +
 +
[-p spfile] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}] [-s start_options]
 +
 +
[-y {AUTOMATIC | MANUAL}]
 +
 +
 +
 +
위  명령의  주요  옵션의  의미는  아래와  같습니다
 +
 +
-d db_unique_name      유일한(Unique) DB  이름을  지정합니다.
 +
 +
-n db_name                DB  이름을  지정합니다.
 +
 +
-o oracle_home            Cluster database  용  Oracle home  을  지정합니다.
 +
 +
-m domain_name          Cluster database  용  domain  명을  지정합니다.
 +
 +
-p spfile                      Cluster database  용  spfile  을  지정합니다.
 +
 +
-r  role [PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY]    Database의  역할을  지정합니다.
 +
 +
(primary , physical standby , logical standby)
 +
 +
-s start_options              database  가  Startup  될  때  option  을  지정합니다
 +
 +
-y                                Database  관리정책을  지정합니다.
 +
 +
값으로는  automatic  과  manual  을  사용합니다
 +
 +
-h                                도움말을  출력합니다.
 +
 +
 +
 +
 +
 +
2) srvctl    modify    instance
 +
 +
srvctl    modify    instance    -d    db_unique_name    -i    inst_name
 +
 +
{-n node_name | -s asm_instance_name | -r}
 +
 +
 +
 +
 +
 +
위  명령의  주요  옵션의  의미는  아래와  같습니다.
 +
 +
d db_unique_name              database Unique name  을  설정합니다.
 +
 +
-i inst_name                        Database instance name  을  설정합니다.
 +
 +
-n node_name                    Node name  을  지정합니다.
 +
 +
-s asm_instance_name        Database instance  에서  사용하는  ASM instance name  을  지정합니다
 +
 +
-r                                      Database instance  에서  사용하는  ASM instance name  을  제거합니다
 +
 +
 +
 +
 +
 +
 +
 +
3) srvctl    modify    service
 +
 +
이  명령을  사용하여  서비스  중인  노드들의  설정을  변경할  수  있습니다. 
 +
 +
그러나  이  명령은  아래와 같이  몇  가지  주의  사항이  있습니다.
 +
 +
-  새로운  변경  사항이  생길  때  기존  운영중인  서비스에는  반영이  되지  않습니다.
 +
 +
즉  변경사항을  운영중인  서비스에  적용하려면  기존  서비스를  중단  한  후  새로  시작해야  합니다.
 +
 +
또한  운영중인  서비스의  설정  값은  사용량이  많을  때는  변경하지  않을  것을  권장합니다.
 +
 +
변경  명령은  아래와  같습니다.
 +
 +
 +
 +
srvctl    modify    service    -d    db_unique_name    -s    service_name    -i    old_inst_name
 +
 +
-t    new_inst_name [-f]
 +
 +
 +
 +
위  명령어의  주요  옵션은  아래와  같습니다
 +
 +
-d db_unique_name          Unique database name  을  설정합니다.
 +
 +
-s service_name              Service name 을  지정합니다.
 +
 +
-i old_inst_name              현재  동작중인  Instance name  을  지정합니다.
 +
 +
-t new_inst_name            새롭게  서비스  할  Instance name  을  지정합니다.
 +
 +
-f                                  서비스를  중단하고  재  위치  시킬  때  현재  접속을  모두  강제로  종료합니다
 +
 +
 +
 +
 +
 +
4) srvctl    modify    nodeapps
 +
 +
이  명령은  Oracle home  이  변경되었거나  vip  가  변경되었을  경우  사용합니다.
 +
 +
srvctl modify nodeapps -n node_name [-o oracle_home] [-A new_vip_address]
 +
 +
 +
 +
이  명령의  주요  옵션은  아래와  같습니다.
 +
 +
-n node_name                Node name 을  지정합니다.
 +
 +
-o oracle_home              새롭게  변경  될  Oracle home  을  지정합니다.
 +
 +
-A new_vip_address      새롭게  변경  될 VIP address (name|ip/netmask[/if1[|if2|...]])를  지정합니다.
 +
 +
 +
 +
 +
 +
 +
 +
6. Service  재배치  하기
 +
 +
SERVICE:  RAC 안에서 제공해주는 업무
 +
 +
이  명령을  사용하여  현재  운영중인  서비스들의  인스턴스를  변경할  수  있습니다.
 +
 +
예를  들어  인사관리를  위한  insa  서비스가  기존에  rac1  에서  서비스  중이었는데 
 +
 +
rac1  을  패치하기 위해서  서비스를  rac2  로  이동해야  할  경우  등에  사용하는  명령입니다.
 +
 +
 +
 +
srvctl    relocate    service    -d db_unique_name    -s    service_name    -i old_inst_name
 +
 +
-t new_inst_name [-f]
 +
 +
 +
 +
위  명령의  주요  옵션은  아래와  같습니다.
 +
 +
 +
 +
-d db_unique_name          Unique database name  을  지정합니다.
 +
 +
-s service_name              Service name 을  지정합니다.
 +
 +
-i old_inst_name              현재  서비스  중인  instance name  을  지정합니다.
 +
 +
-t new_inst_name            새로  변경할  instance name  을  지정합니다.
 +
 +
-f                                  서비스  재배치를  할  때  현재  접속  중인  세션을  모두  강제  종료  시킵니다.
 +
 +
 +
 +
사용  예)
 +
 +
인사관리를  위한  insa  서비스를  rac1  instance  에  생성한  후  이  명령을  사용해서  rac2  instance  로 변경합니다.
 +
 +
 +
 +
[oracle@rac2 ~]$ srvctl add service -d rac -s insa -r rac1 -a rac2
 +
 +
[oracle@rac2 ~]$ srvctl start service -d rac -s insa
 +
 +
 +
 +
insa  서비스가  rac1  에서  작동하는 것이  확인됩니다.
 +
 +
위에서  확인한  rac1  에서  동작  중인  insa  서비스를  rac2  로  이동하겠습니다.
 +
 +
$ srvctl relocate service -d rac -s insa -i rac1 -t rac2
 +
 +
 +
 +
기존  rac1 -> rac2  로  변경된  것이  보입니다.
 +
 +
클라이언트(PC)  에서  tnsnames.ora  파일을  수정해서  insa  서비스에  접속한  후  instance  name  을 확인해  보겠습니다.
 +
 +
tnsnames.ora  파일에  아래와  같은  내용을  추가합니다.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
pc  에서  서버로  접속하여  확인합니다.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
다시  rac1  으로  변경  후  확인  해  보겠습니다
 +
 +
$ srvctl relocate service -d rac -s insa -i rac2 -t rac1
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
7. CRS  자원의  일시적인  활성화  /  비활성화  설정하기
 +
 +
 +
 +
주요  명령은  아래와  같습니다.
 +
 +
-  활성화  하기
 +
 +
$ srvctl enable database -d <database-name>
 +
 +
$ srvctl enable instance -d <database-name> -i <instance-name> [,<instnacnename-list>]
 +
 +
$ srvctl enable service -d <database-name> -s <service-name>][,<servicename-list>]
 +
 +
[-i <instance-name>]
 +
 +
 +
 +
-  비활성화  하기
 +
 +
$ srvctl disable database -d <database-name>
 +
 +
$ srvctl disable instance -d <database-name> -i <instnace-name> [,<instancename-list>]
 +
 +
$ srvctl disable service -d <database-name> -s <service-name>][,<service-name-list>]
 +
 +
[-i <instance-name>]
 +
 +
 +
 +
위  명령을  사용하여  insa  서비스를  비활성화  시킨  후  접속  테스트를  해  보겠습니다.
 +
 +
$ srv disable service -d rac -s insa
 +
 +
$ srvctl stop service -d rac -s insa
 +
 +
$ srvctl disable service -d rac -s insa
 +
 +
 +
 +
위와  같이  실행중인  서비스는  사용  안  함으로  변경할  수  없어서  중단  후  사용  안  함으로  변경합니다.
 +
 +
 +
 +
이제  client  에서  insa  서비스로  접속해  있던  사용자  창에서  조회를  해  보고  새로  접속을  시도  해보겠습니다.
 +
 +
먼저  서비스가  중단되기  전에  접속해  있던  세션부터  확인합니다.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
이번에는  새로  접속을  시도합니다.
 +
 +
 +
 +
 +
 +
 +
 +
당연히  에러가  발생합니다.
 +
 +
이번에는  insa service  를  활성화  한  후  접속  테스트를  합니다.
 +
 +
$ srvctl enable service -d rac -s insa
 +
 +
 +
 +
 +
 +
 +
 +
여전히  접속이  안됨을  알  수  있습니다.
 +
 +
crs_stat -t  로  현재  상태를  조회합니다.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
위  화면을  보면  service  를  enable  해도  여전히  service  는  offline  상태임을  알  수  있습니다.
 +
 +
즉  해당  서비스를  다시  사용하려면  service  를  start  해야  합니다.
 +
 +
 +
 +
$ srvctl start service -d rac -s insa
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
이상으로  srvctl  로  RAC  서비스와  자원을  관리하는  방법을  살펴보았습니다.
 +
 +
 +
 +
8. rac  관련  로그  경로  및  내용  확인하기
 +
 +
- $ORA_CRS_HOME/crs/log : CRS resources  와  관련된  주요  내용이  저장됩니다.
 +
 +
- $ORA_CRS_HOME/crs/init : CRS daemon  이  시작될  때부터  관련  내용을  기록합니다.
 +
 +
CRS  시작  관련된  장애  내용  등을  확인  할  경우  유용합니다.
 +
 +
-  $ORA_CRS_HOME/css/log  :  Cluster  Synchronization  (CSS)  데몬이  수행  하는  reconfigurations, missed check-ins,
 +
 +
connects, disconnects  관련된  내용을  기록합니다. 
 +
 +
만약  CSS  데몬에  문제가  발생해서  재부팅을  할  경우  이  파일의  내용을  확인하여  시간과  내역을  찾아볼  수  있습니다.
 +
 +
- $ORA_CRS_HOME/css/init : Oracle Cluster Synchronization Service daemon (OCSSd)  데몬이  장애가  발생했을  경우 
 +
 +
Core Dump  관련  내용을  저장하고  있습니다.
 +
 +
-  $ORA_CRS_HOME/evm/log  :  Event  Volume  Manager  (EVM)  데몬과  evmlogger  데몬  관련  로그파일입니다.
 +
 +
-  $ORA_CRS_HOME/evm/init  :  EVM  데몬과  관련된  PID  와  lock  file  입니다. 
 +
 +
이  파일에  EVM  관련된  문제가  발생  될  경우  Core Dump  도  기록됩니다.
 +
 +
- $ORA_CRS_HOME/srvm/log : Oracle Cluster Registry (OCR)  과  관련된  log file  입니다.
 +
 +
- $ORA_CRS_HOME/log : Oracle Clusterware  관련된  일반적  내용이  저장되는  log file  입니다. 
 +
 +
  가장 일반적으로  많이  모니터링  됩니다.
 +
 +
 +
 +
 +
 +
 +
 +
공유하기
 +
신고하기
 +
첫 댓글을 남겨보세요
 +
로딩 중
 +
이전글
 +
03 RAC 기반에서의 Load Balancing 과 Application Failover 살펴보기
 +
2014.01.07 10:22
 +
다음글
 +
05 RAC 백업 복구 (RAW DEVICE 기반) 1 물리적 장애
 +
2014.01.08 11:18
 +
이 블로그 인기 글
 +
 +
R 기초 입문
 +
김성율
 +
 +
R 활용 예제 실습
 +
김성율
 +
 +
윈도우용 R 에서 오라클 DB 에 접속하는 ..
 +
김성율
 +
 +
R 그래프 함수 활용하기
 +
김성율
 +
 +
ggplot2() 와 ggmap 사용한 지도 위에 표..
 +
김성율
 +
 +
03 하둡 분산 파일 시스템
 +
김성율
 +
맨위로

2019년 8월 6일 (화) 00:35 판

thumb_up 추천메뉴 바로가기


Oracle RAC 11gR2 Management


1.GRID & DB 기동 및 종료

① 기동

- 데이터베이스 기동과 관련된 절차는 다음과 같다.

순서

작업

비고

1

CRS 기동

CRS가 down된경우에만 실행

2

CRS 어플리케이션 기동

한 노드에서 명령어 실행(수동실행시)

3

LISTENER 기동

한 노드에서 명령어 실행(수동실행시)

4

DB 인스턴스기동

한 노드에서 명령어 실행(수동실행시)


- CRS는 RAC를 구성하는 각 노드 및 각종 리소스를제어하는 프로세스이다.

- CRS의 기동은 root권한으로 되어야 한다.


- 서버 재부팅 시 자동 기동된다. 아래 내용은 수동으로 기동하는 방법이다.


  • DB 서버 각각의 노드에서 "root" 유저로 실행한다.

=>노드#1

  1. cd /gridhome/grid/bin
  1. ./crsctl start crs


=>노드#2

  1. cd /gridhome/grid/bin
  1. ./crsctl start crs


CRS의 주요 프로세스는 아래와 같으며, CRS 상태확인은 crsctl check crs 으로 가능하다.

$ps -ef | grep "d\.bin" | grep -v grep

root 3866688 1 0 Jan 18 - 114:41 /gridhome/grid/bin/crsd.bin reboot

oracle 4718796 1 0 Jan 18 - 23:25 /gridhome/grid/bin/gpnpd.bin

root 4849710 1 0 Jan 18 - 103:53 /gridhome/grid/bin/ohasd.bin reboot

oracle 6815908 1 0 Jan 18 - 1:13 /gridhome/grid/bin/mdnsd.bin

oracle 7012560 1 0 Jan 18 - 42:49 /gridhome/grid/bin/evmd.bin

oracle 5112196 1 0 Jan 18 - 110:59 /gridhome/grid/bin/gipcd.bin

oracle 5374298 5308576 1 Jan 18 - 204:38 /gridhome/grid/bin/ocssd.bin

root 6488528 1 0 Jan 18 - 47:04 /gridhome/grid/bin/octssd.bin reboot

root 38273316 1 3 Feb 06 - 728:28 /gridhome/grid/bin/osysmond.bin$cd $GRID_HOME/bin


$crsctl check crs

CRS-4638: Oracle High Availability Services is online

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online


② CRS Application 기동

- 위의 2.1.1에서 CRS기동 시 자동 기동된다. 아래내용은 수동으로 기동하는 방법이다.

- CRS를 구성하는 어플리케이션은 아래 명령어로 기동한다.


  • DB 서버{노드#1}에서 "oracle" 유저로 실행한다.

$srvctl start nodeapps -n HOSTNAME

$srvctl start nodeapps -n HOSTNAME


③ Listener 기동

- 위의 2.1.1에서 CRS기동 시 자동 기동된다. 아래내용은 수동으로 기동하는 방법이다.

- LISTENER는 아래 명령어로 기동한다.


  • DB 서버{노드#1}에서 "oracle" 유저로 실행한다.

$srvctl start listener -n HOSTNAME

$srvctl start listener -n HOSTNAME


④ DB Instance 기동

- 위의 2.1.1에서 CRS기동 시 자동 기동된다. 아래내용은 수동으로 기동하는 방법이다.

- DB인스턴스는 아래 명령어로 기동한다.


  • DB 서버{노드#1}에서 "oracle" 유저로 실행한다.

$srvctl start database -d G_SID


⑤ CRS Application/Listener/DB Instance확인

$ crsctl status res -t


NAME TARGET STATE SERVER STATE_DETAILS


Local Resources


ora.TEST_ELSE.lsnr

ONLINE ONLINE hostname

ONLINE ONLINE hostname

ora.TEST_GIGA.lsnr

ONLINE ONLINE hostname

ONLINE ONLINE hostname

ora.TEST_1_ELSE.lsnr

ONLINE ONLINE hostname

ONLINE ONLINE hostname

ora. TEST_1_GIGA.lsnr

ONLINE ONLINE hostname

ONLINE ONLINE hostname

ora.gsd

OFFLINE OFFLINE hostname

OFFLINE OFFLINE hostname

ora.net1.network

ONLINE ONLINE hostname

ONLINE ONLINE hostname

ora.ons

ONLINE ONLINE hostname

ONLINE ONLINE hostname

ora.registry.acfs

OFFLINE OFFLINE hostname

OFFLINE OFFLINE hostname


Cluster Resources


ora.test.db

1 ONLINE ONLINE hostname Open

2 ONLINE ONLINE hostname Open

ora.cvu

1 ONLINE ONLINE hostname

ora.test_1.db

1 ONLINE ONLINE hostname Open

2 ONLINE ONLINE hostname Open

ora.oc4j

1 ONLINE ONLINE hostname

ora.hostname.vip

1 ONLINE ONLINE hostname

ora. hostname.vip

1 ONLINE ONLINE hostname


 - 중요 resource

- ora.[listener_name].lsnr -> listener의 상태를나타냄

- ora.net1.network -> public network 상태를 나타냄

- ora.[DB_name].db -> Database 상태를 나타냄

- ora.[hostname].vip -> VIP 상태를 나타냄(장애인경우 failover 상태가 됨)


⑥ 종료

- 데이터베이스 종료와 관련된 절차는 다음과 같다.

순서

작업

비고

1

CRS 어플리케이션 종료

한 노드에서 명령어 실행(오라클유저로)

2

LISTENER 종료

한 노드에서 명령어 실행(오라클유저로)

3

DB 인스턴스종료

한 노드에서 명령어 실행(오라클유저로)

4

CRS 종료

양쪽 노드에서 명령어 실행(root유저로)

5

서버 종료

양쪽 노드에서 명령어 실행(root유저로)


⑦ CRS Application 종료

- CRS를 구성하는 어플리케이션은 아래 명령어로 종료한다.


  • DB 서버{노드#1}에서 "oracle" 유저로 실행한다.

$srvctl stop nodeapps –n HOSTNAME

$srvctl stop nodeapps -n HOSTNAME


⑧ LISTENER 종료

- LISTENER는 아래 명령어로 종료한다.


  • DB 서버{노드#1}에서 "oracle" 유저로 실행한다.

$srvctl stop listener -n HOSTNAME

$srvctl stop listener -n HOSTNAME


⑨ DB Instance 종료

- DB인스턴스는 아래 명령어로 종료한다.


  • DB 서버{노드#1}에서 "oracle" 유저로 실행한다.

$srvctl stop database -d SID




티스토리 메뉴 펼치기검색로그인 티스토리 서비스 메인 프로필 이미지 DB에 대하여 전체 글 보기(250) 개발(0) 윈도우즈서버2008(0) IIS웹서버(0) SQLServer(0) 리눅스(44) 솔라리스(18) 오라클 설치(23) 오라클관리실무(17) 오라클백업복구(19) 오라클 성능관리(0) RAC 운영(6) SQL과 PL/SQL(20) SQL전문가가이드(49) 성능고도화1(6) 성능고도화2(7) SQL 튜닝(2) OWI(11) 모델링(7) 대용량DB솔루션(0) ETL(5) 빅데이터(15) 트러블슈팅(1) 기타(0) Oracle Database 10g: SQL Fundamentals I(0) 방명록 글쓰기, 알림, 통계 확인은 티스토리앱에서 04 RAC 운영하기 티스토리 메뉴 펼치기댓글수0메뉴 더보기 RAC 운영 04 RAC 운영하기 김성율 2014.01.07 15:07댓글수0 앞에서 RAC 설치와 기본 개념들을 살펴보았습니다.

이번 장에서는 RAC 설치가 완료 된 후 관리해야 하는 부분들과 주요 명령어들을 살펴보겠습니다.


1. 현재 상태 확인하기

현재 RAC 관련된 주요 상태를 확인하는 명령어는 crs_stat 입니다.

주요 문법은 아래와 같습니다.

[oracle@rac1 ~]$ crs_stat -h

Usage: crs_stat [resource_name [...]] [-v] [-l] [-q] [-c cluster_member]

crs_stat [resource_name [...]] -t [-v] [-q] [-c cluster_member]
crs_stat -p [resource_name [...]] [-q]
crs_stat [-a] application -g
crs_stat [-a] application -r [-c cluster_member]
crs_stat -f [resource_name [...]] [-q] [-c cluster_member]
crs_stat -ls [resource_name [...]] [-q]


위 옵션 중 현재 상태를 확인할 때 쓰는 옵션은 -t

$ crs_stat -t


  • Target  : 목표 상태
  • State : 현재 상태
  • Host : 작동 노드


Target 와 State 가 모두 Online 상태가 되면 정상적으로 작동하고 있는 것입니다.


실시간으로 위와 같은 상황을 조회하려면 리눅스에서는 watch 명령을 아래와 같이 사용하면 1초에 1번씩 refresh 하여 실시간 상황을 보여줍니다.

$ watch -n 1 'crs_stat -t'

위 명령에서 -n 은 시간을 지정하며 1 은 1 초마다 '명령어' 를 반복해서 수행하라는 의미입니다


위의 방법 말고 srvctl 이라는 명령어를 사용해서 보다 세부적으로 상태를 조회할 수도 있습니다.

$ srvctl


주요 문법은 아래와 같습니다.

$srvctl status database -d <database-name> [-f][-v][-S <level>]

$srvctl status instance -d <database-name> -i <instance-name>

[<instancename-list>][-f][-v]-S <level>]

$srvctl status service -d <database-name> -s <service_name>

[<service-namelist>][-f][-v][-S <level>]

$srvctl status nodeapps [-n <node-name>]

$srcvtl status asm -n <node_name>


위 명령어들을 사용하여 몇 가지 조회를 해 보겠습니다

1. 데이터베이스의 상태, 모든 인스턴스와 모든 서비스의 상태 확인

$ srvctl status database -d rac -v


2. 특정 인스턴스의 상태와 현재 서비스의 상태 확인

$ srvctl status instance -d rac -i rac1, rac2


3. 모든 node의 상태를 확인합니다

$ srvctl status nodeapps -n rac1

$ srvctl status nodeapps -n rac2




2. RAC 중단하기

RAC 를 설치하면 여러 가지 관련 서비스들과 Application, Instance 가 복합적으로 동작을 하게 됩니다.

그래서 RAC 를 중단 할 때는 순서가 아주 중요합니다.

srvctl 명령을 사용하며 중단을 시키는 순서는

Instance --> asm (asm 으로 구성되었을 경우) --> application 순서입니다.

주요 명령어를 먼저 살펴보겠습니다.


$srvctl stop database -d <database-name> [-o <stop-options>]

[-c <connect-string> | -q]

$srvctl stop instance -d <database-name> -i <instance-name>

[,<instance-namelist>][-o <stop-option>][-c <connect -string> | -q]

$srvctl stop service -d <database-name> [-s <service-name> [, <service-namelist>]]

[-i <instance-name][-c <connect -string> | -q][-f]

$srvctl stop nodeapps -n <node-name>

$srvctl stop asm -n <node_name> [-i ][-o <start_option>


위 명령을 사용하여 아래와 같이 종료하면 됩니다.

[oracle@rac2 ~]$ srvctl stop instance -d RAC -i rac1


위 명령어에서 -d 옵션은 DB 이름을 지정하는 것이고 -i 는 instance 이름을 지정하는 것입니다.

이 명령 수행 후 crs_stat -t 로 확인해 보겠습니다


Instance1 이 종료된 것이 확인됩니다. 그러나 Database 는 아직 중단이 되지 않고 있습니다.

Instance2 가 운영 중이기 때문입니다.


나머지 Instance 2 도 종료하고 다시 확인 해 보겠습니다

[oracle@rac2 ~]$ srvctl stop instance -d RAC -i rac2


모든 Instance 와 Database 가 OFFLINE 된 것이 확인됩니다. 이제 나머지 구성 요소들을 종료하면 됩니다.


[oracle@rac2 ~]$ srvctl stop nodeapps -n rac1

[oracle@rac2 ~]$ srvctl stop nodeapps -n rac2


모두 정상적으로 OFFLINE 된 것이 확인됩니다.


위 작업을 한번에 해 주는 명령어가 crs_stop -all 입니다.

위와 같이 한 단계씩 수동으로 종료할 수도 있고 crs_stop -all 명령을 이용해서 한꺼번에 자동으로 종료시킬 수도 있습니다.




3. RAC 시작하기

앞에서 잠시 언급한 대로 시작하는 순서는 중단 순서와 반대입니다.

즉 application --> ASM (ASM 일경우) --> Instance 순서로 시작하면 됩니다.

종료할 때와 마찬가지로 srvctl 명령으로 시작합니다.

주요 명령어를 먼저 살펴 보겠습니다.


$srvctl start database -d <database-name> [-o <start-options>][-c <connect-string> | -q]

$srvctl start instance -d <database-name> -i <instance-name> [,<instance-name-list>]

[-o <start-option>][-c <connect -string> | -q]

$srvctl start service -d <database-name> [-s <service-name> [, <service-namelist>]]

[-i <instance-name>][-o <start-option>][-c <connect -string> | -q]

$srvctl start nodeapps -n <node-name>

$srvctl start asm -n <node_name> [-i ][-o <start_options>]


$ crs_stat -t

현재 상태는 모두 offline 입니다.


먼저 node application 부터 시작합니다.

[oracle@rac2 ~]$ srvctl start nodeapps -n rac1


rac1 에서 application 이 실행 된 것을 확인 할 수 있습니다.

여기서 중요한 것은 vip 와 listener 입니다.


나머지 rac2 에서도 application 을 시작합니다.

[oracle@rac2 ~]$ srvctl start nodeapps -n rac2


rac1 과 rac2 에서 node application 이 모두 정상적으로 시작 된 것이 확인됩니다.

만약 ASM 으로 구성되었을 경우는 양쪽 노드 모두에서 아래와 같이 ASM 을 시작하면 됩니다.


[oracle@rac2 ~]$ srvctl start asm -n rac1

[oracle@rac2 ~]$ srvctl start asm -n rac2


이제 Instance 를 시작하면 됩니다

[oracle@rac2 ~]$ srvctl start instance -d rac -i rac1



위 화면에서 볼 수 있듯이 Instance 가 1 개라도 시작이 되면 Database 가 시작됨을 알 수 있습니다.

나머지 Instance 도 시작하겠습니다

[oracle@rac2 ~]$ srvctl start instance -d rac -i rac2


Instance 가 모두 시작 되어도 서비스가 시작이 안 될 경우 아래와 같이 특정 서비스를 실행하면 됩니다.

다만 db 를 생성할 때 함께 만들어진 내부 서비스는 아래와 같은 에러가 발생합니다.

$ srvctl start service -d rac -s rac -i rac1


이럴 경우는 crs_start -all 명령어를 수행해서 시작하면 되며 crs_start -all 명령은 위 단계들을 모두 한꺼번에 모아서 실행하는 스크립트입니다.

모두가 정상적으로 시작되었습니다




4. RAC 에 자원 추가 및 제거하기

자원의 시작과 종료 외에도 srvctl 명령을 사용하여 운영 중인 RAC 에서 여러 가지 자원을 추가할 수 있습니다.

아래에서 주요 문법을 살펴보겠습니다.


$srvctl add database -d <name> -o <oracle_home> [-m <domain_name>][-p <spfile>]

[-A <name|ip>/netmask][-r{PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}]

[-s <start_options>][-n <db_name>]

$srvctl add instance -d <name> -i <inst_name> -n <node_name>

$srvctl add service -d <name> -s <service_name> -r <preferred_list> [-a ]

[-P <TAF_policy>][-u]

$srvctl add noeapps -n <node_name> -o <oracle_home> [-A <name|ip>/netmask[/if1[|if2|….]]]

$srvctl add asm -n <node_name> i -o <oracle_home>



위 예 중에서 새로운 서비스를 추가 해 보겠습니다.

인사 관리작업을 위한 insa 서비스를 추가하되 rac2 에서 서비스 하고 rac1 에서는 대기 상태로 생성하겠습니다.

$ srvctl add service -d rac -s insa -r rac2 -a rac1


위와 같이 서비스를 생성 한 후 crs_stat -t 로 확인합니다.

insa 서비스가 생성은 되었으나 실행은 되지 않습니다. 명령어로 실행을 시켜야 합니다.


아래와 같이 해당 서비스를 명령어로 실행 시킵니다.

$ srvctl start service -d rac -s insa


정상적으로 잘 실행 되는 것을 확인 할 수 있습니다.

srvctl 명령어를 이용해서 기존에 존재하는 자원을 제거 할 수도 있습니다.


주요 명령어는 아래와 같습니다

$ srvctl remove database -d <database-name>

$ srvctl remove database -d <database-name> [-i <instance-name>]

$ srvctl remove database -d <database-name> -s <service-name>

[-i <instance-name>]


위에서 생성했던 insa 서비스를 제거해 보겠습니다.

$ srvctl remove service -d rac -s insa

$ srvctl stop service -d rac -s insa

$ srvctl remove service -d rac -s insa


위 화면을 보면 실행 중인 서비스는 먼저 중지를 하고 제거해야 됨을 알 수 있습니다.

만약 여러 개의 인스턴스에서 실행 중인 서비스인 경우 특정 인스턴스에서만 제거를 해야 할

경우에는 아래와 같이 -i 옵션을 함께 사용하면 됩니다.

$ srvctl remove service -d rac -s insa -i rac1




5. srvctl 명령을 사용하여 rac service 관련 설정 변경하기

srvctl modify 라는 명령을 사용하여 현재 설정되어 있는 값을 변경할 수 있습니다.


srvctl modify database Database 와 관련된 설정을 변경할 수 있습니다.

srvctl modify instance Instance 와 관련된 설정을 변경할 수 있습니다.

srvctl modify service Service 와 관련된 설정을 변경할 수 있습니다.

srvctl modify nodeapps node application 과 관련된 설정을 변경할 수 있습니다.


1) srvctl modify database

srvctl modify database -d db_unique_name [-n db_name] [-o oracle_home] [-m domain_name]

[-p spfile] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}] [-s start_options]

[-y {AUTOMATIC | MANUAL}]


위 명령의 주요 옵션의 의미는 아래와 같습니다

-d db_unique_name 유일한(Unique) DB 이름을 지정합니다.

-n db_name DB 이름을 지정합니다.

-o oracle_home Cluster database 용 Oracle home 을 지정합니다.

-m domain_name Cluster database 용 domain 명을 지정합니다.

-p spfile Cluster database 용 spfile 을 지정합니다.

-r role [PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY] Database의 역할을 지정합니다.

(primary , physical standby , logical standby)

-s start_options database 가 Startup 될 때 option 을 지정합니다

-y Database 관리정책을 지정합니다.

값으로는 automatic 과 manual 을 사용합니다

-h 도움말을 출력합니다.



2) srvctl modify instance

srvctl modify instance -d db_unique_name -i inst_name

{-n node_name | -s asm_instance_name | -r}



위 명령의 주요 옵션의 의미는 아래와 같습니다.

d db_unique_name database Unique name 을 설정합니다.

-i inst_name Database instance name 을 설정합니다.

-n node_name Node name 을 지정합니다.

-s asm_instance_name Database instance 에서 사용하는 ASM instance name 을 지정합니다

-r Database instance 에서 사용하는 ASM instance name 을 제거합니다




3) srvctl modify service

이 명령을 사용하여 서비스 중인 노드들의 설정을 변경할 수 있습니다.

그러나 이 명령은 아래와 같이 몇 가지 주의 사항이 있습니다.

- 새로운 변경 사항이 생길 때 기존 운영중인 서비스에는 반영이 되지 않습니다.

즉 변경사항을 운영중인 서비스에 적용하려면 기존 서비스를 중단 한 후 새로 시작해야 합니다.

또한 운영중인 서비스의 설정 값은 사용량이 많을 때는 변경하지 않을 것을 권장합니다.

변경 명령은 아래와 같습니다.


srvctl modify service -d db_unique_name -s service_name -i old_inst_name

-t new_inst_name [-f]


위 명령어의 주요 옵션은 아래와 같습니다

-d db_unique_name Unique database name 을 설정합니다.

-s service_name Service name 을 지정합니다.

-i old_inst_name 현재 동작중인 Instance name 을 지정합니다.

-t new_inst_name 새롭게 서비스 할 Instance name 을 지정합니다.

-f 서비스를 중단하고 재 위치 시킬 때 현재 접속을 모두 강제로 종료합니다



4) srvctl modify nodeapps

이 명령은 Oracle home 이 변경되었거나 vip 가 변경되었을 경우 사용합니다.

srvctl modify nodeapps -n node_name [-o oracle_home] [-A new_vip_address]


이 명령의 주요 옵션은 아래와 같습니다.

-n node_name Node name 을 지정합니다.

-o oracle_home 새롭게 변경 될 Oracle home 을 지정합니다.

-A new_vip_address 새롭게 변경 될 VIP address (name|ip/netmask[/if1[|if2|...]])를 지정합니다.




6. Service 재배치 하기

SERVICE: RAC 안에서 제공해주는 업무

이 명령을 사용하여 현재 운영중인 서비스들의 인스턴스를 변경할 수 있습니다.

예를 들어 인사관리를 위한 insa 서비스가 기존에 rac1 에서 서비스 중이었는데

rac1 을 패치하기 위해서 서비스를 rac2 로 이동해야 할 경우 등에 사용하는 명령입니다.


srvctl relocate service -d db_unique_name -s service_name -i old_inst_name

-t new_inst_name [-f]


위 명령의 주요 옵션은 아래와 같습니다.


-d db_unique_name Unique database name 을 지정합니다.

-s service_name Service name 을 지정합니다.

-i old_inst_name 현재 서비스 중인 instance name 을 지정합니다.

-t new_inst_name 새로 변경할 instance name 을 지정합니다.

-f 서비스 재배치를 할 때 현재 접속 중인 세션을 모두 강제 종료 시킵니다.


사용 예)

인사관리를 위한 insa 서비스를 rac1 instance 에 생성한 후 이 명령을 사용해서 rac2 instance 로 변경합니다.


[oracle@rac2 ~]$ srvctl add service -d rac -s insa -r rac1 -a rac2

[oracle@rac2 ~]$ srvctl start service -d rac -s insa


insa 서비스가 rac1 에서 작동하는 것이 확인됩니다.

위에서 확인한 rac1 에서 동작 중인 insa 서비스를 rac2 로 이동하겠습니다.

$ srvctl relocate service -d rac -s insa -i rac1 -t rac2


기존 rac1 -> rac2 로 변경된 것이 보입니다.

클라이언트(PC) 에서 tnsnames.ora 파일을 수정해서 insa 서비스에 접속한 후 instance name 을 확인해 보겠습니다.

tnsnames.ora 파일에 아래와 같은 내용을 추가합니다.





pc 에서 서버로 접속하여 확인합니다.





다시 rac1 으로 변경 후 확인 해 보겠습니다

$ srvctl relocate service -d rac -s insa -i rac2 -t rac1








7. CRS 자원의 일시적인 활성화 / 비활성화 설정하기


주요 명령은 아래와 같습니다.

- 활성화 하기

$ srvctl enable database -d <database-name>

$ srvctl enable instance -d <database-name> -i <instance-name> [,<instnacnename-list>]

$ srvctl enable service -d <database-name> -s <service-name>][,<servicename-list>]

[-i <instance-name>]


- 비활성화 하기

$ srvctl disable database -d <database-name>

$ srvctl disable instance -d <database-name> -i <instnace-name> [,<instancename-list>]

$ srvctl disable service -d <database-name> -s <service-name>][,<service-name-list>]

[-i <instance-name>]


위 명령을 사용하여 insa 서비스를 비활성화 시킨 후 접속 테스트를 해 보겠습니다.

$ srv disable service -d rac -s insa

$ srvctl stop service -d rac -s insa

$ srvctl disable service -d rac -s insa


위와 같이 실행중인 서비스는 사용 안 함으로 변경할 수 없어서 중단 후 사용 안 함으로 변경합니다.


이제 client 에서 insa 서비스로 접속해 있던 사용자 창에서 조회를 해 보고 새로 접속을 시도 해보겠습니다.

먼저 서비스가 중단되기 전에 접속해 있던 세션부터 확인합니다.






이번에는 새로 접속을 시도합니다.




당연히 에러가 발생합니다.

이번에는 insa service 를 활성화 한 후 접속 테스트를 합니다.

$ srvctl enable service -d rac -s insa




여전히 접속이 안됨을 알 수 있습니다.

crs_stat -t 로 현재 상태를 조회합니다.





위 화면을 보면 service 를 enable 해도 여전히 service 는 offline 상태임을 알 수 있습니다.

즉 해당 서비스를 다시 사용하려면 service 를 start 해야 합니다.


$ srvctl start service -d rac -s insa






이상으로 srvctl 로 RAC 서비스와 자원을 관리하는 방법을 살펴보았습니다.


8. rac 관련 로그 경로 및 내용 확인하기

- $ORA_CRS_HOME/crs/log : CRS resources 와 관련된 주요 내용이 저장됩니다.

- $ORA_CRS_HOME/crs/init : CRS daemon 이 시작될 때부터 관련 내용을 기록합니다.

CRS 시작 관련된 장애 내용 등을 확인 할 경우 유용합니다.

- $ORA_CRS_HOME/css/log  : Cluster Synchronization (CSS) 데몬이 수행 하는 reconfigurations, missed check-ins,

connects, disconnects 관련된 내용을 기록합니다.

만약 CSS 데몬에 문제가 발생해서 재부팅을 할 경우 이 파일의 내용을 확인하여 시간과 내역을 찾아볼 수 있습니다.

- $ORA_CRS_HOME/css/init : Oracle Cluster Synchronization Service daemon (OCSSd) 데몬이 장애가 발생했을 경우

Core Dump 관련 내용을 저장하고 있습니다.

- $ORA_CRS_HOME/evm/log  : Event Volume Manager (EVM) 데몬과 evmlogger 데몬 관련 로그파일입니다.

- $ORA_CRS_HOME/evm/init  : EVM 데몬과 관련된 PID 와 lock file 입니다.

이 파일에 EVM 관련된 문제가 발생 될 경우 Core Dump 도 기록됩니다.

- $ORA_CRS_HOME/srvm/log : Oracle Cluster Registry (OCR) 과 관련된 log file 입니다.

- $ORA_CRS_HOME/log : Oracle Clusterware 관련된 일반적 내용이 저장되는 log file 입니다.

 가장 일반적으로  많이  모니터링  됩니다.




공유하기 신고하기 첫 댓글을 남겨보세요 로딩 중 이전글 03 RAC 기반에서의 Load Balancing 과 Application Failover 살펴보기 2014.01.07 10:22 다음글 05 RAC 백업 복구 (RAW DEVICE 기반) 1 물리적 장애 2014.01.08 11:18 이 블로그 인기 글

R 기초 입문 김성율

R 활용 예제 실습 김성율

윈도우용 R 에서 오라클 DB 에 접속하는 .. 김성율

R 그래프 함수 활용하기 김성율

ggplot2() 와 ggmap 사용한 지도 위에 표.. 김성율

03 하둡 분산 파일 시스템 김성율 맨위로