Skip to main content
NetApp database solutions
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

TR-4981 : Réduction des coûts d'Oracle Active Data Guard avec Amazon FSx ONTAP

Contributeurs kevin-hoke

Allen Cao, Niyaz Mohamed, NetApp

Cette solution fournit un aperçu et des détails sur la configuration d'Oracle Data Guard à l'aide d'AWS FSx ONTAP comme site de stockage de base de données Oracle de secours afin de réduire les coûts de licence et d'exploitation de la solution Oracle Data Guard HA/DR dans AWS.

But

Oracle Data Guard garantit une haute disponibilité, une protection des données et une reprise après sinistre pour les données d'entreprise dans une configuration de réplication de base de données principale et de base de données de secours. Oracle Active Data Guard permet aux utilisateurs d'accéder aux bases de données de secours pendant que la réplication des données est active de la base de données principale vers les bases de données de secours. Data Guard est une fonctionnalité d'Oracle Database Enterprise Edition. Cela ne nécessite pas de licence distincte. D'autre part, Active Data Guard est une option Oracle Database Enterprise Edition et nécessite donc une licence distincte. Plusieurs bases de données de secours peuvent recevoir la réplication des données à partir d'une base de données principale dans la configuration Active Data Guard. Cependant, chaque base de données de secours supplémentaire nécessite une licence Active Data Guard et un stockage supplémentaire en fonction de la taille de la base de données principale. Les coûts opérationnels s’accumulent rapidement.

Si vous souhaitez réduire les coûts de votre exploitation de base de données Oracle et envisagez de configurer un Active Data Guard dans AWS, vous devriez envisager une alternative. Au lieu d'Active Data Guard, utilisez Data Guard pour répliquer de la base de données principale vers une seule base de données de secours physique sur le stockage Amazon FSx ONTAP . Par la suite, plusieurs copies de cette base de données de secours peuvent être clonées et ouvertes pour un accès en lecture/écriture afin de servir de nombreux autres cas d'utilisation tels que le reporting, le développement, les tests, etc. Les résultats nets fournissent efficacement les fonctionnalités d'Active Data Guard tout en éliminant la licence Active Data Guard et les coûts de stockage supplémentaires pour chaque base de données de secours supplémentaire. Dans cette documentation, nous montrons comment configurer un Oracle Data Guard avec votre base de données principale existante dans AWS et placer une base de données de secours physique sur le stockage Amazon FSx ONTAP . La base de données de secours est sauvegardée via un instantané et clonée pour un accès en lecture/écriture pour les cas d'utilisation souhaités.

Cette solution répond aux cas d’utilisation suivants :

  • Oracle Data Guard entre une base de données principale sur n'importe quel stockage dans AWS et une base de données de secours sur le stockage Amazon FSx ONTAP .

  • Clonez la base de données de secours lorsqu'elle est fermée pour la réplication des données afin de répondre à des cas d'utilisation tels que la création de rapports, le développement, les tests, etc.

Public

Cette solution est destinée aux personnes suivantes :

  • Un administrateur de base de données qui a configuré Oracle Active Data Guard dans AWS pour la haute disponibilité, la protection des données et la reprise après sinistre.

  • Un architecte de solutions de base de données intéressé par la configuration d'Oracle Active Data Guard dans le cloud AWS.

  • Un administrateur de stockage qui gère le stockage AWS FSx ONTAP prenant en charge Oracle Data Guard.

  • Un propriétaire d'application qui souhaite mettre en place Oracle Data Guard dans un environnement AWS FSx/EC2.

Environnement de test et de validation de solutions

Les tests et la validation de cette solution ont été effectués dans un environnement de laboratoire AWS FSx ONTAP et EC2 qui pourrait ne pas correspondre à l'environnement de déploiement final. Pour plus d'informations, consultez la section Facteurs clés à prendre en compte lors du déploiement .

Architecture

Cette image fournit une image détaillée de l'implémentation d'Oracle Data Guard dans AWS avec FSx ONTAP.

Composants matériels et logiciels

Matériel

Stockage FSx ONTAP

Version actuelle proposée par AWS

Un cluster FSx HA dans le même VPC et la même zone de disponibilité

Instance EC2 pour le calcul

t2.xlarge/4vCPU/16G

Trois instances EC2 T2 xlarge EC2, une comme serveur de base de données principal, une comme serveur de base de données de secours et la troisième comme serveur de base de données clone

Logiciel

RedHat Linux

RHEL-8.6.0_HVM-20220503-x86_64-2-Hourly2-GP2

Abonnement RedHat déployé pour les tests

Infrastructure Oracle Grid

Version 19.18

Patch RU appliqué p34762026_190000_Linux-x86-64.zip

Base de données Oracle

Version 19.18

Patch RU appliqué p34765931_190000_Linux-x86-64.zip

Oracle OPatch

Version 12.2.0.1.36

Dernier correctif p6880880_190000_Linux-x86-64.zip

Configuration d'Oracle Data Guard avec configuration hypothétique de reprise après sinistre de New York à Los Angeles

Base de données

DB_UNIQUE_NAME

Nom du service Oracle Net

Primaire

db1_NY

