행위

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

DB CAFE

1번째 줄: 1번째 줄:
= CRS & DB 시작/종료 및 관리 =
+
== CRS & DB 시작/종료 및 관리 ==
 +
 
 +
== CRS 와 DB 시작 순서 ==
  
== 시작 ==
 
=== CRS 와 DB 시작 순서 ===
 
 
{{틀:타이틀 투명
 
{{틀:타이틀 투명
|제목= 순서  
+
|제목= - 순서  
 
# CRS 시작(CRS가 down된경우에만 실행) : root 권한으로 실행  
 
# CRS 시작(CRS가 down된경우에만 실행) : root 권한으로 실행  
 
# CRS 어플리케이션(nodeapps) 시작    : 한 노드에서 명령어 실행(수동실행시)
 
# CRS 어플리케이션(nodeapps) 시작    : 한 노드에서 명령어 실행(수동실행시)
11번째 줄: 11번째 줄:
 
}}
 
}}
  
=== CRS 시작 ===
+
=== CRS 시작 ===
 
{{틀:타이틀 투명
 
{{틀:타이틀 투명
 
|제목= 주의사항  
 
|제목= 주의사항  
21번째 줄: 21번째 줄:
 
==== 수동 시작 방법. ====  
 
==== 수동 시작 방법. ====  
  
*DB 서버 각각의 노드에서 "root" 유저로 실행한다.
+
* DB 서버 각각의 노드에서 "root" 유저로 실행한다.
  
===== CRS 시작 =====
+
==== CRS 시작 명령 ====
 
<source lang=shell>
 
<source lang=shell>
 
crsctl start crs -- 각각 노드에서  
 
crsctl start crs -- 각각 노드에서  
40번째 줄: 40번째 줄:
 
</source>
 
</source>
  
===== CRS 상태확인 =====
+
==== CRS 상태 확인 ====
 
<source lang=shell>
 
<source lang=shell>
 
crsctl check crs  
 
crsctl check crs  
53번째 줄: 53번째 줄:
 
</source>
 
</source>
  
=== CRS Application(nodeapp) 시작 ===
+
=== CRS 어플리케이션(nodeapp) 시작 ===
 +
 
 
- CRS시작 시 자동 시작.  
 
- CRS시작 시 자동 시작.  
  
수동 시작 방법.
+
==== 수동 시작 방법 ====
==== nodeapps1,2 실행 ====
+
* nodeapps1,2 에서 각각 실행  
 
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 +
 +
[노드1(nodeapps1)]
 
<source lang=shell>
 
<source lang=shell>
 
srvctl start nodeapps -n HOSTNAME1
 
srvctl start nodeapps -n HOSTNAME1
 
</source>
 
</source>
 +
 +
[노드2(nodeapps2)]
 
<source lang=shell>
 
<source lang=shell>
 
srvctl start nodeapps -n HOSTNAME2
 
srvctl start nodeapps -n HOSTNAME2
 
</source>
 
</source>
  
=== Listener 시작 ===
+
=== 리스너(Listener) 시작 ===
  
- CRS시작 시 자동 시작.  
+
* CRS시작 시 자동 시작.  
  
수동 시작 방법.
+
==== 수동 시작 방법 ====
 +
* LISTENER 시작 명령
 +
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
  
==== LISTENER 시작 명령 ====
 
: srvctl start listener -n HOSTNAME1
 
 
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 
 
<source lang=shell>
 
<source lang=shell>
$srvctl start listener -n HOSTNAME1
+
srvctl start listener -n HOSTNAME1
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl start listener -n HOSTNAME2
+
srvctl start listener -n HOSTNAME2
 
</source>
 
</source>
 
    
 
    
=== DB Instance 시작 ===
+
=== DB 인스턴스(Instance) 시작 ===
  
 
- CRS시작 시 자동 시작.  
 
- CRS시작 시 자동 시작.  
  
수동 시작 방법.
+
==== 수동 시작 방법 ====
 
 
==== DB인스턴스 실행 명령어 ====
 
srvctl start database -d 디비명
 
 
 
*DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 
  
 +
* DB인스턴스 실행 명령어
 +
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 
<source lang=shell>
 
<source lang=shell>
 
srvctl start database -d 디비명
 
srvctl start database -d 디비명
 
</source>
 
</source>
  
=== CRS Application/Listener/DB Instance확인 ===
+
 
 +
=== CRS Application/Listener/DB Instance 확인 ===
  
 
==== Application/Listener/DB Instance확인 명령어 ====
 
==== Application/Listener/DB Instance확인 명령어 ====
: crsctl status res -t
 
 
 
<source lang=shell>
 
<source lang=shell>
$ crsctl status res -t
+
crsctl status res -t
 
</source>
 
</source>
 
  
 
{{틀:타이틀 투명
 
{{틀:타이틀 투명
116번째 줄: 114번째 줄:
 
# ora.[hostname].vip -> VIP 상태를 나타냄(장애인경우 failover 상태가 됨)
 
# ora.[hostname].vip -> VIP 상태를 나타냄(장애인경우 failover 상태가 됨)
 
}}
 
}}
 +
 +
 +
------------------------
  
 
== CRS/DB 종료 ==
 
== CRS/DB 종료 ==
  
=== DB 종료 절차 ===
+
=== DB 종료 절차 ===
 
{{틀:타이틀 투명  
 
{{틀:타이틀 투명  
 
|제목 = - DB 종료 절차.
 
|제목 = - DB 종료 절차.
136번째 줄: 137번째 줄:
 
}}
 
}}
  
=== CRS Application 종료 ===
+
=== CRS Application 종료 ===
  
 
==== CRS 어플리케이션 종료 명령어 ====  
 
==== CRS 어플리케이션 종료 명령어 ====  
<source lang=shell>
 
srvctl stop nodeapps –n HOSTNAME
 
</source>
 
 
* DB노드#1 서버 "oracle" 유저로 실행.
 
* DB노드#1 서버 "oracle" 유저로 실행.
  
노드#1
 
 
<source lang=shell>
 
<source lang=shell>
 
srvctl stop nodeapps –n HOSTNAME
 
srvctl stop nodeapps –n HOSTNAME
 
</source>
 
</source>
  
=== LISTENER 종료 ===
+
=== LISTENER 종료 ===
 
* DB노드#1에서 "oracle" 유저로 실행한다.
 
* DB노드#1에서 "oracle" 유저로 실행한다.
 
<source lang=shell>
 
<source lang=shell>
$srvctl stop listener -n HOSTNAME
+
srvctl stop listener -n HOSTNAME
 
</source>
 
</source>
 
    
 
    
  
=== DB Instance 종료 ===
+
=== DB Instance 종료 ===
 +
 
 
==== DB인스턴스 종료 명령어 ====
 
==== DB인스턴스 종료 명령어 ====
 +
*DB노드#1 에서 "oracle" 유저로 실행.
 +
<source lang=shell>
 
srvctl stop database -d DB명
 
srvctl stop database -d DB명
 +
</source>
  
*DB노드#1 에서 "oracle" 유저로 실행.
 
  
<source lang=shell>
+
--------------
$srvctl stop database -d DB명
 
</source>
 
  
== RAC 에서 DB 시작/종료/상태 확인 ==
+
== RAC DB 시작/종료/상태 확인 명령 ==
 
   
 
   
=== 1.현재 DB 상태  확인하기 ===
+
=== 현재 RAC DB 상태  확인 ===
  
 
상태확인 명령 : crs_stat , srvctl  
 
상태확인 명령 : crs_stat , srvctl  
  
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac1 ~]$ crs_stat -t
+
crs_stat -t
 
</source>
 
</source>
  
186번째 줄: 184번째 줄:
 
</source>
 
</source>
 
   
 
   
 
 
* Target  :  목표  상태
 
* Target  :  목표  상태
 
* State :  현재  상태  
 
* State :  현재  상태  
195번째 줄: 192번째 줄:
 
*.실시간으로  위와  같은  상황을  조회하려면  리눅스에서는  watch  명령(1초마다 반복 실행)
 
*.실시간으로  위와  같은  상황을  조회하려면  리눅스에서는  watch  명령(1초마다 반복 실행)
  
<source lang=sql>
+
<source lang=shell>
$ watch -n 1 'crs_stat -t'
+
watch -n 1 'crs_stat -t'
 
</source>
 
</source>
<source lang=sql>
+
 
srvctl 명령 : 보다 세부적인 내용 확인 가능  
+
* srvctl 명령 : 보다 세부적인 내용 확인 가능  
$srvctl status database[/instance/service/nodeapps/asm] -d [DB명]
+
 
 +
<source lang=shell>
 +
srvctl status database[/instance/service/nodeapps/asm] -d [DB명]
 
</source>
 
</source>
  
 
==== DB 상태 현재 상태 확인 ====
 
==== DB 상태 현재 상태 확인 ====
<source lang=sql>
+
<source lang=shell>
$srvctl status database -d <database-name> [-f][-v][-S <level>]  
+
srvctl status database -d <database-name> [-f][-v][-S <level>]  
 
</source>
 
</source>
예) $ srvctl status database -d DB명 -v  
+
예) srvctl status database -d DB명 -v  
  
 
==== DB 인스턴스 상태 확인 ====
 
==== DB 인스턴스 상태 확인 ====
<source lang=sql>
+
<source lang=shell>
$srvctl status instance -d <database-name> -i <instance-name>  
+
srvctl status instance -d <database-name> -i <instance-name>  
 
# [<instancename-list>][-f][-v]-S <level>]  
 
# [<instancename-list>][-f][-v]-S <level>]  
 
</source>
 
</source>
예) $ srvctl status instance -d DB명 -i rac1번인스턴스명, rac2번 인스턴스명  
+
예) srvctl status instance -d DB명 -i rac1번인스턴스명, rac2번 인스턴스명  
  
 
==== DB 서비스명 상태 확인 ====
 
