행위

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

DB CAFE

(새 문서: Oracle RAC 11gR2 Management 1.GRID & DB 기동 및 종료 ① 기동 - 데이터베이스 기동과 관련된 절차는 다음과 같다. 순서 작업 비고 1 CRS 기...)
 
(활성화 하기)
 
(같은 사용자의 중간 판 43개는 보이지 않습니다)
1번째 줄: 1번째 줄:
Oracle RAC 11gR2 Management
+
== RAC DB 상태(시작/종료) 확인 ==
 +
 +
=== RAC DB 상태 확인 명령 ===
  
 
+
상태 확인 명령 :
 +
crs_stat , srvctl
  
1.GRID & DB 기동 및 종료
+
<source lang=shell>
 +
crs_stat -t
 +
</source>
  
① 기동
+
<source lang=shell>
 +
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]
 +
</source>
 +
 +
* Target :  목표  상태
 +
* State  :  현재  상태
 +
* Host  :  작동  노드
 +
 +
Target  와  State  가  모두  Online 상태가  되면  정상적으로  작동 중.
  
- 데이터베이스 기동과 관련된 절차는 다음과 같다.
+
*.실시간으로  위와  같은  상황을  조회하려면  리눅스에서는  watch  명령(1초마다 반복 실행)
  
순서
+
<source lang=shell>
 +
watch -n 1 'crs_stat -t'
 +
</source>
  
작업
+
* srvctl 명령 : 보다 세부적인 내용 확인 가능
  
비고
+
<source lang=shell>
 +
srvctl status database[/instance/service/nodeapps/asm] -d [DB명]
 +
</source>
  
1
+
=== DB 상태 현재 상태 확인 ===
 +
<source lang=shell>
 +
srvctl status database -d <database-name> [-f][-v][-S <level>]
 +
</source>
 +
예)  srvctl status database -d DB명 -v
  
CRS 기동
+
=== DB 인스턴스 상태 확인 ===
 +
<source lang=shell>
 +
[<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번 인스턴스명
  
CRS가 down된경우에만 실행
+
=== DB 서비스명 상태 확인 ===
 +
* [<service-namelist>][-f][-v][-S <level>]
 +
<source lang=shell>
 +
srvctl status service -d <database-name> -s <service_name>
 +
</source>
  
2
+
=== DB 노드APP 별 상태 확인 ===
 +
<source lang=shell>
 +
srvctl status nodeapps [-n <node-name>]
 +
</source>
 +
예)  srvctl status nodeapps -n rac1번 노드명
  
CRS 어플리케이션 기동
+
=== ASM 상태 확인 ===
 +
<source lang=shell>
 +
srcvtl status asm -n <node_name>
 +
</source>
  
한 노드에서 명령어 실행(수동실행시)
+
--------------
  
3
+
== RAC DB 종료 ==
 +
{{고지상자
 +
|제목=" RAC는 중단 순서가 중요. "
 +
|내용=*srvctl  명령을  사용하며  중단을  시키는  순서는 
 +
인스턴스  -->  ASM(ASM 구성시)  --> application  순서   
 +
}}
  
LISTENER 기동
+
* 정지 명령어 : srvctl
  
한 노드에서 명령어 실행(수동실행시)
+
=== 데이터베이스 정지 ===
 +
<source lang=shell>
 +
srvctl stop database -d DB명  [-o <stop-options: immediate/abort/nomount/.. >]
 +
[-c <connect-string> | -q]
 +
</source>
  
4
+
=== 인스턴스 정지 ===
 +
예)  srvctl  stop instance -d DB명 -i rac1번인스턴스명
 +
(1번 인스턴스만 정지, 2번 인스턴스는 작동중..)
  
DB 인스턴스기동
+
<source lang=shell>
 +
srvctl stop instance -d <database-name> -i <instance-name>
 +
[,<instance-namelist>][-o <stop-option>][-c <connect -string> | -q]
 +
</source>
  
한 노드에서 명령어 실행(수동실행시)
+
=== 서비스 정지 ===
 +
<source lang=shell>
 +
srvctl stop service -d <database-name> [-s <service-name> [, <service-namelist>]]
 +
[-i <instance-name][-c <connect -string> | -q][-f]
 +
</source>
  
 
+
=== 노드 정지 ===
 +
<source lang=shell>
 +
srvctl stop nodeapps -n <node-name>
 +
</source>
  
- CRS는 RAC를 구성하는 각 노드 및 각종 리소스를제어하는 프로세스이다.
+
=== ASM 정지 ===
 +
