이 글에서는 Oracle® Cluster Registry(OCR)와 보팅 디스크(voting disk)를 모두 잃어버렸고, 보팅 디스크의 백업이 존재하지 않는 시나리오를 다룹니다. 상당히 까다로운 상황이지만, OCR의 마지막 자동 백업을 활용하면 복구할 수 있습니다.
개요
보팅 디스크는 노드 멤버십 정보를 관리하는 파일이며, OCR은 클러스터 및 RAC(Real Application Clusters) 데이터베이스 구성 정보를 관리하는 파일입니다. Oracle Clusterware 설치 과정에서 보팅 디스크와 OCR은 공유 스토리지 볼륨에 생성됩니다.
클러스터 노드는 클러스터 그룹에서 축출(node eviction)되지 않도록 항상 보팅 디스크의 과반수에 접근할 수 있어야 합니다. 보팅 디스크는 모든 노드가 자신의 가용성을 표시하도록 보장하는 핵심 역할을 수행하며, Cluster Synchronization Services 데몬(CSSd)이 Clusterware에서 보팅 디스크와 관련된 모든 작업을 담당합니다.
OCR은 CRS(Cluster Ready Services)의 중앙 저장소 역할을 하며, Clusterware에 정의된 모든 클러스터 리소스의 메타데이터, 구성 정보, 상태 정보를 저장합니다. OCR은 항상 최신 3개의 백업 사본, 즉 4시간 전, 1일 전, 1주일 전 백업을 보관합니다.
OCR에 저장되는 정보
- 클러스터에 속한 노드를 포함한 노드 멤버십 정보
- 소프트웨어의 현재 활성 버전
- 보팅 디스크의 위치
- 서버 풀(server pools)
- RAC 데이터베이스, 리스너, 인스턴스 등 클러스터 리소스의 상태 및 기타 Oracle 컴포넌트 서비스 정보
보팅 디스크에 저장되는 정보
보팅 디스크에는 정적 데이터와 동적 데이터가 모두 저장됩니다.
- 정적 데이터: 클러스터 내 모든 노드에 대한 정보를 유지합니다.
- 동적 데이터: 디스크 하트비트 메커니즘에 대한 정보를 유지합니다.
또한 보팅 디스크는 현재 클러스터에 속한 노드, 참여 중이거나 탈퇴하는 노드 등 클러스터 노드 멤버십에 대한 세부 정보도 관리합니다.
보팅 디스크의 저장 위치
보팅 디스크는 운영 중 클러스터의 모든 멤버 노드가 접근하는 공유 디스크입니다. 따라서 Oracle ASM(Automatic Storage Management) 또는 인증된 클러스터 파일 시스템과 같이 공유 접근이 가능한 스토리지에 저장해야 합니다.
환경 정보
이 글의 예제 시나리오는 다음 환경을 기준으로 합니다:
- Oracle 버전: Release 11.2.0.4.0
- 운영체제: Sun OS 5.11 11.2
- 클러스터: RAC (2노드)
발생한 오류
다음과 같은 오류를 해결해 보겠습니다:
cssd(3980)]CRS-1714:Unable to discover any voting files,
retrying discovery in 15 seconds; Details at (:CSSNM00070:)
in /oracle/11.2.0/grid/log/testdb01/cssd/ocssd.log
클러스터를 기동하려면 OCR과 보팅 디스크에 접근할 수 있어야 하지만, 해당 리소스에 접근할 수 없기 때문에 클러스터가 다운된 상태로 유지됩니다.
보팅 디스크 복구 절차
다음 단계에 따라 OCR 백업으로부터 보팅 디스크를 복구합니다.
1단계: CRS 자동 시작 서비스 비활성화
자동 재시작을 비활성화하려면 다음 명령을 실행합니다:
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl disable crs
2단계: 노드 재시작
다음 명령으로 노드를 재시작합니다:
root@testdb01:/oracle/11.2.0/grid/bin# init 6
3단계: CRS 서비스가 시작되지 않았는지 확인
재부팅 후에는 앞서 비활성화했기 때문에 CRS 서비스가 실행 중이 아니어야 합니다. 다음 명령으로 CRS 서비스의 시작 여부를 확인합니다:
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl check crs
4단계: 보팅 디스크 헤더 초기화
디스크 그룹을 생성하기 전에, 장애가 발생한 기존 보팅 디스크의 헤더를 초기화하여 재사용할 수 있도록 다음 명령을 실행합니다:
root@testdb01:/dev/rdsk# dd if=/dev/zero
of=/dev/rdsk/c0t60002AC0000000000000001900008265d0s0 bs=1024k count=1000
5단계: 클러스터 시작
다음 명령으로 클러스터를 독점(exclusive) 모드로 시작합니다:
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl start crs -excl
6단계: PFILE로 ASM 시작
다음 명령으로 PFILE을 사용하여 ASM을 시작합니다:
root@testdb01:/oracle/11.2.0/grid/bin# su - grid
-bash-4.1$sqlplus / as sysasm
startup pfile='location of pfile';
ASM instance started
Total System Global Area 1136082944 bytes
Fixed Size 2189048 bytes
Variable Size 1108728072 bytes
ASM Cache 25165824 bytes
ORA-15032: not all alterations performed
ORA-15017: diskgroup "OCRDATA" cannot be mounted
ORA-15063: ASM discovered an insufficient number of disks for diskgroup
"OCRDATA"
7단계: 디스크 그룹 생성
다음 명령으로 디스크 그룹을 생성합니다:
SQL> create diskgroup OCRDATA external redundancy disk
'/dev/rdsk/c0t60002AC0000000000000001900008265d0s0' attribute 'COMPATIBLE.ASM'='11.2';
Diskgroup created
8단계: SPFILE 생성 후 ASM 재시작
다음 명령으로 ASM의 PFILE로부터 SPFILE을 생성하고, ASM을 재시작하여 보팅 디스크에서 SPFILE을 읽도록 구성합니다:
SQL> create spfile='+OCRDATA' from pfile='/home/grid/initASM1.ora';
File created.
SQL> shutdown
ASM diskgroups volume disabled
ASM diskgroups dismounted
ASM instance shutdown
SQL> startup
ASM instance started
Total System Global Area 1136082944 bytes
Fixed Size 2189048 bytes
Variable Size 1108728072 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
ASM diskgroups volume enabled
SQL> exit
9단계: 최신 OCR 백업 복원
다음 명령으로 OCR 백업을 복원합니다:
root@testdb01:/oracle/11.2.0/grid/bin# ./ocrconfig -restore
/oracle/11.2.0/grid/cdata/testdb01-kl/day.ocr ------(Last Auto Backup of OCR from default location)
10단계: 보팅 디스크 교체
다음 명령으로 보팅 디스크를 교체합니다:
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl replace votedisk +OCRDATA
Successful addition of voting disk b1e7c2fbeb754f82bf09a991b2cf4441.
Successfully replaced voting disk group with +OCRDATA.
CRS-4266: Voting file(s) successfully replaced
root@testdb01:/oracle/11.2.0/grid/bin#
11단계: CRS 자동 시작 서비스 활성화
다음 명령으로 CRS 자동 시작 서비스를 활성화하고, 모든 클러스터 서비스가 온라인 상태인지 확인합니다:
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl enable crs
CRS-4622: Oracle High Availability Services autostart is enabled.
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl start cluster
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl check crs
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl stop crs -f
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl start crs
12단계: OCR 디스크 상태 교차 확인
다음 명령으로 OCR 디스크 상태를 교차 검증합니다:
root@testdb01:/oracle/11.2.0/grid/bin# ./ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 2816
Available space (kbytes) : 259304
ID : 1103197739
Device/File Name : +OCRDATA
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check succeeded
13단계: 보팅 디스크 세부 정보 확인
다음 명령으로 보팅 디스크를 검증합니다:
root@testdb01:/oracle/11.2.0/grid/bin# ./crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE b1e7c2fbeb754f82bf09a991b2cf4441
(/dev/rdsk/c0t60002AC0000000000000001900008265d0s0) [OCRDATA]
Located 1 voting disk(s).
14단계: CRS 서비스 상태 확인
다음 명령으로 CRS 서비스가 정상적으로 실행 중인지 확인합니다:
root@testdb01:/oracle/11.2.0/grid/bin# ./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....VE.dg ora....up.type ONLINE ONLINE testdb01...db01
ora....XK.dg ora....up.type ONLINE ONLINE testdb01...db01
ora....XK.dg ora....up.type ONLINE ONLINE testdb01...db01
ora....ER.lsnr ora....er.type ONLINE ONLINE testdb01...db01
ora....N1.lsnr ora....er.type ONLINE ONLINE testdb01...db01
ora....TA.dg ora....up.type ONLINE ONLINE testdb01...db01
ora.REDO.dg ora....up.type ONLINE ONLINE testdb01...db01
ora.asm ora.asm.type ONLINE ONLINE testdb01...db01
ora.cvu ora.cvu.type ONLINE ONLINE testdb01...db01
ora.gsd ora.gsd.type OFFLINE OFFLINE
ora....network ora....rk.type ONLINE ONLINE testdb01...db01
ora.oc4j ora.oc4j.type ONLINE ONLINE testdb01...db01
ora.ons ora.ons.type ONLINE ONLINE testdb01...db01
ora....ry.acfs ora....fs.type ONLINE ONLINE testdb01...db01
ora.scan1.vip ora....ip.type ONLINE ONLINE testdb01...db01
ora....SM1.asm application ONLINE ONLINE testdb01...db01
ora....01.lsnr application ONLINE ONLINE testdb01...db01
ora....b01.gsd application OFFLINE OFFLINE
ora....b01.ons application ONLINE ONLINE testdb01...db01
ora....b01.vip ora....t1.type ONLINE ONLINE testdb01...db01
ora....b02.vip ora....t1.type ONLINE ONLINE testdb01...db01
15단계: ASM 디스크 그룹 확인
다음 명령으로 ASM 디스크 그룹을 확인합니다:
root@testdb01:/oracle/11.2.0/grid/bin# su - grid
Oracle Corporation SunOS 5.11 11.2 March 2015
-bash-4.1$ asmcmd
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB
Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 1023991 1023549 0 1023549 0
N ARCHIVE/
MOUNTED EXTERN N 512 4096 1048576 1023991 1023881 0 1023881 0
N INDEX1/
MOUNTED EXTERN N 512 4096 1048576 51191 50795 0 50795 0
Y OCRDATA/
MOUNTED EXTERN N 512 4096 1048576 1023991 818013 0 818013 0
N ORADATA1/
MOUNTED EXTERN N 512 4096 1048576 511991 479085 0 479085 0
N REDO/
결론
이 글에서 소개한 단계들은 RAC 환경에서 장애가 발생한 보팅 디스크를 복구하는 방법을 보여줍니다. 이 절차를 활용하면 OCR 백업을 통해 보팅 디스크 백업 누락 문제를 극복할 수 있으며, 복구가 성공하면 해당 디스크를 그대로 재사용할 수 있습니다.
이 솔루션이 정상적으로 동작하려면 OCR 자동 백업이 반드시 활성화되어 있어야 한다는 점을 기억하세요. OCR은 항상 기본 위치 또는 사용자가 지정한 위치에 백업을 저장합니다.
의견이나 질문이 있다면 피드백 탭을 통해 남겨주세요.
전문가의 관리와 구성으로 환경 최적화
Rackspace의 애플리케이션 서비스 (RAS) 전문가들은 폭넓은 애플리케이션 포트폴리오 전반에서 다음과 같은 전문 및 관리형 서비스를 제공합니다:
- e커머스 및 디지털 경험 플랫폼
- ERP(Enterprise Resource Planning)
- 비즈니스 인텔리전스
- Salesforce CRM(Customer Relationship Management)
- 데이터베이스
- 이메일 호스팅 및 생산성 솔루션
우리가 제공하는 가치:
- 편향 없는 전문성: 즉각적인 가치를 창출하는 역량에 집중하여 현대화 여정을 간소화하고 안내합니다.
- Fanatical Experience™: 프로세스 우선, 기술 차선(Process first. Technology second.®) 접근 방식과 전담 기술 지원을 결합하여 종합적인 솔루션을 제공합니다.
- 타의 추종을 불허하는 포트폴리오: 풍부한 클라우드 경험을 바탕으로 올바른 클라우드에 적합한 기술을 선택하고 배포할 수 있도록 지원합니다.
- 애자일한 서비스 제공: 고객의 여정 어느 단계에서든 함께하며, 우리의 성공을 고객의 성공과 일치시킵니다.
지금 바로 채팅으로 문의하여 시작해 보세요.