==== DB 서비스명 상태 확인 ====
 
* # [<service-namelist>][-f][-v][-S <level>]  
 
* # [<service-namelist>][-f][-v][-S <level>]  
<source lang=sql>
+
<source lang=shell>
$srvctl status service -d <database-name> -s <service_name>  
+
srvctl status service -d <database-name> -s <service_name>  
 
 
 
</source>
 
</source>
  
 
==== DB 노드APP 별 상태 확인 ====
 
==== DB 노드APP 별 상태 확인 ====
<source lang=sql>
+
<source lang=shell>
$srvctl status nodeapps [-n <node-name>]  
+
srvctl status nodeapps [-n <node-name>]  
 
</source>
 
</source>
예) $ srvctl status nodeapps -n rac1번 노드명  
+
예) srvctl status nodeapps -n rac1번 노드명  
  
 
==== ASM 상태 확인 ====
 
==== ASM 상태 확인 ====
<source lang=sql>
+
<source lang=shell>
$srcvtl status asm -n <node_name>  
+
srcvtl status asm -n <node_name>  
 
</source>
 
</source>
  
=== 2. RAC 종료 ===
+
--------------
 +
 
 +
=== RAC 종료 명령 ===
  
 
RAC는 중단 순서가 중요.
 
RAC는 중단 순서가 중요.
245번째 줄: 245번째 줄:
 