db1_NY.demo.netapp.com

Veille physique

db1_LA

db1_LA.demo.netapp.com

Facteurs clés à prendre en compte lors du déploiement

  • Comment fonctionne Oracle Standby Database FlexClone . AWS FSx ONTAP FlexClone fournit des copies partagées des mêmes volumes de base de données de secours qui sont accessibles en écriture. Les copies des volumes sont en fait des pointeurs qui renvoient aux blocs de données d'origine jusqu'à ce qu'une nouvelle écriture soit lancée sur le clone. ONTAP alloue ensuite de nouveaux blocs de stockage pour les nouvelles écritures. Toutes les E/S de lecture sont traitées par des blocs de données d'origine sous réplication active. Ainsi, les clones sont très efficaces en termes de stockage et peuvent être utilisés pour de nombreux autres cas d'utilisation avec une allocation de stockage minimale et incrémentielle pour les nouvelles E/S d'écriture. Cela permet de réaliser d’énormes économies de coûts de stockage en réduisant considérablement l’empreinte de stockage d’Active Data Guard. NetApp recommande de minimiser les activités FlexClone en cas de basculement de la base de données du stockage principal vers le stockage FSx de secours afin de maintenir les performances Oracle à un niveau élevé.

  • Configuration requise pour le logiciel Oracle. En général, une base de données de secours physique doit avoir la même version de base de données que la base de données principale, y compris les exceptions de jeu de correctifs (PSE), les mises à jour de correctifs critiques (CPU) et les mises à jour de jeu de correctifs (PSU), sauf si un processus d'application de correctif Oracle Data Guard Standby-First est en cours (comme décrit dans la note My Oracle Support 1265700.1 à l'adresse"support.oracle.com"

  • Considérations relatives à la structure du répertoire de la base de données de secours. Si possible, les fichiers de données, les fichiers journaux et les fichiers de contrôle sur les systèmes principal et de secours doivent avoir les mêmes noms et chemins d'accès et utiliser les conventions de dénomination OFA (Optimal Flexible Architecture). Les répertoires d'archivage de la base de données de secours doivent également être identiques entre les sites, y compris la taille et la structure. Cette stratégie permet à d’autres opérations telles que les sauvegardes, les basculements et les basculements d’exécuter le même ensemble d’étapes, réduisant ainsi la complexité de la maintenance.

  • Forcer le mode de journalisation. Pour vous protéger contre les écritures directes non enregistrées dans la base de données principale qui ne peuvent pas être propagées vers la base de données de secours, activez FORCE LOGGING sur la base de données principale avant d'effectuer des sauvegardes de fichiers de données pour la création de secours.

  • Gestion du stockage de la base de données. Pour plus de simplicité opérationnelle, Oracle recommande, lorsque vous configurez Oracle Automatic Storage Management (Oracle ASM) et Oracle Managed Files (OMF) dans une configuration Oracle Data Guard, de les configurer de manière symétrique sur les bases de données principales et de secours.

  • Instances de calcul EC2. Dans ces tests et validations, nous avons utilisé une instance AWS EC2 t2.xlarge comme instance de calcul de base de données Oracle. NetApp recommande d’utiliser une instance EC2 de type M5 comme instance de calcul pour Oracle dans le déploiement de production, car elle est optimisée pour la charge de travail de la base de données. Vous devez dimensionner l'instance EC2 de manière appropriée en fonction du nombre de vCPU et de la quantité de RAM en fonction des exigences réelles de la charge de travail.

  • Déploiement de clusters de stockage HA FSx sur une ou plusieurs zones. Dans ces tests et validations, nous avons déployé un cluster FSx HA dans une seule zone de disponibilité AWS. Pour le déploiement en production, NetApp recommande de déployer une paire FSx HA dans deux zones de disponibilité différentes. Un cluster FSx est toujours provisionné dans une paire HA synchronisée dans une paire de systèmes de fichiers actifs-passifs pour fournir une redondance au niveau du stockage. Le déploiement multizone améliore encore la haute disponibilité en cas de panne dans une seule zone AWS.

  • Dimensionnement du cluster de stockage FSx. Un système de fichiers de stockage Amazon FSx ONTAP fournit jusqu'à 160 000 IOPS SSD brutes, jusqu'à 4 Gbit/s de débit et une capacité maximale de 192 TiB. Cependant, vous pouvez dimensionner le cluster en termes d'IOPS provisionnés, de débit et de limite de stockage (minimum 1 024 Gio) en fonction de vos besoins réels au moment du déploiement. La capacité peut être ajustée dynamiquement à la volée sans affecter la disponibilité de l'application.

Déploiement de la solution

Il est supposé que votre base de données Oracle principale est déjà déployée dans un environnement AWS EC2 au sein d'un VPC comme point de départ pour la configuration de Data Guard. La base de données principale est déployée à l’aide d’Oracle ASM pour la gestion du stockage. Deux groupes de disques ASM - +DATA et +LOGS sont créés pour les fichiers de données Oracle, les fichiers journaux et le fichier de contrôle, etc. Pour plus de détails sur le déploiement d'Oracle dans AWS avec ASM, veuillez vous référer aux rapports techniques suivants pour obtenir de l'aide.

