Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

시리즈 1부에서는 Oracle® 새로고침 가능한 클론(Refreshable Clone)의 개념과 사용 시기, 활용 이유를 소개했습니다. 이번 2부에서는 Oracle 18c 환경에서 새로고침 가능한 클론 플러거블 데이터베이스(PDB)를 설정, 구성, 유지 관리하고 삭제하는 방법을 실제 데모를 통해 살펴봅니다.

새로고침 가능한 클론 PDB를 위한 사전 요건

이 데모를 따라 하려면 먼저 다음 사전 요건을 충족해야 합니다.

  1. 새로 생성하는 새로고침 가능한 클론이 로컬 또는 원격 컨테이너를 가리키도록 하는 데이터베이스 링크(DB Link)가 준비되어 있어야 합니다.
  2. archive_log_modeenabled로 설정합니다.
  3. 엔지니어드 시스템(Engineered System) 또는 Enterprise Edition(EE) Oracle Cloud를 사용합니다. 동일한 플랫폼이나 버전을 사용할 수 없는 경우, 이번 데모를 위해 숨겨진 파라미터인 _exadata_feature_onTrue로 설정합니다.
  4. local_undo_modeenabled로 설정합니다.

새로고침 가능한 PDB는 CLOSED 또는 OPEN READ ONLY 모드로 설정할 수 있으며, 새로고침 이후에는 쿼리 작업을 위해 OPEN READ ONLY 모드로 사용할 수 있습니다.

데모 환경 구성

이번 데모를 진행하려면 환경이 다음 사양에 맞아야 합니다.

  • Oracle 18c를 설치하고, 머신과 데이터베이스에 사전 요건을 적용합니다.
  • 운영(프로덕션) 데이터베이스 역할:
    • 컨테이너 데이터베이스(CDB) 이름: YCDB1
    • PDB 이름: PURCH_PDB
  • 새로고침 가능한 클론 PDB 역할:
    • CDB 이름: XCDB1
    • PDB 이름: PDB2_REFRO
    • PDB가 30분마다 자동으로 새로고침되도록 설정합니다.
  • XCDB에서 create_pdb를 사용하여 퍼블릭 데이터베이스 링크를 생성합니다. 이 링크는 YCDBPURCH_PDB를 가리켜야 합니다.

다음 TNS(Transparent Network Substrate) 명령을 실행합니다:

purch_pdb=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tejashost2.localdomain)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = purch_pdb)))

XCDB1=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tejashost2.localdomain)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XCDB1)))

YCDB1=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = tejashost2.localdomain)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = YCDB1)))

실전 데모

이번 데모에서는 다음 작업을 수행합니다.

  • 환경을 설정합니다.
  • 운영 데이터베이스의 새로고침 모드를 확인합니다.
  • 새로고침 가능한 클론의 새로고침 모드를 확인하고, 클론에서 새로고침을 비활성화하는 방법을 보여줍니다.
  • 운영 데이터베이스와 새로고침 가능한 클론 간에 역할을 전환(Switchover)합니다.

새로고침 가능한 클론 환경 설정

새로고침 가능한 클론 환경을 구축하려면 다음 단계를 따릅니다.

YCDB1에서 수행할 작업:

  1. 운영 데이터베이스를 생성하고 엽니다.

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

  1. impdp 유틸리티를 사용해 EXPDP 덤프에서 데이터를 가져오거나, PURCH_PDB에 HR 스키마를 임포트합니다. 이번 예제에서는 데이터베이스에서 다음 스크립트를 실행하여 HR 스키마를 임포트합니다.
 @?/demo/schema/human_resources/hr_main.sql

작업이 완료되면 다음 그림과 같이 HR 스키마 세부 정보를 검증합니다.

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

XCDB1에서 수행할 작업:

  1. 운영 데이터베이스인 PURCH_PDB를 가리키는 데이터베이스 링크를 생성합니다.
  2. 새로고침 가능한 PDB를 생성하고, 새로고침 주기를 30분으로 설정한 뒤, 데이터가 정상적으로 새로고침되었는지 확인합니다.

다른 위치에 데이터베이스를 생성하는 용도로 PDB를 만들 때는 모든 속성을 사용할 수 있습니다. 예를 들어 PDB 데이터 파일 위치를 변경하려면 CREATE_FILE_DEST 또는 FILE_NAME_CONVERT를 사용합니다.

추가되는 유일한 속성은 REFRESH MODE입니다. 여기서는 데모를 단순화하기 위해 선택적 속성은 추가하지 않았습니다.

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

새로고침 모드 및 운영 데이터베이스 세부 정보 확인

DBA_PDBS 테이블을 조회하면 새로고침 가능한 PDB의 모드, 상태, 마지막 새로고침 SCN, 그리고 부모 운영 데이터베이스의 세부 정보를 확인할 수 있습니다. PDB2_REFRO PDB에 대한 조회 결과는 다음 예시와 같습니다.

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

작업을 마친 후에는 일정에 따라 지속적인 새로고침이 이루어질 수 있도록 새로고침 가능한 PDB를 다시 MOUNTED 모드로 전환해야 합니다. 다음 명령을 사용하여 이 작업을 수행합니다. 여기서 사용된 open_mode.sql은 데이터베이스의 현재 open_mode를 확인하는 쿼리입니다.