* 정지 명령어 : srvctl  
 
* 정지 명령어 : srvctl  
  
==== 데이터베이스 정지 ====
+
=== 데이터베이스 정지 ===
<source lang=sql>
+
<source lang=shell>
$srvctl stop database -d DB명  [-o <stop-options: immediate/abort/nomount/.. >]
+
srvctl stop database -d DB명  [-o <stop-options: immediate/abort/nomount/.. >]
 
[-c <connect-string> | -q]  
 
[-c <connect-string> | -q]  
 
</source>
 
</source>
  
==== 인스턴스 정지 ====
+
=== 인스턴스 정지 ===
<source lang=sql>
+
<source lang=shell>
$srvctl stop instance -d <database-name> -i <instance-name>  
+
srvctl stop instance -d <database-name> -i <instance-name>  
 
[,<instance-namelist>][-o <stop-option>][-c <connect -string> | -q]  
 
[,<instance-namelist>][-o <stop-option>][-c <connect -string> | -q]  
예) $ srvctl  stop instance -d DB명 -i rac1번인스턴스명  
+
예) srvctl  stop instance -d DB명 -i rac1번인스턴스명  
 
(1번 인스턴스만 정지, 2번 인스턴스는 작동중..)
 
(1번 인스턴스만 정지, 2번 인스턴스는 작동중..)
 
</source>
 
</source>
  
==== 서비스 정지 ====
+
=== 서비스 정지 ===
<source lang=sql>
+
<source lang=shell>
$srvctl stop service -d <database-name> [-s <service-name> [, <service-namelist>]]
+
srvctl stop service -d <database-name> [-s <service-name> [, <service-namelist>]]
 
[-i <instance-name][-c <connect -string> | -q][-f]  
 
[-i <instance-name][-c <connect -string> | -q][-f]  
 
</source>
 
</source>
  
==== 노드 정지 ====
+
=== 노드 정지 ===
<source lang=sql>
+
<source lang=shell>
$srvctl stop nodeapps -n <node-name>  
+
srvctl stop nodeapps -n <node-name>  
 
</source>
 
</source>
  
