TR-5020: Google Cloud NetApp Volumes에서 NFS를 사용한 Oracle 단일 인스턴스 배포
Allen Cao, Niyaz Mohamed, NetApp
이 솔루션은 NFS 프로토콜을 통해 Google Cloud NetApp Volumes를 기본 데이터베이스 스토리지로 사용하는 Oracle 배포에 대한 개요 및 세부 정보를 제공하며, Oracle 데이터베이스는 dNFS가 활성화된 독립형 컨테이너 데이터베이스로 배포됩니다.
목적
클라우드 환경에서 성능 집약적이고 지연 시간에 민감한 Oracle 워크로드를 실행하는 것은 어려울 수 있습니다. Google Cloud NetApp Volumes(GCNV)를 사용하면 기업의 기간 업무(LOB) 담당자와 스토리지 전문가가 코드 변경 없이 까다로운 Oracle 워크로드를 쉽게 마이그레이션하고 실행할 수 있습니다. Google Cloud NetApp Volumes는 Oracle 데이터베이스를 온프레미스에서 Google Cloud로 마이그레이션(리프트 앤 시프트)하거나 새로 배포하는 등 다양한 시나리오에서 기본 공유 파일 스토리지 서비스로 널리 사용됩니다.
이 문서에서는 Google Cloud 콘솔에서 GCNV DB 볼륨 구성과 Ansible 자동화를 사용하여 NFS 마운트를 통해 Google Cloud NetApp Volumes에 Oracle 데이터베이스를 간소화하여 배포하는 방법을 설명합니다. Oracle 데이터베이스는 컨테이너 데이터베이스(CDB) 및 플러그형 데이터베이스(PDB) 구성으로 배포되며, 성능 향상을 위해 Oracle dNFS 프로토콜이 활성화됩니다. 또한, 자세한 데이터베이스 백업, 복원 및 클론 전략을 제시하고 Google Cloud에서 Oracle 데이터베이스 백업 관리를 위한 자동화 툴킷을 제공합니다.
이 솔루션은 다음과 같은 사용 사례를 해결합니다.
-
NFS 프로토콜을 사용하여 Google Cloud의 Google Cloud NetApp Volumes에 Oracle 데이터베이스를 자동으로 배포합니다.
-
Google Cloud의 Google Cloud NetApp Volumes에서 Oracle 데이터베이스 백업, 복구, 클론.
대상
이 솔루션은 다음과 같은 사람들을 위해 만들어졌습니다.
-
Google Cloud NetApp Volumes에 Oracle을 배포하려는 DBA입니다.
-
Google Cloud NetApp Volumes에서 Oracle 워크로드를 테스트하려는 데이터베이스 솔루션 설계자.
-
Google Cloud NetApp Volumes에서 Oracle 데이터베이스를 배포하고 관리하려는 스토리지 관리자입니다.
-
Google Cloud NetApp Volumes에서 Oracle 데이터베이스를 구축하려는 애플리케이션 소유자.
솔루션 테스트 및 검증 환경
이 솔루션의 테스트와 검증은 최종 배포 환경과 일치하지 않을 수 있는 실험실 환경에서 수행되었습니다. 섹션을 참조하세요배포 고려사항의 핵심 요소 자세한 내용은.
아키텍처