Votre base de données Oracle principale peut être exécutée sur un FSx ONTAP ou sur tout autre stockage de votre choix au sein de l'écosystème AWS EC2. La section suivante fournit des procédures de déploiement étape par étape pour la configuration d'Oracle Data Guard entre une instance de base de données EC2 principale avec stockage ASM et une instance de base de données EC2 de secours avec stockage ASM.

Prérequis pour le déploiement

Details

Le déploiement nécessite les prérequis suivants.

  1. Un compte AWS a été configuré et les segments VPC et réseau nécessaires ont été créés dans votre compte AWS.

  2. À partir de la console AWS EC2, vous devez déployer au moins trois instances EC2 Linux, une comme instance de base de données Oracle principale, une comme instance de base de données Oracle de secours et une instance de base de données cible clonée pour la création de rapports, le développement, les tests, etc. Consultez le diagramme d'architecture dans la section précédente pour plus de détails sur la configuration de l'environnement. Consultez également l'AWS"Guide de l'utilisateur pour les instances Linux" pour plus d'informations.

  3. À partir de la console AWS EC2, déployez des clusters de stockage HA Amazon FSx ONTAP pour héberger des volumes Oracle qui stockent la base de données de secours Oracle. Si vous n'êtes pas familier avec le déploiement du stockage FSx, consultez la documentation"Création de systèmes de fichiers FSx ONTAP" pour des instructions étape par étape.

  4. Les étapes 2 et 3 peuvent être effectuées à l'aide de la boîte à outils d'automatisation Terraform suivante, qui crée une instance EC2 nommée ora_01 et un système de fichiers FSx nommé fsx_01 . Lisez attentivement les instructions et modifiez les variables en fonction de votre environnement avant l’exécution. Le modèle peut être facilement révisé pour répondre à vos propres besoins de déploiement.

    git clone https://github.com/NetApp-Automation/na_aws_fsx_ec2_deploy.git
Remarque Assurez-vous d'avoir alloué au moins 50 Go dans le volume racine de l'instance EC2 afin de disposer de suffisamment d'espace pour préparer les fichiers d'installation d'Oracle.

Préparer la base de données principale pour Data Guard

Details

