Skip to main content
NetApp database solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

TR-5006: Data Guard를 사용한 Google Cloud NetApp Volumes 에서의 고처리량 Oracle VLDB 구현

기여자 netapp-revathid kevin-hoke

Allen Cao, Niyaz Mohamed, NetApp

이 솔루션은 Google 클라우드의 Oracle Data Guard를 사용하여 Google Cloud NetApp Volumes (GCNV)에서 고처리량 Oracle Very Large Database(VLDB)를 구성하는 데 대한 개요와 세부 정보를 제공합니다.

목적

높은 처리량과 미션 크리티컬 Oracle VLDB는 백엔드 데이터베이스 스토리지에 큰 부담을 줍니다. 서비스 수준 계약(SLA)을 충족하려면 데이터베이스 저장소는 밀리초 미만의 지연 시간 성능을 유지하면서 필요한 용량과 초당 높은 입출력 작업 수(IOPS)를 제공해야 합니다. 특히 공유 스토리지 리소스 환경이 있는 퍼블릭 클라우드에 이러한 데이터베이스 워크로드를 배포하는 경우 이는 특히 어렵습니다. 모든 저장 플랫폼이 동일하게 만들어진 것은 아닙니다. GCNV는 Google 클라우드에서 지속적인 IOPS와 저지연 성능 특성이 필요한 미션 크리티컬 Oracle 데이터베이스 배포를 지원할 수 있는 Google에서 제공하는 프리미엄 스토리지 서비스입니다. 이 아키텍처는 다양한 성능 프로필을 지원하는 구성 가능한 서비스 계층을 통해 OLTP 및 OLAP 워크로드를 수용합니다. GCNV는 밀리초 미만의 지연 시간으로 매우 빠른 성능을 제공하며, 혼합 읽기/쓰기 워크로드에서 볼륨당 최대 4.5GiBps의 처리량을 달성합니다.

GCNV의 빠른 스냅샷 백업(초) 및 복제(분) 기능을 활용하면 프로덕션 데이터베이스의 전체 크기 복사본을 물리적 대기에서 즉시 복제하여 DEV, UAT 등과 같은 여러 다른 사용 사례에 사용할 수 있습니다. Active Data Guard 라이선스와 비효율적이고 복잡한 스냅샷 대기를 없앨 수 있습니다. 비용 절감 효과는 상당할 수 있습니다. 기본 Oracle 서버와 대기 Oracle 서버 모두에 64개 코어 CPU가 있는 명목상의 Oracle Data Guard 설정의 경우, 최신 Oracle 가격표를 기준으로 Active Data Guard 라이선스 비용만 1,472,000달러 절감됩니다.  

이 문서에서는 여러 NFS 볼륨과 스토리지 부하 분산을 위한 Oracle ASM을 사용하여 GCNVS 스토리지에 Data Guard 구성을 사용하여 Oracle VLDB를 설정하는 방법을 설명합니다. 대기 데이터베이스 볼륨은 스냅샷을 통해 빠르게 백업되고 읽기/쓰기 액세스를 위해 복제될 수 있습니다. NetApp 솔루션 엔지니어링 팀은 간소화된 수명 주기 관리를 통해 복제본을 만들고 새로 고치는 자동화 툴킷을 제공합니다.

이 솔루션은 다음과 같은 사용 사례를 해결합니다.

  • Google 클라우드 지역의 GCNV 스토리지 서비스에서 Data Guard 설정으로 Oracle VLDB를 구현합니다.

  • 자동화를 통해 보고, 개발, 테스트 등의 사용 사례에 맞게 물리적 스탠바이 데이터베이스를 스냅샷 백업하고 복제합니다.

대상

이 솔루션은 다음과 같은 사람들을 위해 만들어졌습니다.

  • 고가용성, 데이터 보호 및 재해 복구를 위해 Google 클라우드에서 Data Guard와 함께 Oracle VLDB를 설정하는 DBA입니다.

  • Google 클라우드에서 Data Guard 구성을 갖춘 Oracle VLDB에 관심이 있는 데이터베이스 솔루션 아키텍트입니다.

  • Oracle 데이터베이스를 지원하는 GCNV 스토리지를 관리하는 스토리지 관리자입니다.

  • Google 클라우드 환경에서 Data Guard와 함께 Oracle VLDB를 구축하고 싶어하는 애플리케이션 소유자입니다.

솔루션 테스트 및 검증 환경

이 솔루션의 테스트와 검증은 실제 사용자 배포 환경과 일치하지 않을 수 있는 Google 클라우드 랩 환경에서 수행되었습니다. 자세한 내용은 다음 섹션을 참조하세요. 배포 고려사항의 핵심 요소 .

아키텍처

이 이미지는 GCNV에서 Google Cloud에 구현된 Oracle Data Guard의 자세한 그림을 제공합니다.

하드웨어 및 소프트웨어 구성 요소

하드웨어

Google Cloud NetApp Volumes

Google에서 현재 제공하는 서비스

2개의 스토리지 풀, 프리미엄 서비스 수준, 자동 QoS

DB 서버용 Google Compute Engine VM

N1(4개 vcpu, 15GiB 메모리)

4개의 DB VM, 기본 DB 서버, 대기 DB 서버, 복제 DB 서버 및 Data Guard Observer.

소프트웨어

레드햇 리눅스

Red Hat Enterprise Linux 8.10(Ootpa) - x86/64

RHEL 마켓플레이스 이미지, PAYG

오라클 그리드 인프라

버전 19.18

RU 패치 p34762026_190000_Linux-x86-64.zip이 적용되었습니다.

오라클 데이터베이스

버전 19.18

RU 패치 p34765931_190000_Linux-x86-64.zip을 적용했습니다.

dNFS OneOff 패치

p32931941_190000_Linux-x86-64.zip

그리드와 데이터베이스 모두에 적용됨

오라클 OPatch

버전 12.2.0.1.36

최신 패치 p6880880_190000_Linux-x86-64.zip

앤서블

버전 코어 2.16.2

파이썬 버전 - 3.10.13

NFS

버전 3.0

Oracle에 대해 dNFS 활성화됨

시뮬레이션된 NY-LA DR 설정을 사용한 Oracle VLDB Data Guard 구성

데이터 베이스

DB_고유_이름

Oracle Net 서비스 이름

주요한

NTAP_NY

NTAP_NY.cvs-pm-host-1p.내부

대기

NTAP_LA

NTAP_LA.cvs-pm-host-1p.내부

