행위

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

DB CAFE

(활성화 하기)
 
(같은 사용자의 중간 판 34개는 보이지 않습니다)
1번째 줄: 1번째 줄:
Oracle RAC 12C Management
+
== RAC DB 상태(시작/종료) 확인 ==
 
 
 
   
 
   
1.GRID & DB 기동 및 종료
+
=== RAC DB 상태 확인 명령 ===
 
 
① 기동
 
- 데이터베이스 시작 절차
 
 
 
:1. CRS 시작(CRS가 down된경우에만 실행) : root 권한으로 실행
 
:2. CRS 어플리케이션(nodeapps) 시작 :  한 노드에서 명령어 실행(수동실행시)
 
:3. LISTENER 시작 : 한 노드에서 명령어 실행(수동실행시)
 
:4. DB 인스턴스 시작 : 한 노드에서 명령어 실행(수동실행시)
 
 
 
# CRS는 RAC를 구성하는 각 노드 및 각종 리소스를제어하는 프로세스이다.
 
# CRS의 기동은 root권한으로 되어야 한다.
 
# 서버 재부팅 시 자동 기동된다.
 
 
 
아래 내용은 수동으로 기동하는 방법이다. 
 
*DB 서버 각각의 노드에서 "root" 유저로 실행한다.
 
 
 
=>노드#1
 
<source lang=shell>
 
# cd /gridhome/grid/bin
 
</source>
 
<source lang=shell>
 
# ./crsctl start crs
 
</source>
 
 
 
 
 
=>노드#2
 
<source lang=shell>
 
# cd /gridhome/grid/bin
 
</source>
 
 
 
<source lang=shell>
 
# ./crsctl start crs
 
</source>
 
 
 
 
 
CRS의 주요 프로세스는 아래와 같으며, CRS 상태확인은 crsctl check crs 으로 가능하다.
 
 
 
<source lang=shell>
 
$ps -ef | grep "d\.bin" | grep -v grep
 
</source>
 
 
 
<source lang=shell>
 
$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
 
</source>
 
 
 
 
 
② CRS Application 기동
 
 
 
- 위의 2.1.1에서 CRS기동 시 자동 기동된다. 아래내용은 수동으로 기동하는 방법이다.
 
- CRS를 구성하는 어플리케이션은 아래 명령어로 기동한다. 
 
 
 
 
 
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 
<source lang=sql>
 
$srvctl start nodeapps -n HOSTNAME
 
</source>
 
<source lang=sql>
 
$srvctl start nodeapps -n HOSTNAME
 
</source>
 
 
 
 
 
③ Listener 기동
 
 
 
- 위의 2.1.1에서 CRS기동 시 자동 기동된다. 아래내용은 수동으로 기동하는 방법이다.
 
- LISTENER는 아래 명령어로 기동한다. 
 
 
 
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 
<source lang=shell>
 
$srvctl start listener -n HOSTNAME
 
</source>
 
 
 
<source lang=shell>
 
$srvctl start listener -n HOSTNAME
 
</source>
 
 
 
④ DB Instance 기동
 
 
 
- 위의 2.1.1에서 CRS기동 시 자동 기동된다. 아래내용은 수동으로 기동하는 방법이다.
 
- DB인스턴스는 아래 명령어로 기동한다. 
 
 
 
*DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 
 
 
<source lang=shell>
 
$srvctl start database -d 디비명
 
</source>
 
 
 
⑤ CRS Application/Listener/DB Instance확인
 
 
 
<source lang=shell>
 
$ crsctl status res -t
 
</source>
 
 
 
--------------------------------------------------------------------------------
 
 
 
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" 유저로 실행한다.
 
<source lang=shell>
 
$srvctl stop nodeapps –n HOSTNAME
 
</source>
 
 
 
<source lang=shell>
 
$srvctl stop nodeapps -n HOSTNAME
 
</source>
 
 
 
 
 
⑧ LISTENER 종료
 
 
 
- LISTENER는 아래 명령어로 종료한다.
 
  
 
+
상태 확인 명령 :
 +
crs_stat , srvctl
  
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 
 
<source lang=shell>
 
<source lang=shell>
$srvctl stop listener -n HOSTNAME
+
crs_stat -t
 
</source>
 
</source>
  
<source lang=shell>
 
$srvctl stop listener -n HOSTNAME
 
</source>
 
 
 
 
⑨ DB Instance 종료
 
 
- DB인스턴스는 아래 명령어로 종료한다.
 
 
*DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
 
 
<source lang=shell>
 
$srvctl stop database -d DB명
 
</source>
 
 
------------------
 
 
 
이번  장에서는  RAC  설치가  완료  된  후  관리해야  하는  부분들과  주요  명령어들을  살펴보겠습니다.
 
 
 
 
1.  현재  상태  확인하기
 
 
현재  RAC  관련된  주요  상태를  확인하는  명령어는  crs_stat  입니다.
 
 
주요  문법은  아래와  같습니다.
 
<source lang=shell>
 
[oracle@rac1 ~]$ crs_stat -h
 
</source>
 
 
<source lang=shell>
 
<source lang=shell>
 
Usage:  crs_stat [resource_name [...]] [-v] [-l] [-q] [-c cluster_member]
 
Usage:  crs_stat [resource_name [...]] [-v] [-l] [-q] [-c cluster_member]
290번째 줄: 20번째 줄:
 
</source>
 
</source>
 
   
 
   
위 옵션 중 현재 상태를 확인할 때 쓰는 옵션은 -t
+
* Target :  목표  상태
<source lang=shell>
+
* State  :  현재 상태
$ crs_stat -t
+
* Host  :  작동  노드
</source>
 
 
   
 
   
 +
Target  와  State  가  모두  Online 상태가  되면  정상적으로  작동 중.
  
* Target  :  목표  상태
+
*.실시간으로 위와 같은 상황을 조회하려면 리눅스에서는 watch 명령(1초마다 반복 실행)
* State :  현재  상태
 
* Host :  작동  노드
 
 
Target  와  State 모두 Online 상태가 되면 정상적으로 작동하고 있는  것입니다.
 
  
실시간으로  위와  같은  상황을  조회하려면  리눅스에서는  watch  명령을  아래와  같이  사용하면  1초에  1번씩  refresh  하여  실시간  상황을  보여줍니다.
 
 
<source lang=shell>
 
<source lang=shell>
$ watch -n 1 'crs_stat -t'
+
watch -n 1 'crs_stat -t'
 
</source>
 
</source>
  
위  명령에서  -n  은  시간을  지정하며  1  은  1  초마다  '명령어'  를  반복해서  수행하라는  의미입니다
+
* srvctl 명령 : 보다 세부적인 내용 확인 가능
위의  방법  말고  srvctl 이라는  명령어를  사용해서  보다 세부적으로  상태를  조회할  수도  있습니다.
 
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl
+
srvctl status database[/instance/service/nodeapps/asm] -d [DB명]
 
</source>
 
</source>
 
주요  문법은  아래와  같습니다.
 
<source lang=shell>
 
$srvctl status database -d <database-name> [-f][-v][-S <level>]
 
</source>
 
<source lang=shell>
 
$srvctl status instance -d <database-name> -i <instance-name>
 
  
[<instancename-list>][-f][-v]-S <level>]
+
=== DB 상태 현재 상태 확인 ===
</source>
 
 
<source lang=shell>
 
<source lang=shell>
$srvctl status service -d <database-name> -s <service_name>
+
srvctl status database -d <database-name> [-f][-v][-S <level>]  
 
 
[<service-namelist>][-f][-v][-S <level>]  
 
 
</source>
 
</source>
 +
예)  srvctl status database -d DB명 -v
  
 +
=== DB 인스턴스 상태 확인 ===
 
<source lang=shell>
 
<source lang=shell>
$srvctl status nodeapps [-n <node-name>]  
+
[<instancename-list>][-f][-v]-S <level>]  
 
</source>
 
</source>
 
 
<source lang=shell>
 
<source lang=shell>
$srcvtl status asm -n <node_name>  
+
srvctl status instance -d <database-name> -i <instance-name>  
 
</source>
 
</source>
   
+
예) srvctl status instance -d DB명 -i rac1번인스턴스명, rac2번 인스턴스명
 
 
위  명령어들을  사용하여  몇  가지  조회를  해  보겠습니다
 
 
 
1.  데이터베이스의  상태, 모든 인스턴스와 모든  서비스의  상태  확인
 
  
 +
=== DB 서비스명 상태 확인 ===
 +
* [<service-namelist>][-f][-v][-S <level>]
 
<source lang=shell>
 
<source lang=shell>
$ srvctl status database -d rac -v
+
srvctl status service -d <database-name> -s <service_name>
 
</source>
 
</source>
 
  
2.  특정  인스턴스의 상태와  현재  서비스의  상태 확인
+
=== DB 노드APP 별 상태 확인 ===
 
<source lang=shell>
 
<source lang=shell>
$ srvctl status instance -d rac -i rac1, rac2
+
srvctl status nodeapps [-n <node-name>]
 
</source>
 
</source>
   
+
예) srvctl status nodeapps -n rac1번 노드명
  
3.  모든  node의  상태를  확인합니다
+
=== ASM 상태 확인 ===
 
<source lang=shell>
 
<source lang=shell>
$ srvctl status nodeapps -n rac1
+
srcvtl status asm -n <node_name>
 
</source>
 
</source>
  
<source lang=shell>
+
--------------
$ srvctl status nodeapps -n rac2
 
</source>
 
 
2. RAC 중단하기
 
  
RAC 를  설치하면  여러  가지  관련  서비스들과  Application,  Instance  가  복합적으로  동작을  하게 됩니다.
+
== RAC DB 종료 ==
그래서  RAC  를  중단 할  때는  순서가 아주  중요합니다.
+
{{고지상자
srvctl  명령을  사용하며  중단을  시키는  순서는   
+
|제목=" RAC는 중단 순서가 중요. "
Instance -->  asm  (asm  으로  구성되었을  경우)  --> application  순서입니다. 
+
|내용=*srvctl  명령을  사용하며  중단을  시키는  순서는   
 +
인스턴스 -->  ASM(ASM 구성시)  --> application  순서   
 +
}}
  
주요  명령어를  먼저  살펴보겠습니다.
+
* 정지 명령어 : srvctl
  
 +
=== 데이터베이스 정지 ===
 
<source lang=shell>
 
<source lang=shell>
$srvctl   stop   database -d <database-name> [-o <stop-options>]
+
srvctl stop database -d DB명  [-o <stop-options: immediate/abort/nomount/.. >]
 
 
 
[-c <connect-string> | -q]  
 
[-c <connect-string> | -q]  
 
</source>
 
</source>
 +
 +
=== 인스턴스 정지 ===
 +
예)  srvctl  stop instance -d DB명 -i rac1번인스턴스명
 +
(1번 인스턴스만 정지, 2번 인스턴스는 작동중..)
  
 
<source lang=shell>
 
<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]  
 
</source>
 
</source>
  
 +
=== 서비스 정지 ===
 
<source lang=shell>
 
<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=shell>
 +
srvctl stop nodeapps -n <node-name>
 +
</source>
  
 +
=== ASM 정지 ===
 
<source lang=shell>
 
<source lang=shell>
$srvctl   stop   nodeapps -n <node-name>  
+
srvctl stop asm -n <node_name> [-i ][-o <start_option>
 
</source>
 
</source>
 +
 +
----------------------
 +
 +
==== RAC 정지 확인 명령어 ====
  
 
<source lang=shell>
 
<source lang=shell>
$srvctl    stop    asm -n <node_name> [-i ][-o <start_option>
+
crs_stat -
 
</source>
 
</source>
 
위  명령을  사용하여  아래와  같이  종료하면  됩니다.
 
  
 +
* 인스턴스1이  종료 확인.
 +
그러나  Database는  아직 중단이  되지  않음.
 +
인스턴스2번 운영 중임.
 +
 +
* 인스턴스2번 정지
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl  stop instance -d RAC -i rac1
+
srvctl  stop instance -d RAC -i rac2
 
</source>
 
</source>
 
   
 
   
 +
모든  Instance  와  Database 가  OFFLINE 확인. 
  
위  명령어에서  -d  옵션은  DB  이름을  지정하는  것이고  -i  는  instance  이름을  지정하는  것입니다.
 
 
이  명령  수행  후
 
 
<source lang=shell>
 
<source lang=shell>
 
  crs_stat -t   
 
  crs_stat -t   
 
</source>
 
</source>
로  확인해  보겠습니다
 
  
 
+
이후 노드APP 종료
Instance1  이  종료된  것이 확인됩니다.
 
그러나  Database  는  아직 중단이  되지  않고  있습니다.
 
Instance2  가  운영  중이기 때문입니다.
 
 
 
나머지  Instance 2  도  종료하고  다시  확인  해  보겠습니다
 
  
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl  stop instance -d RAC -i rac2
+
srvctl  stop nodeapps -n  rac1
 
</source>
 
</source>
 
모든  Instance  와  Database 가  OFFLINE  된  것이  확인됩니다.  이제  나머지  구성 요소들을  종료하면  됩니다.
 
  
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl  stop nodeapps -n  rac1
+
srvctl  stop nodeapps -n  rac2
 
</source>
 
</source>
 +
 +
모두  정상적으로  OFFLINE  확인.
  
 +
====  CRS 전체 정지 명령 ====
 +
* root 나 grid 권한으로
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl  stop nodeapps -n  rac2
+
crs_stop -all 
 
</source>
 
</source>
 
모두  정상적으로  OFFLINE  된  것이 확인됩니다.
 
  
위  작업을  한번에  해  주는  명령어가  crs_stop -all  입니다.
+
위와  같이  한  단계씩  수동으로  종료할  수도  있고   
위와  같이  한  단계씩  수동으로  종료할  수도  있고  crs_stop  -all  명령을  이용해서  한꺼번에  자동으로  종료시킬  수도  있습니다.
+
crs_stop  -all  명령을  이용해서  한꺼번에  자동으로  종료시킬  수도  있습니다.
 
  
3. RAC  시작하기
 
  
앞에서  잠시  언급한  대로  시작하는  순서는  중단  순서와  반대입니다.
+
----------------------
즉  application --> ASM (ASM  일경우) --> Instance  순서로  시작하면  됩니다.
 
종료할  때와  마찬가지로  srvctl  명령으로  시작합니다.
 
주요  명령어를  먼저  살펴  보겠습니다.
 
  
 +
== RAC DB 시작 ==
 +
{{고지상자
 +
|제목= " 시작하는  순서는  중단  순서와  반대."
 +
|내용=#application --> ASM (ASM  일경우) --> Instance  순서로  시작.
 +
#종료할  때와  마찬가지로  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]  
458번째 줄: 177번째 줄:
  
 
<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]  
464번째 줄: 183번째 줄:
  
 
<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 부터 시작합니다.
  
 +
==== node 어플리케이션 시작 ====
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl   start   nodeapps   -n   rac1
+
srvctl start nodeapps -n rac1
 
</source>
 
</source>
 
   
 
   
489번째 줄: 208번째 줄:
  
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl   start nodeapps -n   rac2
+
srvctl start nodeapps -n rac2
 
</source>
 
</source>
  
rac1 과  rac2  에서  node application  이  모두  정상적으로  시작 된  것이  확인됩니다.
+
* rac1 ,rac2  에서  node application이 정상 작동 확인
 +
 
 +
 
 +
==== ASM 구성시 ASM 시작 ====
 +
 
 
만약  ASM  으로  구성되었을  경우는  양쪽  노드  모두에서  아래와  같이  ASM  을  시작하면  됩니다.
 
만약  ASM  으로  구성되었을  경우는  양쪽  노드  모두에서  아래와  같이  ASM  을  시작하면  됩니다.
 
   
 
   
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl   start asm   -n   rac1
+
srvctl start asm -n rac1
 
</source>
 
</source>
  
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl   start asm   -n   rac2
+
srvctl start asm -n rac2
 
</source>
 
</source>
  
  이제 Instance  를  시작하면  됩니다
+
   
 +
   
 +
==== 인스턴스 시작 ====
 +
 
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl  start  instance  -d  rac  -i  rac1
+
srvctl  start  instance  -d  rac  -i  rac1
 
</source>  
 
</source>  
위  화면에서  볼  수  있듯이  Instance  가 1 개라도  시작이  되면   
+
 
Database  가  시작됨을  알  수  있습니다.   
+
Instance가 1 개라도  시작이  되면  Database가 시작됨.   
나머지  Instance  도  시작하겠습니다
+
 
 +
===== 나머지  Instance  도  시작 =====
  
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ srvctl   start instance -d   rac   -i   rac2
+
srvctl start instance -d rac -i rac2
 
</source>
 
</source>
  
Instance  가  모두  시작  되어도  서비스가  시작이  안  될  경우  아래와  같이  특정  서비스를  실행하면 됩니다.
+
* Instance  가  모두  시작  되어도  서비스가  시작이  안  될  경우   
다만 db  를  생성할  때  함께  만들어진  내부  서비스는  아래와  같은  에러가  발생합니다.
+
  아래와  같이  특정  서비스 실행.
 +
<source lang=shell>
 +
  srvctl start service -d rac -s rac -i rac1
 +
</source>
  
 +
==== CRS 한번에 시작 하는 명령어 ====
 
<source lang=shell>
 
<source lang=shell>
$ srvctl start service -d rac -s rac -i rac1
+
crs_start  -all 
 
</source>
 
</source>
 +
* crs_start  -all  명령은  위  단계들을 모두  한꺼번에  모아서  실행하는  스크립트.
  
이럴 경우는  crs_start  -all  명령어를  수행해서  시작하면  되며 
+
== RAC 리소스 추가/삭제 ==
crs_start  -all  명령은  위  단계들을 모두  한꺼번에  모아서  실행하는  스크립트입니다.
 
 
 
모두가  정상적으로  시작되었습니다
 
 
 
  
4. RAC  자원 추가 제거하기
+
자원의  시작과  종료  외에도  srvctl  명령을  사용하여  운영  중인  RAC  에서 여러 가지 자원을 추가.
  
자원의  시작과  종료  외에도  srvctl  명령을  사용하여  운영  중인  RAC  에서  여러  가지  자원을  추가할  수  있습니다.
+
* DB 추가
아래에서  주요  문법을  살펴보겠습니다.
 
 
<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}]
539번째 줄: 266번째 줄:
 
</source>
 
</source>
  
 +
* 인스턴스 추가
 
<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]  
 
</source>
 
</source>
  
 +
* 노드 추가
 
<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>
  
 +
* ASM 추가
 
<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>
  
  
 +
==== RAC  리소스 추가 ====
 +
인사  관리작업을  위한  insa  서비스를  추가하되  rac2  에서  서비스  하고  rac1  에서는  대기  상태로 생성하겠습니다.
 +
 +
예시) insa  서비스  추가 후 rac2  에서  서비스  , rac1  에서는  대기  상태로 생성
  
위 예 중에서 새로운  서비스를  추가  해  보겠습니다.
+
<source lang=shell>
 +
  srvctl add service -d rac -s insa -r rac2 -a rac1
 +
</source>
  
인사  관리작업을  위한  insa  서비스를  추가하되  rac2  에서  서비스  하고  rac1  에서는  대기  상태로 생성하겠습니다.
 
  
 +
위와  같이  서비스를  생성  한  후  확인
 
<source lang=shell>
 
<source lang=shell>
$ srvctl add service -d rac -s insa -r rac2 -a rac1
+
crs_stat -t
 
</source>
 
</source>
  
위와 같이 서비스를 생성 후  crs_stat -t  로 확인합니다.
+
* insa 서비스가 생성은 되었으나 실행은 되지 않음.  
  
insa  서비스가  생성은  되었으나 실행은  되지  않습니다. 명령어로  실행을  시켜야  합니다.
+
* 해당  서비스를  명령어로  실행.
 
 
아래와  같이  해당  서비스를  명령어로  실행 시킵니다.
 
 
<source lang=shell>
 
<source lang=shell>
$ srvctl start service -d rac -s insa
+
srvctl start service -d rac -s insa
 
</source>
 
</source>
  
정상적으로  잘  실행  되는  것을  확인 할  수  있습니다.
+
* 정상적으로  잘  실행  되는  확인
  
 
srvctl  명령어를  이용해서  기존에  존재하는  자원을  제거  할  수도  있습니다.
 
srvctl  명령어를  이용해서  기존에  존재하는  자원을  제거  할  수도  있습니다.
582번째 줄: 318번째 줄:
 
주요  명령어는  아래와  같습니다
 
주요  명령어는  아래와  같습니다
 
<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>]  
 
</source>
 
</source>
 
   
 
   
 +
==== RAC  리소스 삭제 ====
  
위에서  생성했던  insa  서비스를  제거해  보겠습니다.
+
* insa  서비스 중지 후
 
<source lang=shell>
 
<source lang=shell>
$ srvctl remove service -d rac -s insa
+
srvctl stop service -d rac -s insa
 
</source>
 
</source>
 +
 +
* insa  서비스를  제거
 
<source lang=shell>
 
<source lang=shell>
$ srvctl stop service -d rac -s insa
+
srvctl remove service -d rac -s insa
</source>
 
<source lang=shell>
 
$ srvctl remove service -d rac -s insa
 
 
</source>
 
</source>
  
위  화면을  보면  실행  중인  서비스는  먼저  중지를  하고  제거해야  됨을  알  수  있습니다.
 
 
만약  여러  개의  인스턴스에서  실행  중인  서비스인  경우  특정  인스턴스에서만  제거를  해야  할  
 
만약  여러  개의  인스턴스에서  실행  중인  서비스인  경우  특정  인스턴스에서만  제거를  해야  할  
경우에는  아래와  같이  -i  옵션을  함께  사용하면  됩니다.
+
경우 -i  옵션을  함께  사용
  
 
<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>
  
5. srvctl  명령을  사용하여  rac service  관련  설정  변경하기
+
==== srvctl  명령을  사용하여  rac service  관련  설정  변경 ====
  
srvctl modify  라는  명령을 사용하여  현재  설정되어  있는  값을 변경할  수  있습니다.
+
srvctl modify  명령 사용하여  현재  설정되어  있는  변경
srvctl    modify    database  Database  와  관련된  설정을  변경할  수  있습니다.
+
 
srvctl    modify    instance  Instance  와  관련된  설정을  변경할  수  있습니다.
+
srvctl    modify    database  -> Database  와  관련된  설정을  변경할  수  있습니다.
srvctl    modify    service  Service  와  관련된  설정을  변경할  수  있습니다.
+
srvctl    modify    instance  -> Instance  와  관련된  설정을  변경할  수  있습니다.
srvctl    modify    nodeapps  node application  과  관련된  설정을  변경할  수  있습니다.
+
srvctl    modify    service  -> Service  와  관련된  설정을  변경할  수  있습니다.
 +
srvctl    modify    nodeapps  -> node application  과  관련된  설정을  변경할  수  있습니다.
  
 
1) srvctl    modify    database
 
1) srvctl    modify    database
 +
 
<source lang=shell>
 
<source lang=shell>
 
srvctl modify database -d db_unique_name [-n db_name] [-o oracle_home] [-m domain_name]  
 
srvctl modify database -d db_unique_name [-n db_name] [-o oracle_home] [-m domain_name]  
630번째 줄: 367번째 줄:
 
</source>
 
</source>
 
   
 
   
위  명령의  주요  옵션의  의미는  아래와  같습니다
+
* 주요  옵션
  
 
-d db_unique_name      유일한(Unique) DB  이름을  지정합니다.  
 
-d db_unique_name      유일한(Unique) DB  이름을  지정합니다.  
645번째 줄: 382번째 줄:
  
 
  2) srvctl    modify    instance
 
  2) srvctl    modify    instance
 +
 
<source lang=shell>
 
<source lang=shell>
 
srvctl    modify    instance    -d    db_unique_name    -i    inst_name  
 
srvctl    modify    instance    -d    db_unique_name    -i    inst_name  
651번째 줄: 389번째 줄:
 
  </source>
 
  </source>
  
위  명령의  주요  옵션의  의미는  아래와  같습니다.
+
* 주요  옵션
  
 
d db_unique_name              database Unique name  을  설정합니다.
 
d db_unique_name              database Unique name  을  설정합니다.
664번째 줄: 402번째 줄:
 
이  명령을  사용하여  서비스  중인  노드들의  설정을  변경할  수  있습니다.   
 
이  명령을  사용하여  서비스  중인  노드들의  설정을  변경할  수  있습니다.   
 
그러나  이  명령은  아래와 같이  몇  가지  주의  사항이  있습니다.
 
그러나  이  명령은  아래와 같이  몇  가지  주의  사항이  있습니다.
 +
 
-  새로운  변경  사항이  생길  때  기존  운영중인  서비스에는  반영이  되지  않습니다.
 
-  새로운  변경  사항이  생길  때  기존  운영중인  서비스에는  반영이  되지  않습니다.
 
즉  변경사항을  운영중인  서비스에  적용하려면  기존  서비스를  중단  한  후  새로  시작해야  합니다.
 
즉  변경사항을  운영중인  서비스에  적용하려면  기존  서비스를  중단  한  후  새로  시작해야  합니다.
676번째 줄: 415번째 줄:
  
  
위  명령어의  주요  옵션은  아래와  같습니다
+
* 주요  옵션
 +
 
 
-d db_unique_name          Unique database name  을  설정합니다.
 
-d db_unique_name          Unique database name  을  설정합니다.
 
-s service_name              Service name 을  지정합니다.
 
-s service_name              Service name 을  지정합니다.
699번째 줄: 439번째 줄:
  
 
   
 
   
6. Service  재배치 하기
+
==== Service  재배치 하기 ====
  
 
SERVICE:  RAC 안에서 제공해주는 업무
 
SERVICE:  RAC 안에서 제공해주는 업무
  
이  명령을  사용하여  현재  운영중인  서비스들의  인스턴스를 변경할  수  있습니다.
+
이  명령을  사용하여  현재  운영중인  서비스들의  인스턴스 변경
  
 
예를  들어  인사관리를  위한  insa  서비스가  기존에  rac1  에서  서비스  중이었는데   
 
예를  들어  인사관리를  위한  insa  서비스가  기존에  rac1  에서  서비스  중이었는데   
 
+
rac1  을  패치하기 위해서  서비스를  rac2  로  이동해야  할  경우  등에  사용하는  명령.
rac1  을  패치하기 위해서  서비스를  rac2  로  이동해야  할  경우  등에  사용하는  명령입니다.
 
  
 
<source lang=shell>
 
<source lang=shell>
716번째 줄: 455번째 줄:
 
   
 
   
  
위  명령의  주요  옵션은  아래와  같습니다.
+
* 주요  옵션
  
 
-d db_unique_name          Unique database name  을  지정합니다.
 
-d db_unique_name          Unique database name  을  지정합니다.
725번째 줄: 464번째 줄:
 
   
 
   
  
사용  예)  
+
예시)  
 
+
인사관리를  위한  insa  서비스를  rac1  instance  에  생성한  후  이  명령을  사용해서  rac2  instance  로 변경.
인사관리를  위한  insa  서비스를  rac1  instance  에  생성한  후  이  명령을  사용해서  rac2  instance  로 변경합니다.
 
  
 
<source lang=shell>
 
<source lang=shell>
[oracle@rac2 ~]$ 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>
[oracle@rac2 ~]$ srvctl start service -d rac -s insa  
+
srvctl start service -d rac -s insa  
 
</source>
 
</source>
  
insa  서비스가  rac1  에서  작동하는 것이  확인됩니다.
+
insa  서비스가  rac1  에서  작동하는 것이  확인.
위에서  확인한  rac1  에서  동작  중인  insa  서비스를  rac2  로  이동하겠습니다.
+
확인한  rac1  에서  동작  중인  insa  서비스를  rac2  로  이동.
  
 
<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>
 
   
 
   
  
기존  rac1 -> rac2  로  변경된  것이  보입니다.
+
* 클라이언트(PC)  에서  tnsnames.ora  파일을  수정해서  insa  서비스에  접속한  후  instance  name  을 확인.
클라이언트(PC)  에서  tnsnames.ora  파일을  수정해서  insa  서비스에  접속한  후  instance  name  을 확인해  보겠습니다.
+
* pc  에서  서버로  접속하여  확인.
tnsnames.ora  파일에  아래와  같은  내용을  추가합니다.
 
 
 
  pc  에서  서버로  접속하여  확인합니다.
 
다시  rac1  으로  변경  후  확인  해  보겠습니다
 
  
 
<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>
  
7. CRS  자원의  일시적인  활성화  /  비활성화  설정하기
+
==== CRS  자원의  일시적인  활성화  /  비활성화  설정 ====
주요  명령은  아래와  같습니다.
+
* 주요  명령
- 활성화  하기
+
 
 +
===== 활성화  하기=====
 
<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>]
 
</source>
 
</source>
  
비활성화  하기
+
===== 비활성화  하기 =====
  
 
<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>]
 
</source>
 
</source>
 
   
 
   
위  명령을  사용하여  insa  서비스를  비활성화  시킨  후  접속  테스트를  해  보겠습니다.
+
위  명령을  사용하여  insa  서비스를  비활성화  시킨  후  접속  테스트.
  
 
<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>
  
위와  같이  실행중인  서비스는  사용  안  함으로 변경할  수  없어서 중단 사용  안  함으로  변경합니다.
+
실행중인  서비스는  사용  안함으로 변경할  수  없어 중단 후 사용  안함으로 변경.
이제  client  에서  insa  서비스로  접속해  있던  사용자  창에서  조회를  해  보고  새로  접속을  시도  해보겠습니다.
 
먼저  서비스가  중단되기  전에  접속해  있던  세션부터 확인합니다.
 
  
이번에는 새로  접속을  시도합니다.
+
먼저 서비스가  중단되기  전에  접속해  있던  세션부터  확인.
당연히  에러가  발생합니다.
+
 
이번에는  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>
여전히  접속이  안됨을  알 수  있습니다.
+
여전히  접속이  안됨을  알 수  있습니다.
 +
 
 +
현재  상태를  조회
 
<source lang=shell>
 
<source lang=shell>
 
crs_stat -t   
 
crs_stat -t   
 
</source>
 
</source>
로  현재  상태를  조회합니다.
+
 
위  화면을  보면  service  를  enable  해도  여전히  service  는  offline  상태임을  알  수  있습니다.
+
위  화면을  보면  service  를  enable  해도  여전히  service  는  offline  상태임을  알  수  있음.
즉  해당  서비스를  다시  사용하려면  service  를  start  해야  합니다.
+
 
 +
즉  해당  서비스를  다시  사용하려면  service  를  start  해야  .
  
 
<source lang=shell>
 
<source lang=shell>
$ srvctl start service -d rac -s insa
+
srvctl start service -d rac -s insa
 
</source>
 
</source>
이상으로  srvctl  로  RAC  서비스와  자원을  관리하는  방법을  살펴보았습니다.
 
  
8. rac 관련 로그 경로 내용 확인하기
+
==== rac 관련 로그 경로 및 내용 확인 ====
- $ORA_CRS_HOME/crs/log : CRS resources  와  관련된  주요  내용이  저장됩니다.
+
 
- $ORA_CRS_HOME/crs/init : CRS daemon  이  시작될  때부터  관련  내용을  기록합니다.  
+
- ORA_CRS_HOME/crs/log : CRS resources  와  관련된  주요  내용이  저장.
 +
 
 +
- ORA_CRS_HOME/crs/init : CRS daemon  이  시작될  때부터  관련  내용을  기록.  
  
 
CRS  시작  관련된  장애  내용  등을  확인  할  경우  유용합니다.
 
CRS  시작  관련된  장애  내용  등을  확인  할  경우  유용합니다.
-  $ORA_CRS_HOME/css/log  :  Cluster  Synchronization  (CSS)  데몬이  수행  하는  reconfigurations, missed check-ins,
 
  
connects, disconnects  관련된  내용을  기록합니다.   
+
-  ORA_CRS_HOME/css/log  :  Cluster  Synchronization  (CSS)  데몬이  수행  하는  reconfigurations, missed check-ins,
 +
 
 +
connects, disconnects  관련된  내용을  기록.   
  
 
만약  CSS  데몬에  문제가  발생해서  재부팅을  할  경우  이  파일의  내용을  확인하여  시간과  내역을  찾아볼  수  있습니다.
 
만약  CSS  데몬에  문제가  발생해서  재부팅을  할  경우  이  파일의  내용을  확인하여  시간과  내역을  찾아볼  수  있습니다.
- $ORA_CRS_HOME/css/init : Oracle Cluster Synchronization Service daemon (OCSSd)  데몬이  장애가  발생했을  경우 
 
  
Core Dump 관련 내용을 저장하고 있습니다.
+
- ORA_CRS_HOME/css/init : Oracle Cluster Synchronization Service daemon (OCSSd) 데몬이 장애가 발생했을  경우  
  
-  $ORA_CRS_HOME/evm/log  :  Event  Volume  Manager  (EVM)  데몬과  evmlogger  데몬 관련  로그파일입니다.
+
Core Dump 관련  내용을 저장.
-  $ORA_CRS_HOME/evm/init  :  EVM  데몬과  관련된  PID 와  lock  file  입니다.
 
  
파일에 EVM  관련된 문제가 발생 경우 Core Dump 기록됩니다.
+
- ORA_CRS_HOME/evm/log :  Event  Volume  Manager  (EVM)  데몬과  evmlogger  데몬 관련  로그파일.
 +
- ORA_CRS_HOME/evm/init : EVM 데몬과 관련된 PID 와  lock  file.
  
- $ORA_CRS_HOME/srvm/log : Oracle Cluster Registry (OCR)  과  관련된  log file 입니다.  
+
이  파일에  EVM  관련된  문제가  발생  될  경우  Core Dump  도  기록.
- $ORA_CRS_HOME/log : Oracle Clusterware  관련된  일반적  내용이  저장되는  log file 입니다.   
+
 
 +
- ORA_CRS_HOME/srvm/log : Oracle Cluster Registry (OCR)  과  관련된  log file.  
 +
- ORA_CRS_HOME/log : Oracle Clusterware  관련된  일반적  내용이  저장되는  log file.   
  
 
   가장 일반적으로  많이  모니터링  됩니다.
 
   가장 일반적으로  많이  모니터링  됩니다.
 +
 +
[[Category:oracle]]

2024년 1월 7일 (일) 23:17 기준 최신판

thumb_up 추천메뉴 바로가기


1 RAC DB 상태(시작/종료) 확인[편집]

1.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명]

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

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

예) srvctl status database -d DB명 -v

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

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

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

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

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

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

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

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

1.6 ASM 상태 확인[편집]

srcvtl status asm -n <node_name>

2 RAC DB 종료[편집]

  • srvctl 명령을 사용하며 중단을 시키는 순서는
인스턴스 --> ASM(ASM 구성시) --> application 순서



  • 정지 명령어 : srvctl

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

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

2.2 인스턴스 정지[편집]

예) srvctl stop instance -d DB명 -i rac1번인스턴스명 (1번 인스턴스만 정지, 2번 인스턴스는 작동중..)

srvctl stop instance -d <database-name> -i <instance-name> 
[,<instance-namelist>][-o <stop-option>][-c <connect -string> | -q]

2.3 서비스 정지[편집]

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

2.4 노드 정지[편집]

srvctl stop nodeapps -n <node-name>

2.5 ASM 정지[편집]

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

2.5.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 확인.

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

  • root 나 grid 권한으로
crs_stop -all

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



3 RAC DB 시작[편집]

  1. application --> ASM (ASM 일경우) --> Instance 순서로 시작.
  2. 종료할 때와 마찬가지로 srvctl 명령으로 시작합니다.


3.1 시작 명령어[편집]

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 부터 시작합니다.

3.2 node 어플리케이션 시작[편집]

srvctl start nodeapps -n rac1

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

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

srvctl start nodeapps -n rac2
  • rac1 ,rac2 에서 node application이 정상 작동 확인


3.3 ASM 구성시 ASM 시작[편집]

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

srvctl start asm -n rac1
srvctl start asm -n rac2


3.4 인스턴스 시작[편집]

srvctl   start  instance   -d   rac   -i   rac1

Instance가 1 개라도 시작이 되면 Database가 시작됨.

3.4.1 나머지 Instance 도 시작[편집]
srvctl start instance -d rac -i rac2
  • Instance 가 모두 시작 되어도 서비스가 시작이 안 될 경우
 아래와  같이  특정  서비스 실행.
srvctl start service -d rac -s rac -i rac1

3.5 CRS 한번에 시작 하는 명령어[편집]

crs_start  -all
  • crs_start -all 명령은 위 단계들을 모두 한꺼번에 모아서 실행하는 스크립트.

4 RAC 리소스 추가/삭제[편집]

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

  • DB 추가
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|….]]]
  • ASM 추가
srvctl add asm -n <node_name> i  -o <oracle_home>


4.1 RAC 리소스 추가[편집]

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

예시) 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>]

4.2 RAC 리소스 삭제[편집]

  • insa 서비스 중지 후
srvctl stop service -d rac -s insa
  • insa 서비스를 제거
srvctl remove service -d rac -s insa

만약 여러 개의 인스턴스에서 실행 중인 서비스인 경우 특정 인스턴스에서만 제거를 해야 할 경우 -i 옵션을 함께 사용

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

4.3 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|...]])를 지정합니다.


4.4 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


  • 클라이언트(PC) 에서 tnsnames.ora 파일을 수정해서 insa 서비스에 접속한 후 instance name 을 확인.
  • pc 에서 서버로 접속하여 확인.
srvctl relocate service -d rac -s insa -i rac2 -t rac1

4.5 CRS 자원의 일시적인 활성화 / 비활성화 설정[편집]

  • 주요 명령
4.5.1 활성화 하기[편집]
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>]
4.5.2 비활성화 하기[편집]
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

실행중인 서비스는 사용 안함으로 변경할 수 없어 중단 후 사용 안함으로 변경.

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

새로 접속을 시도. 에러가 발생합니다. 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

4.6 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.

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