행위

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

DB CAFE

(활성화 하기)
 
(같은 사용자의 중간 판 42개는 보이지 않습니다)
1번째 줄: 1번째 줄:
Oracle RAC 11gR2 Management
+
== RAC DB 상태(시작/종료) 확인 ==
 
 
 
 
 
 
1.GRID & DB 기동 및 종료
 
 
 
① 기동
 
 
 
- 데이터베이스 기동과 관련된 절차는 다음과 같다.
 
 
 
순서
 
 
 
작업
 
 
 
비고
 
 
 
1
 
 
 
CRS 기동
 
 
 
CRS가 down된경우에만 실행
 
 
 
2
 
 
 
CRS 어플리케이션 기동
 
 
 
한 노드에서 명령어 실행(수동실행시)
 
 
 
3
 
 
 
LISTENER 기동
 
 
 
한 노드에서 명령어 실행(수동실행시)
 
 
 
4
 
 
 
DB 인스턴스기동
 
 
 
한 노드에서 명령어 실행(수동실행시)
 
 
 
 
 
 
 
- CRS는 RAC를 구성하는 각 노드 및 각종 리소스를제어하는 프로세스이다.
 
 
 
- CRS의 기동은 root권한으로 되어야 한다.
 
 
 
 
 
 
 
- 서버 재부팅 시 자동 기동된다. 아래 내용은 수동으로 기동하는 방법이다.
 
 
 
 
 
 
 
*DB 서버 각각의 노드에서 "root" 유저로 실행한다.
 
 
 
=>노드#1
 
 
 
# cd /gridhome/grid/bin
 
 
 
# ./crsctl start crs
 
 
 
 
 
 
 
=>노드#2
 
 
 
# cd /gridhome/grid/bin
 
 
 
# ./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  설치가  완료  된  후  관리해야  하는  부분들과  주요  명령어들을  살펴보겠습니다.
 
 
 
 
   
 
   
 +
=== RAC DB 상태 확인 명령 ===
  
1.  현재  상태 확인하기
+
상태 확인 명령 :
 
+
crs_stat , srvctl
현재  RAC  관련된  주요  상태를  확인하는  명령어는  crs_stat 입니다.
 
 
 
주요  문법은  아래와  같습니다.
 
  
[oracle@rac1 ~]$ crs_stat -h
+
<source lang=shell>
 +
crs_stat -t
 +
</source>
  
 +
<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]
 
 
  crs_stat [resource_name [...]] -t [-v] [-q] [-c cluster_member]
 
  crs_stat [resource_name [...]] -t [-v] [-q] [-c cluster_member]
 
 
  crs_stat -p [resource_name [...]] [-q]
 
  crs_stat -p [resource_name [...]] [-q]
 
 
  crs_stat [-a] application -g
 
  crs_stat [-a] application -g
 
 
  crs_stat [-a] application -r [-c cluster_member]
 
  crs_stat [-a] application -r [-c cluster_member]
 
 
  crs_stat -f [resource_name [...]] [-q] [-c cluster_member]
 
  crs_stat -f [resource_name [...]] [-q] [-c cluster_member]
 
 
  crs_stat -ls [resource_name [...]] [-q]
 
  crs_stat -ls [resource_name [...]] [-q]
 
+
</source>
 
 
 
위 옵션 중 현재 상태를 확인할 때 쓰는 옵션은 -t
 
 
 
$ crs_stat -t
 
 
 
 
 
 
* Target  :  목표  상태
 
 
 
* State :  현재  상태
 
 
 
* Host :  작동  노드
 
 
 
 
 
 
Target  와  State  가  모두  Online 상태가  되면  정상적으로  작동하고  있는  것입니다.
 
 
 
 
   
 
   
 
+
* Target : 목표 상태
실시간으로 위와 같은  상황을  조회하려면  리눅스에서는  watch  명령을 아래와 같이 사용하면  1초에  1번씩  refresh  하여  실시간  상황을  보여줍니다.
+
* State : 현재 상태
 
+
* Host   : 작동 노드
$ watch -n 1 'crs_stat -t'
 
 
 
위  명령에서  -n  은  시간을  지정하며  1  은  1  초마다  '명령어'   반복해서 수행하라는  의미입니다
 
 
 
 
   
 
   
 +
Target  와  State  가  모두  Online 상태가  되면  정상적으로  작동 중.
  
위의  방법  말고 srvctl 이라는 명령어를 사용해서 보다 세부적으로 상태를  조회할  수도  있습니다.
+
*.실시간으로 위와 같은 상황을 조회하려면 리눅스에서는 watch 명령(1초마다 반복 실행)
 
 
$ srvctl
 
  
   
+
<source lang=shell>
 +
  watch -n 1 'crs_stat -t'
 +
