Skip to main content
NetApp database solutions
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

TR-5020: Bereitstellung einer eigenständigen Oracle-Instanz auf Google Cloud NetApp Volumes mit NFS

Beitragende acao8888
Änderungen vorschlagen

Allen Cao, Niyaz Mohamed, NetApp

Diese Lösung bietet einen Überblick und Details zur Oracle-Bereitstellung auf Google Cloud NetApp Volumes als primärem Datenbankspeicher über das NFS-Protokoll, und die Oracle-Datenbank wird als eigenständige Containerdatenbank mit aktiviertem dNFS bereitgestellt.

Zweck

Der Betrieb von mit hohen Performance-Anforderungen und latenkkritischen Oracle-Workloads in der Cloud kann eine Herausforderung darstellen. Google Cloud NetApp Volumes (GCNV) macht es Geschäftsbereichs- und Storage-Profis in Unternehmen leicht, anspruchsvolle Oracle-Workloads ohne Codeänderung zu migrieren und auszuführen. Google Cloud NetApp Volumes wird häufig als zugrunde liegender gemeinsam genutzter Dateispeicherdienst in verschiedenen Szenarien verwendet, wie zum Beispiel bei der neuen Bereitstellung oder Migration (Lift and Shift) von Oracle-Datenbanken von On-Premises zu Google Cloud.

Diese Dokumentation demonstriert die GCNV DB Volumes-Konfiguration in der Google Cloud Console und die vereinfachte Bereitstellung von Oracle-Datenbanken in Google Cloud NetApp Volumes über NFS-Mounts mithilfe von Ansible-Automatisierung. Die Oracle-Datenbank wird in einer Container-Datenbank (CDB) und Pluggable-Datenbanken (PDB) Konfiguration mit aktiviertem Oracle dNFS-Protokoll zur Leistungssteigerung bereitgestellt. Außerdem wird eine detaillierte Strategie für Datenbank-Backup, -Wiederherstellung und -Klonen demonstriert und ein Automatisierungstoolkit für das Management von Oracle-Datenbank-Backups in Google Cloud bereitgestellt.

Diese Lösung ist für die folgenden Anwendungsfälle geeignet:

  • Automatisierte Oracle Datenbankbereitstellung auf Google Cloud NetApp Volumes in Google Cloud mit NFS-Protokoll.

  • Oracle Datenbank-Backup, -Recovery und -Klon auf Google Cloud NetApp Volumes in Google Cloud.

Publikum

Diese Lösung ist für folgende Personen gedacht:

  • Ein Datenbankadministrator, der Oracle auf Google Cloud NetApp Volumes bereitstellen möchte.

  • Ein Datenbanklösungsarchitekt, der Oracle-Workloads auf Google Cloud NetApp Volumes testen möchte.

  • Ein Speicheradministrator, der eine Oracle-Datenbank auf Google Cloud NetApp Volumes bereitstellen und verwalten möchte.

  • Ein Anwendungsinhaber, der eine Oracle-Datenbank auf Google Cloud NetApp Volumes einrichten möchte.

Test- und Validierungsumgebung für Lösungen

Die Tests und Validierungen dieser Lösung wurden in einer Laborumgebung durchgeführt, die möglicherweise nicht der endgültigen Bereitstellungsumgebung entspricht. Siehe den AbschnittWichtige Faktoren für die Bereitstellungsüberlegungen für weitere Informationen.

Architektur

Dieses Bild bietet eine detaillierte Darstellung der Oracle-Bereitstellungskonfiguration in Google Cloud mit NFS und Google Cloud NetApp Volumes.

Hardware- und Softwarekomponenten

Hardware

Google Cloud NetApp Volumes

Aktuelles Angebot in Google Cloud von Google

Ein Speicherpool mit Flex-Servicelevel, 2 TiB Kapazität, 64 MiB/s Durchsatz und 1024 IOPS, bereitgestellt für Oracle Datenbank-Speicher

Google Compute Engine VMs für DB-Server

n1-standard-4 (4 vCPUs, 15 GB Arbeitsspeicher)

Zwei Linux-VM-Instanzen für die Demonstration von Bereitstellung und Recovery