배포 고려사항의 핵심 요소

  • * Google Cloud NetApp Volumes 구성.* GCNV는 Google 클라우드에 할당됩니다. Storage Pools . 이러한 테스트와 검증에서 우리는 East4 지역에 Oracle 기본 데이터베이스를 호스팅하기 위해 2TiB 스토리지 풀을 배포했고, West4 지역에 대기 데이터베이스와 DB 복제본을 호스팅하기 위해 4TiB 스토리지 풀을 배포했습니다. GCNV 스토리지 풀에는 Flex, Standard, Premium, Extreme의 4가지 서비스 수준이 있습니다. ANF 용량 풀의 IO 용량은 용량 풀의 크기와 서비스 수준에 따라 결정됩니다. 용량 풀을 생성할 때 스토리지 풀 위치, 서비스 수준, 가용성 영역 및 스토리지 풀 용량을 설정합니다. Oracle Data Guard 구성의 경우, Data Guard가 영역 수준 장애로 인해 데이터베이스 장애 조치 보호를 제공하므로 영역 가용성이 충분해야 합니다.

  • 데이터베이스 볼륨 크기 조정. 실제 운영에 배포하는 경우 NetApp Oracle AWR 보고서에서 Oracle 데이터베이스 처리량 요구 사항을 전체적으로 평가할 것을 권장합니다. VLDB 데이터베이스의 GCNV 볼륨 레이아웃을 설계할 때 데이터베이스 크기, 처리량 요구 사항 및 서비스 수준을 고려하세요. 만을 사용하는 것이 좋습니다. Premium 또는 Extreme Oracle 데이터베이스를 위한 서비스입니다. 대역폭은 최대 4.5GiBps까지 TiB 볼륨 용량당 64MiB/s로 보장됩니다. Premium 서비스 및 TiB당 128MiB/s 볼륨 용량 최대 4.5GiBps Extreme 서비스. 처리량이 높아지면 요구 사항을 충족하기 위해 더 큰 볼륨 크기가 필요합니다.

  • 다중 볼륨 및 부하 분산. QoS는 볼륨 크기 및 스토리지 풀 서비스 수준에 따라 엄격하게 적용되므로, 단일 대용량 볼륨은 동일한 총 볼륨 크기를 가진 여러 볼륨과 유사한 성능 수준을 제공할 수 있습니다. 공유 백엔드 GCNV 스토리지 리소스 풀을 보다 효율적으로 활용하고 4.5GiBps를 초과하는 처리량 요구 사항을 충족하려면 Oracle VLDB에 대해 여러 볼륨(여러 NFS 마운트 포인트)을 구현하는 것이 좋습니다. 여러 NFS 볼륨에서 IO 부하 분산을 위해 Oracle ASM을 구현합니다.

  • Google Compute Engine VM 인스턴스 고려 사항. 이러한 테스트와 검증에서는 4개의 vCPU와 15GiB 메모리를 갖춘 Compute Engine VM-N1을 사용했습니다. 높은 처리량 요구 사항을 갖춘 Oracle VLDB에 적합한 Compute Engine DB VM 인스턴스를 선택해야 합니다. vCPU 수와 RAM 용량 외에도 VM 네트워크 대역폭(수신 및 송신 또는 NIC 처리량 제한)이 데이터베이스 저장소 처리량에 도달하기 전에 병목 현상이 발생할 수 있습니다.

  • dNFS 구성. dNFS를 사용하면 GCNV 스토리지가 있는 Google Compute Engine VM에서 실행되는 Oracle 데이터베이스는 기본 NFS 클라이언트보다 훨씬 더 많은 I/O를 처리할 수 있습니다. 잠재적인 버그를 해결하기 위해 Oracle dNFS 패치 p32931941이 적용되었는지 확인하세요.

솔루션 구축

다음 섹션에서는 GCNV 스토리지가 있는 동부 지역의 Google Cloud에 있는 기본 Oracle DB와 GCNV 스토리지가 있는 서부 지역의 Google Cloud에 있는 물리적 대기 Oracle DB 간의 Oracle Data Guard 설정에서 GCNV의 Oracle VLDB에 대한 구성을 보여줍니다.

배포를 위한 전제 조건

Details

배포에는 다음과 같은 전제 조건이 필요합니다.

  1. Google 클라우드 계정이 설정되었고, Oracle Data Guard를 설정하기 위한 리소스를 배포하기 위한 프로젝트가 Google 계정 내에 생성되었습니다.

  2. Data Guard에 필요한 지역에 걸쳐 VPC와 서브넷을 만듭니다. 탄력적인 DR 설정을 위해 주요 DB와 대기 DB를 지역에서 대규모 재해가 발생해도 견딜 수 있는 서로 다른 지리적 위치에 배치하는 것을 고려하세요.

  3. Google 클라우드 포털 콘솔에서 4개의 Google 컴퓨트 엔진 Linux VM 인스턴스를 배포합니다. 하나는 기본 Oracle DB 서버, 하나는 대기 Oracle DB 서버, 복제 대상 DB 서버, 그리고 Oracle Data Guard 관찰자로 사용합니다. 환경 설정에 대한 자세한 내용은 이전 섹션의 아키텍처 다이어그램을 참조하세요. Google 문서를 따르세요"Compute Engine에서 Linux VM 인스턴스 만들기" 자세한 지침은 여기를 참조하세요.

    참고 Oracle 설치 파일을 준비할 충분한 공간을 확보하려면 Azure VM 루트 볼륨에 최소 50G를 할당했는지 확인하세요. Google 컴퓨트 엔진 VM은 기본적으로 인스턴스 수준에서 잠겨 있습니다. VM 간 통신을 가능하게 하려면 일반적인 Oracle 포트 1521과 같이 TCP 포트 트래픽 흐름을 여는 특정 방화벽 규칙을 만들어야 합니다.
  4. Google Cloud Portal 콘솔에서 두 개의 GCNV 스토리지 풀을 배포하여 Oracle 데이터베이스 볼륨을 호스팅합니다. 문서를 참조했습니다"스토리지 풀 만들기 빠른 시작" 단계별 지침을 확인하세요. 다음은 빠른 참고를 위한 몇 가지 화면 샷입니다.

    GCNV 환경 구성을 보여주는 스크린샷입니다. GCNV 환경 구성을 보여주는 스크린샷입니다. GCNV 환경 구성을 보여주는 스크린샷입니다. GCNV 환경 구성을 보여주는 스크린샷입니다.

  5. 스토리지 풀에 데이터베이스 볼륨을 생성합니다. 문서를 참조했습니다"볼륨 빠른 시작 만들기" 단계별 지침을 확인하세요. 다음은 빠른 참고를 위한 몇 가지 화면 샷입니다.

    GCNV 환경 구성을 보여주는 스크린샷입니다. GCNV 환경 구성을 보여주는 스크린샷입니다. GCNV 환경 구성을 보여주는 스크린샷입니다. GCNV 환경 구성을 보여주는 스크린샷입니다. GCNV 환경 구성을 보여주는 스크린샷입니다. GCNV 환경 구성을 보여주는 스크린샷입니다.

  6. 기본 Oracle 데이터베이스는 기본 Oracle DB 서버에 설치 및 구성되어야 합니다. 반면, 스탠바이 Oracle DB 서버나 복제 Oracle DB 서버에서는 Oracle 소프트웨어만 설치되고 Oracle 데이터베이스는 생성되지 않습니다. 이상적으로는 Oracle 파일 디렉토리 레이아웃이 모든 Oracle DB 서버에서 정확히 일치해야 합니다. NFS/ASM을 사용한 Oracle 그리드 인프라 및 데이터베이스 설치 및 구성에 대한 도움말은 TR-4974를 참조하세요. 해당 솔루션은 AWS FSx/EC2 환경에서 검증되었지만 Google GCNV/Compute Engine 환경에도 동일하게 적용할 수 있습니다.

Data Guard를 위한 기본 Oracle VLDB 구성

Details