새로고침을 위해 데이터베이스 인스턴스를 닫지 않으면 다음과 같은 오류가 발생할 수 있습니다.

ORA-65025: Pluggable database is not closed on all instances

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

새로고침 가능한 클론의 새로고침 모드 변경

새로고침 가능한 클론의 모드는 다음과 같이 변경할 수 있습니다.

  • 수동 새로고침을 자동 새로고침으로 변경합니다.
  • 자동 새로고침을 수동 새로고침으로 변경합니다.
  • 자동 또는 수동 새로고침 모드에서 새로고침을 비활성화합니다.

수동 새로고침과 자동 새로고침 간 상호 전환

참고: 다른 PDB에 로그인한 상태에서는 PDB 새로고침 모드를 변경할 수 없습니다. 예를 들어 YPDB에 로그인한 상태에서는 XPDB의 모드를 변경할 수 없습니다. 시도할 경우 다음 오류가 발생합니다.

ORA-65118: operation affecting a pluggable database cannot be performed from
another pluggable database.

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

수동 새로고침 모드에서는 다음 명령을 사용하여 필요할 때마다 클론 PDB를 새로고침할 수 있습니다.

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

PDB 새로고침 비활성화 및 읽기 전용 클론을 읽기-쓰기 데이터베이스로 전환

PDB의 새로고침 모드를 비활성화하면 새로고침 가능한 클론을 읽기-쓰기 모드로 전환할 수 있습니다.

참고: 플러거블 데이터베이스의 새로고침을 한 번 비활성화하면 다시 활성화할 수 없습니다. 새로고침 가능한 PDB로 사용하려면 PDB를 다시 생성해야 합니다. NONE 새로고침 모드에서 새로고침 모드로 전환을 시도하면 다음 오류가 발생합니다.

ORA-65261: pluggable database PDB2_REFRO3 not enabled for refresh.

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

새로고침을 비활성화하면 PDB에 읽기-쓰기 접근 권한이 부여됩니다.

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

운영 데이터베이스와 새로고침 가능한 클론 간 역할 전환

Oracle 18c 이전 버전에서는 프라이머리를 종료하고 읽기 전용으로 여는 등의 역할 전환(Switchover)에 필요한 모든 단계를 직접 수행해야 했습니다.

이번 데모에서는 다음 작업을 진행합니다.

  1. sysoper 권한과 connect 권한을 부여하여 컨테이너 데이터베이스 XCDB1과 YCDB1에 사용자 C##SWITCHUSER를 생성합니다.
  2. 다른 컨테이너 데이터베이스를 가리키는 데이터베이스 링크(dblink)를 생성합니다. YCDB1에서는 XCDB1에 접속하기 위한 dblink인 XCDB1SYSOPER를 생성합니다. 데이터베이스 링크 생성 후에는 DBA_DB_LINKSV$DATABASE 뷰를 사용하여 데이터베이스 세부 정보를 수집합니다.
  3. 새로고침 가능한 클론 데이터베이스를 읽기 전용으로 엽니다.
  4. Switchover 명령을 실행합니다.
  5. 운영 데이터베이스와 새로고침 가능한 클론 데이터베이스의 전환 후 데이터베이스 상태와 오픈 모드를 검증합니다.

YCDB1에서 수행할 작업:

Switchover 명령을 실행하기 전에 사전 요건 1~3을 완료합니다.

데이터베이스 링크 세부 정보:

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

XCDB1에서 수행할 작업:

DBA_DB_LINKSV$DATABASE를 사용하여 데이터베이스 링크 세부 정보를 확인하고 데이터베이스의 오픈 모드(open mode)를 조회합니다.

Oracle Database 새로고침 가능한 클론(Refreshable Clone) 기능 활용 가이드 - 2부: 실전 데모

Switchover가 완료되면 원래 소스 PDB였던 PURCH_PDB가 새로고침 가능한 클론 PDB로 바뀝니다. 이 PDB는 현재 MOUNT 상태이며, 앞으로는 READ ONLY 모드로만 열 수 있습니다. 반대로 원래 새로고침 가능한 클론이었던 PDB PDB2_REFRO는 이제 READ/WRITE 모드로 열려 소스 PDB 역할을 수행합니다.

결론

새로고침 가능한 클론 PDB 기능은 고가용성(HA) 관점에서 Data Guard의 대체재로 간주해서는 안 됩니다. 다만, 새로고침 가능한 클론을 활용하면 다른 서버에 복제 데이터베이스를 유지할 수 있습니다.

이 글에서는 새로고침 가능한 PDB를 복제본으로 활용하여, 계획된 전환이든 계획되지 않은 장애 상황이든 관계없이 낮은 부하의 중요하지 않은 애플리케이션 운영을 신속히 재개할 수 있는 방법을 설명했습니다. 이때 전환은 복구 시간 목표(RTO, 운영 재개까지의 시간)와 복구 시점 목표(RPO, 최소 데이터 손실 달성 등)의 관점에서 고려해야 합니다.

의견이나 질문이 있다면 피드백 탭을 이용해 주세요. 지금 바로 채팅으로 문의하실 수도 있습니다.

데이터베이스에 대해 더 알아보세요.