하드웨어 및 소프트웨어 구성 요소
하드웨어 |
||
Google Cloud NetApp Volumes |
Google의 Google Cloud 현재 제공 서비스 |
Flex 서비스 레벨을 지원하는 스토리지 풀 1개, 용량 2TiB, 처리량 64MiB/s, IOPS 1024가 Oracle 데이터베이스 스토리지용으로 프로비저닝되었습니다 |
데이터베이스 서버용 Google Compute Engine VM |
n1-standard-4(vCPU 4개, 메모리 15GB) |
배포 및 복구 시연을 위한 두 개의 Linux 가상 머신 인스턴스 |
소프트웨어 |
||
레드햇 리눅스 |
RHEL Linux 8.10 (LVM) - x64 Gen2 |
테스트를 위해 RedHat 구독을 배포했습니다. |
오라클 데이터베이스 |
버전 21.19 |
RU 패치 p38068980_210000_Linux-x86-64.zip을 적용했습니다 |
오라클 OPatch |
버전 12.2.0.1.48 |
최신 패치 p6880880_210000_Linux-x86-64.zip |
NFS |
버전 3.0 |
Oracle dNFS 활성화됨 |
앤서블 |
코어 2.16.2 |
Python 3.10.13 |
랩 환경에서의 Oracle 데이터베이스 구성
섬기는 사람 |
데이터 베이스 |
DB 스토리지 |
orap - 기본 DB 서버 |
NTAP(NTAP_PDB1,NTAP_PDB2,NTAP_PDB3) |
/u01, /u02, /u03 NFS는 Google Cloud NetApp Volumes 스토리지 풀에 마운트됩니다 |
orap2 - 백업에서 복원됨 |
NTAP(NTAP_PDB1,NTAP_PDB2,NTAP_PDB3) |
/u01, /u02, /u03 NFS는 Google Cloud NetApp Volumes 스토리지 풀에 마운트됩니다 |
배포 고려사항의 핵심 요소
-
GCNV 스토리지 풀 서비스 레벨 및 처리량. GCNV는 Standard, Premium, Extreme, Flex의 네 가지 서비스 레벨을 제공합니다. Standard, Premium, Extreme 서비스 레벨의 경우 IO 처리량은 DB 볼륨 크기에 따라 결정되고 고정됩니다. 총 IO 처리량은 스토리지 풀 크기에 따라 제한됩니다. Flex 서비스 레벨의 경우 IO 처리량은 DB 볼륨 크기에 따라 고정되지 않고 모든 DB 볼륨에서 공유되며 스토리지 풀 크기 레벨에서 제한됩니다. 이는 간헐적인 IOPS 급증이 발생하는 소규모 볼륨 데이터베이스에 적합합니다. 참고로 Standard, Premium, Extreme 서비스 레벨은 각각 GiB당 16 KiB/s, GiB당 64 KiB/s, GiB당 128 KiB/s의 처리량을 제공합니다. 반면 Flex 서비스 레벨은 사용자 지정 성능 설정을 통해 스토리지 풀당 최대 5 GiB/s를 제공합니다. Oracle 데이터베이스 워크로드의 예상 IO 처리량 및 IOPS 요구 사항에 따라 서비스 레벨과 스토리지 풀의 크기를 적절하게 조정하는 것이 중요합니다.
-
데이터베이스 스토리지 레이아웃. 이 자동화된 Oracle 배포에서는 기본적으로 각 데이터베이스에 대해 Oracle 바이너리, 데이터 및 로그를 저장하기 위한 세 개의 데이터베이스 볼륨을 프로비저닝합니다. 이러한 볼륨은 NFS를 통해 Oracle DB 서버에 /u01 - 바이너리, /u02 - 데이터, /u03 - 로그로 마운트됩니다. 이중화를 위해 /u02 및 /u03 마운트 지점에 이중 제어 파일이 구성됩니다.
-
dNFS 구성. Oracle dNFS(Oracle 11g부터 사용 가능)를 사용하면 Google Cloud NetApp Volumes 스토리지를 사용하는 Google Compute Engine에서 실행되는 Oracle 데이터베이스가 기본 NFS 클라이언트보다 훨씬 더 많은 I/O를 구동할 수 있습니다. 자동화된 Oracle 배포는 기본적으로 NFSv3에서 dNFS를 구성합니다.
-
스냅샷 및 볼트 백업. 기존 RMAN 데이터베이스 백업 대신 NetApp은 스토리지 효율적이고 애플리케이션 일관성을 유지하는 스냅샷 및 볼트 백업을 구현하여 빠른(수초) 스냅샷 백업, 신속한(수분) 데이터베이스 복원, 스토리지 볼트의 스냅샷 또는 백업을 통한 복구 및 클론을 구현할 것을 권장합니다. 스냅샷은 데이터베이스 볼륨의 시점 복사본으로, 몇 초 만에 생성할 수 있으며 생성 시 추가 스토리지 공간을 차지하지 않습니다. 스냅샷은 기본 데이터베이스 볼륨과 함께 존재하며 기본 볼륨이 손상될 경우 손실될 수 있습니다. 볼트 백업은 재해 복구를 위해 오브젝트 스토리지의 다른 위치에 저장되는 스냅샷의 복사본입니다.
-
RTO/RPO 고려 사항. 데이터베이스 백업 전략을 수립할 때 복구 시간 목표(RTO)와 복구 시점 목표(RPO) 요구 사항을 고려하는 것이 중요합니다. 스냅샷 기반 백업은 데이터베이스 성능에 미치는 영향이 최소화되지만, RTO/RPO에 영향을 미치는 백업 빈도와 스토리지 비용 간에는 상충 관계가 있습니다. 백업 빈도를 높이면 RTO/RPO를 낮출 수 있지만 스토리지 비용이 증가할 수 있습니다. 비즈니스 요구 사항과 예산을 고려하여 적절한 균형을 찾는 것이 중요합니다. 본 자동화 솔루션은 사용자가 구성 가능한 보존 기간 및 백업 일정을 통해 Oracle 데이터베이스 백업을 관리할 수 있는 Ansible 플레이북 기반 자동화 툴킷을 제공합니다.
솔루션 구축
다음 섹션에서는 Google Cloud NetApp Volumes에 Oracle 21c를 자동화하여 배포하고 데이터베이스를 백업, 복구, 복제하는 단계별 절차를 제공합니다. 데이터베이스 볼륨은 NFS를 통해 Google Cloud Compute Engine VM을 데이터베이스 서버로 사용하여 직접 마운트됩니다.
배포를 위한 전제 조건
Details
배포에는 다음과 같은 전제 조건이 필요합니다.
-
Google Cloud 계정이 설정되었으며, Google Cloud 계정의 특정 프로젝트 내에 필요한 VPC 및 네트워크 설정이 생성되었습니다.
-
Google Cloud 콘솔에서 Google Compute Engine VM을 Oracle DB 서버로 배포합니다. 자동화를 위해 방화벽을 끄고 관리자 사용자로 DB 서버에 대한 VM SSH 개인/공개 키 인증을 활성화해야 합니다. 환경 설정에 대한 자세한 내용은 이전 섹션의 아키텍처 다이어그램을 참조하십시오.
Oracle 설치 파일을 준비하고 OS 스왑 파일을 추가할 수 있는 충분한 공간을 확보하기 위해 VM 루트 디스크에 최소 50G를 할당했는지 확인하십시오. -
자동화 툴킷 README에 나열된 버전의 Ansible 및 Git이 설치된 Linux VM을 Ansible 컨트롤러 노드로 프로비저닝합니다. Ansible 자동화에 대한 도움말은 다음 링크를 참조하십시오: "NetApp 솔루션 자동화 시작하기" 섹션 -
Setup the Ansible Control Node for CLI deployments on RHEL / CentOS또는
Setup the Ansible Control Node for CLI deployments on Ubuntu / Debian.Ansible 컨트롤러 노드는 ssh 포트를 통해 Google Cloud DB 서버 VM에 연결할 수 있는 한 온프레미스 또는 Google Cloud에 위치할 수 있습니다. -
NFS용 NetApp Oracle 배포 자동화 툴킷의 사본을 복제합니다.
git clone https://bitbucket.ngage.netapp.com/scm/ns-bb/na_oracle_deploy_nfs.git현재 이 툴킷은 bitbucket 액세스 권한이 있는 NetApp 내부 사용자만 액세스할 수 있습니다. 관심 있는 외부 사용자는 계정 팀에 액세스를 요청하거나 NetApp 솔루션 엔지니어링 팀에 문의하세요. -
777 권한으로 Google Cloud DB VM /tmp/archive 디렉터리에 Oracle 21c 설치 파일을 준비합니다.
installer_archives: - "LINUX.X64_213000_db_home.zip" - "p34765931_210000_Linux-x86-64.zip" - "p6880880_210000_Linux-x86-64.zip"
Oracle 데이터베이스 스토리지를 위한 Google Cloud NetApp Volumes 구성
Details
다음은 Google Cloud NetApp Volumes를 Oracle 데이터베이스 스토리지에 맞게 구성하는 단계이며, 화면 예시를 위해 스크린샷이 포함되어 있습니다.
-
Oracle 데이터베이스 스토리지용으로 원하는 서비스 수준과 용량을 갖춘 스토리지 풀을 생성합니다. +
+
+
+
+
-
데이터베이스 스토리지용 스토리지 풀에 원하는 크기의 Oracle 데이터베이스용 DB 볼륨 3개를 생성합니다. 예를 들어, 바이너리 파일용 /u01, 데이터 파일용 /u02, 리두 로그 및 제어 파일용 /u03을 NFSv3 프로토콜 및 마운트 옵션과 함께 다음 화면에 나와 있는 것처럼 생성합니다. +
+
+
+
+
|
|
Google Cloud NetApp Volumes의 기본 제공 백업 방식은 애플리케이션 일관성을 지원하지 않으므로 현재로서는 예약 백업을 활성화하지 마십시오. 이 솔루션에 제공되는 백업 자동화 툴킷을 사용하면 사용자 정의 일정 및 보존 기간에 따라 애플리케이션 일관성을 유지하는 데이터베이스 백업을 관리할 수 있습니다. |
Ansible 플레이북을 이용한 자동화된 Oracle 배포
자동화 매개변수 파일
Details
Ansible 플레이북은 미리 정의된 매개변수를 사용하여 데이터베이스 설치 및 구성 작업을 실행합니다. 현재 이 툴킷은 Oracle 데이터베이스 버전 19c 및 21c 배포를 지원합니다. 이 Oracle 자동화 솔루션에는 플레이북 실행 전에 사용자가 입력해야 하는 세 개의 사용자 정의 매개변수 파일이 있습니다.
-
호스트 - 자동화 플레이북이 실행되는 대상을 정의합니다.
-
vars/vars.yml - 모든 대상에 적용되는 변수를 정의하는 전역 변수 파일입니다.
-
host_vars/host_name.yml - 지정된 대상에만 적용되는 변수를 정의하는 로컬 변수 파일입니다. 우리의 사용 사례에서는 이는 Oracle DB 서버입니다.
이러한 사용자 정의 변수 파일 외에도 필요하지 않은 한 변경할 필요가 없는 기본 매개변수가 포함된 여러 가지 기본 변수 파일이 있습니다. 다음 섹션에서는 사용자 정의 변수 파일을 구성하는 방법을 보여줍니다.
매개변수 파일 구성
Details
-
Ansible 대상
hosts파일 구성:#Oracle hosts [oracle] orap ansible_host=10.61.180.6 ansible_ssh_private_key_file=ora_01.pem orap2 ansible_host=10.61.180.8 ansible_ssh_private_key_file=ora_02.pem
-
글로벌
vars/vars.yml파일 구성########################################### ### ONTAP env specific config variables ### ########################################### # Prerequisite to create three volumes in NetApp ONTAP storage from System Manager or cloud dashboard with following naming convention: # {{ inventory_hostname}}_u01 or {{ inventory_hostname}}-u01 -- Oracle binary # {{ inventory_hostname}}_u02 or {{ inventory_hostname}}-u02 -- Oracle data # {{ inventory_hostname}}_u03 or {{ inventory_hostname}}-u03 -- Oracle redo # It is important to strictly follow the name convention or the automation will fail. host_datastores_nfs: - {vol_name: "{{ inventory_hostname}}-u01", lif: "{{ nfs_lif }}"} - {vol_name: "{{ inventory_hostname}}-u02", lif: "{{ nfs_lif }}"} - {vol_name: "{{ inventory_hostname}}-u03", lif: "{{ nfs_lif }}"} ########################################### ### Linux env specific config variables ### ########################################### redhat_sub_username: "xxxxxxxxxx" redhat_sub_password: "xxxxxxxxxx" #################################################### ### DB env specific install and config variables ### #################################################### # Database version: support 19c and 21c, 19c|19.0.0 or 21c|21.0.0 ora_version: 21c ora_version_num: 21.0.0 # Set initial password for all required Oracle passwords. Change them after installation. initial_pwd_all: "xxxxxxxxxx" # Database domain name db_domain: cvs-pm-host-1p.internal -
orap.yml, orap2.yml 등과 같은 로컬 DB 서버
host_vars/host_name.yml구성# User configurable Oracle host specific parameters # Database SID. By default, a container DB is created with 3 PDBs within the CDB oracle_sid: NTAP # CDB is created with SGA at 75% of memory_limit, MB. Consider how many databases to be hosted on the node and how much ram to be allocated to each DB. The grand total of SGA should not exceed 75% available RAM on node. memory_limit: 8192 # NFS server ip address to access database volumes - retrieved from Google Cloud console within the volume details. nfs_lif: 10.165.128.242
플레이북 실행
Details
자동화 툴킷에는 총 5개의 플레이북이 있습니다. 각각은 서로 다른 작업 블록을 수행하고 서로 다른 목적을 위해 사용됩니다.
0-all_playbook.yml - execute playbooks from 1-4 in one playbook run. 1-ansible_requirements.yml - set up Ansible controller with required libs and collections. 2-linux_config.yml - execute Linux kernel configuration on Oracle DB servers. 4-oracle_config.yml - install and configure Oracle on DB servers and create a container database. 5-destroy.yml - optional to undo the environment to dismantle all.
다음 명령을 사용하여 플레이북을 실행하는 세 가지 옵션이 있습니다.
-
모든 배포 플레이북을 한 번에 결합해서 실행합니다.
ansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -
1~4까지의 숫자 순서대로 플레이북을 하나씩 실행합니다.
ansible-playbook -i hosts 1-ansible_requirements.yml -u admin -e @vars/vars.ymlansible-playbook -i hosts 2-linux_config.yml -u admin -e @vars/vars.ymlansible-playbook -i hosts 4-oracle_config.yml -u admin -e @vars/vars.yml -
태그와 함께 0-all_playbook.yml을 실행합니다.
ansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -t ansible_requirementsansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -t linux_configansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -t oracle_config -
환경 실행 취소
ansible-playbook -i hosts 5-destroy.yml -u admin -e @vars/vars.yml
실행 후 검증
Details
플레이북 실행 후 Oracle DB 서버 VM에 로그인하여 Oracle이 설치 및 구성되었는지, 컨테이너 데이터베이스가 성공적으로 생성되었는지 확인하십시오. 다음은 호스트 orap에서 Oracle 데이터베이스를 검증하는 예입니다.
-
NFS 마운트 검증
[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 31G 20G 62% / /dev/sda1 200M 5.9M 194M 3% /boot/efi 10.165.128.242:/orap-u02 500G 410G 91G 82% /u02 10.165.128.242:/orap-u03 300G 2.5G 298G 1% /u03 10.165.128.242:/orap-u01 50G 11G 40G 21% /u01 tmpfs 1.5G 0 1.5G 0% /run/user/1010 [admin@orap ~]$ cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Jul 9 15:09:30 2025 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # UUID=c829892e-02dc-40d8-b1b0-42a3b90b6315 / xfs defaults 0 0 UUID=6275-3342 /boot/efi vfat defaults,uid=0,gid=0,umask=077,shortname=winnt 0 2 /root/swapfile swap swap defaults 0 0 10.165.128.242:/orap-u01 /u01 nfs rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=262144,wsize=262144 0 0 10.165.128.242:/orap-u02 /u02 nfs rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=262144,wsize=262144 0 0 10.165.128.242:/orap-u03 /u03 nfs rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=262144,wsize=262144 0 0
-
Oracle 사용자로 Oracle 리스너를 검증합니다
[oracle@orap ~]$ lsnrctl status listener LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 17-FEB-2026 20:34:06 Copyright (c) 1991, 2021, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=orap.us-east4-b.c.cvs-pm-host-1p.internal)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 21.0.0.0.0 - Production Start Date 17-FEB-2026 16:03:25 Uptime 0 days 4 hr. 30 min. 41 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/homes/OraDB21Home1/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-b.c.cvs-pm-host-1p.internal)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=orap.us-east4-b.c.cvs-pm-host-1p.internal)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/homes/OraDB21Home1/admin/NTAP/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "48ea7bc6e662ab02e063130b460ac1b5.cvs-pm-host-1p.internal" has 1 instance(s). Instance "NTAP", status READY, has 1 handler(s) for this service... Service "48ea7e8e7de8ab6de063130b460a341d.cvs-pm-host-1p.internal" has 1 instance(s). Instance "NTAP", status READY, has 1 handler(s) for this service... Service "48ea7ff1feb4ab7ce063130b460ac700.cvs-pm-host-1p.internal" has 1 instance(s). Instance "NTAP", status READY, 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 "NTAPXDB.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
-
Oracle 데이터베이스 및 dNFS 검증
[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. # # NTAP:/u01/app/oracle/product/21.0.0/NTAP:Y [oracle@orap ~]$ sqlplus / as sysdba SQL*Plus: Release 21.0.0.0.0 - Production on Wed Jan 28 18:18:02 2026 Version 21.19.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to: Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.19.0.0.0 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 -------------------------------------------------------------------------------- /u02/oradata/NTAP/system01.dbf /u02/oradata/NTAP/sysaux01.dbf /u02/oradata/NTAP/undotbs01.dbf /u02/oradata/NTAP/pdbseed/system01.dbf /u02/oradata/NTAP/pdbseed/sysaux01.dbf /u02/oradata/NTAP/users01.dbf /u02/oradata/NTAP/pdbseed/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb1/system01.dbf /u02/oradata/NTAP/NTAP_pdb1/sysaux01.dbf /u02/oradata/NTAP/NTAP_pdb1/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb1/users01.dbf NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/NTAP_pdb2/system01.dbf /u02/oradata/NTAP/NTAP_pdb2/sysaux01.dbf /u02/oradata/NTAP/NTAP_pdb2/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb2/users01.dbf /u02/oradata/NTAP/NTAP_pdb3/system01.dbf /u02/oradata/NTAP/NTAP_pdb3/sysaux01.dbf /u02/oradata/NTAP/NTAP_pdb3/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb3/users01.dbf /u02/oradata/NTAP/NTAP_pdb1/soe_01.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_02.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_03.pdf NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/NTAP_pdb1/soe_04.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_05.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_06.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_07.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_08.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_09.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_10.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_11.pdf /u02/oradata/NTAP/NTAP_pdb1/soe_12.pdf 31 rows selected. SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/control01.ctl /u03/orareco/NTAP/control02.ctl SQL> select name from v$tempfile; NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/temp01.dbf /u02/oradata/NTAP/pdbseed/temp012026-01-21_17-35-36-638-PM.dbf /u02/oradata/NTAP/NTAP_pdb1/temp01.dbf /u02/oradata/NTAP/NTAP_pdb2/temp01.dbf /u02/oradata/NTAP/NTAP_pdb3/temp01.dbf /u02/oradata/NTAP/NTAP_pdb1/temp02.dbf 6 rows selected. SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /u03/orareco/NTAP/onlinelog/redo03.log /u03/orareco/NTAP/onlinelog/redo02.log /u03/orareco/NTAP/onlinelog/redo01.log SQL> select svrname, dirname from v$dnfs_servers; SVRNAME -------------------------------------------------------------------------------- DIRNAME -------------------------------------------------------------------------------- 10.165.128.242 /orap-u02 10.165.128.242 /orap-u03 10.165.128.242 /orap-u01 -
자동 시작 및 종료를 위한 Oracle 서비스를 검증합니다.
[admin@orap ~]$ sudo systemctl status oracle_NTAP ● oracle_NTAP.service - Oracle Database Start/Stop Service Loaded: loaded (/etc/systemd/system/oracle_NTAP.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2026-01-28 16:59:10 UTC; 1h 22min ago Tasks: 79 (limit: 94156) Memory: 7.1G CGroup: /system.slice/oracle_NTAP.service ├─1368 /u01/app/oracle/product/21.0.0/NTAP/bin/tnslsnr LISTENER -inherit ├─1903 ora_pmon_NTAP ├─1907 ora_clmn_NTAP ├─1911 ora_psp0_NTAP ├─1915 ora_vktm_NTAP ├─1921 ora_gen0_NTAP ├─1925 ora_mman_NTAP ├─1931 ora_gen1_NTAP ├─1933 ora_gen2_NTAP ├─1935 ora_vosd_NTAP ├─1937 ora_diag_NTAP ├─1939 ora_ofsd_NTAP ├─1941 ora_dbrm_NTAP ├─1943 ora_vkrm_NTAP ├─1945 ora_svcb_NTAP ├─1947 ora_pman_NTAP ├─1949 ora_dia0_NTAP ├─1955 ora_dbw0_NTAP ├─1957 ora_lgwr_NTAP ├─1961 ora_ckpt_NTAP ├─1965 ora_smon_NTAP ├─1969 ora_smco_NTAP ├─1971 ora_reco_NTAP ├─1973 ora_bg00_NTAP ├─1975 ora_lreg_NTAP ├─1981 ora_pxmn_NTAP ├─1991 ora_mmon_NTAP ├─1993 ora_mmnl_NTAP ├─2000 ora_lg00_NTAP ├─2003 ora_bg01_NTAP ├─2006 ora_d000_NTAP ├─2008 ora_w000_NTAP ├─2010 ora_s000_NTAP ├─2015 ora_lg01_NTAP ├─2017 ora_tmon_NTAP ├─2019 ora_w001_NTAP ├─2026 ora_m000_NTAP ├─2036 ora_tt00_NTAP ├─2038 ora_arc0_NTAP ├─2040 ora_tt01_NTAP ├─2042 ora_arc1_NTAP ├─2044 ora_arc2_NTAP ├─2048 ora_arc3_NTAP ├─2050 ora_tt02_NTAP ├─2063 ora_w002_NTAP ├─2065 ora_rcbg_NTAP ├─2069 ora_aqpc_NTAP ├─2073 ora_p000_NTAP ├─2075 ora_p001_NTAP ├─2077 ora_p002_NTAP ├─2079 ora_p003_NTAP ├─2081 ora_p004_NTAP ├─2083 ora_p005_NTAP ├─2085 ora_p006_NTAP ├─2087 ora_p007_NTAP ├─2092 ora_w003_NTAP ├─2164 ora_w004_NTAP ├─2279 ora_qm02_NTAP ├─2289 ora_q005_NTAP ├─2296 ora_cjq0_NTAP ├─2450 ora_m001_NTAP ├─2454 ora_m002_NTAP ├─2458 ora_m003_NTAP ├─2508 ora_w005_NTAP ├─2510 ora_m004_NTAP ├─2512 ora_m005_NTAP ├─2514 ora_m006_NTAP ├─2516 ora_w006_NTAP ├─2540 ora_q00i_NTAP ├─2550 ora_w007_NTAP └─2559 ora_cl00_NTAP Jan 28 16:58:29 orap systemd[1]: Starting Oracle Database Start/Stop Service... Jan 28 16:58:31 orap dbstart[1519]: Processing Database instance "NTAP": log file /u01/app/oracle/homes/OraDB21Home1/rdbms/log/startup.log Jan 28 16:59:10 orap systemd[1]: Started Oracle Database Start/Stop Service. [admin@orap ~]$
Google Cloud NetApp Volumes를 사용한 Oracle 데이터베이스 백업
Oracle 데이터베이스 스냅샷 및 볼트 백업
Details
Oracle 데이터베이스 백업 설정을 간편하게 하기 위해 NetApp Solutions Engineering 팀은 사용자가 구성 가능한 보존 기간 및 백업 스케줄을 사용하여 Oracle 데이터베이스 백업을 자동화하는 Ansible 플레이북을 개발했습니다. 이 플레이북은 Google Cloud NetApp Volumes 스냅샷 및 볼트 백업 기능을 활용하여 빠른(수초) 스냅샷 백업, 신속한(수분) 데이터베이스 복원, 스토리지 볼트의 스냅샷 또는 백업으로부터의 복구 및 클론 작업을 수행합니다.
-
GCNV용 NetApp Oracle 데이터베이스 백업 자동화 툴킷의 복사본을 복제합니다.
git clone https://bitbucket.ngage.netapp.com/scm/ns-bb/na_oracle_bkup_gcnv.git현재 이 툴킷은 bitbucket 액세스 권한이 있는 NetApp 내부 사용자만 액세스할 수 있습니다. 관심 있는 외부 사용자는 계정 팀에 액세스를 요청하거나 NetApp 솔루션 엔지니어링 팀에 문의하세요. -
툴킷의 README 파일을 읽고 아래 지침에 따라 crontab 또는 다른 스케줄링 도구를 사용하여 백업 작업을 구성하고 예약하십시오. 이 플레이북은 Oracle DB 서버 VM 및 Google NetApp Volumes에 액세스할 수 있는 Ansible 컨트롤러 노드에서 실행되도록 설계되었습니다. 정의된 일정 및 보존 정책에 따라 데이터베이스 볼륨의 애플리케이션 일관성 스냅샷을 생성하고 재해 복구를 위해 스냅샷을 볼트에 복사합니다.
-
기본적으로 플레이북은 매일 스냅샷 백업을 생성하고 매시간 시간별 스냅샷을 생성합니다. 기본 스냅샷 보존 기간은 매일 스냅샷 7개, 시간별 스냅샷 24개입니다. 보존 기간을 초과하는 추가 스냅샷은 삭제되며, 매일 스냅샷 7개와 시간별 스냅샷 24개를 기준으로 롤링 복사본이 유지됩니다. RTO/RPO 요구 사항 및 스토리지 비용을 고려하여 백업 빈도와 보존 기간을 조정할 수 있습니다. 매일 스냅샷 백업은 모든 DB 볼륨을 백업하는 반면, 시간별 스냅샷 백업은 로그 볼륨만 백업하여 스토리지 공간을 절약합니다. 매일 스냅샷 백업 중에 플레이북은 정의된 보존 기간에 따라 Oracle 아카이브 로그 파일을 삭제하여 DB 로그 볼륨의 스토리지 공간을 절약합니다.
-
다음은 스냅샷 백업을 생성하고 볼트에 복사하는 crontab 항목의 예입니다.
[admin@ansiblectl na_oracle_bkup_gcnv]$ crontab -l 0 0 * * * /home/admin/na_oracle_bkup_gcnv/oracle_standalone_snapshot_daily.sh 0 1-23 * * * /home/admin/na_oracle_bkup_gcnv/oracle_standalone_snapshot_hourly.sh 5 0 * * 7 /home/admin/na_oracle_bkup_gcnv/oracle_standalone_vaultbkup_weekly.sh 5 0 * * 1-6 /home/admin/na_oracle_bkup_gcnv/oracle_standalone_vaultbkup_daily.sh 5 1-23 * * * /home/admin/na_oracle_bkup_gcnv/oracle_standalone_vaultbkup_hourly.sh
-
볼트 백업은 RTO/RPO 요구 사항에 따라 주간, 일간 또는 시간 단위로 실행할 수 있습니다. 주간 및 일간 백업은 모든 DB 볼륨을 포함하는 반면, 시간 단위 볼트 백업은 스토리지 공간을 절약하기 위해 로그 볼륨만 포함합니다. 첫 번째 볼트 백업은 기준선을 생성하므로 시간이 더 오래 걸립니다. 기준선 백업이 설정되면 모든 추가 볼트 백업은 영구 증분 방식을 사용하여 증분 방식으로 수행됩니다. 모든 볼트 백업은 복구 가능성을 보장하기 위해 실행 시점의 가장 최근 애플리케이션 일관성 스냅샷을 기반으로 생성됩니다. 일반적인 기준선 및 증분 백업과 달리 기준선 볼트 백업 데이터는 모든 증분 백업에 롤업됩니다. 즉, 모든 증분 볼트 백업에는 전체 데이터 세트가 포함되어 기준선 백업을 복원할 필요 없이 복구에 사용할 수 있습니다. 이 방식은 백업 관리 및 복구 프로세스를 간소화하는 동시에 볼트의 스토리지 공간을 효율적으로 활용할 수 있도록 합니다. 이 방식에서는 모든 백업이 독립적이므로 백업을 삭제해야 할 때 백업 체인이나 종속성을 고려할 필요가 없습니다. 백업 자동화 스크립트는 정의된 보존 목표를 충족하기 위해 백업을 자동으로 정리합니다.
-
다음 로그 파일 기록은 스냅샷 백업 및 보존 관리의 예입니다.
Begin Oracle DB snapshot backup at 2026-0217-160001 PLAY [Enable Oracle bkup mode for consistent snapshot] ************************* TASK [Gathering Facts] ********************************************************* ok: [orap] TASK [Call presnap tasks block before snapshot] ******************************** TASK [oracle : Copy presnap script to prod host] ******************************* ok: [orap] TASK [oracle : Stage prod DB for snapshot] ************************************* changed: [orap] PLAY [Take a volume snapshot or vault backup] ********************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [ontap : Open a GCP connection via cli] *********************************** included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_open_conn.yml for localhost TASK [ontap : Login to GCP with service key from cli] ************************** changed: [localhost] TASK [ontap : Take app consistent snapshots for DB volumes] ******************** included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_vol_snapshot.yml for localhost TASK [ontap : Obtain current date, time] *************************************** ok: [localhost] => { "ansible_date_time": { "date": "2026-02-17", "day": "17", "epoch": "1771362008", "epoch_int": "1771362008", "hour": "16", "iso8601": "2026-02-17T21:00:08Z", "iso8601_basic": "20260217T160008243394", "iso8601_basic_short": "20260217T160008", "iso8601_micro": "2026-02-17T21:00:08.243394Z", "minute": "00", "month": "02", "second": "08", "time": "16:00:08", "tz": "EST", "tz_dst": "EDT", "tz_offset": "-0500", "weekday": "Tuesday", "weekday_number": "2", "weeknumber": "07", "year": "2026" } } TASK [ontap : Take a snapshot of all DB data volumes in sequence] ************** skipping: [localhost] => (item=orap-u01) skipping: [localhost] => (item=orap-u02) skipping: [localhost] => (item=orap-u03) skipping: [localhost] TASK [ontap : Take a snapshot of all DB logs volumes in sequence] ************** changed: [localhost] => (item=orap-u03) TASK [ontap : Pause to allow snapshots to complete] **************************** Pausing for 15 seconds ok: [localhost] TASK [ontap : Take app consistent vault backups from DB volume snapshots] ****** skipping: [localhost] TASK [ontap : Take app consistent vault backups from DB volumes] *************** skipping: [localhost] PLAY [End Oracle backup mode after snapshot] *********************************** TASK [Gathering Facts] ********************************************************* ok: [orap] TASK [Call postsnap tasks block after snapshot] ******************************** TASK [oracle : Copy postsnap script to prod host] ****************************** ok: [orap] TASK [oracle : Execute postsnapshot script] ************************************ changed: [orap] PLAY [Prune volume snapshot based on defined retention goals] ****************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [Call snapshot management tasks block] ************************************ TASK [ontap : Login to GCP with service key from cli] ************************** changed: [localhost] TASK [ontap : Process snapshots for each volume] ******************************* included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_process_vol_snapshot.yml for localhost => (item=orap-u01) included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_process_vol_snapshot.yml for localhost => (item=orap-u02) included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_process_vol_snapshot.yml for localhost => (item=orap-u03) TASK [ontap : List an existing snapshot of a DB volume in sequence if exist] *** changed: [localhost] TASK [ontap : Debug orap-u01 snapshot list] ************************************ ok: [localhost] => { "snapshots.stdout_lines": [ "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260209t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260213t103635", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260213t000008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260205t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260206t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260212t125953", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260210t153007" ] } TASK [ontap : Parse orap-u01 snapshots count] ********************************** ok: [localhost] TASK [ontap : Parse orap-u01 snapshots by backup frequency] ******************** ok: [localhost] => (item=['projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260209t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260213t103635', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260213t000008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260205t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260206t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260212t125953', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260210t153007']) TASK [ontap : list orap-u01 daily snapshot] ************************************ ok: [localhost] => { "daily_snapshot_raw_0": [ "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260205t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260206t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260209t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260210t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260212t125953", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260213t000008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260213t103635" ] } TASK [ontap : list orap-u01 hourly snapshot] *********************************** ok: [localhost] => { "hourly_snapshot_raw_0": [] } TASK [ontap : Report snapshots count per volume] ******************************* ok: [localhost] => { "msg": [ "Volume orap-u01 has 7 daily snapshots", "Volume orap-u01 has 0 hourly snapshots" ] } TASK [ontap : Check if cleanup is needed] ************************************** ok: [localhost] TASK [ontap : Report cleanup status for orap-u01 daily snapshot after check against retention policy] *** skipping: [localhost] TASK [ontap : Report cleanup status for orap-u01 hourly snapshot after check against retention policy] *** skipping: [localhost] TASK [ontap : Deletion plan for orap-u01 daily snapshots, if cleanup needed] *** skipping: [localhost] TASK [ontap : Deletion plan for orap-u01 hourly snapshots, if cleanup needed] *** skipping: [localhost] TASK [ontap : Get the orap-u01 excess daily snapshots] ************************* skipping: [localhost] => (item=[]) skipping: [localhost] TASK [ontap : Get the orap-u01 excess hourly snapshots] ************************ skipping: [localhost] => (item=[]) skipping: [localhost] TASK [ontap : Delete orap-u01 excess daily snapshots] ************************** skipping: [localhost] TASK [ontap : Delete orap-u01 excess hourly snapshots] ************************* skipping: [localhost] TASK [ontap : List an existing snapshot of a DB volume in sequence if exist] *** changed: [localhost] TASK [ontap : Debug orap-u02 snapshot list] ************************************ ok: [localhost] => { "snapshots.stdout_lines": [ "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260210t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260213t000008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260206t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260205t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260212t125953", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260209t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260213t103635" ] } TASK [ontap : Parse orap-u02 snapshots count] ********************************** ok: [localhost] TASK [ontap : Parse orap-u02 snapshots by backup frequency] ******************** ok: [localhost] => (item=['projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260210t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260213t000008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260206t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260205t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260212t125953', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260209t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260213t103635']) TASK [ontap : list orap-u02 daily snapshot] ************************************ ok: [localhost] => { "daily_snapshot_raw_1": [ "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260205t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260206t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260209t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260210t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260212t125953", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260213t000008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260213t103635" ] } TASK [ontap : list orap-u02 hourly snapshot] *********************************** ok: [localhost] => { "hourly_snapshot_raw_1": [] } TASK [ontap : Report snapshots count per volume] ******************************* ok: [localhost] => { "msg": [ "Volume orap-u02 has 7 daily snapshots", "Volume orap-u02 has 0 hourly snapshots" ] } TASK [ontap : Check if cleanup is needed] ************************************** ok: [localhost] TASK [ontap : Report cleanup status for orap-u02 daily snapshot after check against retention policy] *** skipping: [localhost] TASK [ontap : Report cleanup status for orap-u02 hourly snapshot after check against retention policy] *** skipping: [localhost] TASK [ontap : Deletion plan for orap-u02 daily snapshots, if cleanup needed] *** skipping: [localhost] TASK [ontap : Deletion plan for orap-u02 hourly snapshots, if cleanup needed] *** skipping: [localhost] TASK [ontap : Get the orap-u02 excess daily snapshots] ************************* skipping: [localhost] => (item=[]) skipping: [localhost] TASK [ontap : Get the orap-u02 excess hourly snapshots] ************************ skipping: [localhost] => (item=[]) skipping: [localhost] TASK [ontap : Delete orap-u02 excess daily snapshots] ************************** skipping: [localhost] TASK [ontap : Delete orap-u02 excess hourly snapshots] ************************* skipping: [localhost] TASK [ontap : List an existing snapshot of a DB volume in sequence if exist] *** changed: [localhost] TASK [ontap : Debug orap-u03 snapshot list] ************************************ ok: [localhost] => { "snapshots.stdout_lines": [ "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t090008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t120011", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t060008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260213t000008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260213t103635", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t210008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t220008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t100010", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t120009", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t150007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t030007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260210t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t080007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260209t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260205t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t150007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t050008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260206t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t130008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t230009", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260212t125953", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t160008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t110008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t160007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t020007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t040008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t130008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t140007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t070007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t200008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t010008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t140008" ] } TASK [ontap : Parse orap-u03 snapshots count] ********************************** ok: [localhost] TASK [ontap : Parse orap-u03 snapshots by backup frequency] ******************** ok: [localhost] => (item=['projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t090008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t120011', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t060008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260213t000008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260213t103635', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t210008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t220008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t100010', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t120009', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t150007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t030007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260210t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t080007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260209t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260205t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t150007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t050008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260206t153007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t130008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t230009', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260212t125953', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t160008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t110008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t160007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t020007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t040008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t130008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t140007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t070007', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t200008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t010008', 'projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t140008']) TASK [ontap : list orap-u03 daily snapshot] ************************************ ok: [localhost] => { "daily_snapshot_raw_2": [ "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260205t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260206t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260209t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260210t153007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260212t125953", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260213t000008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-daily-orap-u03-20260213t103635" ] } TASK [ontap : list orap-u03 hourly snapshot] *********************************** ok: [localhost] => { "hourly_snapshot_raw_2": [ "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t200008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t210008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t220008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t230009", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t010008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t020007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t030007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t040008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t050008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t060008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t070007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t080007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t090008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t100010", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t110008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t120009", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t130008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t140007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t150007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260213t160007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t120011", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t130008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t140008", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t150007", "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260217t160008" ] } TASK [ontap : Report snapshots count per volume] ******************************* ok: [localhost] => { "msg": [ "Volume orap-u03 has 7 daily snapshots", "Volume orap-u03 has 25 hourly snapshots" ] } TASK [ontap : Check if cleanup is needed] ************************************** ok: [localhost] TASK [ontap : Report cleanup status for orap-u03 daily snapshot after check against retention policy] *** skipping: [localhost] TASK [ontap : Report cleanup status for orap-u03 hourly snapshot after check against retention policy] *** ok: [localhost] => { "msg": [ "Volume orap-u03 hourly snapshots exceeded retention limit and needs cleanup" ] } TASK [ontap : Deletion plan for orap-u03 daily snapshots, if cleanup needed] *** skipping: [localhost] TASK [ontap : Deletion plan for orap-u03 hourly snapshots, if cleanup needed] *** ok: [localhost] => { "msg": "Volume: orap-u03\nTotal hourly snapshots: 25\nWill delete excess: 1\n" } TASK [ontap : Get the orap-u03 excess daily snapshots] ************************* skipping: [localhost] => (item=[]) skipping: [localhost] TASK [ontap : Get the orap-u03 excess hourly snapshots] ************************ ok: [localhost] => (item=['projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t200008']) => { "msg": "The excess 1 hourly snapshots are: ['projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t200008']" } TASK [ontap : Delete orap-u03 excess daily snapshots] ************************** skipping: [localhost] TASK [ontap : Delete orap-u03 excess hourly snapshots] ************************* changed: [localhost] => (item=projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260212t200008) PLAY RECAP ********************************************************************* localhost : ok=40 changed=7 unreachable=0 failed=0 skipped=23 rescued=0 ignored=0 orap : ok=6 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 End Oracle DB snapshot backup at 2026-0217-160040 -
다음 로그 파일 기록은 애플리케이션 정합성이 보장된 스냅샷의 볼트 백업 세부 정보를 캡처합니다.
Begin Oracle DB daily vault backup at 2026-0225-000501 PLAY [Enable Oracle bkup mode for consistent snapshot] ************************* TASK [Gathering Facts] ********************************************************* ok: [orap] TASK [Call presnap tasks block before snapshot] ******************************** skipping: [orap] PLAY [Take a volume snapshot or vault backup] ********************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [ontap : Open a GCP connection via cli] *********************************** included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_open_conn.yml for localhost TASK [ontap : Login to GCP with service key from cli] ************************** changed: [localhost] TASK [ontap : Take app consistent snapshots for DB volumes] ******************** skipping: [localhost] TASK [ontap : Take app consistent vault backups from DB volume snapshots] ****** included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_snap_bk2vault.yml for localhost TASK [ontap : Check if an existing backup vault db-vault exist] **************** ok: [localhost] TASK [ontap : debug] *********************************************************** ok: [localhost] => { "vault_list_raw.stdout_lines": [ "db-vault", "us-east4-vault", "dg-backup-vault-destination-b9ec" ] } TASK [ontap : Check if db-vault is in the list] ******************************** ok: [localhost] TASK [ontap : Create backup vault, if not exist] ******************************* skipping: [localhost] TASK [ontap : Assign DB volumes to backup vault] ******************************* skipping: [localhost] => (item=orap-u01) skipping: [localhost] => (item=orap-u02) skipping: [localhost] => (item=orap-u03) skipping: [localhost] TASK [ontap : Purge the existing vault backups to maintain the retention] ****** included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_del_vault_bkup.yml for localhost => (item=orap-u01) included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_del_vault_bkup.yml for localhost => (item=orap-u02) included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_del_vault_bkup.yml for localhost => (item=orap-u03) TASK [ontap : List existing vault bkup of the DB volume orap-u01 if exist] ***** changed: [localhost] TASK [ontap : Display all backups for volume orap-u01] ************************* ok: [localhost] => { "vol_vault_bkup.stdout_lines": [ "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u01-20260220t131037", "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-orap-u01-20260224t134624", "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u01-20260224t000504", "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u01-20260223t155123" ] } TASK [ontap : Retrieve the vault backups to purge for volume orap-u01 with retention goal] *** ok: [localhost] => { "msg": [ "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u01-20260220t131037" ] } TASK [ontap : Purge the extra vault backups for volume orap-u01 to maintain the retention] *** changed: [localhost] => (item=projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u01-20260220t131037) TASK [ontap : List existing vault bkup of the DB volume orap-u02 if exist] ***** changed: [localhost] TASK [ontap : Display all backups for volume orap-u02] ************************* ok: [localhost] => { "vol_vault_bkup.stdout_lines": [ "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u02-20260224t000504", "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u02-20260223t155123", "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u02-20260220t131037", "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-orap-u02-20260224t134624" ] } TASK [ontap : Retrieve the vault backups to purge for volume orap-u02 with retention goal] *** ok: [localhost] => { "msg": [ "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u02-20260220t131037" ] } TASK [ontap : Purge the extra vault backups for volume orap-u02 to maintain the retention] *** changed: [localhost] => (item=projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u02-20260220t131037) TASK [ontap : List existing vault bkup of the DB volume orap-u03 if exist] ***** changed: [localhost] TASK [ontap : Display all backups for volume orap-u03] ************************* ok: [localhost] => { "vol_vault_bkup.stdout_lines": [ "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u03-20260224t120840", "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u03-20260224t000504", "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-hourly-orap-u03-20260220t140451", "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-orap-u03-20260224t134624" ] } TASK [ontap : Retrieve the vault backups to purge for volume orap-u03 with retention goal] *** ok: [localhost] => { "msg": [ "projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u03-20260224t000504" ] } TASK [ontap : Purge the extra vault backups for volume orap-u03 to maintain the retention] *** changed: [localhost] => (item=projects/cvs-pm-host-1p/locations/us-east4/backupVaults/db-vault/backups/bkup-daily-orap-u03-20260224t000504) TASK [ontap : Obtain current date, time] *************************************** ok: [localhost] => { "ansible_date_time": { "date": "2026-02-25", "day": "25", "epoch": "1771995904", "epoch_int": "1771995904", "hour": "00", "iso8601": "2026-02-25T05:05:04Z", "iso8601_basic": "20260225T000504817299", "iso8601_basic_short": "20260225T000504", "iso8601_micro": "2026-02-25T05:05:04.817299Z", "minute": "05", "month": "02", "second": "04", "time": "00:05:04", "tz": "EST", "tz_dst": "EDT", "tz_offset": "-0500", "weekday": "Wednesday", "weekday_number": "3", "weeknumber": "08", "year": "2026" } } TASK [ontap : Create a weekly vault backup for each volume from most recent volume snapshot] *** skipping: [localhost] => (item=orap-u01) skipping: [localhost] => (item=orap-u02) skipping: [localhost] => (item=orap-u03) skipping: [localhost] TASK [ontap : Create a daily vault backup for each volume from most recent volume snapshot] *** included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_process_vol_vault.yml for localhost => (item=orap-u01) included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_process_vol_vault.yml for localhost => (item=orap-u02) included: /home/admin/na_oracle_bkup_gcnv/roles/ontap/tasks/gcp_process_vol_vault.yml for localhost => (item=orap-u03) TASK [ontap : List existing snapshots of DB volume orap-u01 if exist] ********** changed: [localhost] TASK [ontap : Retrieve the last or most recent snapshot] *********************** ok: [localhost] => { "snapshots.stdout_lines | sort | last": "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u01/snapshots/snap-daily-orap-u01-20260225t000007" } TASK [ontap : Take a vault bkup of DB volume orap-u01 from most recent snapshot] *** changed: [localhost] TASK [ontap : List existing snapshots of DB volume orap-u02 if exist] ********** changed: [localhost] TASK [ontap : Retrieve the last or most recent snapshot] *********************** ok: [localhost] => { "snapshots.stdout_lines | sort | last": "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u02/snapshots/snap-daily-orap-u02-20260225t000007" } TASK [ontap : Take a vault bkup of DB volume orap-u02 from most recent snapshot] *** changed: [localhost] TASK [ontap : List existing snapshots of DB volume orap-u03 if exist] ********** changed: [localhost] TASK [ontap : Retrieve the last or most recent snapshot] *********************** ok: [localhost] => { "snapshots.stdout_lines | sort | last": "projects/cvs-pm-host-1p/locations/us-east4-b/volumes/orap-u03/snapshots/snap-hourly-orap-u03-20260224t230008" } TASK [ontap : Take a vault bkup of DB volume orap-u03 from most recent snapshot] *** changed: [localhost] TASK [ontap : Create a hourly vault backup for each volume from most recent volume snapshot] *** skipping: [localhost] => (item=orap-u03) skipping: [localhost] TASK [ontap : Take app consistent vault backups from DB volumes] *************** skipping: [localhost] PLAY [End Oracle backup mode after snapshot] *********************************** TASK [Gathering Facts] ********************************************************* ok: [orap] TASK [Call postsnap tasks block after snapshot] ******************************** skipping: [orap] PLAY [Prune volume snapshot based on defined retention goals] ****************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [Call snapshot management tasks block] ************************************ skipping: [localhost] PLAY RECAP ********************************************************************* localhost : ok=36 changed=13 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 orap : ok=2 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 End Oracle DB daily vault backup at 2026-0225-001406
|
|
스냅샷에서 생성된 볼트 백업이 이미 있는 경우 동일한 스냅샷에 대한 두 번째 백업 시도는 오류 없이 건너뜁니다. |
Google Cloud NetApp Volumes를 이용한 Oracle 데이터베이스 복구 및 복제
Google Cloud NetApp Volumes 스냅샷을 사용한 Oracle 데이터베이스 현재 위치 특정 시점 복구
Details
Oracle 데이터베이스 특정 시점 복구는 실수로 삭제되거나 손상된 데이터를 복구하거나 논리적 오류를 복구하는 데 일반적으로 사용됩니다. Google NetApp Volumes 스냅샷을 사용하면 데이터베이스를 특정 스냅샷으로 복원하여 Oracle 데이터베이스의 특정 시점 복구를 간편하게 수행할 수 있습니다. 이를 통해 전체 백업에서 복원하지 않고도 데이터 손실 또는 손상으로부터 신속하게 복구할 수 있습니다. 다음은 Google NetApp Volumes 스냅샷을 사용하여 삭제된 테이블을 복구하는 단계를 보여줍니다.
-
본 데모에서는 먼저 "NTAP" 데이터베이스에 "test"라는 테스트 테이블을 생성하고 데이터를 삽입합니다. 그런 다음 실수로 데이터가 삭제된 상황을 시뮬레이션하기 위해 테이블을 삭제합니다. 이후 Google NetApp Volumes 스냅샷을 사용하여 테이블이 삭제되기 이전 시점으로 데이터베이스를 복원하고 테이블과 데이터가 성공적으로 복구되었는지 확인합니다.
SQL> select current_timestamp from dual; CURRENT_TIMESTAMP --------------------------------------------------------------------------- 06-FEB-26 08.41.29.708302 PM +00:00 SQL> select * from test; ID ---------- DT --------------------------------------------------------------------------- EVENT -------------------------------------------------------------------------------- 1 05-FEB-26 08.14.17.000000 PM testing Oracle in-place restore and point-in-time recovery for GCNV SQL> drop table test; Table dropped. SQL> select * from test; select * from test * ERROR at line 1: ORA-00942: table or view does not exist -
스냅샷에서 복원하기 전에 Oracle 서비스를 중지하여 Oracle 데이터베이스를 종료하고 호스트의 파일 시스템을 마운트 해제하십시오.
[root@orap admin]# systemctl stop oracle_NTAP [root@orap admin]# umount /u01 [root@orap admin]# umount /u02 [root@orap admin]# umount /u03 [root@orap admin]# 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 17M 7.2G 1% /run tmpfs 7.3G 0 7.3G 0% /sys/fs/cgroup /dev/sda2 50G 23G 28G 46% / /dev/sda1 200M 5.9M 194M 3% /boot/efi tmpfs 1.5G 0 1.5G 0% /run/user/1010
-
복구하려는 데이터가 포함된 스냅샷을 식별합니다. Google Cloud Console 또는 gcloud 명령줄 도구를 사용하여 Oracle 데이터베이스 볼륨에 사용 가능한 스냅샷을 나열할 수 있습니다. 스냅샷 목록 끝에 있는 점 세 개를 클릭하고 `Show More`에서 옵션을 확인합니다. `Revert`를 선택하여 선택한 스냅샷으로 되돌립니다. 모든 DB 볼륨에 대해 반복합니다.



-
스냅샷 되돌리기가 완료된 후 DB 볼륨을 마운트하십시오.
[root@orap admin]# mount -t nfs 10.165.128.242:/orap-u01 /u01 -o rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=65536,wsize=65536 [root@orap admin]# mount -t nfs 10.165.128.242:/orap-u02 /u02 -o rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=65536,wsize=65536 [root@orap admin]# mount -t nfs 10.165.128.242:/orap-u03 /u03 -o rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=65536,wsize=65536 [root@orap admin]# 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 17M 7.2G 1% /run tmpfs 7.3G 0 7.3G 0% /sys/fs/cgroup /dev/sda2 50G 23G 28G 46% / /dev/sda1 200M 5.9M 194M 3% /boot/efi tmpfs 1.5G 0 1.5G 0% /run/user/1010 10.165.128.242:/orap-u01 50G 11G 40G 22% /u01 10.165.128.242:/orap-u02 500G 477G 24G 96% /u02 10.165.128.242:/orap-u03 300G 4.9G 296G 2% /u03
-
Oracle 데이터베이스 서버에 로그인하고 sqlplus를 통해 시점 복구 명령을 실행하여 데이터베이스를 원하는 시점으로 복구하십시오.
[oracle@orap ~]$ env | grep ORA ORACLE_SID=NTAP ORACLE_HOME=/u01/app/oracle/product/21.0.0/NTAP [oracle@orap ~]$ sqlplus / as sysdba SQL*Plus: Release 21.0.0.0.0 - Production on Fri Feb 6 21:08:34 2026 Version 21.19.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 6442447808 bytes Fixed Size 9700288 bytes Variable Size 1342177280 bytes Database Buffers 5083496448 bytes Redo Buffers 7073792 bytes Database mounted. SQL> recover database until cancel using backup controlfile; ORA-00279: change 6239773 generated at 02/06/2026 20:30:06 needed for thread 1 ORA-00289: suggestion : /u03/orareco/NTAP/archivelog/2026_02_06/o1_mf_1_55_%u_.arc ORA-00280: change 6239773 for thread 1 is in sequence #55 [oracle@orap ~]$ ls -l /u03/orareco/NTAP/archivelog/2026_02_06 total 159376 -r--r----- 1 oracle oinstall 118324736 Feb 6 16:05 o1_mf_1_50__4lsr8joo_.arc -r--r----- 1 oracle oinstall 7432704 Feb 6 17:05 o1_mf_1_51__4p51o6k4_.arc -r--r----- 1 oracle oinstall 11385856 Feb 6 18:05 o1_mf_1_52__4sjbbr29_.arc -r--r----- 1 oracle oinstall 16721920 Feb 6 19:05 o1_mf_1_53__4wvn4ohy_.arc -r--r----- 1 oracle oinstall 8655360 Feb 6 20:30 o1_mf_1_54__51mmc8ph_.arc Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /u03/orareco/NTAP/onlinelog/redo01.log Log applied. Media recovery complete. SQL> alter database open resetlogs; Database altered. Note: You may need to apply the current online logs if there are any changes when the snapshot was taken. -
복구가 완료되면 데이터가 성공적으로 복구되었는지 확인하십시오.
SQL> alter session set container = ntap_pdb1; Session altered. SQL> select * from test; ID DT EVENT ---------- --------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- 1 05-FEB-26 08.14.17.000000 PM testing Oracle in-place restore and point-in-time recovery for GCNV SQL> select current_timestamp from dual; CURRENT_TIMESTAMP --------------------------------------------------------------------------- 06-FEB-26 09.39.08.097365 PM +00:00 -
데이터베이스를 systemd 서비스로 종료한 후 다시 시작하여 복구 프로세스를 완료하십시오.
SQL> alter session set container=cdb$root; Session altered. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit [root@orap admin]# systemctl start oracle_NTAP [root@orap admin]# systemctl status oracle_NTAP ● oracle_NTAP.service - Oracle Database Start/Stop Service Loaded: loaded (/etc/systemd/system/oracle_NTAP.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2026-02-06 21:42:19 UTC; 9s ago Process: 61431 ExecStop=/u01/app/oracle/product/21.0.0/NTAP/bin/dbshut /u01/app/oracle/product/21.0.0/NTAP (code=exited, status=0/SUCCESS) Process: 62476 ExecStart=/u01/app/oracle/product/21.0.0/NTAP/bin/dbstart /u01/app/oracle/product/21.0.0/NTAP (code=exited, status=0/SUCCESS) Tasks: 85 (limit: 94156) Memory: 6.6G CGroup: /system.slice/oracle_NTAP.service ├─62487 /u01/app/oracle/product/21.0.0/NTAP/bin/tnslsnr LISTENER -inherit ├─62587 ora_pmon_NTAP ├─62591 ora_clmn_NTAP ├─62595 ora_psp0_NTAP ├─62599 ora_vktm_NTAP ├─62605 ora_gen0_NTAP ├─62609 ora_mman_NTAP ├─62615 ora_gen1_NTAP ├─62617 ora_gen2_NTAP ├─62619 ora_vosd_NTAP ├─62621 ora_diag_NTAP ├─62623 ora_ofsd_NTAP ├─62625 ora_dbrm_NTAP ├─62627 ora_vkrm_NTAP ├─62629 ora_svcb_NTAP ├─62631 ora_pman_NTAP ├─62633 ora_dia0_NTAP ├─62635 ora_dbw0_NTAP ├─62637 ora_lgwr_NTAP ├─62642 ora_ckpt_NTAP ├─62648 ora_smon_NTAP ├─62651 ora_smco_NTAP ├─62655 ora_reco_NTAP ├─62657 ora_lreg_NTAP ├─62659 ora_bg00_NTAP ├─62661 ora_pxmn_NTAP ├─62675 ora_mmon_NTAP ├─62677 ora_mmnl_NTAP ├─62685 ora_lg00_NTAP ├─62688 ora_bg01_NTAP ├─62690 ora_d000_NTAP ├─62692 ora_w000_NTAP ├─62695 ora_s000_NTAP ├─62699 ora_lg01_NTAP ├─62701 ora_tmon_NTAP ├─62703 ora_w001_NTAP ├─62710 ora_m000_NTAP ├─62712 ora_m001_NTAP ├─62717 ora_tt00_NTAP ├─62719 ora_arc0_NTAP ├─62721 ora_tt01_NTAP ├─62723 ora_arc1_NTAP ├─62725 ora_arc2_NTAP ├─62727 ora_arc3_NTAP ├─62729 ora_tt02_NTAP ├─62733 ora_rcbg_NTAP ├─62737 ora_w002_NTAP ├─62739 ora_aqpc_NTAP ├─62743 ora_p000_NTAP ├─62745 ora_p001_NTAP ├─62747 ora_p002_NTAP ├─62749 ora_p003_NTAP ├─62751 ora_p004_NTAP ├─62753 ora_p005_NTAP ├─62755 ora_p006_NTAP ├─62757 ora_p007_NTAP ├─62759 ora_s001_NTAP ├─62942 ora_w003_NTAP ├─62949 ora_w004_NTAP ├─62958 ora_cjq0_NTAP ├─62960 ora_qm02_NTAP ├─63026 ora_q001_NTAP ├─63028 ora_qm03_NTAP ├─63030 ora_q003_NTAP ├─63032 ora_q004_NTAP ├─63034 ora_q005_NTAP ├─63036 ora_p008_NTAP ├─63038 ora_p009_NTAP ├─63040 ora_p00a_NTAP ├─63042 ora_p00b_NTAP ├─63048 ora_m002_NTAP ├─63050 ora_m003_NTAP ├─63056 ora_mz00_NTAP ├─63060 ora_mz03_NTAP ├─63062 ora_mz02_NTAP ├─63064 ora_mz04_NTAP └─63072 ora_m004_NTAP Feb 06 21:41:55 orap systemd[1]: Starting Oracle Database Start/Stop Service... Feb 06 21:41:55 orap dbstart[62524]: Processing Database instance "NTAP": log file /u01/app/oracle/homes/OraDB21Home1/rdbms/log/startup.log Feb 06 21:42:19 orap systemd[1]: Started Oracle Database Start/Stop Service.
Google Cloud NetApp Volumes Vault 백업을 사용하여 Oracle 데이터베이스를 새 호스트로 복구하는 방법
Details
원래 호스트를 더 이상 사용할 수 없거나 기본 DB 볼륨에 액세스할 수 없는 경우와 같이 새 호스트로 복구해야 하는 장애가 발생하면 Google Cloud NetApp Volumes 볼트 백업을 사용하여 새 호스트에 Oracle 데이터베이스를 복원할 수 있습니다. 이 과정은 스냅샷을 사용한 제자리 복구와 유사하지만 스냅샷으로 되돌리는 대신 볼트 백업에서 데이터베이스를 복원합니다. 이를 통해 다른 호스트에서 데이터베이스를 복구할 수 있으므로 원래 호스트를 더 이상 사용할 수 없거나 하드웨어 장애가 발생한 시나리오에서 유용할 수 있습니다. 볼트 백업에서 복원하는 단계는 다음과 같습니다.
-
복구하려는 데이터가 포함된 볼트 백업을 찾으세요. Google Cloud 콘솔 또는 gcloud 명령줄 도구를 사용하여 Oracle 데이터베이스 볼륨에 사용 가능한 볼트 백업 목록을 확인할 수 있습니다. 볼트 백업 목록 끝에 있는 점 세 개를 클릭하고
Show more아래에서 옵션을 확인하세요. 선택한 볼트 백업에서 복원하려면 `Create new volume from backup`를 선택하세요. 모든 DB 볼륨에 대해 반복합니다. 필요한 경우 동일한 스토리지 풀 또는 다른 스토리지 풀로 복원할 수도 있습니다.

-
하드웨어, 운영 체제 및 OS 커널 패치 구성 측면에서 원래 호스트와 일치하는 새 데이터베이스 서버를 생성합니다. 이렇게 하면 복원 프로세스가 완료된 후 복원된 데이터베이스를 제대로 마운트하고 열 수 있습니다.

You may also use the same Ansible playbook from automated database deployment section to automate the new database server configuration for the linux only. [admin@ansiblectl na_oracle_deploy_nfs]$ ansible-playbook -i hosts 2-linux_config.yml -u admin -e @vars/vars.yml
-
관리자 사용자로 새 DB 서버에 로그인합니다. 복원된 DB 볼륨을 원래 호스트와 동일한 마운트 지점에 마운트합니다. 필요한 경우 마운트 지점의 소유권을 변경합니다.
[admin@orap2 ~]$ sudo mount -t nfs 10.165.128.242:/orap-u01-bkup /u01 -o rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=262144,wsize=262144 mount: (hint) your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload. [admin@orap2 ~]$ sudo mount -t nfs 10.165.128.242:/orap-u02-bkup /u02 -o rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=262144,wsize=262144 mount: (hint) your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload. [admin@orap2 ~]$ sudo mount -t nfs 10.165.128.242:/orap-u03-bkup /u03 -o rw,bg,hard,vers=3,proto=tcp,timeo=600,rsize=262144,wsize=262144 mount: (hint) your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload. [admin@orap2 ~]$ sudo systemctl daemon-reload [admin@orap2 ~]$ 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 23G 28G 45% / /dev/sda1 200M 5.9M 194M 3% /boot/efi tmpfs 1.5G 0 1.5G 0% /run/user/1010 tmpfs 1.5G 0 1.5G 0% /run/user/1011 10.165.128.242:/orap-u01-bkup 50G 11G 40G 22% /u01 10.165.128.242:/orap-u02-bkup 500G 382G 119G 77% /u02 10.165.128.242:/orap-u03-bkup 300G 5.6G 295G 2% /u03 [admin@orap2 ~]$ sudo chown oracle:oinstall /u01 [admin@orap2 ~]$ sudo chown oracle:oinstall /u02 [admin@orap2 ~]$ sudo chown oracle:oinstall /u03 -
oratab, oraInstall.loc 파일과 같은 Oracle 데이터베이스 환경 변수 및 루트 디렉터리 파일을 구성합니다.
[admin@orap2 ~]$ sudo vi /etc/oraInst.loc [admin@orap2 ~]$ vi /etc/oratab [admin@orap2 ~]$ sudo vi /etc/oratab [admin@orap2 ~]$ sudo chown oracle:oinstall /etc/oratab [admin@orap2 ~]$ ls -l /etc/ora* -rw-r--r--. 1 root root 56 Feb 13 19:37 /etc/oraInst.loc -rw-rw-r--. 1 oracle oinstall 784 Feb 13 19:38 /etc/oratab [oracle@orap2 ~]$ env | grep ORA ORACLE_SID=NTAP ORACLE_HOME=/u01/app/oracle/product/21.0.0/NTAP
-
oracle 사용자로서 Oracle 바이너리를 다시 링크하십시오.
[oracle@orap2 ~]$ cd $ORACLE_HOME/bin [oracle@orap2 bin]$ ./relink writing relink log to: /u01/app/oracle/homes/OraDB21Home1/install/relinkActions2026-02-13_07-45-29PM.log
-
마지막으로 사용 가능한 로그까지 데이터베이스를 복구한 다음 resetlogs 옵션을 사용하여 데이터베이스를 엽니다.
[oracle@orap2 bin]$ sqlplus / as sysdba SQL*Plus: Release 21.0.0.0.0 - Production on Fri Feb 13 19:49:50 2026 Version 21.19.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 6442447808 bytes Fixed Size 9700288 bytes Variable Size 1593835520 bytes Database Buffers 4831838208 bytes Redo Buffers 7073792 bytes Database mounted. SQL> recover database until cancel using backup controlfile; ORA-00279: change 7017907 generated at 02/13/2026 05:00:07 needed for thread 1 ORA-00289: suggestion : /u03/orareco/NTAP/archivelog/2026_02_13/o1_mf_1_96__938r46wf_.arc ORA-00280: change 7017907 for thread 1 is in sequence #96 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} auto ORA-00279: change 7022777 generated at 02/13/2026 06:00:06 needed for thread 1 ORA-00289: suggestion : /u03/orareco/NTAP/archivelog/2026_02_13/o1_mf_1_97__96n12q2b_.arc ORA-00280: change 7022777 for thread 1 is in sequence #97 ORA-00278: log file '/u03/orareco/NTAP/archivelog/2026_02_13/o1_mf_1_96__938r46wf_.arc' no longer needed for this recovery . . Specify log: {<RET>=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled. SQL> alter database open resetlogs; Database altered. 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 instance_name, host_name from v$instance; INSTANCE_NAME ---------------- HOST_NAME ---------------------------------------------------------------- NTAP orap2 SQL> alter session set container=ntap_pdb1; Session altered. SQL> select * from test; ID ---------- DT --------------------------------------------------------------------------- EVENT -------------------------------------------------------------------------------- 1 05-FEB-26 08.14.17.000000 PM testing Oracle in-place restore and point-in-time recovery for GCNV -
복구가 완료되면 listener.ora 및 tnsnames.ora 파일을 새 호스트 이름 또는 IP 주소와 일치하도록 수정하는 등의 추가 단계를 수행해야 합니다. 필요한 경우 systemd 서비스를 설정하여 데이터베이스를 종료하고 다시 시작하여 복원 및 복구 프로세스를 완료하십시오.
|
|
Oracle 제어 파일의 중복 복사본이 데이터베이스 구성에 구현된 경우. DB 복원 후 복원된 데이터베이스에 일관되지 않은 제어 파일이 있을 수 있습니다. 이 경우 로그 볼륨에 있는 제어 파일을 사용하여 데이터 볼륨의 제어 파일을 덮어써서 문제를 해결할 수 있습니다. |
Google Cloud NetApp Volumes 스냅샷 또는 볼트 백업을 사용하여 Oracle 데이터베이스를 새 호스트로 복제하는 방법
Details
Google Cloud NetApp Volumes 스냅샷 또는 볼트 백업을 사용하여 새 호스트로 Oracle 데이터베이스를 복제하는 것은 장애 발생 시 새 호스트에서 Google Cloud NetApp Volumes 스냅샷 또는 볼트 백업을 사용하여 Oracle 데이터베이스를 복원 및 복구하는 방법을 설명하는 이전 섹션과 동일합니다. 그러나 복제된 데이터베이스의 이름을 변경하는 것은 추가 단계로 필요할 수 있으며, 이는 Oracle dbnewid 유틸리티를 사용하여 쉽게 수행할 수 있습니다. DB 복제는 UAT 테스트, 개발 또는 기타 목적으로 유용할 수 있습니다.
자동화된 클론 생성 및 클론 새로 고침이 필요한 일부 고객의 경우, Google Cloud NetApp Volumes 스냅샷 또는 볼트 백업을 사용하여 클론 생성 및 새로 고침 프로세스를 자동화하는 데 참조할 수 있는 Ansible 플레이북 샘플을 NetApp Solutions Engineering 팀에 요청해 주시기 바랍니다. NetApp Solutions Engineering 팀에 요청을 제출하는 링크는 다음과 같습니다:"자동화 요청"
추가 정보를 찾을 수 있는 곳
이 문서에 설명된 정보에 대해 자세히 알아보려면 다음 문서 및/또는 웹사이트를 검토하세요.
-
Google Cloud NetApp Volumes 개요
-
Oracle Direct NFS 배포
-
응답 파일을 사용하여 Oracle 데이터베이스 설치 및 구성