==== ASM 정지 ====
+
=== ASM 정지 ===
<source lang=sql>
+
<source lang=shell>
$srvctl stop asm -n <node_name> [-i ][-o <start_option>
+
srvctl stop asm -n <node_name> [-i ][-o <start_option>
 
</source>
 
</source>
 
   
 
   
 +
----------------------
 +
 +
==== RAC 정지 확인 명령어 ====
  
==== 정지 확인 명령어 ====
 
: crs_stat -t 
 
 
<source lang=shell>
 
<source lang=shell>
 
  crs_stat -t   
 
  crs_stat -t   
 
</source>
 
</source>
  
인스턴스1이  종료 확인.  
+
* 인스턴스1이  종료 확인.  
 
그러나  Database는  아직 중단이  되지  않음.  
 
그러나  Database는  아직 중단이  되지  않음.  
 
인스턴스2번 운영 중임.
 
인스턴스2번 운영 중임.
288번째 줄: 289번째 줄:
 
* 인스턴스2번 정지  
 
* 인스턴스2번 정지  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl  stop instance -d RAC -i rac2
+
srvctl  stop instance -d RAC -i rac2
 
</source>
 
</source>
 
   
 
   
 
모든  Instance  와  Database 가  OFFLINE 확인.   
 
모든  Instance  와  Database 가  OFFLINE 확인.   
 +
 
<source lang=shell>
 
<source lang=shell>
 
  crs_stat -t   
 
  crs_stat -t   
299번째 줄: 301번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl  stop nodeapps -n  rac1
+
srvctl  stop nodeapps -n  rac1
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl  stop nodeapps -n  rac2
+
srvctl  stop nodeapps -n  rac2
 
</source>
 
</source>
 
   
 
   
 
모두  정상적으로  OFFLINE  확인.  
 
모두  정상적으로  OFFLINE  확인.  
  
''' CRS 전체 정지 명령'''
+
====  CRS 전체 정지 명령 ====
 
* root 나 grid 권한으로  
 
* root 나 grid 권한으로  
 
<source lang=shell>
 
<source lang=shell>
$crs_stop -all   
+
crs_stop -all   
 
</source>
 
</source>
 +
 
위와  같이  한  단계씩  수동으로  종료할  수도  있고   
 
위와  같이  한  단계씩  수동으로  종료할  수도  있고   
 
crs_stop  -all  명령을  이용해서  한꺼번에  자동으로  종료시킬  수도  있습니다.
 
crs_stop  -all  명령을  이용해서  한꺼번에  자동으로  종료시킬  수도  있습니다.
  
=== 3. RAC  시작 ===
 
  
앞에서  잠시  언급한  대로  시작하는  순서는  중단  순서와  반대입니다.
+
----------------------
 +
 
 +
 
 +
=== RAC  시작 명령 ===
 +
 
 +
앞에서  잠시  언급한  대로  시작하는  순서는  중단  순서와  반대.
 
즉  application --> ASM (ASM  일경우) --> Instance  순서로  시작하면  됩니다.
 
즉  application --> ASM (ASM  일경우) --> Instance  순서로  시작하면  됩니다.
 
종료할  때와  마찬가지로  srvctl  명령으로  시작합니다.
 
종료할  때와  마찬가지로  srvctl  명령으로  시작합니다.
주요  명령어를  먼저  살펴  보겠습니다.
 
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl start database -d <database-name> [-o <start-options>][-c <connect-string> | -q]  
+
srvctl start database -d <database-name> [-o <start-options>][-c <connect-string> | -q]  
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl start instance -d <database-name> -i <instance-name> [,<instance-name-list>]
+
srvctl start instance -d <database-name> -i <instance-name> [,<instance-name-list>]
  
 
[-o <start-option>][-c <connect -string> | -q]  
 
[-o <start-option>][-c <connect -string> | -q]  
334번째 줄: 340번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl start service -d <database-name> [-s <service-name> [, <service-namelist>]]
+
srvctl start service -d <database-name> [-s <service-name> [, <service-namelist>]]
  
 
[-i <instance-name>][-o <start-option>][-c <connect -string> | -q]  
 
[-i <instance-name>][-o <start-option>][-c <connect -string> | -q]  
340번째 줄: 346번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl start nodeapps -n <node-name>  
+
srvctl start nodeapps -n <node-name>  
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl start asm -n <node_name> [-i ][-o <start_options>]  
+
srvctl start asm -n <node_name> [-i ][-o <start_options>]  
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$ crs_stat -t
+
crs_stat -t
 
</source>
 
</source>
  
 
현재 상태는 모두 offline 입니다.
 
현재 상태는 모두 offline 입니다.
 
  
 
먼저 node application 부터 시작합니다.
 
먼저 node application 부터 시작합니다.
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl  start    nodeapps    -n  rac1
+
srvctl  start    nodeapps    -n  rac1
 
</source>
 
</source>
 
   
 
   
365번째 줄: 370번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl  start nodeapps -n  rac2
+
srvctl  start nodeapps -n  rac2
 
</source>
 
</source>
  
rac1  과  rac2  에서  node application  이  모두  정상적으로  시작  된  것이  확인됩니다.
+
rac1  과  rac2  에서  node application  이  모두  정상적으로  시작  된  것이  확인됩니다.
 
만약  ASM  으로  구성되었을  경우는  양쪽  노드  모두에서  아래와  같이  ASM  을  시작하면  됩니다.
 
만약  ASM  으로  구성되었을  경우는  양쪽  노드  모두에서  아래와  같이  ASM  을  시작하면  됩니다.
 
   
 
   
 
<source lang=shell>
 
<source lang=shell>
$ srvctl  start asm  -n  rac1
+
srvctl  start asm  -n  rac1
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl  start asm  -n  rac2
+
srvctl  start asm  -n  rac2
 
</source>
 
</source>
  
 
  이제  Instance  를  시작하면  됩니다
 
  이제  Instance  를  시작하면  됩니다
 
<source lang=shell>
 
<source lang=shell>
$ srvctl  start  instance  -d  rac  -i  rac1
+
srvctl  start  instance  -d  rac  -i  rac1
 
</source>  
 
</source>  
 
위  화면에서  볼  수  있듯이  Instance  가  1  개라도  시작이  되면   
 
위  화면에서  볼  수  있듯이  Instance  가  1  개라도  시작이  되면   
388번째 줄: 393번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl  start  instance  -d  rac  -i  rac2
+
srvctl  start  instance  -d  rac  -i  rac2
 
</source>
 
</source>
  
395번째 줄: 400번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl start service -d rac -s rac -i rac1
+
srvctl start service -d rac -s rac -i rac1
 
</source>
 
</source>
  
410번째 줄: 415번째 줄:
 
아래에서  주요  문법을  살펴보겠습니다.
 
아래에서  주요  문법을  살펴보겠습니다.
 
<source lang=shell>
 
<source lang=shell>
$srvctl add database -d <name> -o <oracle_home> [-m <domain_name>][-p <spfile>]
+
srvctl add database -d <name> -o <oracle_home> [-m <domain_name>][-p <spfile>]
  
 
[-A <name|ip>/netmask][-r{PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}]
 
[-A <name|ip>/netmask][-r{PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}]
417번째 줄: 422번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl add instance -d <name> -i <inst_name> -n <node_name>  
+
srvctl add instance -d <name> -i <inst_name> -n <node_name>  
 
</source>
 
</source>
 
<source lang=shell>
 
<source lang=shell>
$srvctl add service -d <name> -s <service_name> -r <preferred_list> [-a ]
+
srvctl add service -d <name> -s <service_name> -r <preferred_list> [-a ]
  
 
[-P <TAF_policy>][-u]  
 
[-P <TAF_policy>][-u]  
426번째 줄: 431번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl add noeapps -n <node_name> -o <oracle_home> [-A <name|ip>/netmask[/if1[|if2|….]]]  
+
srvctl add noeapps -n <node_name> -o <oracle_home> [-A <name|ip>/netmask[/if1[|if2|….]]]  
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl add asm -n <node_name> i -o <oracle_home>
+
srvctl add asm -n <node_name> i -o <oracle_home>
 
</source>
 
</source>
  
440번째 줄: 445번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl add service -d rac -s insa -r rac2 -a rac1
+
srvctl add service -d rac -s insa -r rac2 -a rac1
 
</source>
 
</source>
  
449번째 줄: 454번째 줄:
 
아래와  같이  해당  서비스를  명령어로  실행  시킵니다.
 
아래와  같이  해당  서비스를  명령어로  실행  시킵니다.
 
<source lang=shell>
 
<source lang=shell>
$ srvctl start service -d rac -s insa
+
srvctl start service -d rac -s insa
 
</source>
 
</source>
  
459번째 줄: 464번째 줄:
 
주요  명령어는  아래와  같습니다
 
주요  명령어는  아래와  같습니다
 
<source lang=shell>
 
<source lang=shell>
$ srvctl remove database -d <database-name>  
+
srvctl remove database -d <database-name>  
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl remove database -d <database-name> [-i <instance-name>]  
+
srvctl remove database -d <database-name> [-i <instance-name>]  
 
</source>
 
</source>
 
<source lang=shell>
 
<source lang=shell>
$ srvctl remove database -d <database-name> -s <service-name>  
+
srvctl remove database -d <database-name> -s <service-name>  
  
 
[-i <instance-name>]  
 
[-i <instance-name>]  
474번째 줄: 479번째 줄:
 
위에서  생성했던  insa  서비스를  제거해  보겠습니다.
 
위에서  생성했던  insa  서비스를  제거해  보겠습니다.
 
<source lang=shell>
 
<source lang=shell>
$ srvctl remove service -d rac -s insa
+
srvctl remove service -d rac -s insa
 
</source>
 
</source>
 
<source lang=shell>
 
<source lang=shell>
$ srvctl stop service -d rac -s insa
+
srvctl stop service -d rac -s insa
 
</source>
 
</source>
 
<source lang=shell>
 
<source lang=shell>
$ srvctl remove service -d rac -s insa
+
srvctl remove service -d rac -s insa
 
</source>
 
</source>
  
488번째 줄: 493번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl remove service -d rac -s insa -i rac1
+
srvctl remove service -d rac -s insa -i rac1
 
</source>
 
</source>
  
607번째 줄: 612번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl add service -d rac -s insa -r rac1 -a rac2
+
srvctl add service -d rac -s insa -r rac1 -a rac2
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl start service -d rac -s insa  
+
srvctl start service -d rac -s insa  
 
</source>
 
</source>
  
618번째 줄: 623번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl relocate service -d rac -s insa -i rac1 -t rac2
+
srvctl relocate service -d rac -s insa -i rac1 -t rac2
 
</source>
 
</source>
 
   
 
   
630번째 줄: 635번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl relocate service -d rac -s insa -i rac2 -t rac1
+
srvctl relocate service -d rac -s insa -i rac2 -t rac1
 
  </source>
 
  </source>
  
637번째 줄: 642번째 줄:
 
-  활성화  하기
 
-  활성화  하기
 
<source lang=shell>
 
<source lang=shell>
$ srvctl enable database -d <database-name>  
+
srvctl enable database -d <database-name>  
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl enable instance -d <database-name> -i <instance-name> [,<instnacnename-list>]  
+
srvctl enable instance -d <database-name> -i <instance-name> [,<instnacnename-list>]  
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl enable service -d <database-name> -s <service-name>][,<servicename-list>]
+
srvctl enable service -d <database-name> -s <service-name>][,<servicename-list>]
  
 
[-i <instance-name>]
 