Software

RedHat Linux

RHEL Linux 8.10 (LVM) - x64 Gen2

RedHat-Abonnement zum Testen bereitgestellt

Oracle-Datenbank

Version 21.19

RU-Patch p38068980_210000_Linux-x86-64.zip angewendet

Oracle OPatch

Version 12.2.0.1.48

Neuester Patch p6880880_210000_Linux-x86-64.zip

NFS

Version 3.0

Oracle dNFS aktiviert

Ansible

Kern 2.16.2

Python 3.10.13

Oracle-Datenbankkonfiguration in der Laborumgebung

Server

Datenbank

DB-Speicher

orap - primärer Datenbankserver

NTAP(NTAP_PDB1,NTAP_PDB2,NTAP_PDB3)

/u01, /u02, /u03 NFS-Mounts auf dem Google Cloud NetApp Volumes-Speicherpool

orap2 - aus dem Backup wiederhergestellt

NTAP(NTAP_PDB1,NTAP_PDB2,NTAP_PDB3)

/u01, /u02, /u03 NFS-Mounts auf dem Google Cloud NetApp Volumes-Speicherpool

Wichtige Faktoren für die Bereitstellungsüberlegungen

  • GCNV-Speicherpool-Servicelevel und -Durchsatz. GCNV bietet vier verschiedene Servicelevel: Standard, Premium, Extreme und Flex. Bei den Serviceleveln Standard, Premium und Extreme wird der IO-Durchsatz anhand der Größe eines DB-Volumes bestimmt und ist festgelegt. Der gesamte IO-Durchsatz ist durch die Größe des Speicherpools begrenzt. Beim Servicelevel Flex ist der IO-Durchsatz nicht an die Größe eines DB-Volumes gebunden, sondern wird auf alle DB-Volumes verteilt und ist auf die Größe des Speicherpools begrenzt. Dies ermöglicht kleinere Datenbanken mit gelegentlichen IOPs-Spitzen. Zum Vergleich: Die Servicelevel Standard, Premium und Extreme bieten einen Durchsatz von 16 KiB/s pro GiB, 64 KiB/s pro GiB bzw. 128 KiB/s pro GiB. Der Servicelevel Flex bietet hingegen bis zu 5 GiB/s pro Speicherpool mit benutzerdefinierten Leistungseinstellungen. Es ist wichtig, den Servicelevel und den Speicherpool entsprechend dem erwarteten IO-Durchsatz und den IOPS-Anforderungen der Oracle Datenbank-Workload richtig zu dimensionieren.

  • Datenbank Storage-Layout. In dieser automatisierten Oracle-Bereitstellung werden standardmäßig drei Datenbank-Volumes pro Datenbank bereitgestellt, um Oracle-Binärdateien, Daten und Protokolle zu speichern. Die Volumes werden auf dem Oracle-DB-Server als /u01 - Binärdateien, /u02 - Daten, /u03 - Protokolle über NFS eingebunden. Zur Redundanz sind auf den Mountpunkten /u02 und /u03 jeweils zwei Kontrolldateien konfiguriert.

  • dNFS-Konfiguration. Durch die Verwendung von Oracle dNFS (verfügbar ab Oracle 11g) kann eine Oracle-Datenbank, die auf Google Compute Engine mit Google Cloud NetApp Volumes Storage ausgeführt wird, deutlich mehr E/A-Operationen durchführen als der native NFS-Client. Die automatisierte Oracle-Bereitstellung konfiguriert dNFS standardmäßig auf NFSv3.

  • Snapshot- und Vault-Backup. Anstelle des herkömmlichen RMAN-Datenbank-Backups empfiehlt NetApp, ein speichereffizientes, anwendungskonsistentes Snapshot- und Vault-Backup zu implementieren, um schnelle (Sekunden) Snapshot-Backups, eine zügige (Minuten) Datenbank-Wiederherstellung, Recovery und das Klonen von Snapshots oder Backups aus dem Storage Vault zu erreichen. Ein Snapshot ist eine zeitpunktgenaue Kopie der Datenbank-Volumes, die innerhalb von Sekunden erstellt werden kann und zum Zeitpunkt der Erstellung keinen zusätzlichen Speicherplatz belegt. Er existiert parallel zu den primären Datenbank-Volumes und kann verloren gehen, wenn die primären Volumes kompromittiert werden. Ein Vault-Backup ist eine Kopie des Snapshots, die im Objektspeicher und an einem anderen Ort für Zwecke der Notfallwiederherstellung gespeichert wird.

  • RTO/RPO-Überlegungen. Bei der Einrichtung von Datenbank-Backup-Strategien ist es wichtig, die Anforderungen an Recovery Time Objective (RTO) und Recovery Point Objective (RPO) zu berücksichtigen. Während die Auswirkungen auf die Datenbank bei Snapshot-basierten Backups minimal sind, gibt es einen Zielkonflikt zwischen der Häufigkeit der Backups, die das RTO/RPO beeinflusst, und den Speicherkosten. Häufigere Backups können helfen, niedrigere RTO/RPO zu erreichen, können jedoch die Speicherkosten erhöhen. Es ist wichtig, das richtige Gleichgewicht basierend auf den Geschäftsanforderungen und dem Budget zu finden. Die Automatisierungslösung bietet ein Automatisierungs-Toolkit auf Basis von Ansible Playbook zur Verwaltung von Oracle Datenbank-Backups mit benutzerkonfigurierbarer Aufbewahrung und Backup-Zeitplan.