이 데모에서는 8개의 NFS 마운트 지점을 사용하여 기본 DB 서버에 NTAP라는 기본 Oracle 데이터베이스를 설정했습니다. /u01은 Oracle 바이너리용, /u02, /u03, /u04, /u05, /u06, /u07은 Oracle 데이터 파일용으로, 로드 밸런싱은 Oracle ASM 디스크 그룹 +DATA용으로 설정했습니다. /u08은 Oracle 활성 로그 및 보관 로그 파일용으로, 로드 밸런싱은 Oracle ASM 디스크 그룹 +LOGS용으로 설정했습니다. Oracle 제어 파일은 중복성을 위해 +DATA 및 +LOGS 디스크 그룹에 모두 배치됩니다. 이 설정은 참조 구성으로 사용됩니다. 실제 배포 시에는 스토리지 풀 크기, 서비스 수준, 데이터베이스 볼륨 수, 각 볼륨 크기 등 특정 요구 사항과 필요 사항을 고려해야 합니다.

ASM을 사용하여 NFS에 Oracle Data Guard를 설정하는 방법에 대한 자세한 단계별 절차는 TR-5002를 참조하세요."Azure NetApp Files 통한 Oracle Active Data Guard 비용 절감" . TR-5002의 절차는 Azure ANF 환경에서 검증되었지만 Google GCNV 환경에도 동일하게 적용할 수 있습니다.