[-i <instance-name>]
653번째 줄: 658번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl disable database -d <database-name>  
+
srvctl disable database -d <database-name>  
 
</source>
 
</source>
 
<source lang=shell>
 
<source lang=shell>
$ srvctl disable instance -d <database-name> -i <instnace-name> [,<instancename-list>]  
+
srvctl disable instance -d <database-name> -i <instnace-name> [,<instancename-list>]  
 
</source>
 
</source>
 
<source lang=shell>
 
<source lang=shell>
$ srvctl disable service -d <database-name> -s <service-name>][,<service-name-list>]
+
srvctl disable service -d <database-name> -s <service-name>][,<service-name-list>]
  
 
[-i <instance-name>]
 
[-i <instance-name>]
667번째 줄: 672번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srv disable service -d rac -s insa
+
srv disable service -d rac -s insa
 
</source>
 
</source>
 
<source lang=shell>
 
<source lang=shell>
$ srvctl stop service -d rac -s insa
+
srvctl stop service -d rac -s insa
 
</source>
 
</source>
 
<source lang=shell>
 
<source lang=shell>
$ srvctl disable service -d rac -s insa
+
srvctl disable service -d rac -s insa
 
</source>
 
</source>
  
684번째 줄: 689번째 줄:
 
이번에는  insa service  를  활성화  한  후  접속  테스트를  합니다.
 