Lösungsbereitstellung

Die folgenden Abschnitte bieten Schritt-für-Schritt-Anleitungen für die automatisierte Bereitstellung von Oracle 21c sowie für Datenbank-Backup, -Recovery und -Klonen auf Google Cloud NetApp Volumes mit direkt eingebundenen Datenbankvolumes über NFS auf Google Cloud Compute Engine VMs als Datenbankserver.

Voraussetzungen für die Bereitstellung

Details

Für die Bereitstellung sind die folgenden Voraussetzungen erforderlich.

  1. Ein Google Cloud account wurde eingerichtet, und die notwendigen VPC- und Netzwerkeinstellungen wurden innerhalb Ihres Google Cloud account spezifischen Projekts erstellt.

  2. Stellen Sie über die Google Cloud Console Google Compute Engine VMs als Oracle DB-Server bereit. Deaktivieren Sie die Firewall und aktivieren Sie die SSH-Authentifizierung mit einem Admin-Benutzer für die DB-Server, um die Automatisierung zu ermöglichen. Siehe das Architekturdiagramm im vorherigen Abschnitt für Details zur Umgebungskonfiguration.

    Hinweis Stellen Sie sicher, dass Sie mindestens 50G auf der VM-Root-Festplatte reserviert haben, um ausreichend Speicherplatz für die Oracle-Installationsdateien und die Auslagerungsdatei des Betriebssystems zu haben.
  3. Stellen Sie eine Linux-VM als Ansible-Controller-Knoten bereit, auf der die in der README-Datei des Automation Toolkit aufgeführte Version von Ansible und Git installiert ist. Hilfe zur Ansible-Automatisierung finden Sie unter folgendem Link: "Erste Schritte mit der NetApp Lösungsautomatisierung" im Abschnitt -
    Setup the Ansible Control Node for CLI deployments on RHEL / CentOS oder
    Setup the Ansible Control Node for CLI deployments on Ubuntu / Debian.

    Hinweis Der Ansible-Controller-Knoten kann sich entweder lokal oder in der Google Cloud befinden, solange er die Google Cloud DB-Server-VMs über den SSH-Port erreichen kann.
  4. Klonen Sie eine Kopie des NetApp Oracle Deployment Automation Toolkit für NFS.

    git clone https://bitbucket.ngage.netapp.com/scm/ns-bb/na_oracle_deploy_nfs.git
    Hinweis Auf das Toolkit kann derzeit nur von internen NetApp Benutzern mit Bitbucket-Zugriff zugegriffen werden. Interessierte externe Benutzer fordern den Zugriff bitte bei ihrem Account-Team an oder wenden sich an das NetApp Solutions Engineering-Team.
  5. Staging der Oracle 21c-Installationsdateien im Google Cloud DB VM-Verzeichnis /tmp/archive mit der Berechtigung 777.

    installer_archives:
      - "LINUX.X64_213000_db_home.zip"
      - "p34765931_210000_Linux-x86-64.zip"
      - "p6880880_210000_Linux-x86-64.zip"