Dans cette démonstration, nous avons configuré une base de données Oracle principale appelée db1 sur l'instance de base de données EC2 principale avec deux groupes de disques ASM dans une configuration de redémarrage autonome avec des fichiers de données dans le groupe de disques ASM + DATA et une zone de récupération flash dans le groupe de disques ASM + LOGS. Ce qui suit illustre les procédures détaillées de configuration de la base de données principale pour Data Guard. Toutes les étapes doivent être exécutées en tant que propriétaire de la base de données - utilisateur Oracle.

  1. Configuration de la base de données principale db1 sur l'instance de base de données EC2 principale ip-172-30-15-45. Les groupes de disques ASM peuvent se trouver sur n’importe quel type de stockage au sein de l’écosystème EC2.

    [oracle@ip-172-30-15-45 ~]$ cat /etc/oratab
    
    # This file is used by ORACLE utilities.  It is created by root.sh
    # and updated by either Database Configuration Assistant while creating
    # a database or ASM Configuration Assistant while creating ASM instance.
    
    # A colon, ':', is used as the field terminator.  A new line terminates
    # the entry.  Lines beginning with a pound sign, '#', are comments.
    #
    # Entries are of the form:
    #   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
    #
    # The first and second fields are the system identifier and home
    # directory of the database respectively.  The third field indicates
    # to the dbstart utility that the database should , "Y", or should not,
    # "N", be brought up at system boot time.
    #
    # Multiple entries with the same $ORACLE_SID are not allowed.
    #
    #
    +ASM:/u01/app/oracle/product/19.0.0/grid:N
    db1:/u01/app/oracle/product/19.0.0/db1:N
    
    [oracle@ip-172-30-15-45 ~]$ /u01/app/oracle/product/19.0.0/grid/bin/crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.DATA.dg
                   ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.LISTENER.lsnr
                   ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.LOGS.dg
                   ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.asm
                   ONLINE  ONLINE       ip-172-30-15-45          Started,STABLE
    ora.ons
                   OFFLINE OFFLINE      ip-172-30-15-45          STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.cssd
          1        ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.db1.db
          1        ONLINE  ONLINE       ip-172-30-15-45          Open,HOME=/u01/app/o
                                                                 racle/product/19.0.0
                                                                 /db1,STABLE
    ora.diskmon
          1        OFFLINE OFFLINE                               STABLE
    ora.driver.afd
          1        ONLINE  ONLINE       ip-172-30-15-45          STABLE
    ora.evmd
          1        ONLINE  ONLINE       ip-172-30-15-45          STABLE
    --------------------------------------------------------------------------------
  2. Depuis sqlplus, activez la journalisation forcée sur le serveur principal.

    alter database force logging;
  3. Depuis sqlplus, activez le flashback sur le primaire. Flashback permet de rétablir facilement la base de données principale en tant que base de données de secours après un basculement.

    alter database flashback on;
  4. Configurez l'authentification de transport de rétablissement à l'aide du fichier de mot de passe Oracle - créez un fichier pwd sur le principal à l'aide de l'utilitaire orapwd s'il n'est pas défini et copiez-le dans le répertoire de base de données de secours $ORACLE_HOME/dbs.

  5. Créez des journaux de rétablissement de secours sur la base de données principale avec la même taille que le fichier journal en ligne actuel. Les groupes de journaux sont un groupe de fichiers journaux en ligne de plus. La base de données principale peut alors rapidement passer au rôle de secours et commencer à recevoir des données de rétablissement, si nécessaire.

    alter database add standby logfile thread 1 size 200M;
    Validate after standby logs addition:
    
    SQL> select group#, type, member from v$logfile;
    
        GROUP# TYPE    MEMBER
    ---------- ------- ------------------------------------------------------------
             3 ONLINE  +DATA/DB1/ONLINELOG/group_3.264.1145821513
             2 ONLINE  +DATA/DB1/ONLINELOG/group_2.263.1145821513
             1 ONLINE  +DATA/DB1/ONLINELOG/group_1.262.1145821513
             4 STANDBY +DATA/DB1/ONLINELOG/group_4.286.1146082751
             4 STANDBY +LOGS/DB1/ONLINELOG/group_4.258.1146082753
             5 STANDBY +DATA/DB1/ONLINELOG/group_5.287.1146082819
             5 STANDBY +LOGS/DB1/ONLINELOG/group_5.260.1146082821
             6 STANDBY +DATA/DB1/ONLINELOG/group_6.288.1146082825
             6 STANDBY +LOGS/DB1/ONLINELOG/group_6.261.1146082827
             7 STANDBY +DATA/DB1/ONLINELOG/group_7.289.1146082835
             7 STANDBY +LOGS/DB1/ONLINELOG/group_7.262.1146082835
    
    11 rows selected.
  6. Depuis sqlplus, créez un pfile à partir de spfile pour l'édition.

    create pfile='/home/oracle/initdb1.ora' from spfile;
  7. Révisez le pfile et ajoutez les paramètres suivants.

    DB_NAME=db1
    DB_UNIQUE_NAME=db1_NY
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(db1_NY,db1_LA)'
    LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=db1_NY'
    LOG_ARCHIVE_DEST_2='SERVICE=db1_LA ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=db1_LA'
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
    FAL_SERVER=db1_LA
    STANDBY_FILE_MANAGEMENT=AUTO
  8. Depuis sqlplus, créez un fichier spfile dans le répertoire ASM +DATA à partir du fichier pfile révisé dans le répertoire /home/oracle.

    create spfile='+DATA' from pfile='/home/oracle/initdb1.ora';
  9. Localisez le fichier spfile nouvellement créé sous le groupe de disques +DATA (en utilisant l'utilitaire asmcmd si nécessaire). Utilisez srvctl pour modifier la grille afin de démarrer la base de données à partir du nouveau fichier spfile comme indiqué ci-dessous.

    [oracle@ip-172-30-15-45 db1]$ srvctl config database -d db1
    Database unique name: db1
    Database name: db1
    Oracle home: /u01/app/oracle/product/19.0.0/db1
    Oracle user: oracle
    Spfile: +DATA/DB1/PARAMETERFILE/spfile.270.1145822903
    Password file:
    Domain: demo.netapp.com
    Start options: open
    Stop options: immediate
    Database role: PRIMARY
    Management policy: AUTOMATIC
    Disk Groups: DATA
    Services:
    OSDBA group:
    OSOPER group:
    Database instance: db1
    [oracle@ip-172-30-15-45 db1]$ srvctl modify database -d db1 -spfile +DATA/DB1/PARAMETERFILE/spfiledb1.ora
    [oracle@ip-172-30-15-45 db1]$ srvctl config database -d db1
    Database unique name: db1
    Database name: db1
    Oracle home: /u01/app/oracle/product/19.0.0/db1
    Oracle user: oracle
    Spfile: +DATA/DB1/PARAMETERFILE/spfiledb1.ora
    Password file:
    Domain: demo.netapp.com
    Start options: open
    Stop options: immediate
    Database role: PRIMARY
    Management policy: AUTOMATIC
    Disk Groups: DATA
    Services:
    OSDBA group:
    OSOPER group:
    Database instance: db1
  10. Modifiez tnsnames.ora pour ajouter db_unique_name pour la résolution de nom.

    # tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/db1/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    db1_NY =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SID = db1)
        )
      )
    
    db1_LA =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-67.ec2.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SID = db1)
        )
      )
    
    LISTENER_DB1 =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521))
  11. Ajoutez le nom du service de protection des données db1_NY_DGMGRL.demo.netapp pour la base de données principale au fichier listener.ora.

#Backup file is  /u01/app/oracle/crsdata/ip-172-30-15-45/output/listener.ora.bak.ip-172-30-15-45.oracle line added by Agent
# listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = db1_NY_DGMGRL.demo.netapp.com)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/db1)
      (SID_NAME = db1)
    )
  )

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON            # line added by Agent
  1. Arrêtez et redémarrez la base de données avec srvctl et vérifiez que les paramètres de protection des données sont désormais actifs.

    srvctl stop database -d db1
    srvctl start database -d db1

Ceci termine la configuration de la base de données principale pour Data Guard.

Préparez la base de données de secours et activez Data Guard

Details

Oracle Data Guard nécessite une configuration du noyau du système d'exploitation et des piles logicielles Oracle, y compris des ensembles de correctifs sur l'instance de base de données EC2 de secours, pour correspondre à l'instance de base de données EC2 principale. Pour une gestion et une simplicité aisées, la configuration de stockage de la base de données de l'instance de base de données EC2 de secours doit idéalement correspondre également à l'instance de base de données EC2 principale, comme le nom, le nombre et la taille des groupes de disques ASM. Vous trouverez ci-dessous les procédures détaillées pour configurer l'instance de base de données EC2 de secours pour Data Guard. Toutes les commandes doivent être exécutées en tant qu'ID utilisateur propriétaire d'Oracle.

  1. Tout d’abord, vérifiez la configuration de la base de données principale sur l’instance EC2 principale. Dans cette démonstration, nous avons configuré une base de données Oracle principale appelée db1 sur l'instance de base de données EC2 principale avec deux groupes de disques ASM + DATA et + LOGS dans une configuration de redémarrage autonome. Les groupes de disques ASM principaux peuvent se trouver sur n’importe quel type de stockage au sein de l’écosystème EC2.

  2. Suivre les procédures dans la documentation"TR-4965 : Déploiement et protection de la base de données Oracle dans AWS FSx/EC2 avec iSCSI/ASM" pour installer et configurer la grille et Oracle sur l'instance de base de données EC2 de secours pour qu'elle corresponde à la base de données principale. Le stockage de la base de données doit être provisionné et alloué à l'instance de base de données EC2 de secours de FSx ONTAP avec la même capacité de stockage que l'instance de base de données EC2 principale.

    Remarque Arrêtez-vous à l'étape 10 Oracle database installation section. La base de données de secours sera instanciée à partir de la base de données principale à l'aide de la fonction de duplication de base de données dbca.
  3. Une fois le logiciel Oracle installé et configuré, à partir du répertoire de base de données de secours $ORACLE_HOME, copiez le mot de passe Oracle de la base de données principale.

    scp oracle@172.30.15.45:/u01/app/oracle/product/19.0.0/db1/dbs/orapwdb1 .
  4. Créez le fichier tnsnames.ora avec les entrées suivantes.

    # tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/db1/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    db1_NY =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-45.ec2.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SID = db1)
        )
      )
    
    db1_LA =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-67.ec2.internal)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SID = db1)
        )
      )
  5. Ajoutez le nom du service de protection des données DB au fichier listener.ora.

    #Backup file is  /u01/app/oracle/crsdata/ip-172-30-15-67/output/listener.ora.bak.ip-172-30-15-67.oracle line added by Agent
    # listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/grid/network/admin/listener.ora
    # Generated by Oracle configuration tools.
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = ip-172-30-15-67.ec2.internal)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = db1_LA_DGMGRL.demo.netapp.com)
          (ORACLE_HOME = /u01/app/oracle/product/19.0.0/db1)
          (SID_NAME = db1)
        )
      )
    
    ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent
    VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON            # line added by Agent
  6. Définissez la maison et le chemin d'accès de l'oracle.

    export ORACLE_HOME=/u01/app/oracle/product/19.0.0/db1
    export PATH=$PATH:$ORACLE_HOME/bin
  7. Utilisez dbca pour instancier la base de données de secours à partir de la base de données principale db1.

    [oracle@ip-172-30-15-67 bin]$ dbca -silent -createDuplicateDB -gdbName db1 -primaryDBConnectionString ip-172-30-15-45.ec2.internal:1521/db1_NY.demo.netapp.com -sid db1 -initParams fal_server=db1_NY -createAsStandby -dbUniqueName db1_LA
    Enter SYS user password:
    
    Prepare for db operation
    22% complete
    Listener config step
    44% complete
    Auxiliary instance creation
    67% complete
    RMAN duplicate
    89% complete
    Post duplicate database operations
    100% complete
    
    Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/db1_LA/db1_LA.log" for further details.
  8. Valider la base de données de secours dupliquée. La base de données de secours nouvellement dupliquée est initialement ouverte en mode LECTURE SEULE.

    [oracle@ip-172-30-15-67 bin]$ export ORACLE_SID=db1
    [oracle@ip-172-30-15-67 bin]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 30 18:25:46 2023
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2022, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.18.0.0.0
    
    SQL> select name, open_mode from v$database;
    
    NAME      OPEN_MODE
    --------- --------------------
    DB1       READ ONLY
    
    SQL> show parameter name
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    cdb_cluster_name                     string
    cell_offloadgroup_name               string
    db_file_name_convert                 string
    db_name                              string      db1
    db_unique_name                       string      db1_LA
    global_names                         boolean     FALSE
    instance_name                        string      db1
    lock_name_space                      string
    log_file_name_convert                string
    pdb_file_name_convert                string
    processor_group_name                 string
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    service_names                        string      db1_LA.demo.netapp.com
    SQL>
    SQL> show parameter log_archive_config
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_config                   string      DG_CONFIG=(db1_NY,db1_LA)
    SQL> show parameter fal_server
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    fal_server                           string      db1_NY
    
    SQL> select name from v$datafile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/DB1_LA/DATAFILE/system.261.1146248215
    +DATA/DB1_LA/DATAFILE/sysaux.262.1146248231
    +DATA/DB1_LA/DATAFILE/undotbs1.263.1146248247
    +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/DATAFILE/system.264.1146248253
    +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/DATAFILE/sysaux.265.1146248261
    +DATA/DB1_LA/DATAFILE/users.266.1146248267
    +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/DATAFILE/undotbs1.267.1146248269
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/system.268.1146248271
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/sysaux.269.1146248279
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/undotbs1.270.1146248285
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/DATAFILE/users.271.1146248293
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/system.272.1146248295
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/sysaux.273.1146248301
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/undotbs1.274.1146248309
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/DATAFILE/users.275.1146248315
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/system.276.1146248317
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/sysaux.277.1146248323
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/undotbs1.278.1146248331
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/DATAFILE/users.279.1146248337
    
    19 rows selected.
    
    SQL> select name from v$controlfile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/DB1_LA/CONTROLFILE/current.260.1146248209
    +LOGS/DB1_LA/CONTROLFILE/current.257.1146248209
    
    SQL> select name from v$tempfile;
    
    NAME
    --------------------------------------------------------------------------------
    +DATA/DB1_LA/TEMPFILE/temp.287.1146248371
    +DATA/DB1_LA/03C5C01A66EE9797E0632D0F1EAC5F59/TEMPFILE/temp.288.1146248375
    +DATA/DB1_LA/03C5EFD07C41A1FAE0632D0F1EAC9BD8/TEMPFILE/temp.290.1146248463
    +DATA/DB1_LA/03C5F0DDF35CA2B6E0632D0F1EAC8B6B/TEMPFILE/temp.291.1146248463
    +DATA/DB1_LA/03C5F1C9B142A2F1E0632D0F1EACF21A/TEMPFILE/temp.292.1146248463
    
    SQL> select group#, type, member from v$logfile order by 2, 1;
    
        GROUP# TYPE    MEMBER
    ---------- ------- ------------------------------------------------------------
             1 ONLINE  +LOGS/DB1_LA/ONLINELOG/group_1.259.1146248349
             1 ONLINE  +DATA/DB1_LA/ONLINELOG/group_1.280.1146248347
             2 ONLINE  +DATA/DB1_LA/ONLINELOG/group_2.281.1146248351
             2 ONLINE  +LOGS/DB1_LA/ONLINELOG/group_2.258.1146248353
             3 ONLINE  +DATA/DB1_LA/ONLINELOG/group_3.282.1146248355
             3 ONLINE  +LOGS/DB1_LA/ONLINELOG/group_3.260.1146248355
             4 STANDBY +DATA/DB1_LA/ONLINELOG/group_4.283.1146248357
             4 STANDBY +LOGS/DB1_LA/ONLINELOG/group_4.261.1146248359
             5 STANDBY +DATA/DB1_LA/ONLINELOG/group_5.284.1146248361
             5 STANDBY +LOGS/DB1_LA/ONLINELOG/group_5.262.1146248363
             6 STANDBY +LOGS/DB1_LA/ONLINELOG/group_6.263.1146248365
             6 STANDBY +DATA/DB1_LA/ONLINELOG/group_6.285.1146248365
             7 STANDBY +LOGS/DB1_LA/ONLINELOG/group_7.264.1146248369
             7 STANDBY +DATA/DB1_LA/ONLINELOG/group_7.286.1146248367
    
    14 rows selected.
    
    SQL> select name, open_mode from v$database;
    
    NAME      OPEN_MODE
    --------- --------------------
    DB1       READ ONLY
  9. Redémarrer la base de données de secours dans mount étape et exécutez la commande suivante pour activer la récupération gérée de la base de données de secours.

    alter database recover managed standby database disconnect from session;
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount;
    ORACLE instance started.
    
    Total System Global Area 8053062944 bytes
    Fixed Size                  9182496 bytes
    Variable Size            1291845632 bytes
    Database Buffers         6744440832 bytes
    Redo Buffers                7593984 bytes
    Database mounted.
    SQL> alter database recover managed standby database disconnect from session;
    
    Database altered.
  10. Valider l’état de récupération de la base de données de secours. Remarquez le recovery logmerger dans APPLYING_LOG action.

    SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;
    
    ROLE                        THREAD#  SEQUENCE# ACTION
    ------------------------ ---------- ---------- ------------
    recovery apply slave              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery apply slave              0          0 IDLE
    recovery logmerger                1         30 APPLYING_LOG
    RFS ping                          1         30 IDLE
    RFS async                         1         30 IDLE
    archive redo                      0          0 IDLE
    archive redo                      0          0 IDLE
    archive redo                      0          0 IDLE
    gap manager                       0          0 IDLE
    
    ROLE                        THREAD#  SEQUENCE# ACTION
    ------------------------ ---------- ---------- ------------
    managed recovery                  0          0 IDLE
    redo transport monitor            0          0 IDLE
    log writer                        0          0 IDLE
    archive local                     0          0 IDLE
    redo transport timer              0          0 IDLE
    
    16 rows selected.
    
    SQL>

Ceci termine la configuration de la protection Data Guard pour db1 du serveur principal au serveur de secours avec la récupération de secours gérée activée.

Configurer Data Guard Broker

Details

Oracle Data Guard Broker est un framework de gestion distribué qui automatise et centralise la création, la maintenance et la surveillance des configurations Oracle Data Guard. La section suivante montre comment configurer Data Guard Broker pour gérer l'environnement Data Guard.

  1. Démarrez Data Guard Broker sur les bases de données principales et de secours avec la commande suivante via sqlplus.

    alter system set dg_broker_start=true scope=both;
  2. À partir de la base de données principale, connectez-vous à Data Guard Borker en tant que SYSDBA.

    [oracle@ip-172-30-15-45 db1]$ dgmgrl sys@db1_NY
    DGMGRL for Linux: Release 19.0.0.0.0 - Production on Wed Aug 30 19:34:14 2023
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
    
    Welcome to DGMGRL, type "help" for information.
    Password:
    Connected to "db1_NY"
    Connected as SYSDBA.
  3. Créez et activez la configuration de Data Guard Broker.

    DGMGRL> create configuration dg_config as primary database is db1_NY connect identifier is db1_NY;
    Configuration "dg_config" created with primary database "db1_ny"
    DGMGRL> add database db1_LA as connect identifier is db1_LA;
    Database "db1_la" added
    DGMGRL> enable configuration;
    Enabled.
    DGMGRL> show configuration;
    
    Configuration - dg_config
    
      Protection Mode: MaxPerformance
      Members:
      db1_ny - Primary database
        db1_la - Physical standby database
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 28 seconds ago)
  4. Valider l'état de la base de données dans le cadre de gestion de Data Guard Broker.

    DGMGRL> show database db1_ny;
    
    Database - db1_ny
    
      Role:               PRIMARY
      Intended State:     TRANSPORT-ON
      Instance(s):
        db1
    
    Database Status:
    SUCCESS
    
    DGMGRL> show database db1_la;
    
    Database - db1_la
    
      Role:               PHYSICAL STANDBY
      Intended State:     APPLY-ON
      Transport Lag:      0 seconds (computed 1 second ago)
      Apply Lag:          0 seconds (computed 1 second ago)
      Average Apply Rate: 2.00 KByte/s
      Real Time Query:    OFF
      Instance(s):
        db1
    
    Database Status:
    SUCCESS
    
    DGMGRL>