이번에는  insa service  를  활성화  한  후  접속  테스트를  합니다.
 
<source lang=shell>
 
<source lang=shell>
$ srvctl enable service -d rac -s insa
+
srvctl enable service -d rac -s insa
 
</source>
 
</source>
 
여전히  접속이  안됨을  알  수  있습니다.
 
여전히  접속이  안됨을  알  수  있습니다.
695번째 줄: 700번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl start service -d rac -s insa
+
srvctl start service -d rac -s insa
 
</source>
 
</source>
 
이상으로  srvctl  로  RAC  서비스와  자원을  관리하는  방법을  살펴보았습니다.
 
이상으로  srvctl  로  RAC  서비스와  자원을  관리하는  방법을  살펴보았습니다.
  
 
8. rac  관련  로그  경로  및  내용  확인하기
 
8. rac  관련  로그  경로  및  내용  확인하기
- $ORA_CRS_HOME/crs/log : CRS resources  와  관련된  주요  내용이  저장됩니다.
+
- ORA_CRS_HOME/crs/log : CRS resources  와  관련된  주요  내용이  저장됩니다.
- $ORA_CRS_HOME/crs/init : CRS daemon  이  시작될  때부터  관련  내용을  기록합니다.  
+
- ORA_CRS_HOME/crs/init : CRS daemon  이  시작될  때부터  관련  내용을  기록합니다.  
  
 
CRS  시작  관련된  장애  내용  등을  확인  할  경우  유용합니다.
 
CRS  시작  관련된  장애  내용  등을  확인  할  경우  유용합니다.
$ORA_CRS_HOME/css/log  :  Cluster  Synchronization  (CSS)  데몬이  수행  하는  reconfigurations, missed check-ins,  
+
-  ORA_CRS_HOME/css/log  :  Cluster  Synchronization  (CSS)  데몬이  수행  하는  reconfigurations, missed check-ins,  
  
 
connects, disconnects  관련된  내용을  기록합니다.   
 
connects, disconnects  관련된  내용을  기록합니다.   
  
 
만약  CSS  데몬에  문제가  발생해서  재부팅을  할  경우  이  파일의  내용을  확인하여  시간과  내역을  찾아볼  수  있습니다.
 
만약  CSS  데몬에  문제가  발생해서  재부팅을  할  경우  이  파일의  내용을  확인하여  시간과  내역을  찾아볼  수  있습니다.
- $ORA_CRS_HOME/css/init : Oracle Cluster Synchronization Service daemon (OCSSd)  데몬이  장애가  발생했을  경우   
+
- ORA_CRS_HOME/css/init : Oracle Cluster Synchronization Service daemon (OCSSd)  데몬이  장애가  발생했을  경우   
  
 
Core Dump  관련  내용을  저장하고  있습니다.
 
Core Dump  관련  내용을  저장하고  있습니다.
  