Google Cloud NetApp Volumes-Konfiguration für Oracle-Datenbankspeicher

Details

Nachfolgend sind die Schritte zur Konfiguration von Google Cloud NetApp Volumes für die Oracle-Datenbankspeicherung mit Screenshots zur Veranschaulichung aufgeführt.

  1. Erstellen Sie einen Speicherpool mit dem gewünschten Servicelevel und der gewünschten Kapazität für Oracle Datenbank-Speicher. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS.

  2. Erstellen Sie drei DB-Volumes für die Oracle Datenbank mit der gewünschten Größe im Speicherpool für die Datenbankspeicherung. Zum Beispiel /u01 für Binärdateien, /u02 für Datendateien und /u03 für Redo-Logs und Kontrolldateien mit dem NFSv3-Protokoll und der Mount-Option, wie in den folgenden Screenshots dargestellt. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS. +Dieses Bild enthält Screenshots der GCNV-Volumes-Konfiguration für die Oracle-Bereitstellung in Google Cloud mit NFS.

Hinweis Aktivieren Sie geplante Backups in Google Cloud NetApp Volumes zu diesem Zeitpunkt nicht, da das integrierte Backup-Schema nicht anwendungskonsistent ist. Das für diese Lösung bereitgestellte Backup-Automatisierungstoolkit verwaltet anwendungskonsistente Datenbank-Backups mit benutzerdefiniertem Zeitplan und Aufbewahrungsrichtlinie.

Automatisierte Oracle-Bereitstellung mit Ansible playbook

Automatisierungsparameterdateien

Details

Ansible playbook führt Datenbankinstallations- und Konfigurationsaufgaben mit vordefinierten Parametern aus. Das Toolkit unterstützt derzeit die Bereitstellung der Oracle Datenbankversionen 19c und 21c. Für diese Oracle-Automatisierungslösung gibt es drei benutzerdefinierte Parameterdateien, die vor der Playbook-Ausführung vom Benutzer eingegeben werden müssen.

  • Hosts – Definieren Sie Ziele, gegen die das Automatisierungs-Playbook ausgeführt wird.

  • vars/vars.yml – die globale Variablendatei, die Variablen definiert, die für alle Ziele gelten.

  • host_vars/host_name.yml – die lokale Variablendatei, die Variablen definiert, die nur für ein benanntes Ziel gelten. In unserem Anwendungsfall sind dies die Oracle DB-Server.

Zusätzlich zu diesen benutzerdefinierten Variablendateien gibt es mehrere Standardvariablendateien, die Standardparameter enthalten, die nur bei Bedarf geändert werden müssen. In den folgenden Abschnitten wird gezeigt, wie die benutzerdefinierten Variablendateien konfiguriert werden.

Konfiguration der Parameterdateien

Details
  1. Ansible-Ziel hosts Dateikonfiguration:

    #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
  2. Allgemein vars/vars.yml Dateikonfiguration

    ###########################################
    ### 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
  3. Lokale DB-Server host_vars/host_name.yml-Konfiguration wie orap.yml, orap2.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

Playbook-Ausführung

Details

Das Automatisierungs-Toolkit enthält insgesamt fünf Playbooks. Jeder führt unterschiedliche Aufgabenblöcke aus und dient unterschiedlichen Zwecken.

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.

Es gibt drei Möglichkeiten, die Playbooks mit den folgenden Befehlen auszuführen.

  1. Führen Sie alle Bereitstellungs-Playbooks in einem kombinierten Lauf aus.

    ansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml
  2. Führen Sie Playbooks einzeln mit der Zahlenfolge von 1-4 aus.

    ansible-playbook -i hosts 1-ansible_requirements.yml -u admin -e @vars/vars.yml
    ansible-playbook -i hosts 2-linux_config.yml -u admin -e @vars/vars.yml
    ansible-playbook -i hosts 4-oracle_config.yml -u admin -e @vars/vars.yml
  3. Führen Sie 0-all_playbook.yml mit einem Tag aus.

    ansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -t ansible_requirements
    ansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -t linux_config
    ansible-playbook -i hosts 0-all_playbook.yml -u admin -e @vars/vars.yml -t oracle_config
  4. Machen Sie die Umgebung rückgängig

    ansible-playbook -i hosts 5-destroy.yml -u admin -e @vars/vars.yml