다음은 Google GCNV 환경의 Data Guard 구성에서 기본 Oracle VLDB의 세부 정보를 보여줍니다.

  1. 기본 컴퓨팅 엔진 DB 서버의 기본 데이터베이스 NTAP는 NFS 프로토콜과 ASM을 데이터베이스 스토리지 볼륨 관리자로 사용하여 GCNV 스토리지의 독립 실행형 재시작 구성에서 단일 인스턴스 데이터베이스로 배포됩니다.

    orap.us-east4-a.c.cvs-pm-host-1p.internal:
    Zone: us-east-4a
    size: n1-standard-4 (4 vCPUs, 15 GB Memory)
    OS: Linux (redhat 8.10)
    pub_ip: 35.212.124.14
    pri_ip: 10.70.11.5
    
    [oracle@orap ~]$ df -h
    Filesystem                Size  Used Avail Use% Mounted on
    devtmpfs                  7.2G     0  7.2G   0% /dev
    tmpfs                     7.3G     0  7.3G   0% /dev/shm
    tmpfs                     7.3G  8.5M  7.2G   1% /run
    tmpfs                     7.3G     0  7.3G   0% /sys/fs/cgroup
    /dev/sda2                  50G   40G   11G  80% /
    /dev/sda1                 200M  5.9M  194M   3% /boot/efi
    10.165.128.180:/orap-u05  250G  201G   50G  81% /u05
    10.165.128.180:/orap-u08  400G  322G   79G  81% /u08
    10.165.128.180:/orap-u04  250G  201G   50G  81% /u04
    10.165.128.180:/orap-u07  250G  201G   50G  81% /u07
    10.165.128.180:/orap-u02  250G  201G   50G  81% /u02
    10.165.128.180:/orap-u06  250G  201G   50G  81% /u06
    10.165.128.180:/orap-u01  100G   21G   80G  21% /u01
    10.165.128.180:/orap-u03  250G  201G   50G  81% /u03
    
    
    [oracle@orap ~]$ cat /etc/oratab
    #
    
    
    
    # This file is used by ORACLE utilities.  It is created by root.sh
    # and updated by either Database Configuration Assistant while creating
    # a database or ASM Configuration Assistant while creating ASM instance.
    
    # A colon, ':', is used as the field terminator.  A new line terminates
    # the entry.  Lines beginning with a pound sign, '#', are comments.
    #
    # Entries are of the form:
    #   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
    #
    # The first and second fields are the system identifier and home
    # directory of the database respectively.  The third field indicates
    # to the dbstart utility that the database should , "Y", or should not,
    # "N", be brought up at system boot time.
    #
    # Multiple entries with the same $ORACLE_SID are not allowed.
    #
    #
    +ASM:/u01/app/oracle/product/19.0.0/grid:N
    NTAP:/u01/app/oracle/product/19.0.0/NTAP:N
  2. Oracle 사용자로 기본 DB 서버에 로그인합니다. 그리드 구성을 검증합니다.

    $GRID_HOME/bin/crsctl stat res -t
    [oracle@orap ~]$ $GRID_HOME/bin/crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.DATA.dg
                   ONLINE  ONLINE       orap                     STABLE
    ora.LISTENER.lsnr
                   ONLINE  ONLINE       orap                     STABLE
    ora.LOGS.dg
                   ONLINE  ONLINE       orap                     STABLE
    ora.asm
                   ONLINE  ONLINE       orap                     Started,STABLE
    ora.ons
                   OFFLINE OFFLINE      orap                     STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.cssd
          1        ONLINE  ONLINE       orap                     STABLE
    ora.diskmon
          1        OFFLINE OFFLINE                               STABLE
    ora.evmd
          1        ONLINE  ONLINE       orap                     STABLE
    ora.ntap.db
          1        ONLINE  ONLINE       orap                     Open,HOME=/u01/app/o
                                                                 racle/product/19.0.0
                                                                 /NTAP,STABLE
    --------------------------------------------------------------------------------
    [oracle@orap ~]$
  3. ASM 디스크 그룹 구성.

    asmcmd
    [oracle@orap ~]$ asmcmd
    ASMCMD> lsdg
    State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
    MOUNTED  EXTERN  N         512             512   4096  4194304   1228800  1219888                0         1219888              0             N  DATA/
    MOUNTED  EXTERN  N         512             512   4096  4194304    327680   326556                0          326556              0             N  LOGS/
    ASMCMD> lsdsk
    Path
    /u02/oradata/asm/orap_data_disk_01
    /u02/oradata/asm/orap_data_disk_02
    /u02/oradata/asm/orap_data_disk_03
    /u02/oradata/asm/orap_data_disk_04
    /u03/oradata/asm/orap_data_disk_05
    /u03/oradata/asm/orap_data_disk_06
    /u03/oradata/asm/orap_data_disk_07
    /u03/oradata/asm/orap_data_disk_08
    /u04/oradata/asm/orap_data_disk_09
    /u04/oradata/asm/orap_data_disk_10
    /u04/oradata/asm/orap_data_disk_11
    /u04/oradata/asm/orap_data_disk_12
    /u05/oradata/asm/orap_data_disk_13
    /u05/oradata/asm/orap_data_disk_14
    /u05/oradata/asm/orap_data_disk_15
    /u05/oradata/asm/orap_data_disk_16
    /u06/oradata/asm/orap_data_disk_17
    /u06/oradata/asm/orap_data_disk_18
    /u06/oradata/asm/orap_data_disk_19
    /u06/oradata/asm/orap_data_disk_20
    /u07/oradata/asm/orap_data_disk_21
    /u07/oradata/asm/orap_data_disk_22
    /u07/oradata/asm/orap_data_disk_23
    /u07/oradata/asm/orap_data_disk_24
    /u08/oralogs/asm/orap_logs_disk_01
    /u08/oralogs/asm/orap_logs_disk_02
    /u08/oralogs/asm/orap_logs_disk_03
    /u08/oralogs/asm/orap_logs_disk_04
    ASMCMD>
  4. 기본 DB의 Data Guard에 대한 매개변수 설정.

    SQL> show parameter name
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    cdb_cluster_name                     string
    cell_offloadgroup_name               string
    db_file_name_convert                 string
    db_name                              string      ntap
    db_unique_name                       string      ntap_ny
    global_names                         boolean     FALSE
    instance_name                        string      NTAP
    lock_name_space                      string
    log_file_name_convert                string
    pdb_file_name_convert                string
    processor_group_name                 string
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    service_names                        string      ntap_ny.cvs-pm-host-1p.interna
    
    SQL> sho parameter log_archive_dest
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest                     string
    log_archive_dest_1                   string      LOCATION=USE_DB_RECOVERY_FILE_
                                                     DEST VALID_FOR=(ALL_LOGFILES,A
                                                     LL_ROLES) DB_UNIQUE_NAME=NTAP_
                                                     NY
    log_archive_dest_10                  string
    log_archive_dest_11                  string
    log_archive_dest_12                  string
    log_archive_dest_13                  string
    log_archive_dest_14                  string
    log_archive_dest_15                  string
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_16                  string
    log_archive_dest_17                  string
    log_archive_dest_18                  string
    log_archive_dest_19                  string
    log_archive_dest_2                   string      SERVICE=NTAP_LA ASYNC VALID_FO
                                                     R=(ONLINE_LOGFILES,PRIMARY_ROL
                                                     E) DB_UNIQUE_NAME=NTAP_LA
    log_archive_dest_20                  string
    log_archive_dest_21                  string
    log_archive_dest_22                  string
  5. 기본 DB 구성.

    SQL> select name, open_mode, log_mode from v$database;
    
    NAME      OPEN_MODE            LOG_MODE
    --------- -------------------- ------------
    NTAP      READ WRITE           ARCHIVELOG
    
    
    SQL> show pdbs
    
        CON_ID CON_NAME                       OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
             2 PDB$SEED                       READ ONLY  NO
             3 NTAP_PDB1                      READ WRITE NO
             4 NTAP_PDB2                      READ WRITE NO
             5 NTAP_PDB3                      READ WRITE NO
    
    
    SQL> select name from v$datafile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/NTAP/DATAFILE/system.257.1198026005
    +DATA/NTAP/DATAFILE/sysaux.258.1198026051
    +DATA/NTAP/DATAFILE/undotbs1.259.1198026075
    +DATA/NTAP/86B637B62FE07A65E053F706E80A27CA/DATAFILE/system.266.1198027075
    +DATA/NTAP/86B637B62FE07A65E053F706E80A27CA/DATAFILE/sysaux.267.1198027075
    +DATA/NTAP/DATAFILE/users.260.1198026077
    +DATA/NTAP/86B637B62FE07A65E053F706E80A27CA/DATAFILE/undotbs1.268.1198027075
    +DATA/NTAP/32639B76C9BC91A8E063050B460A2116/DATAFILE/system.272.1198028157
    +DATA/NTAP/32639B76C9BC91A8E063050B460A2116/DATAFILE/sysaux.273.1198028157
    +DATA/NTAP/32639B76C9BC91A8E063050B460A2116/DATAFILE/undotbs1.271.1198028157
    +DATA/NTAP/32639B76C9BC91A8E063050B460A2116/DATAFILE/users.275.1198028185
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/NTAP/32639D40D02D925FE063050B460A60E3/DATAFILE/system.277.1198028187
    +DATA/NTAP/32639D40D02D925FE063050B460A60E3/DATAFILE/sysaux.278.1198028187
    +DATA/NTAP/32639D40D02D925FE063050B460A60E3/DATAFILE/undotbs1.276.1198028187
    +DATA/NTAP/32639D40D02D925FE063050B460A60E3/DATAFILE/users.280.1198028209
    +DATA/NTAP/32639E973AF79299E063050B460AFBAD/DATAFILE/system.282.1198028209
    +DATA/NTAP/32639E973AF79299E063050B460AFBAD/DATAFILE/sysaux.283.1198028209
    +DATA/NTAP/32639E973AF79299E063050B460AFBAD/DATAFILE/undotbs1.281.1198028209
    +DATA/NTAP/32639E973AF79299E063050B460AFBAD/DATAFILE/users.285.1198028229
    
    19 rows selected.
    
    
    SQL> select member from v$logfile;
    
    MEMBER
    --------------------------------------------------------------------------------
    +DATA/NTAP/ONLINELOG/group_3.264.1198026139
    +LOGS/NTAP/ONLINELOG/group_3.259.1198026147
    +DATA/NTAP/ONLINELOG/group_2.263.1198026137
    +LOGS/NTAP/ONLINELOG/group_2.258.1198026145
    +DATA/NTAP/ONLINELOG/group_1.262.1198026137
    +LOGS/NTAP/ONLINELOG/group_1.257.1198026145
    +DATA/NTAP/ONLINELOG/group_4.286.1198511423
    +LOGS/NTAP/ONLINELOG/group_4.265.1198511425
    +DATA/NTAP/ONLINELOG/group_5.287.1198511445
    +LOGS/NTAP/ONLINELOG/group_5.266.1198511447
    +DATA/NTAP/ONLINELOG/group_6.288.1198511459
    
    MEMBER
    --------------------------------------------------------------------------------
    +LOGS/NTAP/ONLINELOG/group_6.267.1198511461
    +DATA/NTAP/ONLINELOG/group_7.289.1198511477
    +LOGS/NTAP/ONLINELOG/group_7.268.1198511479
    
    14 rows selected.
    
    
    SQL> select name from v$controlfile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/NTAP/CONTROLFILE/current.261.1198026135
    +LOGS/NTAP/CONTROLFILE/current.256.1198026135
  6. Oracle 리스너 구성.

    lsnrctl status listener
    [oracle@orap admin]$ lsnrctl status
    
    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 15-APR-2025 16:14:00
    
    Copyright (c) 1991, 2022, Oracle.  All rights reserved.
    
    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                14-APR-2025 19:44:21
    Uptime                    0 days 20 hr. 29 min. 38 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/19.0.0/grid/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/orap/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=orap.us-east4-a.c.cvs-pm-host-1p.internal)(PORT=1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    Services Summary...
    Service "+ASM" has 1 instance(s).
      Instance "+ASM", status READY, has 1 handler(s) for this service...
    Service "+ASM_DATA" has 1 instance(s).
      Instance "+ASM", status READY, has 1 handler(s) for this service...
    Service "+ASM_LOGS" has 1 instance(s).
      Instance "+ASM", status READY, has 1 handler(s) for this service...
    Service "32639b76c9bc91a8e063050b460a2116.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status READY, has 1 handler(s) for this service...
    Service "32639d40d02d925fe063050b460a60e3.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status READY, has 1 handler(s) for this service...
    Service "32639e973af79299e063050b460afbad.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status READY, has 1 handler(s) for this service...
    Service "86b637b62fdf7a65e053f706e80a27ca.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status READY, has 1 handler(s) for this service...
    Service "NTAPXDB.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status READY, has 1 handler(s) for this service...
    Service "NTAP_NY_DGMGRL.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status UNKNOWN, has 1 handler(s) for this service...
    Service "ntap.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status READY, has 1 handler(s) for this service...
    Service "ntap_pdb1.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status READY, has 1 handler(s) for this service...
    Service "ntap_pdb2.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status READY, has 1 handler(s) for this service...
    Service "ntap_pdb3.cvs-pm-host-1p.internal" has 1 instance(s).
      Instance "NTAP", status READY, has 1 handler(s) for this service...
    The command completed successfully
  7. 기본 데이터베이스에서 플래시백이 활성화되었습니다.

    SQL> select name, database_role, flashback_on from v$database;
    
    NAME      DATABASE_ROLE    FLASHBACK_ON
    --------- ---------------- ------------------
    NTAP      PRIMARY          YES
  8. 기본 DB에 대한 dNFS 구성.

    SQL> select svrname, dirname from v$dnfs_servers;
    
    SVRNAME
    --------------------------------------------------------------------------------
    DIRNAME
    --------------------------------------------------------------------------------
    10.165.128.180
    /orap-u04
    
    10.165.128.180
    /orap-u05
    
    10.165.128.180
    /orap-u07
    
    
    SVRNAME
    --------------------------------------------------------------------------------
    DIRNAME
    --------------------------------------------------------------------------------
    10.165.128.180
    /orap-u03
    
    10.165.128.180
    /orap-u06
    
    10.165.128.180
    /orap-u02
    
    
    SVRNAME
    --------------------------------------------------------------------------------
    DIRNAME
    --------------------------------------------------------------------------------
    10.165.128.180
    /orap-u08
    
    10.165.128.180
    /orap-u01
    
    
    8 rows selected.

이로써 NFS/ASM을 사용하는 GCNV의 기본 사이트에서 VLDB NTAP에 대한 Data Guard 설정 데모가 완료되었습니다.

Data Guard를 위한 대기 Oracle VLDB 구성

Details

Oracle Data Guard를 사용하려면 기본 DB 서버와 일치하도록 대기 DB 서버에 패치 세트를 포함한 Oracle 소프트웨어 스택과 OS 커널 구성이 필요합니다. 쉬운 관리와 단순성을 위해, 대기 DB 서버의 데이터베이스 스토리지 구성은 기본 DB 서버와 일치해야 합니다. 예를 들어, 데이터베이스 디렉터리 레이아웃과 NFS 마운트 지점의 크기가 그렇습니다.

또한 ASM을 사용하여 NFS에서 Oracle Data Guard 대기 모드를 설정하는 방법에 대한 자세한 단계별 절차는 다음을 참조하십시오."TR-5002 - Azure NetApp Files 통한 Oracle Active Data Guard 비용 절감" 그리고"TR-4974 - NFS/ASM을 사용하는 AWS FSx/EC2에서 독립형 재시작 시 Oracle 19c" 관련 섹션. 다음은 Google GCNV 환경의 Data Guard 설정에서 대기 DB 서버의 대기 Oracle VLDB 구성에 대한 세부 정보를 보여줍니다.

  1. 데모 랩의 대기 사이트에 있는 대기 Oracle DB 서버 구성입니다.

    oras.us-west4-a.c.cvs-pm-host-1p.internal:
    Zone: us-west4-a
    size: n1-standard-4 (4 vCPUs, 15 GB Memory)
    OS: Linux (redhat 8.10)
    pub_ip: 35.219.129.195
    pri_ip: 10.70.14.16
    
    [oracle@oras ~]$ df -h
    Filesystem                Size  Used Avail Use% Mounted on
    devtmpfs                  7.2G     0  7.2G   0% /dev
    tmpfs                     7.3G  1.1G  6.2G  16% /dev/shm
    tmpfs                     7.3G  8.5M  7.2G   1% /run
    tmpfs                     7.3G     0  7.3G   0% /sys/fs/cgroup
    /dev/sda2                  50G   40G   11G  80% /
    /dev/sda1                 200M  5.9M  194M   3% /boot/efi
    10.165.128.197:/oras-u07  250G  201G   50G  81% /u07
    10.165.128.197:/oras-u06  250G  201G   50G  81% /u06
    10.165.128.197:/oras-u02  250G  201G   50G  81% /u02
    10.165.128.196:/oras-u03  250G  201G   50G  81% /u03
    10.165.128.196:/oras-u01  100G   20G   81G  20% /u01
    10.165.128.197:/oras-u05  250G  201G   50G  81% /u05
    10.165.128.197:/oras-u04  250G  201G   50G  81% /u04
    10.165.128.197:/oras-u08  400G  317G   84G  80% /u08
    
    [oracle@oras ~]$ cat /etc/oratab
    #Backup file is  /u01/app/oracle/crsdata/oras/output/oratab.bak.oras.oracle line added by Agent
    #
    
    
    
    # This file is used by ORACLE utilities.  It is created by root.sh
    # and updated by either Database Configuration Assistant while creating
    # a database or ASM Configuration Assistant while creating ASM instance.
    
    # A colon, ':', is used as the field terminator.  A new line terminates
    # the entry.  Lines beginning with a pound sign, '#', are comments.
    #
    # Entries are of the form:
    #   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
    #
    # The first and second fields are the system identifier and home
    # directory of the database respectively.  The third field indicates
    # to the dbstart utility that the database should , "Y", or should not,
    # "N", be brought up at system boot time.
    #
    # Multiple entries with the same $ORACLE_SID are not allowed.
    #
    #
    +ASM:/u01/app/oracle/product/19.0.0/grid:N
    NTAP:/u01/app/oracle/product/19.0.0/NTAP:N              # line added by Agent
  2. 대기 DB 서버에서 그리드 인프라 구성.

    [oracle@oras ~]$ $GRID_HOME/bin/crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.DATA.dg
                   ONLINE  ONLINE       oras                     STABLE
    ora.LISTENER.lsnr
                   ONLINE  ONLINE       oras                     STABLE
    ora.LOGS.dg
                   ONLINE  ONLINE       oras                     STABLE
    ora.asm
                   ONLINE  ONLINE       oras                     Started,STABLE
    ora.ons
                   OFFLINE OFFLINE      oras                     STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.cssd
          1        ONLINE  ONLINE       oras                     STABLE
    ora.diskmon
          1        OFFLINE OFFLINE                               STABLE
    ora.evmd
          1        ONLINE  ONLINE       oras                     STABLE
    ora.ntap_la.db
          1        ONLINE  INTERMEDIATE oras                     Dismounted,Mount Ini
                                                                 tiated,HOME=/u01/app
                                                                 /oracle/product/19.0
                                                                 .0/NTAP,STABLE
    --------------------------------------------------------------------------------
  3. 대기 DB 서버에서 ASM 디스크 그룹 구성.

    [oracle@oras ~]$ asmcmd
    ASMCMD> lsdg
    State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
    MOUNTED  EXTERN  N         512             512   4096  4194304   1228800  1228420                0         1228420              0             N  DATA/
    MOUNTED  EXTERN  N         512             512   4096  4194304    322336   322204                0          322204              0             N  LOGS/
    ASMCMD> lsdsk
    Path
    /u02/oradata/asm/oras_data_disk_01
    /u02/oradata/asm/oras_data_disk_02
    /u02/oradata/asm/oras_data_disk_03
    /u02/oradata/asm/oras_data_disk_04
    /u03/oradata/asm/oras_data_disk_05
    /u03/oradata/asm/oras_data_disk_06
    /u03/oradata/asm/oras_data_disk_07
    /u03/oradata/asm/oras_data_disk_08
    /u04/oradata/asm/oras_data_disk_09
    /u04/oradata/asm/oras_data_disk_10
    /u04/oradata/asm/oras_data_disk_11
    /u04/oradata/asm/oras_data_disk_12
    /u05/oradata/asm/oras_data_disk_13
    /u05/oradata/asm/oras_data_disk_14
    /u05/oradata/asm/oras_data_disk_15
    /u05/oradata/asm/oras_data_disk_16
    /u06/oradata/asm/oras_data_disk_17
    /u06/oradata/asm/oras_data_disk_18
    /u06/oradata/asm/oras_data_disk_19
    /u06/oradata/asm/oras_data_disk_20
    /u07/oradata/asm/oras_data_disk_21
    /u07/oradata/asm/oras_data_disk_22
    /u07/oradata/asm/oras_data_disk_23
    /u07/oradata/asm/oras_data_disk_24
    /u08/oralogs/asm/oras_logs_disk_01
    /u08/oralogs/asm/oras_logs_disk_02
    /u08/oralogs/asm/oras_logs_disk_03
    /u08/oralogs/asm/oras_logs_disk_04
    ASMCMD>
  4. 대기 DB의 Data Guard에 대한 매개변수 설정.

    SQL> show parameter name
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    cdb_cluster_name                     string
    cell_offloadgroup_name               string
    db_file_name_convert                 string
    db_name                              string      NTAP
    db_unique_name                       string      NTAP_LA
    global_names                         boolean     FALSE
    instance_name                        string      NTAP
    lock_name_space                      string
    log_file_name_convert                string
    pdb_file_name_convert                string
    processor_group_name                 string
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    service_names                        string      NTAP_LA.cvs-pm-host-1p.interna
                                                     l
    
    SQL> show parameter log_archive_config
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_config                   string      DG_CONFIG=(NTAP_NY,NTAP_LA)
    SQL> show parameter fal_server
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    fal_server                           string      NTAP_NY
  5. 대기 DB 구성.

    SQL> select name, open_mode, log_mode from v$database;
    
    NAME      OPEN_MODE            LOG_MODE
    --------- -------------------- ------------
    NTAP      MOUNTED              ARCHIVELOG
    
    SQL> show pdbs
    
        CON_ID CON_NAME                       OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
             2 PDB$SEED                       MOUNTED
             3 NTAP_PDB1                      MOUNTED
             4 NTAP_PDB2                      MOUNTED
             5 NTAP_PDB3                      MOUNTED
    
    SQL> select name from v$datafile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/NTAP_LA/DATAFILE/system.261.1198520347
    +DATA/NTAP_LA/DATAFILE/sysaux.262.1198520373
    +DATA/NTAP_LA/DATAFILE/undotbs1.263.1198520399
    +DATA/NTAP_LA/32635CC1DCF58A60E063050B460AB746/DATAFILE/system.264.1198520417
    +DATA/NTAP_LA/32635CC1DCF58A60E063050B460AB746/DATAFILE/sysaux.265.1198520435
    +DATA/NTAP_LA/DATAFILE/users.266.1198520451
    +DATA/NTAP_LA/32635CC1DCF58A60E063050B460AB746/DATAFILE/undotbs1.267.1198520455
    +DATA/NTAP_LA/32639B76C9BC91A8E063050B460A2116/DATAFILE/system.268.1198520471
    +DATA/NTAP_LA/32639B76C9BC91A8E063050B460A2116/DATAFILE/sysaux.269.1198520489
    +DATA/NTAP_LA/32639B76C9BC91A8E063050B460A2116/DATAFILE/undotbs1.270.1198520505
    +DATA/NTAP_LA/32639B76C9BC91A8E063050B460A2116/DATAFILE/users.271.1198520513
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/NTAP_LA/32639D40D02D925FE063050B460A60E3/DATAFILE/system.272.1198520517
    +DATA/NTAP_LA/32639D40D02D925FE063050B460A60E3/DATAFILE/sysaux.273.1198520533
    +DATA/NTAP_LA/32639D40D02D925FE063050B460A60E3/DATAFILE/undotbs1.274.1198520551
    +DATA/NTAP_LA/32639D40D02D925FE063050B460A60E3/DATAFILE/users.275.1198520559
    +DATA/NTAP_LA/32639E973AF79299E063050B460AFBAD/DATAFILE/system.276.1198520563
    +DATA/NTAP_LA/32639E973AF79299E063050B460AFBAD/DATAFILE/sysaux.277.1198520579
    +DATA/NTAP_LA/32639E973AF79299E063050B460AFBAD/DATAFILE/undotbs1.278.1198520595
    +DATA/NTAP_LA/32639E973AF79299E063050B460AFBAD/DATAFILE/users.279.1198520605
    
    19 rows selected.
    
    
    SQL> select name from v$controlfile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/NTAP_LA/CONTROLFILE/current.260.1198520303
    +LOGS/NTAP_LA/CONTROLFILE/current.257.1198520305
    
    
    SQL> select group#, type, member from v$logfile order by 2, 1;
    
        GROUP# TYPE    MEMBER
    ---------- ------- ------------------------------------------------------------
             1 ONLINE  +DATA/NTAP_LA/ONLINELOG/group_1.280.1198520649
             1 ONLINE  +LOGS/NTAP_LA/ONLINELOG/group_1.259.1198520651
             2 ONLINE  +DATA/NTAP_LA/ONLINELOG/group_2.281.1198520659
             2 ONLINE  +LOGS/NTAP_LA/ONLINELOG/group_2.258.1198520661
             3 ONLINE  +DATA/NTAP_LA/ONLINELOG/group_3.282.1198520669
             3 ONLINE  +LOGS/NTAP_LA/ONLINELOG/group_3.260.1198520671
             4 STANDBY +DATA/NTAP_LA/ONLINELOG/group_4.283.1198520677
             4 STANDBY +LOGS/NTAP_LA/ONLINELOG/group_4.261.1198520679
             5 STANDBY +DATA/NTAP_LA/ONLINELOG/group_5.284.1198520687
             5 STANDBY +LOGS/NTAP_LA/ONLINELOG/group_5.262.1198520689
             6 STANDBY +DATA/NTAP_LA/ONLINELOG/group_6.285.1198520697
    
        GROUP# TYPE    MEMBER
    ---------- ------- ------------------------------------------------------------
             6 STANDBY +LOGS/NTAP_LA/ONLINELOG/group_6.263.1198520699
             7 STANDBY +DATA/NTAP_LA/ONLINELOG/group_7.286.1198520707
             7 STANDBY +LOGS/NTAP_LA/ONLINELOG/group_7.264.1198520709
    
    14 rows selected.
  6. 대기 데이터베이스 복구 상태를 검증합니다. 주목하세요 recovery logmerger ~에 APPLYING_LOG 행동.

    SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;
    
    ROLE                        THREAD#  SEQUENCE# ACTION
    ------------------------ ---------- ---------- ------------
    post role transition              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery logmerger                1         24 APPLYING_LOG
    managed recovery                  0          0 IDLE
    RFS ping                          1         24 IDLE
    archive redo                      0          0 IDLE
    archive redo                      0          0 IDLE
    gap manager                       0          0 IDLE
    
    ROLE                        THREAD#  SEQUENCE# ACTION
    ------------------------ ---------- ---------- ------------
    archive local                     0          0 IDLE
    redo transport timer              0          0 IDLE
    archive redo                      0          0 IDLE
    RFS async                         1         24 IDLE
    redo transport monitor            0          0 IDLE
    log writer                        0          0 IDLE
    
    17 rows selected.
  7. 스탠바이 데이터베이스에서 플래시백이 활성화되었습니다.

    SQL> select name, database_role, flashback_on from v$database;
    
    NAME      DATABASE_ROLE    FLASHBACK_ON
    --------- ---------------- ------------------
    NTAP      PHYSICAL STANDBY YES
  8. 대기 DB에 대한 dNFS 구성.

SQL> select svrname, dirname from v$dnfs_servers;

SVRNAME
--------------------------------------------------------------------------------
DIRNAME
--------------------------------------------------------------------------------
10.165.128.197
/oras-u04

10.165.128.197
/oras-u05

10.165.128.197
/oras-u06

10.165.128.197
/oras-u07

10.165.128.197
/oras-u02

10.165.128.197
/oras-u08

10.165.128.196
/oras-u03

10.165.128.196
/oras-u01


8 rows selected.

이로써 대기 사이트에서 관리형 대기 복구가 활성화된 VLDB NTAP에 대한 Data Guard 설정 데모가 완료되었습니다.

Observer를 사용하여 Data Guard Broker 및 FSFO 설정

Data Guard Broker 설정

Details

Oracle Data Guard 브로커는 Oracle Data Guard 구성의 생성, 유지 관리 및 모니터링을 자동화하고 중앙화하는 분산 관리 프레임워크입니다. 다음 섹션에서는 Data Guard 환경을 관리하기 위해 Data Guard Broker를 설정하는 방법을 보여줍니다.

  1. sqlplus를 통해 다음 명령을 사용하여 기본 데이터베이스와 대기 데이터베이스 모두에서 데이터 가드 브로커를 시작합니다.

    alter system set dg_broker_start=true scope=both;
  2. 기본 데이터베이스에서 SYSDBA로 Data Guard Borker에 연결합니다.

    [oracle@orap ~]$ dgmgrl sys@NTAP_NY
    DGMGRL for Linux: Release 19.0.0.0.0 - Production on Wed Dec 11 20:53:20 2024
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
    
    Welcome to DGMGRL, type "help" for information.
    Password:
    Connected to "NTAP_NY"
    Connected as SYSDBA.
    DGMGRL>
  3. Data Guard Broker 구성을 만들고 활성화합니다.

    DGMGRL> create configuration dg_config as primary database is NTAP_NY connect identifier is NTAP_NY;
    Configuration "dg_config" created with primary database "ntap_ny"
    DGMGRL> add database NTAP_LA as connect identifier is NTAP_LA;
    Database "ntap_la" added
    DGMGRL> enable configuration;
    Enabled.
    DGMGRL> show configuration;
    
    Configuration - dg_config
    
      Protection Mode: MaxPerformance
      Members:
      ntap_ny - Primary database
        ntap_la - Physical standby database
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 3 seconds ago)
  4. Data Guard Broker 관리 프레임워크 내에서 데이터베이스 상태를 검증합니다.

    DGMGRL> show database ntap_ny;
    
    Database - ntap_ny
    
      Role:               PRIMARY
      Intended State:     TRANSPORT-ON
      Instance(s):
        NTAP
    
    Database Status:
    SUCCESS
    
    
    DGMGRL> show database ntap_la;
    
    Database - ntap_la
    
      Role:               PHYSICAL STANDBY
      Intended State:     APPLY-ON
      Transport Lag:      0 seconds (computed 0 seconds ago)
      Apply Lag:          0 seconds (computed 0 seconds ago)
      Average Apply Rate: 3.00 KByte/s
      Real Time Query:    OFF
      Instance(s):
        NTAP
    
    Database Status:
    SUCCESS
    
    DGMGRL>

장애가 발생하는 경우, Data Guard Broker를 사용하면 기본 데이터베이스를 즉시 대기 데이터베이스로 장애 조치할 수 있습니다. 만약에 Fast-Start Failover 이 기능이 활성화되면 Data Guard Broker는 사용자 개입 없이 장애가 감지되면 기본 데이터베이스를 대기 데이터베이스로 장애 조치할 수 있습니다.

Observer로 FSFO 구성

Details

선택적으로, FSFO(Fast Start Fail Over)를 활성화하여 장애 발생 시 Data Guard Broker가 기본 데이터베이스를 스탠바이 데이터베이스로 자동으로 장애 조치할 수 있습니다. 다음은 관찰자 인스턴스로 FSFO를 설정하는 절차입니다.

  1. Observer를 기본 또는 대기 DB 서버와 다른 영역에서 실행하려면 가벼운 Google 컴퓨트 엔진 인스턴스를 만듭니다. 테스트 케이스에서는 7.5G 메모리와 2개의 vCPU가 있는 N1 인스턴스를 사용했습니다. 호스트에 동일한 버전의 Oracle이 설치되어 있어야 합니다.

  2. oracle 사용자로 로그인하고 oracle 사용자 .bash_profile에서 oracle 환경을 설정합니다.

    vi ~/.bash_profile
    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    export ORACLE_HOME=/u01/app/oracle/product/19.0.0/NTAP
    export PATH=$ORACLE_HOME/bin:$PATH
  3. tnsname.ora 파일에 기본 및 대기 DB TNS 이름 항목을 추가합니다.

    vi $ORACLE_HOME/network/admin/tsnames.ora
    NTAP_NY =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = orap.us-east4-a.c.cvs-pm-host-1p.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = NTAP_NY.cvs-pm-host-1p.internal)
          (UR=A)
        )
      )
    
    NTAP_LA =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oras.us-west4-a.c.cvs-pm-host-1p.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = NTAP_LA.cvs-pm-host-1p.internal)
          (UR=A)
        )
      )
  4. 비밀번호로 지갑을 생성하고 초기화합니다.

    mkdir -p /u01/app/oracle/admin/NTAP/wallet
    mkstore -wrl /u01/app/oracle/admin/NTAP/wallet -create
    [oracle@orao NTAP]$ mkdir -p /u01/app/oracle/admin/NTAP/wallet
    [oracle@orao NTAP]$ mkstore -wrl /u01/app/oracle/admin/NTAP/wallet -create
    Oracle Secret Store Tool Release 19.0.0.0.0 - Production
    Version 19.4.0.0.0
    Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved.
    
    Enter password:
    Enter password again:
    [oracle@orao NTAP]$
  5. 기본 및 대기 데이터베이스 모두의 사용자 sys에 대해 암호 없는 인증을 활성화합니다. 먼저 시스템 비밀번호를 입력한 다음 이전 단계의 지갑 비밀번호를 입력하세요.

    mkstore -wrl /u01/app/oracle/admin/NTAP/wallet -createCredential NTAP_NY sys

    mkstore -wrl /u01/app/oracle/admin/NTAP/wallet -createCredential NTAP_LA sys

    [oracle@orao NTAP]$ mkstore -wrl /u01/app/oracle/admin/NTAP/wallet -createCredential NTAP_NY sys
    Oracle Secret Store Tool Release 19.0.0.0.0 - Production
    Version 19.4.0.0.0
    Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved.
    
    Your secret/Password is missing in the command line
    Enter your secret/Password:
    Re-enter your secret/Password:
    Enter wallet password:
    [oracle@orao NTAP]$ mkstore -wrl /u01/app/oracle/admin/NTAP/wallet -createCredential NTAP_LA sys
    Oracle Secret Store Tool Release 19.0.0.0.0 - Production
    Version 19.4.0.0.0
    Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved.
    
    Your secret/Password is missing in the command line
    Enter your secret/Password:
    Re-enter your secret/Password:
    Enter wallet password:
    [oracle@orao NTAP]$
  6. sqlnet.ora를 지갑 위치로 업데이트합니다.

    vi $ORACLE_HOME/network/admin/sqlnet.ora
    WALLET_LOCATION =
       (SOURCE =
          (METHOD = FILE)
          (METHOD_DATA = (DIRECTORY = /u01/app/oracle/admin/NTAP/wallet))
    )
    SQLNET.WALLET_OVERRIDE = TRUE
  7. 자격 증명을 검증합니다.

    mkstore -wrl /u01/app/oracle/admin/NTAP/wallet -listCredential
    sqlplus /@NTAP_LA as sysdba
    sqlplus /@NTAP_NY as sysdba
    [oracle@orao NTAP]$ mkstore -wrl /u01/app/oracle/admin/NTAP/wallet -listCredential
    Oracle Secret Store Tool Release 19.0.0.0.0 - Production
    Version 19.4.0.0.0
    Copyright (c) 2004, 2022, Oracle and/or its affiliates. All rights reserved.
    
    Enter wallet password:
    List credential (index: connect_string username)
    2: NTAP_LA sys
    1: NTAP_NY sys
  8. Fast-Start Failover를 구성하고 활성화합니다.

    mkdir /u01/app/oracle/admin/NTAP/fsfo
    dgmgrl
    Welcome to DGMGRL, type "help" for information.
    DGMGRL> connect /@NTAP_NY
    Connected to "ntap_ny"
    Connected as SYSDBA.
    DGMGRL> show configuration;
    
    Configuration - dg_config
    
      Protection Mode: MaxAvailability
      Members:
      ntap_ny - Primary database
        ntap_la - Physical standby database
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 58 seconds ago)
    
    DGMGRL> enable fast_start failover;
    Enabled in Zero Data Loss Mode.
    DGMGRL> show configuration;
    
    Configuration - dg_config
    
      Protection Mode: MaxAvailability
      Members:
      ntap_ny - Primary database
        Warning: ORA-16819: fast-start failover observer not started
    
        ntap_la - (*) Physical standby database
    
    Fast-Start Failover: Enabled in Zero Data Loss Mode
    
    Configuration Status:
    WARNING   (status updated 43 seconds ago)
  9. 관찰자를 시작하고 검증합니다.

    nohup dgmgrl /@NTAP_NY "start observer file='/u01/app/oracle/admin/NTAP/fsfo/fsfo.dat'" >> /u01/app/oracle/admin/NTAP/fsfo/dgmgrl.log &
    [oracle@orao NTAP]$ nohup dgmgrl /@NTAP_NY "start observer file='/u01/app/oracle/admin/NTAP/fsfo/fsfo.dat'" >> /u01/app/oracle/admin/NTAP/fsfo/dgmgrl.log &
    [1] 94957
    
    [oracle@orao fsfo]$ dgmgrl
    DGMGRL for Linux: Release 19.0.0.0.0 - Production on Wed Apr 16 21:12:09 2025
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
    
    Welcome to DGMGRL, type "help" for information.
    DGMGRL> connect /@NTAP_NY
    Connected to "ntap_ny"
    Connected as SYSDBA.
    DGMGRL> show configuration verbose;
    
    Configuration - dg_config
    
      Protection Mode: MaxAvailability
      Members:
      ntap_ny - Primary database
        ntap_la - (*) Physical standby database
    
      (*) Fast-Start Failover target
    
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '30'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
        ConfigurationWideServiceName    = 'ntap_CFG'
    
    Fast-Start Failover: Enabled in Zero Data Loss Mode
      Lag Limit:          30 seconds (not in use)
      Threshold:          30 seconds
      Active Target:      ntap_la
      Potential Targets:  "ntap_la"
        ntap_la    valid
      Observer:           orao
      Shutdown Primary:   TRUE
      Auto-reinstate:     TRUE
      Observer Reconnect: (none)
      Observer Override:  FALSE
    
    Configuration Status:
    SUCCESS
    
    DGMGRL>