$ORA_CRS_HOME/evm/log  :  Event  Volume  Manager  (EVM)  데몬과  evmlogger  데몬  관련  로그파일입니다.
+
-  ORA_CRS_HOME/evm/log  :  Event  Volume  Manager  (EVM)  데몬과  evmlogger  데몬  관련  로그파일입니다.
$ORA_CRS_HOME/evm/init  :  EVM  데몬과  관련된  PID  와  lock  file  입니다.   
+
-  ORA_CRS_HOME/evm/init  :  EVM  데몬과  관련된  PID  와  lock  file  입니다.   
  
 
이  파일에  EVM  관련된  문제가  발생  될  경우  Core Dump  도  기록됩니다.
 
이  파일에  EVM  관련된  문제가  발생  될  경우  Core Dump  도  기록됩니다.
  
- $ORA_CRS_HOME/srvm/log : Oracle Cluster Registry (OCR)  과  관련된  log file  입니다.  
+
- ORA_CRS_HOME/srvm/log : Oracle Cluster Registry (OCR)  과  관련된  log file  입니다.  
- $ORA_CRS_HOME/log : Oracle Clusterware  관련된  일반적  내용이  저장되는  log file  입니다.   
+
- ORA_CRS_HOME/log : Oracle Clusterware  관련된  일반적  내용이  저장되는  log file  입니다.   
  
 
   가장 일반적으로  많이  모니터링  됩니다.
 
   가장 일반적으로  많이  모니터링  됩니다.
  
 
[[Category:oracle]]
 
[[Category:oracle]]

2020년 4월 7일 (화) 17:47 판

thumb_up 추천메뉴 바로가기


1 CRS & DB 시작/종료 및 관리[편집]

2 CRS 와 DB 시작 순서[편집]

 attach_file - 순서

  1. CRS 시작(CRS가 down된경우에만 실행) : root 권한으로 실행
  2. CRS 어플리케이션(nodeapps) 시작  : 한 노드에서 명령어 실행(수동실행시)
  3. LISTENER 시작  : 한 노드에서 명령어 실행(수동실행시)
  4. DB 인스턴스 시작  : 한 노드에서 명령어 실행(수동실행시)

2.1 CRS 시작[편집]

 attach_file 주의사항

  1. CRS는 RAC를 구성하는 각 노드 및 각종 리소스를 제어하는 프로세스.
  2. CRS의 시작은 root권한 으로 되어야 한다.
  3. 서버 재부팅 시 자동 시작된다.

2.1.1 수동 시작 방법.[편집]

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

2.1.2 CRS 시작 명령[편집]

crsctl start crs -- 각각 노드에서

1. RAC노드#1

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

2. RAC노드#2

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

2.1.3 CRS 상태 확인[편집]

crsctl check crs
ps -ef | grep "d\.bin" | grep -v grep
crsctl check crs

2.2 CRS 어플리케이션(nodeapp) 시작[편집]

- CRS시작 시 자동 시작.

2.2.1 수동 시작 방법[편집]

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

[노드1(nodeapps1)]

srvctl start nodeapps -n HOSTNAME1

[노드2(nodeapps2)]

srvctl start nodeapps -n HOSTNAME2

2.3 리스너(Listener) 시작[편집]

  • CRS시작 시 자동 시작.

2.3.1 수동 시작 방법[편집]

  • LISTENER 시작 명령
  • DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
srvctl start listener -n HOSTNAME1
srvctl start listener -n HOSTNAME2

2.4 DB 인스턴스(Instance) 시작[편집]

- CRS시작 시 자동 시작.

2.4.1 수동 시작 방법[편집]

  • DB인스턴스 실행 명령어
  • DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
srvctl start database -d 디비명


2.5 CRS Application/Listener/DB Instance 확인[편집]

2.5.1 Application/Listener/DB Instance확인 명령어[편집]

crsctl status res -t

 attach_file - 중요 resource

  1. ora.[listener_name].lsnr -> listener의 상태를나타냄
  2. ora.net1.network -> public network 상태를 나타냄
  3. ora.[DB_name].db -> Database 상태를 나타냄
  4. ora.[hostname].vip -> VIP 상태를 나타냄(장애인경우 failover 상태가 됨)



3 CRS/DB 종료[편집]

3.1 DB 종료 절차[편집]

 attach_file - DB 종료 절차.

1. CRS 어플리케이션(nodeapp) 종료
한 노드에서 명령어 실행(oracle 유저로)
2.LISTENER 종료
한 노드에서 명령어 실행(oracle 유저로)
3.DB 인스턴스종료
한 노드에서 명령어 실행(oracle 유저로)
4.CRS 종료
양쪽 노드에서 명령어 실행(root유저로)

3.2 CRS Application 종료[편집]

3.2.1 CRS 어플리케이션 종료 명령어[편집]

  • DB노드#1 서버 "oracle" 유저로 실행.