Validierung nach der Ausführung

Details

Nach Ausführung des Playbooks melden Sie sich an der Oracle-DB-Server-VM an, um zu überprüfen, ob Oracle installiert und konfiguriert ist und eine Container-Datenbank erfolgreich erstellt wurde. Im Folgenden finden Sie ein Beispiel für die Oracle-Datenbank-Validierung auf dem Host orap.

  1. NFS-Mounts validieren

    [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
  2. Als Oracle-Benutzer den Oracle Listener validieren

    [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
  3. Validieren Sie die Oracle-Datenbank und 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
  4. Oracle-Service auf automatischen Start und Shutdown validieren.

    [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 ~]$

Oracle Datenbank-Backup mit Google Cloud NetApp Volumes

Oracle Datenbank-Snapshot und Vault-Backup

Details

Um die einfache Einrichtung von Oracle-Datenbank-Backups zu erleichtern, hat das NetApp Solutions Engineering Team ein Ansible-Playbook entwickelt, um Oracle-Datenbank-Backups mit benutzerkonfigurierbarer Aufbewahrungsrichtlinie und Sicherungszeitplan zu automatisieren. Das Playbook nutzt die Snapshot- und Vault-Backup-Funktionen von Google Cloud NetApp Volumes, um schnelle (Sekunden) Snapshot-Backups, schnelle (Minuten) Datenbank-Restores, Datenbank-Recovery und das Klonen aus Snapshots oder Backups im Storage Vault zu ermöglichen.

  1. Klonen Sie eine Kopie des NetApp Oracle Datenbank-Backup-Automatisierungstoolkits für GCNV.

    git clone https://bitbucket.ngage.netapp.com/scm/ns-bb/na_oracle_bkup_gcnv.git
    Hinweis Auf das Toolkit kann derzeit nur von internen NetApp Benutzern mit Bitbucket-Zugriff zugegriffen werden. Interessierte externe Benutzer fordern den Zugriff bitte bei ihrem Account-Team an oder wenden sich an das NetApp Solutions Engineering-Team.
  2. Lesen Sie die README-Datei im Toolkit und befolgen Sie die unten stehenden Anweisungen zur Konfiguration und Planung des Backup-Jobs über die crontab oder ein anderes Planungstool. Das Playbook ist für die Ausführung auf einem Ansible-Controller-Knoten mit Zugriff auf Oracle DB-Server-VMs und Google NetApp Volumes konzipiert. Es erstellt anwendungskonsistente Snapshots der Datenbank-Volumes gemäß dem definierten Zeitplan und der Aufbewahrungsrichtlinie und kopiert die Snapshots zur Notfallwiederherstellung in den Vault.

  3. Standardmäßig erstellt das Playbook ein tägliches Snapshot-Backup und stündlich jeweils ein Snapshot. Die Standardaufbewahrung beträgt 7 tägliche Snapshots und 24 stündliche Snapshots. Alle zusätzlichen Snapshots, die die Aufbewahrung überschreiten, werden entfernt und es werden fortlaufend 7 tägliche Snapshots und 24 stündliche Snapshots beibehalten. Sie können die Backup-Frequenz und die Aufbewahrung entsprechend Ihren RTO/RPO-Anforderungen und den Speicherkosten anpassen. Während das tägliche Snapshot-Backup alle DB-Volumes sichert, sichert das stündliche Snapshot-Backup nur die Log-Volumes und spart Speicherplatz. Während des täglichen Snapshot-Backups entfernt das Playbook außerdem Oracle-Archiv-Logdateien entsprechend der definierten Aufbewahrung, um Speicherplatz auf den DB-Log-Volumes zu sparen.

  4. Nachfolgend ist ein Beispiel für den Crontab-Eintrag zum Erstellen einer Snapshot-Sicherung und zum Kopieren in den Vault.

    [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
  5. Die Vault-Sicherung kann je nach Ihren RTO/RPO-Anforderungen wöchentlich, täglich oder stündlich durchgeführt werden. Während wöchentliche und tägliche Sicherungen alle Datenbank-Volumes umfassen, beinhalten stündliche Vault-Sicherungen nur die Log-Volumes, um Speicherplatz zu sparen. Die erste Vault-Sicherung dauert länger, da sie die Basislinie erstellt. Sobald die Basislinien-Sicherung erstellt ist, sind alle weiteren Vault-Sicherungen inkrementell und verwenden die „incremental forever“-Methode. Alle Vault-Sicherungen werden aus den aktuellsten, anwendungskonsistenten Snapshots zum Zeitpunkt der Ausführung erstellt, um die Wiederherstellbarkeit sicherzustellen. Im Gegensatz zu typischen Basislinien- und inkrementellen Sicherungen werden die Daten der Basislinien-Vault-Sicherung in jede inkrementelle Sicherung übernommen. Anders ausgedrückt enthält jede inkrementelle Vault-Sicherung den vollständigen Datensatz und kann für die Wiederherstellung verwendet werden, ohne dass die Basislinien-Sicherung wiederhergestellt werden muss. Dieser Ansatz vereinfacht das Backup-Management und den Recovery-Prozess und sorgt gleichzeitig für eine effiziente Speichernutzung im Vault. Sie müssen sich keine Gedanken über die Backup-Kette und Abhängigkeiten machen, wenn Sie ein Backup löschen müssen, da alle Backups bei diesem Ansatz unabhängig sind. Das Backup-Automatisierungsskript kürzt die Backups automatisch, um das definierte Aufbewahrungsziel zu erreichen.

  6. Die folgende Protokolldateiaufzeichnung ist ein Beispiel für die Snapshot-Sicherung und das Management der Aufbewahrungsrichtlinie.

    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
  7. Die folgende Protokolldatei erfasst die Details einer Vault-Sicherung aus app-konsistenten Snapshots.

    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
Hinweis Wenn bereits eine Vault-Sicherung von einem Snapshot existiert, wird ein zweiter Sicherungsversuch für denselben Snapshot ohne Fehler übersprungen.

Oracle Datenbank-Recovery und Klonen mit Google Cloud NetApp Volumes

Oracle-Datenbank zeitpunktgenaue In-Place-Wiederherstellung mithilfe von Google Cloud NetApp Volumes Snapshots

Details

Oracle Datenbank zeitpunktgenaue Recovery wird häufig verwendet, um versehentlich gelöschte oder beschädigte Daten wiederherzustellen oder um einen logischen Fehler zu beheben. Mit Google NetApp Volumes Snapshots können Sie einfach eine zeitpunktgenaue Recovery einer Oracle Datenbank durchführen, indem Sie die Datenbank auf einen bestimmten Snapshot zurücksetzen. So können Sie schnell von Datenverlust oder -beschädigung genesen, ohne eine vollständige Sicherung wiederherstellen zu müssen. Im Folgenden werden die Schritte zur Wiederherstellung einer gelöschten Tabelle mithilfe von Google NetApp Volumes Snapshots demonstriert.

  1. Für diese Demonstration erstellen wir zunächst eine Testtabelle namens „test“ in der „NTAP“-Datenbank und fügen einige Daten in die Tabelle ein. Anschließend löschen wir die Tabelle, um ein versehentliches Löschen von Daten zu simulieren. Danach verwenden wir Google NetApp Volumes-Snapshots, um die Datenbank auf einen Zeitpunkt vor dem Löschen der Tabelle wiederherzustellen und zu überprüfen, ob die Tabelle und ihre Daten erfolgreich wiederhergestellt wurden.

    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
  2. Stoppen Sie die Oracle-Dienste, um die Oracle-Datenbank herunterzufahren und die Dateisysteme auf dem Host auszuhängen, bevor Sie aus einem Snapshot wiederherstellen.

    [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
  3. Identifizieren Sie den Snapshot, der die Daten enthält, die Sie wiederherstellen möchten. Sie können die Google Cloud Console oder das gcloud-Befehlszeilentool verwenden, um die verfügbaren Snapshots für Ihr Oracle-Datenbankvolume aufzulisten. Klicken Sie auf die drei Punkte am Ende der Snapshot-Liste und unter Show More , um die Optionen anzuzeigen. Wählen Sie die Revert Option, um zum ausgewählten Snapshot zurückzukehren. Wiederholen Sie dies für alle DB-Volumes.

    Dieses Bild enthält Screenshots für die Revertierung von GCNV-Volume-Snapshots für Oracle-Bereitstellungen in Google Cloud mit NFS.

    Dieses Bild enthält Screenshots für die Revertierung von GCNV-Volume-Snapshots für Oracle-Bereitstellungen in Google Cloud mit NFS.

    Dieses Bild enthält Screenshots für die Revertierung von GCNV-Volume-Snapshots für Oracle-Bereitstellungen in Google Cloud mit NFS.

  4. Mounten Sie die DB-Volumes, nachdem die Snapshot-Wiederherstellung abgeschlossen ist.

    [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
  5. Melden Sie sich am Oracle Datenbankserver an und führen Sie zeitpunktgenaue Recovery-Befehle über sqlplus aus, um die Datenbank auf den gewünschten Zeitpunkt wiederherzustellen.

    [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.
  6. Nach Abschluss der Wiederherstellung überprüfen Sie, ob die Daten erfolgreich wiederhergestellt wurden.

    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
  7. Fahren Sie die Datenbank als systemd-Dienst herunter und starten Sie sie neu, um den Wiederherstellungsprozess abzuschließen.

    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.

Oracle-Datenbank-Recovery auf einem neuen Host mithilfe von Google Cloud NetApp Volumes Vault-Backups

Details

Im Falle eines Ausfalls, der eine Wiederherstellung auf einem neuen Host erfordert, wie zum Beispiel wenn der ursprüngliche Host nicht mehr verfügbar ist und die primären DB-Volumes nicht zugänglich sind, können Sie Google Cloud NetApp Volumes Vault-Backups verwenden, um die Oracle-Datenbank auf dem neuen Host wiederherzustellen. Der Prozess ist ähnlich wie die In-Place-Wiederherstellung mit Snapshots, aber anstatt auf einen Snapshot zurückzugreifen, stellen Sie die Datenbank aus einem Vault-Backup wieder her. Dadurch können Sie die Datenbank auf einem anderen Host wiederherstellen, was in Szenarien nützlich sein kann, in denen der ursprüngliche Host nicht mehr verfügbar ist oder einen Hardwareausfall erlitten hat. Die Schritte zur Wiederherstellung aus einem Vault-Backup sind wie folgt:

  1. Identifizieren Sie das Vault-Backup, das die Daten enthält, die Sie wiederherstellen möchten. Sie können die Google Cloud Console oder das gcloud-Befehlszeilentool verwenden, um die verfügbaren Vault-Backups für Ihr Oracle-Datenbank-Volume aufzulisten. Klicken Sie auf die drei Punkte am Ende der Vault-Backup-Liste und unter Show more , um die Optionen anzuzeigen. Wählen Sie die Create new volume from backup , um aus dem ausgewählten Vault-Backup wiederherzustellen. Wiederholen Sie dies für alle DB-Volumes. Sie haben außerdem die Möglichkeit, bei Bedarf im selben oder in einem anderen Speicherpool wiederherzustellen.

    Dieses Bild enthält Screenshots für die GCNV vault Backup-Wiederherstellung für Oracle-Bereitstellungen in Google Cloud mit NFS. Dieses Bild enthält Screenshots für die GCNV vault Backup-Wiederherstellung für Oracle-Bereitstellungen in Google Cloud mit NFS. Dieses Bild enthält Screenshots für die GCNV vault Backup-Wiederherstellung für Oracle-Bereitstellungen in Google Cloud mit NFS. Dieses Bild enthält Screenshots für die GCNV vault Backup-Wiederherstellung für Oracle-Bereitstellungen in Google Cloud mit NFS. Dieses Bild enthält Screenshots für die GCNV vault Backup-Wiederherstellung für Oracle-Bereitstellungen in Google Cloud mit NFS. Dieses Bild enthält Screenshots für die GCNV vault Backup-Wiederherstellung für Oracle-Bereitstellungen in Google Cloud mit NFS.

  2. Erstellen Sie einen neuen Datenbankserver, der hinsichtlich Hardware, Betriebssystem und OS-Kernel-Patch-Konfigurationen mit dem ursprünglichen Host übereinstimmt. Dadurch wird sichergestellt, dass die wiederhergestellte Datenbank nach Abschluss des Restore-Prozesses ordnungsgemäß eingebunden und geöffnet werden kann.

    Dieses Bild enthält Screenshots für die GCNV vault Backup-Wiederherstellung für Oracle-Bereitstellungen in Google Cloud mit NFS.

    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
  3. Melden Sie sich als Admin-Benutzer am neuen Datenbankserver an. Binden Sie die wiederhergestellten Datenbank-Volumes an dieselben Mountpunkte wie auf dem ursprünglichen Host ein. Ändern Sie die Besitzrechte des Mountpunkts, falls erforderlich.

    [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
  4. Konfigurieren Sie die Umgebungsvariablen der Oracle-Datenbank und Stammverzeichnisdateien wie oratab- und oraInstall.loc-Dateien.

    [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
  5. Als oracle-Benutzer die Oracle-Binärdateien neu verknüpfen.

    [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
  6. Stellen Sie die Datenbank bis zum letzten verfügbaren Protokoll wieder her und öffnen Sie die Datenbank mit der Option 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
  7. Nach Abschluss der Wiederherstellung müssen Sie weitere Schritte durchführen, wie z. B. die Dateien listener.ora und tnsnames.ora an den neuen Hostnamen oder die neue IP-Adresse anpassen. Falls erforderlich, richten Sie den systemd-Dienst so ein, dass die Datenbank heruntergefahren und neu gestartet wird, um den Restore- und Recovery-Prozess abzuschließen.

Hinweis Falls in Ihrer Datenbankkonfiguration doppelte Kopien von Oracle-Kontrolldateien implementiert sind. Die wiederhergestellte Datenbank kann nach der DB-Wiederherstellung inkonsistente Kontrolldateien aufweisen. In diesem Fall können Sie die im Protokollvolume befindliche Kontrolldatei verwenden, um die Kontrolldatei im Datenvolume zu überschreiben und das Problem zu beheben.

Oracle-Datenbank-Klonen auf einen neuen Host mithilfe von Google Cloud NetApp Volumes Snapshots oder Vault-Backups

Details

Das Klonen der Oracle-Datenbank auf einen neuen Host mithilfe von Google Cloud NetApp Volumes Snapshots oder Vault-Backups ist identisch mit dem im vorherigen Abschnitt beschriebenen Vorgehen, wie Google Cloud NetApp Volumes Snapshots oder Vault-Backups zur Wiederherstellung und zum Recovery einer Oracle-Datenbank auf einem neuen Host im Falle eines Ausfalls verwendet werden. Das Umbenennen der geklonten Datenbank kann jedoch ein zusätzlicher gewünschter Schritt sein, der einfach mit dem Oracle dbnewid Utility durchgeführt werden kann. Der Datenbank-Klon kann für UAT-Tests, Entwicklung oder andere Zwecke nützlich sein.

Für einige Kunden, die eine automatisierte Klon-Erstellung und Klon-Aktualisierung benötigen, stellen Sie bitte eine Anfrage an das NetApp Solutions Engineering Team für ein Beispiel-Ansible-Playbook, das als Referenz für die Automatisierung des Klon- und Aktualisierungsprozesses mit Google Cloud NetApp Volumes Snapshots oder Vault-Backups verwendet werden kann. Im Folgenden finden Sie den Link, um eine Anfrage an das NetApp Solutions Engineering Team zu stellen:"Anforderung für Automatisierung"

Wo Sie weitere Informationen finden

Weitere Informationen zu den in diesem Dokument beschriebenen Informationen finden Sie in den folgenden Dokumenten und/oder auf den folgenden Websites: