본문 바로가기
9. 실습 Hands-on Lab

나도한다 시리즈N - OCI 기본 실습 DBCS (재해복구 이중화 - 데이터가드)

by MY잭슨 2022. 7. 21.
※ 사전 준비 - 네트워크 구성, SSH 툴, Key Pair

2022.05.14 - [7. 실습 Hands-on Lab] - 나도한다 시리즈 - OCI 기본 실습 IaaS (가상 네트워크)

2022.05.14 - [7. 실습 Hands-on Lab] - 나도한다 시리즈 - OCI 기본 실습 IaaS (컴퓨트 인스턴스)


2022.07.20 - [7. 실습 Hands-on Lab] - 나도한다 시리즈N - OCI 기본 실습 DBCS (생성, 연결)

2022.07.20 - [7. 실습 Hands-on Lab] - 나도한다 시리즈N - OCI 기본 실습 DBCS (백업, 복구, 패치)

 

Database Cloud Service DBCS (데이터가드 구성)

1. 메뉴에서 오라클 데이터베이스 >> 오라클 기본 위치 데이터베이스 >> DB 시스템 >> DB 시스템 상세 >> 데이터베이스 상세 >> 데이터가드 연관으로 이동합니다.

 

데이터가드 구성 상태를 보면 Not Enabled로 구성이 안 되어 있는 상태로 조회

 

2. Enable Data Guard 데이터가드 사용 버튼을 클릭합니다.

 

고가용성 이중화 (High Availability)와는 다르게 재해복구 이중화는 다른 리전으로 피어 데이터베이스 (Peer Database as Standby)를 구성할 수 있고 생성 정보를 입력한 후 데이터가드 사용을 활성화합니다.

각 사이트에 두 개의 호스트가 존재하는 참조 구성도로 현재 실습은 단일 구성이며 위 참조 이미지는 RAC + DataGuard 입니다

 

데이터가드 구성 종류 설명
Data Guard Edition : 최소 Enterprise Edition 또는 그 이상

오라클 Data Guard는 엔터프라이즈 데이터의 고가용성, 데이터 보호 및 재해 복구를 보장합니다. Data Guard는 하나 이상의 Standby 데이터베이스를 생성, 유지, 관리 및 모니터링하여 운영 오라클 데이터베이스가 재해 및 데이터 손상으로부터 보존할 수 있도록 지원하는 포괄적인 서비스 세트를 제공합니다. Data Guard는 이러한 Standby 데이터베이스를 운영 데이터베이스의 트랜잭션에 일관된 복사본으로 유지합니다.
Active Data Guard Edition : Enterprise Edition Extreme Performance

오라클 데이터베이스 Enterprise Edition의 라이센스 옵션이며 기본 Data Guard 기능을 확장하는 고급 기능을 지원합니다. 이러한 기능에는 실시간 쿼리 및 DML 오프로드, 자동 블록 복구, 대기 블록 변경 추적, Far Sync, 글로벌 데이터 서비스 및 애플리케이션 연속성이 포함됩니다.

 

3. 생성된 Standby 데이터베이스를 확인합니다.

 

데이터가드 사용 버튼은 비활성화되어있고 연관된 피어 데이터베이스 정보가 조회됩니다.

 

4. 인스턴스에 접속하여 데이터 가드 구성 상태를 확인합니다.

DB 시스템 >> 노드로 이동하여 IP 정보를 확인합니다. 편의 상 Public IP를 사용하여 접근하지만 운영 환경일 경우는 Private IP만 사용할 것을 권장합니다.

 

Primary, Standby 양쪽 인스턴스에 접속하여 tnsnames.ora 파일에서 접속 이름 alias를 확인하고 데이터가드 구성 상태를 확인합니다.

sudo su -
su - oracle

cat $ORACLE_HOME/network/admin/tnsnames.ora

--PRMY
dgmgrl sys@OCIDBDGA_ICN1FD

--STBY
dgmgrl sys@OCIDBDGA_ICN1BX

SHOW CONFIGURATION;
SHOW DATABASE OCIDBDGA_ICN1FD;
SHOW DATABASE OCIDBDGA_ICN1BX;

 

5. 장애 또는 재해복구 상황 재연 테스트를 수행합니다.

DB 시스템 >> 노드로 이동하여 IP 정보를 확인합니다. 편의 상 Public IP를 사용하여 접근하지만 운영 환경일 경우는 Private IP만 사용할 것을 권장합니다.

 

1) sysdba 관리자로 DB에 접속해서 상태 확인

hostname

sqlplus "/as sysdba"

set linesize 200
col DB_UNIQUE_NAME for a20
select name, db_unique_name, open_mode, protection_mode, database_role from v$database;

 

2) 두 개의 테이블을 생성하고 임의의 데이터를 입력합니다. 양쪽에 모두 시도하지만 Standby 데이터베이스는 마운트(Mount) 상태라 데이터베이스를 읽고 쓸 수가 없음

drop table system.tempx_dg1;
drop table system.tempx_dg2;

create table system.tempx_dg1
as
SELECT LEVEL a1
FROM dual
CONNECT BY LEVEL <= 1000000;

create table system.tempx_dg2
as
SELECT LEVEL a1
FROM dual
CONNECT BY LEVEL <= 2000000;

select count(*) from system.tempx_dg1;
select count(*) from system.tempx_dg2;

alter system switch logfile;

 

3) OCI 콘솔에서 Primary 데이터베이스에서 Switch Over하여 역할을 Standby 데이터베이스와 바꾸고 상태를 확인

sudo su -
su - grid

crsctl stat res -t

 

sudo su -
su - oracle

hostname

sqlplus "/as sysdba"

set linesize 200
col DB_UNIQUE_NAME for a20
select name, db_unique_name, open_mode, protection_mode, database_role from v$database;

select count(*) from system.tempx_dg1;
select count(*) from system.tempx_dg2;

 

4) 다시 원복을 할 때도 OCI 콘솔을 통해서 Primary 데이터베이스에서(이전 Standby) Switch Over하여 역할을 Standby 데이터베이스와 바꿀 수 있고 Standby 데이터베이스(이전 Primary)에서 Fail Over하여 역할을 변경하는 것이 가능

※ alert log 위치 참고(인스턴스 이름에 따라서 다름)
--PRMY
tail -f /u01/app/oracle/diag/rdbms/ocidbdga_icn1fd/OCIDBDGA/trace/alert*.log

--STBY
tail -f /u01/app/oracle/diag/rdbms/ocidbdga_icn1bx/OCIDBDGA/trace/alert*.log

 

 

 

참고

https://docs.oracle.com/en/solutions/configure-standby-db/index.html#GUID-E2791A21-4D08-4D03-A6E6-CE0FA9AD9941

 

댓글