srvctl stop nodeapps –n HOSTNAME

3.3 LISTENER 종료[편집]

  • DB노드#1에서 "oracle" 유저로 실행한다.
srvctl stop listener -n HOSTNAME


3.4 DB Instance 종료[편집]

3.4.1 DB인스턴스 종료 명령어[편집]

  • DB노드#1 에서 "oracle" 유저로 실행.
srvctl stop database -d DB명



4 RAC DB 시작/종료/상태 확인 명령[편집]

4.1 현재 RAC DB 상태 확인[편집]

상태확인 명령 : crs_stat , srvctl

crs_stat -t
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]
  • Target  : 목표 상태
  • State : 현재 상태
  • Host : 작동 노드

Target 와 State 가 모두 Online 상태가 되면 정상적으로 작동 중.

  • .실시간으로 위와 같은 상황을 조회하려면 리눅스에서는 watch 명령(1초마다 반복 실행)
watch -n 1 'crs_stat -t'
  • srvctl 명령 : 보다 세부적인 내용 확인 가능
srvctl status database[/instance/service/nodeapps/asm] -d [DB명]

4.1.1 DB 상태 현재 상태 확인[편집]

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

예) srvctl status database -d DB명 -v

4.1.2 DB 인스턴스 상태 확인[편집]

srvctl status instance -d <database-name> -i <instance-name> 
# [<instancename-list>][-f][-v]-S <level>]

예) srvctl status instance -d DB명 -i rac1번인스턴스명, rac2번 인스턴스명

4.1.3 DB 서비스명 상태 확인[편집]

  • # [<service-namelist>][-f][-v][-S <level>]
srvctl status service -d <database-name> -s <service_name>

4.1.4 DB 노드APP 별 상태 확인[편집]

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

예) srvctl status nodeapps -n rac1번 노드명

4.1.5 ASM 상태 확인[편집]

srcvtl status asm -n <node_name>

4.2 RAC 종료 명령[편집]

RAC는 중단 순서가 중요.

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

인스턴스 --> ASM(ASM 구성시) --> application 순서


  • 정지 명령어 : srvctl

4.3 데이터베이스 정지[편집]

srvctl stop database -d DB명  [-o <stop-options: immediate/abort/nomount/.. >]
[-c <connect-string> | -q]

4.4 인스턴스 정지[편집]

srvctl stop instance -d <database-name> -i <instance-name> 
[,<instance-namelist>][-o <stop-option>][-c <connect -string> | -q] 
예)  srvctl   stop instance -d DB명 -i rac1번인스턴스명 
(1번 인스턴스만 정지, 2번 인스턴스는 작동중..)

4.5 서비스 정지[편집]

srvctl stop service -d <database-name> [-s <service-name> [, <service-namelist>]]
[-i <instance-name][-c <connect -string> | -q][-f]

4.6 노드 정지[편집]

srvctl stop nodeapps -n <node-name>

4.7 ASM 정지[편집]

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

4.7.1 RAC 정지 확인 명령어[편집]

crs_stat -t
  • 인스턴스1이 종료 확인.

그러나 Database는 아직 중단이 되지 않음. 인스턴스2번 운영 중임.

  • 인스턴스2번 정지
srvctl   stop instance -d RAC -i rac2

모든 Instance 와 Database 가 OFFLINE 확인.

crs_stat -t

이후 노드APP 종료

srvctl   stop nodeapps -n   rac1
srvctl   stop nodeapps -n   rac2

모두 정상적으로 OFFLINE 확인.

4.7.2 CRS 전체 정지 명령[편집]

  • root 나 grid 권한으로
crs_stop -all

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




4.8 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> 

<source lang=shell>
srvctl start asm -n <node_name> [-i ][-o <start_options>]
crs_stat -t

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

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

srvctl   start    nodeapps    -n   rac1

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

여기서 중요한 것은 vip 와 listener 입니다. 나머지 rac2 에서도 application 을 시작합니다.

srvctl   start nodeapps -n   rac2

rac1 과 rac2 에서 node application 이 모두 정상적으로 시작 된 것이 확인됩니다. 만약 ASM 으로 구성되었을 경우는 양쪽 노드 모두에서 아래와 같이 ASM 을 시작하면 됩니다.

srvctl   start asm   -n   rac1
srvctl   start asm   -n   rac2
이제  Instance  를  시작하면  됩니다
srvctl   start  instance   -d   rac   -i   rac1

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

srvctl   start  instance  -d   rac   -i   rac2

Instance 가 모두 시작 되어도 서비스가 시작이 안 될 경우 아래와 같이 특정 서비스를 실행하면 됩니다. 다만 db 를 생성할 때 함께 만들어진 내부 서비스는 아래와 같은 에러가 발생합니다.

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

CRS 한번에 시작 하는 명령어

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 로 변경합니다.

srvctl add service -d rac -s insa -r rac1 -a 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 입니다.

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