</source>
  
주요  문법은  아래와  같습니다.
+
* srvctl 명령 : 보다 세부적인 내용 확인 가능
  
$srvctl status database -d <database-name> [-f][-v][-S <level>]
+
<source lang=shell>
 +
srvctl status database[/instance/service/nodeapps/asm] -d [DB명]
 +
</source>
  
$srvctl status instance -d <database-name> -i <instance-name>
+
=== DB 상태 현재 상태 확인 ===
 +
<source lang=shell>
 +
srvctl status database -d <database-name> [-f][-v][-S <level>]
 +
</source>
 +
예)  srvctl status database -d DB명 -v
  
 +
=== DB 인스턴스 상태 확인 ===
 +
<source lang=shell>
 
[<instancename-list>][-f][-v]-S <level>]  
 
[<instancename-list>][-f][-v]-S <level>]  
 +
</source>
 +
<source lang=shell>
 +
srvctl status instance -d <database-name> -i <instance-name>
 +
</source>
 +
예)  srvctl status instance -d DB명 -i rac1번인스턴스명, rac2번 인스턴스명
  
$srvctl status service -d <database-name> -s <service_name>
+
=== DB 서비스명 상태 확인 ===
 
+
* [<service-namelist>][-f][-v][-S <level>]  
[<service-namelist>][-f][-v][-S <level>]  
+
<source lang=shell>
 
+
srvctl status service -d <database-name> -s <service_name>  
$srvctl status nodeapps [-n <node-name>]
+
</source>
 
 
$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  명령을  사용하며  중단을  시키는  순서는 
+
=== DB 노드APP 별 상태 확인 ===
 +
<source lang=shell>
 +
srvctl status nodeapps [-n <node-name>]
 +
</source>
 +
예) srvctl status nodeapps -n rac1번 노드명
  
Instance  --> asm (asm  으로  구성되었을  경우)  --> application  순서입니다. 
+
=== ASM 상태 확인 ===
 +
<source lang=shell>
 +
srcvtl status asm -n <node_name>
 +
</source>
  
주요  명령어를  먼저  살펴보겠습니다.
+
--------------
  
   
+
== RAC DB 종료 ==
 +
{{고지상자
 +
|제목=" RAC는 중단 순서가 중요. "
 +
|내용=*srvctl 명령을  사용하며  중단을  시키는  순서는 
 +
인스턴스  -->  ASM(ASM 구성시)  --> application  순서   
 +
}}
  
$srvctl   stop  database -d <database-name> [-o <stop-options>]
+
* 정지 명령어 : srvctl  
  
 +
=== 데이터베이스 정지 ===
 +
<source lang=shell>
 +
srvctl stop database -d DB명  [-o <stop-options: immediate/abort/nomount/.. >]
 
[-c <connect-string> | -q]  
 
[-c <connect-string> | -q]  
 +
</source>
  
$srvctl  stop   instance -d <database-name> -i <instance-name>
+
=== 인스턴스 정지 ===
 +
예)  srvctl  stop instance -d DB명 -i rac1번인스턴스명
 +
(1번 인스턴스만 정지, 2번 인스턴스는 작동중..)
  
 +
<source lang=shell>
 +
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>
  
$srvctl   stop   service -d <database-name> [-s <service-name> [, <service-namelist>]]
+
=== 서비스 정지 ===
 
+
<source lang=shell>
 +
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>
  
$srvctl   stop   nodeapps -n <node-name>  
+
=== 노드 정지 ===
 
+
<source lang=shell>
$srvctl    stop    asm -n <node_name> [-i ][-o <start_option>
+
srvctl stop nodeapps -n <node-name>  
 
+
</source>
 
 
 
위  명령을  사용하여  아래와  같이  종료하면  됩니다.
 
 
 
[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  된  것이  확인됩니다.  이제  나머지  구성 요소들을  종료하면  됩니다.
 
  
 +
=== ASM 정지 ===
 +
<source lang=shell>
 +
srvctl stop asm -n <node_name> [-i ][-o <start_option>
 +
</source>
 
   
 
   
 +
----------------------
  
[oracle@rac2 ~]$ srvctl  stop nodeapps -n  rac1
+
==== RAC 정지 확인 명령어 ====
 
 
[oracle@rac2 ~]$ srvctl  stop nodeapps -n  rac2
 
  
   
+
<source lang=shell>
 +
  crs_stat -t 
 +
</source>
  
모두 정상적으로 OFFLINE 것이 확인됩니다.  
+
* 인스턴스1이 종료 확인.
 +
그러나 Database는 아직 중단이 되지  않음.
 +
인스턴스2번 운영 중임.
  
 +
* 인스턴스2번 정지
 +
<source lang=shell>
 +
srvctl  stop instance -d RAC -i rac2
 +
</source>
 
   
 
   
 +
모든  Instance  와  Database 가  OFFLINE 확인. 
  
작업을  한번에  해  주는  명령어가  crs_stop -all 입니다.
+
<source lang=shell>
 +
  crs_stat -t  
 +
</source>
  
위와  같이  한  단계씩  수동으로  종료할  수도  있고  crs_stop  -all  명령을  이용해서  한꺼번에  자동으로  종료시킬  수도  있습니다.
+
이후 노드APP 종료
  
   
+
<source lang=shell>
 +
  srvctl  stop nodeapps -n  rac1
 +
</source>
  
 +
<source lang=shell>
 +
srvctl  stop nodeapps -n  rac2
 +
</source>
 
   
 
   
 +
모두  정상적으로  OFFLINE  확인.
  
   
+
==== CRS 전체 정지 명령 ====
 +
* root 나 grid 권한으로
 +
<source lang=shell>
 +
crs_stop -all 
 +
</source>
  
3. RAC  시작하기
+
위와  같이  한  단계씩  수동으로  종료할  수도  있고 
 +
crs_stop  -all  명령을  이용해서  한꺼번에  자동으로  종료시킬  수도  있습니다.
  
앞에서  잠시  언급한  대로  시작하는  순서는  중단  순서와  반대입니다.
 
  
즉  application --> ASM (ASM  일경우) --> Instance  순서로  시작하면  됩니다.
+
----------------------
  
종료할  때와  마찬가지로  srvctl  명령으로  시작합니다.
+
== RAC DB 시작 ==
 +
{{고지상자
 +
|제목= " 시작하는  순서는  중단  순서와  반대."
 +
|내용=#application --> ASM (ASM  일경우) --> Instance  순서로  시작.
 +
#종료할  때와  마찬가지로  srvctl  명령으로  시작합니다.
 +
}}
 +
==== 시작 명령어 ====
 +
<source lang=shell>
 +
srvctl start database -d <database-name> [-o <start-options>][-c <connect-string> | -q]
 +
</source>
  
주요  명령어를  먼저  살펴  보겠습니다.
+
<source lang=shell>
 
+
srvctl start instance -d <database-name> -i <instance-name> [,<instance-name-list>]
 
 
 
$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]  
 
[-o <start-option>][-c <connect -string> | -q]  
 +
</source>
  
$srvctl start service -d <database-name> [-s <service-name> [, <service-namelist>]]
+
<source lang=shell>
 +
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]  
 +
</source>
  
$srvctl start nodeapps -n <node-name>  
+
<source lang=shell>
 
+
srvctl start nodeapps -n <node-name>  
$srvctl start asm -n <node_name> [-i ][-o <start_options>]
 
  
+
<source lang=shell>
 +
srvctl start asm -n <node_name> [-i ][-o <start_options>]
 +
</source>
  
$ crs_stat -t
+
<source lang=shell>
 +
crs_stat -t
 +
</source>
  
 
현재 상태는 모두 offline 입니다.
 
현재 상태는 모두 offline 입니다.
 
 
  
 
먼저 node application 부터 시작합니다.
 
먼저 node application 부터 시작합니다.
  
[oracle@rac2 ~]$ srvctl   start   nodeapps   -n   rac1
+
==== node 어플리케이션 시작 ====
 
+
<source lang=shell>
 +
srvctl start nodeapps -n rac1
 +
</source>
 
   
 
   
 
 
rac1  에서  application  이  실행  된  것을  확인  할  수  있습니다.
 
rac1  에서  application  이  실행  된  것을  확인  할  수  있습니다.
  
여기서  중요한  것은  vip  와  listener  입니다.
+
여기서  중요한  것은  vip  와  listener  입니다.  
 
+
나머지 rac2  에서도  application  을  시작합니다.
   
 
  
나머지  rac2 에서도  application  을  시작합니다.
+
<source lang=shell>
 +
srvctl start nodeapps -n rac2
 +
</source>
  
[oracle@rac2 ~]$ srvctl  start nodeapps -n  rac2
+
* rac1 ,rac2 에서  node application이 정상 작동 확인
  
 
  
rac1  과  rac2  에서  node application  이  모두  정상적으로  시작 된  것이  확인됩니다.
+
==== ASM 구성시 ASM 시작 ====
  
 
만약  ASM  으로  구성되었을  경우는  양쪽  노드  모두에서  아래와  같이  ASM  을  시작하면  됩니다.
 
만약  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
 
 
 
 
 
   
 
   
 +
<source lang=shell>
 +
srvctl start asm -n rac1
 +
</source>
  
위  화면에서  볼  수  있듯이  Instance  가  1  개라도  시작이  되면  Database  가  시작됨을  알  수  있습니다. 
+
<source lang=shell>
 
+
  srvctl start asm -n rac2
나머지 Instance  도  시작하겠습니다
+
</source>
 
 
[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  명령은  위  단계들을 모두  한꺼번에  모아서  실행하는  스크립트입니다.
+
<source lang=shell>
 
+
  srvctl  start instance  -d  rac  -i  rac1
모두가  정상적으로  시작되었습니다
+
</source>
  
   
+
Instance가  1 개라도  시작이  되면  Database가 시작됨.  
  
   
+
===== 나머지 Instance  도  시작 =====
  
+
<source lang=shell>
 +
srvctl start instance -d rac -i rac2
 +
</source>
  
4. RAC 자원 추가 제거하기
+
* Instance  가  모두  시작  되어도  서비스가  시작이  안  될  경우  
 +
  아래와 같이 특정 서비스 실행.
 +
<source lang=shell>
 +
  srvctl start service -d rac -s rac -i rac1
 +
</source>
  
자원의 시작과 종료 외에도 srvctl 명령을 사용하여 운영 중인 RAC 에서  여러  가지  자원을  추가할  수  있습니다.
+
==== CRS 한번에 시작 하는 명령어 ====
 +
<source lang=shell>
 +
crs_start -all  
 +
</source>
 +
* crs_start -all 명령은 단계들을 모두 한꺼번에 모아서 실행하는 스크립트.
  
아래에서 주요  문법을  살펴보겠습니다.
+
== RAC 리소스 추가/삭제 ==
  
   
+
자원의 시작과  종료  외에도  srvctl  명령을  사용하여  운영  중인  RAC  에서  여러  가지  자원을  추가.
  
$srvctl add database -d <name> -o <oracle_home> [-m <domain_name>][-p <spfile>]
+
* DB 추가
 +
<source lang=shell>
 +
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}]
 
 
[-s <start_options>][-n <db_name>]  
 
[-s <start_options>][-n <db_name>]  
 +
</source>
  
$srvctl add instance -d <name> -i <inst_name> -n <node_name>  
+
* 인스턴스 추가
 +
<source lang=shell>
 +
srvctl add instance -d <name> -i <inst_name> -n <node_name>
 +
</source>
  
$srvctl add service -d <name> -s <service_name> -r <preferred_list> [-a ]
+
* 서비스  추가
 +
<source lang=shell>
 +
srvctl add service -d <name> -s <service_name> -r <preferred_list> [-a ]
  
 
[-P <TAF_policy>][-u]  
 
[-P <TAF_policy>][-u]  
 +
</source>
  
$srvctl add noeapps -n <node_name> -o <oracle_home> [-A <name|ip>/netmask[/if1[|if2|….]]]  
+
* 노드 추가
 
+
<source lang=shell>
$srvctl add asm -n <node_name> i -o <oracle_home>
+
srvctl add noeapps -n <node_name> -o <oracle_home> [-A <name|ip>/netmask[/if1[|if2|….]]]  
 
+
</source>
 
  
+
* ASM 추가
 +
<source lang=shell>
 +
srvctl add asm -n <node_name> i -o <oracle_home>
 +
</source>
  
위 예 중에서  새로운  서비스를  추가  해  보겠습니다.
 
  
 +
==== RAC  리소스 추가 ====
 
인사  관리작업을  위한  insa  서비스를  추가하되  rac2  에서  서비스  하고  rac1  에서는  대기  상태로 생성하겠습니다.
 
인사  관리작업을  위한  insa  서비스를  추가하되  rac2  에서  서비스  하고  rac1  에서는  대기  상태로 생성하겠습니다.
  
$ srvctl add service -d rac -s insa -r rac2 -a rac1
+
예시) insa  서비스 추가 후 rac2 에서 서비스 , rac1 에서는 대기 상태로 생성
 
 
   
 
 
 
위와 같이 서비스를 생성 한  후 crs_stat -t 확인합니다.
 
  
insa 서비스가  생성은  되었으나 실행은  되지  않습니다. 명령어로  실행을  시켜야  합니다.
+
<source lang=shell>
 +
srvctl add service -d rac -s insa -r rac2 -a rac1
 +
</source>
  
 
  
아래와 같이  해당 서비스를 명령어로 실행 시킵니다.
+
위와 같이  서비스를 생성 확인
 +
<source lang=shell>
 +
crs_stat -t
 +
</source>
  
$ srvctl start service -d rac -s insa
+
* insa 서비스가  생성은  되었으나 실행은  되지  않음. 
  
   
+
* 해당 서비스를  명령어로  실행.
 +
<source lang=shell>
 +
srvctl start service -d rac -s insa
 +
</source>
  
정상적으로  잘  실행  되는  것을  확인 할  수  있습니다.
+
* 정상적으로  잘  실행  되는  확인
  
 
srvctl  명령어를  이용해서  기존에  존재하는  자원을  제거  할  수도  있습니다.
 
srvctl  명령어를  이용해서  기존에  존재하는  자원을  제거  할  수도  있습니다.
  
 
   
 
   
 
 
주요  명령어는  아래와  같습니다
 
주요  명령어는  아래와  같습니다
 +
<source lang=shell>
 +
srvctl remove database -d <database-name>
 +
</source>
  
$ srvctl remove database -d <database-name>  
+
<source lang=shell>
 
+
srvctl remove database -d <database-name> [-i <instance-name>]  
$ srvctl remove database -d <database-name> [-i <instance-name>]  
+
</source>
 
+
<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>
 
   
 
   
 +
==== RAC  리소스 삭제 ====
  
위에서  생성했던  insa  서비스를  제거해  보겠습니다.
+
* insa  서비스 중지 후
 
+
<source lang=shell>
$ srvctl remove service -d rac -s insa
+
srvctl stop service -d rac -s insa
 
+
</source>
$ srvctl stop service -d rac -s insa
 
 
 
$ srvctl remove service -d rac -s insa
 
 
 
 
  
화면을 보면 실행  중인  서비스는  먼저  중지를  하고  제거해야  됨을  알  수  있습니다.
+
* insa 서비스를 제거
 +
<source lang=shell>
 +
  srvctl remove service -d rac -s insa
 +
</source>
  
 
만약  여러  개의  인스턴스에서  실행  중인  서비스인  경우  특정  인스턴스에서만  제거를  해야  할  
 
만약  여러  개의  인스턴스에서  실행  중인  서비스인  경우  특정  인스턴스에서만  제거를  해야  할  
 +
경우 -i  옵션을  함께  사용
  
경우에는 아래와  같이  -i  옵션을  함께  사용하면  됩니다.
+
<source lang=shell>
 
+
  srvctl remove service -d rac -s insa -i rac1
$ srvctl remove service -d rac -s insa -i rac1
+
</source>
 
 
 
 
 
 
 
 
 
 
 
5. srvctl  명령을  사용하여  rac service  관련  설정  변경하기
 
 
 
srvctl modify  라는  명령을  사용하여  현재  설정되어  있는  값을  변경할  수  있습니다.
 
 
 
 
 
 
srvctl    modify    database  Database  와  관련된  설정을  변경할  수  있습니다.
 
 
 
srvctl    modify    instance  Instance  와  관련된  설정을  변경할  수  있습니다.
 
  
srvctl   modify    service Service 관련된  설정을 변경할 있습니다.
+
==== srvctl  명령을 사용하여 rac service 관련 설정 변경 ====
  
srvctl   modify   nodeapps node application 관련된 설정을 변경할 있습니다.
+
srvctl modify  명령 사용하여 현재 설정되어 있는 변경
  
   
+
srvctl    modify    database -> Database  와  관련된  설정을  변경할  수  있습니다.
 +
srvctl    modify    instance  -> Instance  와  관련된  설정을  변경할  수  있습니다.
 +
srvctl    modify    service  -> Service  와  관련된  설정을  변경할  수  있습니다.
 +
srvctl    modify    nodeapps  -> node application  과  관련된  설정을  변경할  수  있습니다.
  
 
1) srvctl    modify    database
 
1) srvctl    modify    database
  
 +
<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]  
  
 
[-p spfile] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}] [-s start_options]  
 
[-p spfile] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}] [-s start_options]  
 
 
[-y {AUTOMATIC | MANUAL}]
 
[-y {AUTOMATIC | MANUAL}]
 
+
</source>
 
   
 
   
 
+
* 주요  옵션
위  명령의  주요  옵션의  의미는  아래와  같습니다
 
  
 
-d db_unique_name      유일한(Unique) DB  이름을  지정합니다.  
 
-d db_unique_name      유일한(Unique) DB  이름을  지정합니다.  
 
 
-n db_name                DB  이름을  지정합니다.
 
-n db_name                DB  이름을  지정합니다.
 
 
-o oracle_home            Cluster database  용  Oracle home  을  지정합니다.
 
-o oracle_home            Cluster database  용  Oracle home  을  지정합니다.
 
 
-m domain_name          Cluster database  용  domain  명을  지정합니다.
 
-m domain_name          Cluster database  용  domain  명을  지정합니다.
 
 
-p spfile                      Cluster database  용  spfile  을  지정합니다.
 
-p spfile                      Cluster database  용  spfile  을  지정합니다.
 
 
-r  role [PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY]    Database의  역할을  지정합니다.
 
-r  role [PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY]    Database의  역할을  지정합니다.
 
 
(primary , physical standby , logical standby)
 
(primary , physical standby , logical standby)
 
 
-s start_options              database  가  Startup  될  때  option  을  지정합니다
 
-s start_options              database  가  Startup  될  때  option  을  지정합니다
 
 
-y                                Database  관리정책을  지정합니다.  
 
-y                                Database  관리정책을  지정합니다.  
 
 
값으로는  automatic  과  manual  을  사용합니다
 
값으로는  automatic  과  manual  을  사용합니다
 
 
-h                                도움말을  출력합니다.
 
-h                                도움말을  출력합니다.
  
   
+
  2) srvctl    modify    instance
 
 
 
 
 
2) srvctl    modify    instance
 
  
 +
<source lang=shell>
 
srvctl    modify    instance    -d    db_unique_name    -i    inst_name  
 
srvctl    modify    instance    -d    db_unique_name    -i    inst_name  
  
 
{-n node_name | -s asm_instance_name | -r}
 
{-n node_name | -s asm_instance_name | -r}
 +
</source>
  
+
* 주요  옵션
 
 
 
 
 
위  명령의  주요  옵션의  의미는  아래와  같습니다.
 
  
 
d db_unique_name              database Unique name  을  설정합니다.
 
d db_unique_name              database Unique name  을  설정합니다.
 
 
-i inst_name                        Database instance name  을  설정합니다.
 
-i inst_name                        Database instance name  을  설정합니다.
 
 
-n node_name                    Node name  을  지정합니다.
 
-n node_name                    Node name  을  지정합니다.
 
 
-s asm_instance_name        Database instance  에서  사용하는  ASM instance name  을  지정합니다
 
-s asm_instance_name        Database instance  에서  사용하는  ASM instance name  을  지정합니다
 
 
-r                                      Database instance  에서  사용하는  ASM instance name  을  제거합니다
 
-r                                      Database instance  에서  사용하는  ASM instance name  을  제거합니다
 
 
 
 
 
 
   
 
   
  
842번째 줄: 401번째 줄:
  
 
이  명령을  사용하여  서비스  중인  노드들의  설정을  변경할  수  있습니다.   
 
이  명령을  사용하여  서비스  중인  노드들의  설정을  변경할  수  있습니다.   
 
 
그러나  이  명령은  아래와 같이  몇  가지  주의  사항이  있습니다.
 
그러나  이  명령은  아래와 같이  몇  가지  주의  사항이  있습니다.
  
 
-  새로운  변경  사항이  생길  때  기존  운영중인  서비스에는  반영이  되지  않습니다.
 
-  새로운  변경  사항이  생길  때  기존  운영중인  서비스에는  반영이  되지  않습니다.
 
 
즉  변경사항을  운영중인  서비스에  적용하려면  기존  서비스를  중단  한  후  새로  시작해야  합니다.
 
즉  변경사항을  운영중인  서비스에  적용하려면  기존  서비스를  중단  한  후  새로  시작해야  합니다.
 
 
또한  운영중인  서비스의  설정  값은  사용량이  많을  때는  변경하지  않을  것을  권장합니다.
 
또한  운영중인  서비스의  설정  값은  사용량이  많을  때는  변경하지  않을  것을  권장합니다.
 
 
변경  명령은  아래와  같습니다.
 
변경  명령은  아래와  같습니다.
  
   
+
<source lang=shell>
 
+
  srvctl    modify    service    -d    db_unique_name    -s    service_name    -i    old_inst_name
srvctl    modify    service    -d    db_unique_name    -s    service_name    -i    old_inst_name
 
  
 
-t    new_inst_name [-f]
 
-t    new_inst_name [-f]
 +
</source>
  
 
  
위  명령어의  주요  옵션은  아래와  같습니다
+
* 주요  옵션
  
 
-d db_unique_name          Unique database name  을  설정합니다.
 
-d db_unique_name          Unique database name  을  설정합니다.
 
 
-s service_name              Service name 을  지정합니다.
 
-s service_name              Service name 을  지정합니다.
 
 
-i old_inst_name              현재  동작중인  Instance name  을  지정합니다.
 
-i old_inst_name              현재  동작중인  Instance name  을  지정합니다.
 
 
-t new_inst_name            새롭게  서비스  할  Instance name  을  지정합니다.
 
-t new_inst_name            새롭게  서비스  할  Instance name  을  지정합니다.
 
 
-f                                  서비스를  중단하고  재  위치  시킬  때  현재  접속을  모두  강제로  종료합니다
 
-f                                  서비스를  중단하고  재  위치  시킬  때  현재  접속을  모두  강제로  종료합니다
  
 
 
 
  
 
4) srvctl    modify    nodeapps
 
4) srvctl    modify    nodeapps
  
 
이  명령은  Oracle home  이  변경되었거나  vip  가  변경되었을  경우  사용합니다.
 
이  명령은  Oracle home  이  변경되었거나  vip  가  변경되었을  경우  사용합니다.
 
+
<source lang=shell>
 
srvctl modify nodeapps -n node_name [-o oracle_home] [-A new_vip_address]
 
srvctl modify nodeapps -n node_name [-o oracle_home] [-A new_vip_address]
 
+
</source>
 
   
 
   
  
888번째 줄: 435번째 줄:
  
 
-n node_name                Node name 을  지정합니다.
 
-n node_name                Node name 을  지정합니다.
 
 
-o oracle_home              새롭게  변경  될  Oracle home  을  지정합니다.  
 
-o oracle_home              새롭게  변경  될  Oracle home  을  지정합니다.  
 
 
-A new_vip_address      새롭게  변경  될 VIP address (name|ip/netmask[/if1[|if2|...]])를  지정합니다.
 
-A new_vip_address      새롭게  변경  될 VIP address (name|ip/netmask[/if1[|if2|...]])를  지정합니다.
  
 
   
 
   
 
+
==== Service  재배치 하기 ====
 
 
 
 
 
 
6. Service  재배치 하기
 
  
 
SERVICE:  RAC 안에서 제공해주는 업무
 
SERVICE:  RAC 안에서 제공해주는 업무
  
이  명령을  사용하여  현재  운영중인  서비스들의  인스턴스를 변경할  수  있습니다.
+
이  명령을  사용하여  현재  운영중인  서비스들의  인스턴스 변경
  
 
예를  들어  인사관리를  위한  insa  서비스가  기존에  rac1  에서  서비스  중이었는데   
 
예를  들어  인사관리를  위한  insa  서비스가  기존에  rac1  에서  서비스  중이었는데   
 +
rac1  을  패치하기 위해서  서비스를  rac2  로  이동해야  할  경우  등에  사용하는  명령.
  
rac1  을  패치하기 위해서  서비스를  rac2  로  이동해야  할  경우  등에  사용하는  명령입니다.
+
<source lang=shell>
 
+
  srvctl    relocate    service    -d db_unique_name    -s    service_name    -i old_inst_name
   
 
 
 
srvctl    relocate    service    -d db_unique_name    -s    service_name    -i old_inst_name
 
  
 
-t new_inst_name [-f]  
 
-t new_inst_name [-f]  
 
+
</source>
 
   
 
   
  
위  명령의  주요  옵션은  아래와  같습니다.
+
* 주요  옵션
 
 
 
  
 
-d db_unique_name          Unique database name  을  지정합니다.
 
-d db_unique_name          Unique database name  을  지정합니다.
 
 
-s service_name              Service name 을  지정합니다.
 
-s service_name              Service name 을  지정합니다.
 
 
-i old_inst_name              현재  서비스  중인  instance name  을  지정합니다.
 
-i old_inst_name              현재  서비스  중인  instance name  을  지정합니다.
 
 
-t new_inst_name            새로  변경할  instance name  을  지정합니다.
 
-t new_inst_name            새로  변경할  instance name  을  지정합니다.
 
 
-f                                  서비스  재배치를  할  때  현재  접속  중인  세션을  모두  강제  종료  시킵니다.
 
-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
 
 
 
 
 
   
 
   
  
 +
예시)
 +
인사관리를  위한  insa  서비스를  rac1  instance  에  생성한  후  이  명령을  사용해서  rac2  instance  로 변경.
  
 +
<source lang=shell>
 +
srvctl add service -d rac -s insa -r rac1 -a rac2
 +
</source>
  
   
+
<source lang=shell>
 
+
  srvctl start service -d rac -s insa
 
+
</source>
  
   
+
insa 서비스가  rac1  에서  작동하는 것이  확인.
 +
확인한  rac1  에서  동작  중인  insa  서비스를  rac2  로  이동.
  
 +
<source lang=shell>
 +
srvctl relocate service -d rac -s insa -i rac1 -t rac2
 +
</source>
 
   
 
   
  
7. CRS 자원의 일시적인 활성화 / 비활성화 설정하기
+
* 클라이언트(PC)  에서  tnsnames.ora  파일을  수정해서 insa 서비스에 접속한 instance name  을 확인.
 
+
*  pc  에서  서버로  접속하여 확인.
   
 
  
주요 명령은 아래와  같습니다.
+
<source lang=shell>
 +
  srvctl relocate service -d rac -s insa -i rac2 -t rac1
 +
  </source>
  
- 활성화  하기
+
==== CRS  자원의  일시적인 활성화  /  비활성화  설정 ====
 +
* 주요  명령
  
$ srvctl enable database -d <database-name>  
+
=====  활성화  하기=====
 +
<source lang=shell>
 +
srvctl enable database -d <database-name>
 +
</source>
  
$ srvctl enable instance -d <database-name> -i <instance-name> [,<instnacnename-list>]  
+
<source lang=shell>
 +
srvctl enable instance -d <database-name> -i <instance-name> [,<instnacnename-list>]  
 +
</source>
  
$ srvctl enable service -d <database-name> -s <service-name>][,<servicename-list>]
+
<source lang=shell>
 +
srvctl enable service -d <database-name> -s <service-name>][,<servicename-list>]
  
 
[-i <instance-name>]
 
[-i <instance-name>]
 +
</source>
  
+
===== 비활성화  하기 =====
 
 
비활성화  하기
 
 
 
$ 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>]
+
<source lang=shell>
 +
srvctl disable database -d <database-name>
 +
</source>
 +
<source lang=shell>
 +
srvctl disable instance -d <database-name> -i <instnace-name> [,<instancename-list>]
 +
</source>
 +
<source lang=shell>
 +
srvctl disable service -d <database-name> -s <service-name>][,<service-name-list>]
  
 
[-i <instance-name>]
 
[-i <instance-name>]
 
+
</source>
 
   
 
   
 +
위  명령을  사용하여  insa  서비스를  비활성화  시킨  후  접속  테스트.
  
위  명령을  사용하여  insa  서비스를 비활성화  시킨  후  접속  테스트를  해  보겠습니다.
+
<source lang=shell>
 
+
  srv disable service -d rac -s insa
$ srv disable service -d rac -s insa
+
</source>
 
+
<source lang=shell>
$ srvctl stop service -d rac -s insa
+
srvctl stop service -d rac -s insa
 
+
</source>
$ srvctl disable service -d rac -s insa
+
<source lang=shell>
 +
srvctl disable service -d rac -s insa
 +
</source>
  
   
+
실행중인 서비스는  사용  안함으로  변경할  수  없어  중단 후 사용  안함으로  변경.
  
위와 같이 실행중인 서비스는 사용 함으로 변경할  수  없어서  중단  후  사용  안  함으로  변경합니다.
+
먼저 서비스가 중단되기 전에 접속해 있던 세션부터 확인.
  
   
+
새로 접속을  시도.
 +
에러가  발생합니다.
 +
insa service  를  활성화  한  후  접속  테스트.
 +
<source lang=shell>
 +
srvctl enable service -d rac -s insa
 +
</source>
 +
여전히  접속이  안됨을  알 수  있습니다.
  
이제 client 에서 insa  서비스로  접속해  있던  사용자  창에서  조회를  해  보고  새로  접속을  시도  해보겠습니다.
+
현재 상태를 조회
 +
<source lang=shell>
 +
crs_stat -t  
 +
</source>
  
먼저 서비스가 중단되기 전에 접속해 있던 세션부터 확인합니다.
+
화면을 보면 service enable 해도 여전히  service  는  offline  상태임을  알  수  있음.
  
   
+
해당  서비스를  다시  사용하려면  service  를  start  해야  함 .
  
   
+
<source lang=shell>
 +
  srvctl start service -d rac -s insa
 +
</source>
  
 +
==== rac 관련 로그 경로 및 내용 확인 ====
  
 +
- ORA_CRS_HOME/crs/log : CRS resources  와  관련된  주요  내용이  저장.
  
+
- ORA_CRS_HOME/crs/init : CRS daemon  이  시작될  때부터  관련  내용을  기록.  
 
 
 
 
 
이번에는  새로  접속을  시도합니다.
 
 
 
 
 
 
 
 
 
 
 
 
 
당연히  에러가  발생합니다.
 
 
 
이번에는  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  시작  관련된  장애  내용  등을  확인  할  경우  유용합니다.
 
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  관련  내용을  저장하고  있습니다.
 
 
 
-  $ORA_CRS_HOME/evm/log  :  Event  Volume  Manager  (EVM)  데몬과  evmlogger  데몬  관련  로그파일입니다.
 
  
- $ORA_CRS_HOME/evm/init : EVM  데몬과  관련된  PID  와  lock  file  입니다.
+
Core Dump 관련 내용을 저장.
  
파일에 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]]
 
 
 
 
 
 
 
 
공유하기
 
신고하기
 
첫 댓글을 남겨보세요
 
로딩 중
 
이전글
 
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 하둡 분산 파일 시스템
 
김성율
 
맨위로
 

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.

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