En cas de panne, Data Guard Broker peut être utilisé pour basculer instantanément la base de données principale vers la base de données de secours.

Cloner la base de données de secours pour d'autres cas d'utilisation

Details

Le principal avantage de la mise en scène d'une base de données de secours sur AWS FSx ONTAP dans Data Guard est qu'elle peut être FlexCloned pour servir de nombreux autres cas d'utilisation avec un investissement de stockage supplémentaire minimal. Dans la section suivante, nous démontrons comment capturer et cloner les volumes de base de données de secours montés et en cours de récupération sur FSx ONTAP à d'autres fins, telles que DEV, TEST, REPORT, etc., à l'aide de l'outil NetApp SnapCenter .

Voici les procédures de haut niveau pour cloner une base de données en LECTURE/ÉCRITURE à partir de la base de données de secours physique gérée dans Data Guard à l'aide de SnapCenter. Pour obtenir des instructions détaillées sur la façon d'installer et de configurer SnapCenter, veuillez vous référer à"Solutions de bases de données cloud hybrides avec SnapCenter" sections Oracle pertinentes.

  1. Nous commençons par créer une table de test et insérer une ligne dans la table de test sur la base de données principale. Nous validerons ensuite si la transaction traverse jusqu'au standby et enfin le clone.

    [oracle@ip-172-30-15-45 db1]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Thu Aug 31 16:35:53 2023
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2022, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.18.0.0.0
    
    SQL> alter session set container=db1_pdb1;
    
    Session altered.
    
    SQL> create table test(
      2  id integer,
      3  dt timestamp,
      4  event varchar(100));
    
    Table created.
    
    SQL> insert into test values(1, sysdate, 'a test transaction on primary database db1 and ec2 db host: ip-172-30-15-45.ec2.internal');
    
    1 row created.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> select * from test;
    
            ID
    ----------
    DT
    ---------------------------------------------------------------------------
    EVENT
    --------------------------------------------------------------------------------
             1
    31-AUG-23 04.49.29.000000 PM
    a test transaction on primary database db1 and ec2 db host: ip-172-30-15-45.ec2.
    internal
    
    SQL> select instance_name, host_name from v$instance;
    
    INSTANCE_NAME
    ----------------
    HOST_NAME
    ----------------------------------------------------------------
    db1
    ip-172-30-15-45.ec2.internal
  2. Ajouter un cluster de stockage FSx à Storage Systems dans SnapCenter avec l'adresse IP de gestion du cluster FSx et les informations d'identification fsxadmin.

    Capture d'écran montrant cette étape dans l'interface graphique.

  3. Ajouter AWS ec2-user à Credential dans Settings .

    Capture d'écran montrant cette étape dans l'interface graphique.

  4. Ajoutez une instance de base de données EC2 de secours et clonez l'instance de base de données EC2 vers Hosts .

    Capture d'écran montrant cette étape dans l'interface graphique.

    Remarque L'instance de base de données EC2 clonée doit avoir des piles logicielles Oracle similaires installées et configurées. Dans notre cas de test, l'infrastructure de grille et Oracle 19C ont été installés et configurés, mais aucune base de données n'a été créée.
  5. Créez une politique de sauvegarde adaptée à la sauvegarde complète de la base de données hors ligne/montée.

    Capture d'écran montrant cette étape dans l'interface graphique.

  6. Appliquer une politique de sauvegarde pour protéger la base de données de secours dans Resources languette.

    Capture d'écran montrant cette étape dans l'interface graphique.

  7. Cliquez sur le nom de la base de données pour ouvrir la page de sauvegarde de la base de données. Sélectionnez une sauvegarde à utiliser pour le clonage de la base de données et cliquez sur Clone bouton pour lancer le workflow de clonage.

    Capture d'écran montrant cette étape dans l'interface graphique.

  8. Sélectionner Complete Database Clone et nommez l'instance clone SID.

    Capture d'écran montrant cette étape dans l'interface graphique.

  9. Sélectionnez l'hôte clone, qui héberge la base de données clonée à partir de la base de données de secours. Acceptez la valeur par défaut pour les fichiers de données, les fichiers de contrôle et les journaux de rétablissement. Deux groupes de disques ASM seront créés sur l'hôte clone qui correspondent aux groupes de disques de la base de données de secours.

    Capture d'écran montrant cette étape dans l'interface graphique.

  10. Aucune information d'identification de base de données n'est nécessaire pour l'authentification basée sur le système d'exploitation. Faites correspondre les paramètres d'accueil d'Oracle avec ce qui est configuré sur l'instance de base de données EC2 clonée.

    Capture d'écran montrant cette étape dans l'interface graphique.

  11. Modifiez les paramètres de la base de données clonée si nécessaire et spécifiez les scripts à exécuter avant le clonage, le cas échéant.

    Capture d'écran montrant cette étape dans l'interface graphique.

  12. Entrez SQL à exécuter après le clonage. Dans la démo, nous avons exécuté des commandes pour désactiver le mode d'archivage de base de données pour une base de données dev/test/report.

    Capture d'écran montrant cette étape dans l'interface graphique.

  13. Configurez la notification par e-mail si vous le souhaitez.

    Capture d'écran montrant cette étape dans l'interface graphique.

  14. Consultez le résumé, cliquez Finish pour démarrer le clone.

    Capture d'écran montrant cette étape dans l'interface graphique.

  15. Surveiller le travail de clonage dans Monitor languette. Nous avons observé qu'il fallait environ 8 minutes pour cloner une base de données d'environ 300 Go de volume de base de données.

    Capture d'écran montrant cette étape dans l'interface graphique.

  16. Validez la base de données clonée à partir de SnapCenter, qui est immédiatement enregistrée dans Resources onglet juste après l'opération de clonage.

    Capture d'écran montrant cette étape dans l'interface graphique.

  17. Interrogez la base de données clonée à partir de l'instance EC2 clonée. Nous avons validé que la transaction de test qui s'est produite dans la base de données principale avait été transmise à la base de données clonée.

    [oracle@ip-172-30-15-126 ~]$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dev
    [oracle@ip-172-30-15-126 ~]$ export ORACLE_SID=db1dev
    [oracle@ip-172-30-15-126 ~]$ export PATH=$PATH:$ORACLE_HOME/bin
    [oracle@ip-172-30-15-126 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 6 16:41:41 2023
    Version 19.18.0.0.0
    
    Copyright (c) 1982, 2022, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.18.0.0.0
    
    SQL> select name, open_mode, log_mode from v$database;
    
    NAME      OPEN_MODE            LOG_MODE
    --------- -------------------- ------------
    DB1DEV    READ WRITE           NOARCHIVELOG
    
    SQL> select instance_name, host_name from v$instance;
    
    INSTANCE_NAME
    ----------------
    HOST_NAME
    ----------------------------------------------------------------
    db1dev
    ip-172-30-15-126.ec2.internal
    
    SQL> alter session set container=db1_pdb1;
    
    Session altered.
    
    SQL> select * from test;
    
            ID
    ----------
    DT
    ---------------------------------------------------------------------------
    EVENT
    --------------------------------------------------------------------------------
             1
    31-AUG-23 04.49.29.000000 PM
    a test transaction on primary database db1 and ec2 db host: ip-172-30-15-45.ec2.
    internal
    
    
    SQL>

Ceci termine le clonage et la validation d'une nouvelle base de données Oracle à partir de la base de données de secours dans Data Guard sur le stockage FSx pour DEV, TEST, REPORT ou tout autre cas d'utilisation. Plusieurs bases de données Oracle peuvent être clonées à partir de la même base de données de secours dans Data Guard.

Où trouver des informations supplémentaires