행위

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

DB CAFE

(RAC DB 시작 명령)
(RAC 리소스 추가/삭제)
257번째 줄: 257번째 줄:
 
* crs_start  -all  명령은  위  단계들을 모두  한꺼번에  모아서  실행하는  스크립트.
 
* crs_start  -all  명령은  위  단계들을 모두  한꺼번에  모아서  실행하는  스크립트.
  
=== RAC  리소스 추가/삭제 ===
+
== RAC  리소스 추가/삭제 ==
  
 
자원의  시작과  종료  외에도  srvctl  명령을  사용하여  운영  중인  RAC  에서  여러  가지  자원을  추가.
 
자원의  시작과  종료  외에도  srvctl  명령을  사용하여  운영  중인  RAC  에서  여러  가지  자원을  추가.

2020년 4월 7일 (화) 18:24 판

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 종료[편집]

RAC는 중단 순서가 중요.

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 시작[편집]

시작하는 순서는 중단 순서와 반대.

 application --> ASM (ASM  일경우) --> Instance   순서로  시작.

종료할 때와 마찬가지로 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


==== 인스턴스 시작 ====
srvctl   start  instance   -d   rac   -i   rac1

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

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

3.4 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>]
===== 비활성화  하기 =====
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.

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