<source lang=shell>
 +
srvctl stop asm -n <node_name> [-i ][-o <start_option>
 +
</source>
 +
 +
----------------------  
  
- CRS의 기동은 root권한으로 되어야 한다.
+
==== RAC 정지 확인 명령어 ====
  
 
+
<source lang=shell>
 +
crs_stat -t 
 +
</source>
  
- 서버 재부팅 시 자동 기동된다. 아래 내용은 수동으로 기동하는 방법이다.
+
* 인스턴스1이  종료 확인.  
 +
그러나  Database는  아직 중단이  되지  않음.
 +
인스턴스2번 운영 중임.
  
 
+
* 인스턴스2번 정지
 +
<source lang=shell>
 +
srvctl  stop instance -d RAC -i rac2
 +
</source>
 +
 +
모든  Instance  와  Database 가  OFFLINE 확인. 
  
*DB 서버 각각의 노드에서 "root" 유저로 실행한다.
+
<source lang=shell>
 +
crs_stat -t 
 +
</source>
  
=>노드#1
+
이후 노드APP 종료
  
# cd /gridhome/grid/bin
+
<source lang=shell>
 +
srvctl  stop nodeapps -n  rac1
 +
</source>
  
# ./crsctl start crs
+
<source lang=shell>
 +
srvctl  stop nodeapps -n  rac2
 +
</source>
 +
 +
모두  정상적으로  OFFLINE  확인.  
  
 
+
====  CRS 전체 정지 명령 ====
 +
* root 나 grid 권한으로
 +
<source lang=shell>
 +
crs_stop -all 
 +
</source>
  
=>노드#2
+
위와  같이  한  단계씩  수동으로  종료할  수도  있고 
 +
crs_stop  -all  명령을  이용해서  한꺼번에  자동으로  종료시킬  수도  있습니다.
  
# cd /gridhome/grid/bin
 
  
# ./crsctl start crs
+
----------------------
  
 
+
== RAC DB 시작 ==
 +
{{고지상자
 +
|제목= " 시작하는  순서는  중단  순서와  반대."
 +
|내용=#application --> ASM (ASM  일경우) --> Instance  순서로  시작.
 +
#종료할  때와  마찬가지로  srvctl  명령으로  시작합니다.
 +
}}
 +
==== 시작 명령어 ====
 +
<source lang=shell>
 +
srvctl start database -d <database-name> [-o <start-options>][-c <connect-string> | -q]
 +
</source>
  
CRS의 주요 프로세스는 아래와 같으며, CRS 상태확인은 crsctl check crs 으로 가능하다.
+
<source lang=shell>
 +
srvctl start instance -d <database-name> -i <instance-name> [,<instance-name-list>]
  
$ps -ef | grep "d\.bin" | grep -v grep
+
[-o <start-option>][-c <connect -string> | -q]
 +
</source>
  
root 3866688 1 0 Jan 18 - 114:41 /gridhome/grid/bin/crsd.bin reboot
+
<source lang=shell>
 +
srvctl start service -d <database-name> [-s <service-name> [, <service-namelist>]]
  
oracle 4718796 1 0 Jan 18 - 23:25 /gridhome/grid/bin/gpnpd.bin
+
[-i <instance-name>][-o <start-option>][-c <connect -string> | -q]
 +
</source>
  
root 4849710 1 0 Jan 18 - 103:53 /gridhome/grid/bin/ohasd.bin reboot
+
<source lang=shell>
 +
srvctl start nodeapps -n <node-name>
  
oracle 6815908 1 0 Jan 18 - 1:13 /gridhome/grid/bin/mdnsd.bin
+
<source lang=shell>
 +
srvctl start asm -n <node_name> [-i ][-o <start_options>]
 +
</source>
  
oracle 7012560 1 0 Jan 18 - 42:49 /gridhome/grid/bin/evmd.bin
+
<source lang=shell>
 +
crs_stat -t
 +
</source>
  
oracle 5112196 1 0 Jan 18 - 110:59 /gridhome/grid/bin/gipcd.bin
+
현재 상태는 모두 offline 입니다.
  
oracle 5374298 5308576 1 Jan 18 - 204:38 /gridhome/grid/bin/ocssd.bin
+
먼저 node application 부터 시작합니다.
  
root 6488528 1 0 Jan 18 - 47:04 /gridhome/grid/bin/octssd.bin reboot
+
==== node 어플리케이션 시작 ====
 +
<source lang=shell>
 +
srvctl start nodeapps -n rac1
 +
</source>
 +
 +
rac1  에서  application  이  실행  된  것을  확인  할  수  있습니다.
  
root 38273316 1 3 Feb 06 - 728:28 /gridhome/grid/bin/osysmond.bin$cd $GRID_HOME/bin
+
여기서  중요한  것은  vip  와  listener  입니다.
 +
나머지  rac2  에서도  application  을  시작합니다.
  
 
+
<source lang=shell>
 +
srvctl start nodeapps -n rac2
 +
</source>
  
$crsctl check crs
+
* rac1 ,rac2  에서  node application이 정상 작동 확인
  
CRS-4638: Oracle High Availability Services is online
 
  
CRS-4537: Cluster Ready Services is online
+
==== ASM 구성시 ASM 시작 ====
  
CRS-4529: Cluster Synchronization Services is online
+
만약  ASM  으로  구성되었을  경우는  양쪽  노드  모두에서  아래와  같이  ASM  을  시작하면  됩니다.
 +
 +
<source lang=shell>
 +
srvctl start asm -n rac1
 +
</source>
  
CRS-4533: Event Manager is online
+
<source lang=shell>
 +
srvctl start asm -n rac2
 +
</source>
  
 
+
 +
 +
==== 인스턴스 시작 ====
  
② CRS Application 기동
+
<source lang=shell>
 +
srvctl  start  instance  -d  rac  -i  rac1
 +
</source>
  
- 위의 2.1.1에서 CRS기동 시 자동 기동된다. 아래내용은 수동으로 기동하는 방법이다.
+
Instance가  1 개라도  시작이  되면  Database가 시작됨.
  
- CRS를 구성하는 어플리케이션은 아래 명령어로 기동한다.
+
===== 나머지  Instance  도  시작 =====
  
 
+
<source lang=shell>
 +
srvctl start instance -d rac -i rac2
 +
</source>
  
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
+
* Instance  가  모두  시작  되어도  서비스가  시작이  안  될  경우 
 +
  아래와  같이  특정  서비스 실행.
 +
<source lang=shell>
 +
srvctl start service -d rac -s rac -i rac1
 +
</source>
  
$srvctl start nodeapps -n HOSTNAME
+
==== CRS 한번에 시작 하는 명령어 ====
 +
<source lang=shell>
 +
crs_start  -all 
 +
</source>
 +
* crs_start  -all  명령은  위  단계들을 모두  한꺼번에  모아서  실행하는  스크립트.
  
$srvctl start nodeapps -n HOSTNAME
+
== RAC  리소스 추가/삭제 ==
  
 
+
자원의  시작과  종료  외에도  srvctl  명령을  사용하여  운영  중인  RAC  에서  여러  가지  자원을  추가.
  
③ Listener 기동
+
* DB 추가
 +
<source lang=shell>
 +
srvctl add database -d <name> -o <oracle_home> [-m <domain_name>][-p <spfile>]
  
- 위의 2.1.1에서 CRS기동 시 자동 기동된다. 아래내용은 수동으로 기동하는 방법이다.
+
[-A <name|ip>/netmask][-r{PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}]
 +
[-s <start_options>][-n <db_name>]
 +
</source>
  
- LISTENER는 아래 명령어로 기동한다.
+
* 인스턴스 추가
 +
<source lang=shell>
 +
srvctl add instance -d <name> -i <inst_name> -n <node_name>
 +
</source>
  
 
+
* 서비스  추가
 +
<source lang=shell>
 +
srvctl add service -d <name> -s <service_name> -r <preferred_list> [-a ]
  
* DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
+
[-P <TAF_policy>][-u]
 +
</source>
  
$srvctl start listener -n HOSTNAME
+
* 노드 추가
 +
<source lang=shell>
 +
srvctl add noeapps -n <node_name> -o <oracle_home> [-A <name|ip>/netmask[/if1[|if2|….]]]
 +
</source>
  
$srvctl start listener -n HOSTNAME
+
* ASM 추가
 +
<source lang=shell>
 +
srvctl add asm -n <node_name> i -o <oracle_home>
 +
</source>
  
 
 
  
④ DB Instance 기동
+
==== RAC  리소스 추가 ====
 +
인사  관리작업을  위한  insa  서비스를  추가하되  rac2  에서  서비스  하고  rac1  에서는  대기  상태로 생성하겠습니다.
  
- 위의 2.1.1에서 CRS기동 시 자동 기동된다. 아래내용은 수동으로 기동하는 방법이다.
+
예시) insa  서비스  추가 후 rac2  에서  서비스  , rac1  에서는  대기  상태로 생성
  
- DB인스턴스는 아래 명령어로 기동한다.
+
<source lang=shell>
 +
srvctl add service -d rac -s insa -r rac2 -a rac1
 +
</source>
  
 
 
  
*DB 서버{노드#1}에서 "oracle" 유저로 실행한다.
+
위와  같이  서비스를  생성  한  후  확인
 +
<source lang=shell>
 +
crs_stat -t
 +
</source>
  
$srvctl start database -d G_SID
+
* insa  서비스가  생성은  되었으나 실행은  되지  않음. 
  
 
+
* 해당  서비스를  명령어로  실행.
 +
<source lang=shell>
 +
srvctl start service -d rac -s insa
 +
</source>
  
⑤ CRS Application/Listener/DB Instance확인
+
* 정상적으로  잘  실행  되는  것 확인
  
$ crsctl status res -t
+
srvctl  명령어를  이용해서  기존에  존재하는  자원을  제거  할  수도  있습니다.
  
--------------------------------------------------------------------------------
+
 +
주요  명령어는  아래와  같습니다
 +
<source lang=shell>
 +
srvctl remove database -d <database-name>
 +
</source>
  
NAME TARGET STATE SERVER STATE_DETAILS
+
<source lang=shell>
 +
srvctl remove database -d <database-name> [-i <instance-name>]
 +
</source>
 +
<source lang=shell>
 +
srvctl remove database -d <database-name> -s <service-name>
  
--------------------------------------------------------------------------------
+
[-i <instance-name>]
 +
</source>
 +
 +
==== RAC  리소스 삭제 ====
  
Local Resources
+
* insa  서비스 중지 후
 +
<source lang=shell>
 +
srvctl stop service -d rac -s insa
 +
</source>
  
--------------------------------------------------------------------------------
+
* insa  서비스를  제거
 +
<source lang=shell>
 +
srvctl remove service -d rac -s insa
 +
</source>
  
ora.TEST_ELSE.lsnr
+
만약  여러  개의  인스턴스에서  실행  중인  서비스인  경우  특정  인스턴스에서만  제거를  해야  할
 +
경우 -i  옵션을  함께  사용
  
ONLINE ONLINE hostname
+
<source lang=shell>
 +
srvctl remove service -d rac -s insa -i rac1
 +
</source>
  
ONLINE ONLINE hostname
+
==== srvctl  명령을  사용하여  rac service  관련  설정  변경 ====
  
ora.TEST_GIGA.lsnr
+
srvctl modify  명령  사용하여  현재  설정되어  있는  값  변경
  
ONLINE ONLINE hostname
+
srvctl    modify    database  -> Database  와  관련된  설정을  변경할  수  있습니다.
 +
srvctl    modify    instance  -> Instance  와  관련된  설정을  변경할  수  있습니다.
 +
srvctl    modify    service  -> Service  와  관련된  설정을  변경할  수  있습니다.
 +
srvctl    modify    nodeapps  -> node application  과  관련된  설정을  변경할  수  있습니다.
  
ONLINE ONLINE hostname
+
1) srvctl    modify    database
  
ora.TEST_1_ELSE.lsnr
+
<source lang=shell>
 +
srvctl modify database -d db_unique_name [-n db_name] [-o oracle_home] [-m domain_name]
  
ONLINE ONLINE hostname
+
[-p spfile] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}] [-s start_options]
 +
[-y {AUTOMATIC | MANUAL}]
 +
</source>
 +
 +
* 주요  옵션
  
ONLINE ONLINE hostname
+
-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                                도움말을  출력합니다.
  
ora. TEST_1_GIGA.lsnr
+
2) srvctl    modify    instance
  
ONLINE ONLINE hostname
+
<source lang=shell>
 +
srvctl    modify    instance    -d    db_unique_name    -i    inst_name
  
ONLINE ONLINE hostname
+
{-n node_name | -s asm_instance_name | -r}
 +
</source>
  
ora.gsd
+
* 주요  옵션
  
OFFLINE OFFLINE hostname
+
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  을  제거합니다
 +
  
OFFLINE OFFLINE hostname
+
3) srvctl    modify    service
  
ora.net1.network
+
이  명령을  사용하여  서비스  중인  노드들의  설정을  변경할  수  있습니다.
 +
그러나  이  명령은  아래와 같이  몇  가지  주의  사항이  있습니다.
  
ONLINE ONLINE hostname
+
-  새로운  변경  사항이  생길  때  기존  운영중인  서비스에는  반영이  되지  않습니다.
 +
즉  변경사항을  운영중인  서비스에  적용하려면  기존  서비스를  중단  한  후  새로  시작해야  합니다.
 +
또한  운영중인  서비스의  설정  값은  사용량이  많을  때는  변경하지  않을  것을  권장합니다.
 +
변경  명령은  아래와  같습니다.
  
ONLINE ONLINE hostname
+
<source lang=shell>
 +
srvctl    modify    service    -d    db_unique_name    -s    service_name    -i    old_inst_name
  
ora.ons
+
-t    new_inst_name [-f]
 +
</source>
  
ONLINE ONLINE hostname
 
  
ONLINE ONLINE hostname
+
* 주요  옵션
  
ora.registry.acfs
+
-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                                  서비스를  중단하고  재  위치  시킬  때  현재  접속을  모두  강제로  종료합니다
  
OFFLINE OFFLINE hostname
 
  
OFFLINE OFFLINE hostname
+
4) srvctl    modify    nodeapps
  
--------------------------------------------------------------------------------
+
이  명령은  Oracle home  이  변경되었거나  vip  가  변경되었을  경우  사용합니다.
 +
<source lang=shell>
 +
srvctl modify nodeapps -n node_name [-o oracle_home] [-A new_vip_address]
 +
</source>
 +
  
Cluster Resources
+
이  명령의  주요  옵션은  아래와  같습니다.
  
--------------------------------------------------------------------------------
+
-n node_name                Node name 을  지정합니다.
 +
-o oracle_home              새롭게  변경  될  Oracle home  을  지정합니다.
 +
-A new_vip_address      새롭게  변경  될 VIP address (name|ip/netmask[/if1[|if2|...]])를  지정합니다.
  
ora.test.db
+
 +
==== Service  재배치 하기 ====
  
1 ONLINE ONLINE hostname Open
+
SERVICE:  RAC 안에서 제공해주는 업무
  
2 ONLINE ONLINE hostname Open
+
이  명령을  사용하여  현재  운영중인  서비스들의  인스턴스  변경
  
ora.cvu
+
예를  들어  인사관리를  위한  insa  서비스가  기존에  rac1  에서  서비스  중이었는데 
 +
rac1  을  패치하기 위해서  서비스를  rac2  로  이동해야  할  경우  등에  사용하는  명령.
  
1 ONLINE ONLINE hostname
+
<source lang=shell>
 +
srvctl    relocate    service    -d db_unique_name    -s    service_name    -i old_inst_name
  
ora.test_1.db
+
-t new_inst_name [-f]
 +
</source>
 +
  
1 ONLINE ONLINE hostname Open
+
* 주요  옵션
  
2 ONLINE ONLINE hostname Open
+
-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                                  서비스  재배치를  할  때  현재  접속  중인  세션을  모두  강제  종료  시킵니다.
 +
  
ora.oc4j
+
예시)
 +
인사관리를  위한  insa  서비스를  rac1  instance  에  생성한  후  이  명령을  사용해서  rac2  instance  로 변경.
  
1 ONLINE ONLINE hostname
+
<source lang=shell>
 +
srvctl add service -d rac -s insa -r rac1 -a rac2
 +
</source>
  
ora.hostname.vip
+
<source lang=shell>
 +
srvctl start service -d rac -s insa
 +
</source>
  
1 ONLINE ONLINE hostname
+
insa  서비스가  rac1  에서  작동하는 것이  확인.
 +
확인한  rac1  에서  동작  중인  insa  서비스를  rac2  로  이동.
  
ora. hostname.vip
+
<source lang=shell>
 +
srvctl relocate service -d rac -s insa -i rac1 -t rac2
 +
</source>
 +
  
1 ONLINE ONLINE hostname
+
* 클라이언트(PC)  에서  tnsnames.ora  파일을  수정해서  insa  서비스에  접속한  후  instance  name  을 확인.
 +
*  pc  에서  서버로  접속하여  확인.
  
 
+
<source lang=shell>
 +
srvctl relocate service -d rac -s insa -i rac2 -t rac1
 +
</source>
  
  - 중요 resource
+
==== CRS  자원의  일시적인  활성화  /  비활성화  설정 ====
 +
* 주요  명령
  
- ora.[listener_name].lsnr -> listener의 상태를나타냄
+
=====  활성화  하기=====
 +
<source lang=shell>
 +
srvctl enable database -d <database-name>
 +
</source>
  
- ora.net1.network -> public network 상태를 나타냄
+
<source lang=shell>
 +
srvctl enable instance -d <database-name> -i <instance-name> [,<instnacnename-list>]
 +
</source>
  
- ora.[DB_name].db -> Database 상태를 나타냄
+
<source lang=shell>
 +
srvctl enable service -d <database-name> -s <service-name>][,<servicename-list>]
  
- ora.[hostname].vip -> VIP 상태를 나타냄(장애인경우 failover 상태가 됨)
+
[-i <instance-name>]
 +
</source>
  
 
+
===== 비활성화  하기 =====
  
⑥ 종료
+
<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>]
 +
</source>
 +
 +
위  명령을  사용하여  insa  서비스를  비활성화  시킨  후  접속  테스트.
  
순서
+
<source lang=shell>
 +
srv disable service -d rac -s insa
 +
</source>
 +
<source lang=shell>
 +
srvctl stop service -d rac -s insa
 +
</source>
 +
<source lang=shell>
 +
srvctl disable service -d rac -s insa
 +
</source>
  
작업
+
실행중인  서비스는  사용  안함으로  변경할  수  없어  중단 후 사용  안함으로  변경.
  
비고
+
먼저  서비스가  중단되기  전에  접속해  있던  세션부터  확인.
  
1
+
새로  접속을  시도.
 +
에러가  발생합니다.
 +
insa service  를  활성화  한  후  접속  테스트.
 +
<source lang=shell>
 +
srvctl enable service -d rac -s insa
 +
</source>
 +
여전히  접속이  안됨을  알 수  있습니다.
  
CRS 어플리케이션 종료
+
현재  상태를  조회
 +
<source lang=shell>
 +
crs_stat -t 
 +
</source>
  
한 노드에서 명령어 실행(오라클유저로)
+
위  화면을  보면  service  를  enable  해도  여전히  service  는  offline  상태임을  알  수  있음.
  
2
+
즉  해당  서비스를  다시  사용하려면  service  를  start  해야  함 .
  
LISTENER 종료
+
<source lang=shell>
 +
srvctl start service -d rac -s insa
 +
</source>
  
한 노드에서 명령어 실행(오라클유저로)
+
==== rac 관련 로그 경로 및 내용 확인 ====
  
3
+
- ORA_CRS_HOME/crs/log : CRS resources  와  관련된  주요  내용이  저장.
  
DB 인스턴스종료
+
- ORA_CRS_HOME/crs/init : CRS daemon  이  시작될  때부터  관련  내용을  기록.
  
한 노드에서 명령어 실행(오라클유저로)
+
CRS  시작  관련된  장애  내용  등을  확인  할  경우  유용합니다.
  
4
+
-  ORA_CRS_HOME/css/log  :  Cluster  Synchronization  (CSS)  데몬이  수행  하는  reconfigurations, missed check-ins,
  
CRS 종료
+
connects, disconnects  관련된  내용을  기록. 
  
양쪽 노드에서 명령어 실행(root유저로)
+
만약  CSS  데몬에  문제가  발생해서  재부팅을  할  경우  이  파일의  내용을  확인하여  시간과  내역을  찾아볼  수  있습니다.
  
5
+
- ORA_CRS_HOME/css/init : Oracle Cluster Synchronization Service daemon (OCSSd)  데몬이  장애가  발생했을  경우 
  
서버 종료
+
Core Dump  관련  내용을  저장.
  
양쪽 노드에서 명령어 실행(root유저로)
+
-  ORA_CRS_HOME/evm/log  :  Event  Volume  Manager  (EVM) 데몬과  evmlogger  데몬  관련  로그파일.
 +
-  ORA_CRS_HOME/evm/init  :  EVM  데몬과  관련된  PID  와  lock  file. 
  
 
+
이  파일에  EVM  관련된  문제가  발생  될  경우  Core Dump  도  기록.
  
⑦ CRS Application 종료
+
- ORA_CRS_HOME/srvm/log : Oracle Cluster Registry (OCR)  과  관련된  log file.
 +
- ORA_CRS_HOME/log : Oracle Clusterware  관련된  일반적  내용이  저장되는  log file. 
  
- CRS를 구성하는 어플리케이션은 아래 명령어로 종료한다.
+
  가장 일반적으로  많이  모니터링  됩니다.
  
 
+
[[Category:oracle]]
 
 
* 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
 

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.

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