참고 데이터 손실을 0으로 설정하려면 Oracle Data Guard 보호 모드를 다음과 같이 설정해야 합니다. MaxAvailability 또는 MaxProtection 방법. 기본 보호 모드 MaxPerformance Data Guard 구성을 편집하고 변경하여 Data Guard Broker 인터페이스에서 변경할 수 있습니다. LogXptMode ASYNC에서 SYNC로. Oracle 아카이브 로그 대상 로그 모드도 그에 맞게 변경해야 합니다. Data Guard에 대해 필요에 따라 실시간 로그 애플리케이션이 활성화된 경우 MaxAvailability , 자동 데이터베이스 재부팅으로 인해 대기 데이터베이스가 실수로 열릴 수 있으므로 데이터베이스를 자동으로 재부팅하지 마십시오. READ ONLY WITH APPLY Active Data Guard 라이선스가 필요한 모드입니다. 대신 데이터베이스를 수동으로 부팅하여 데이터베이스가 다음 위치에 남아 있는지 확인하십시오. MOUNT 실시간으로 관리되는 복구가 가능한 상태입니다.

자동화를 통해 다른 사용 사례에 대한 대기 데이터베이스 복제

Details

다음 자동화 툴킷은 NFS/ASM 구성을 사용하여 GCNV에 배포된 Oracle Data Guard 대기 DB의 복제본을 만들거나 새로 고치도록 특별히 설계되어 복제본 수명 주기를 완벽하게 관리합니다.

https://bitbucket.ngage.netapp.com/projects/NS-BB/repos/na_oracle_clone_gcnv/browse
참고 현재 이 툴킷은 bitbucket 액세스 권한이 있는 NetApp 내부 사용자만 액세스할 수 있습니다. 관심 있는 외부 사용자는 계정 팀에 액세스를 요청하거나 NetApp 솔루션 엔지니어링 팀에 문의하세요. 참조하다"ASM을 사용한 GCNV의 자동화된 Oracle 복제 수명 주기" 사용 지침을 확인하세요.

추가 정보를 찾을 수 있는 곳

이 문서에 설명된 정보에 대해 자세히 알아보려면 다음 문서 및/또는 웹사이트를 검토하세요.