Skip to main content
NetApp 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 du service Oracle Active Data Guard avec Amazon FSX ONTAP

Contributeurs

Allen Cao, Niyaz Mohamed, NetApp

Objectif

Oracle Data Guard assure la haute disponibilité, la protection des données et la reprise après incident pour les données d'entreprise dans une base de données primaire et une configuration de réplication de base de données de secours. Oracle Active Data Guard permet aux utilisateurs d'accéder aux bases de données de secours alors que la réplication des données est active depuis la base de données primaire vers les bases de données de secours. Data Guard est une fonctionnalité d'Oracle Database Enterprise Edition. Aucune licence distincte n'est requise. En revanche, Active Data Guard est une option Oracle Database Enterprise Edition, qui nécessite donc une licence séparée. Plusieurs bases de données de secours peuvent recevoir la réplication de données d'une base de données primaire dans la configuration Active Data Guard. Cependant, chaque base de données de secours supplémentaire requiert une licence Active Data Guard et un espace de stockage supplémentaire comme taille de la base de données primaire. Les coûts d'exploitation s'additionent rapidement.

Si vous souhaitez réduire les coûts de votre base de données Oracle et que vous prévoyez de configurer Active Data Guard dans AWS, envisagez une autre solution. À la place d'Active Data Guard, utilisez Data Guard pour le réplication depuis la base de données primaire vers une seule base de données physique de secours sur le stockage Amazon FSX ONTAP. Par la suite, vous pouvez cloner et ouvrir plusieurs copies de cette base de données de secours pour accéder en lecture/écriture afin de prendre en charge de nombreux autres cas d'utilisation tels que le reporting, le développement, les tests, etc Résultat : vous bénéficiez de fonctionnalités d'Active Data Guard, tout en éliminant la licence Active Data Guard et le coût de stockage supplémentaire pour chaque base de données de secours. Cette documentation explique comment configurer un dispositif de protection des données Oracle avec votre base de données primaire existante dans AWS et placer une base de données physique de secours sur le stockage Amazon FSX ONTAP. La base de données de secours est sauvegardée via des snapshots 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 :

  • Protection des données Oracle entre une base de données primaire 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 fermée pour que la réplication des données puisse servir des cas d'utilisation tels que le reporting, le développement, les tests, etc

Public

Cette solution est destinée aux personnes suivantes :

  • Administrateur de bases 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 incident.

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

  • Administrateur du stockage qui gère le stockage AWS FSX ONTAP qui prend en charge Oracle Data Guard.

  • Un propriétaire d'applications qui aime mettre en place Oracle Data Guard dans l'environnement AWS FSX/EC2.

Environnement de test et de validation de la solution

Le test et la validation de cette solution ont été effectués dans un environnement de laboratoire AWS FSX ONTAP et EC2 qui ne correspond peut-être pas à l'environnement de déploiement final. Pour plus d'informations, reportez-vous à la section [Key Factors for Deployment Consideration].

Architecture

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

Composants matériels et logiciels

Matériel

Stockage ONTAP FSX

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/4 vCPU/16 Gbit/s

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

Logiciel

Red Hat Linux

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

Déploiement de l'abonnement Red Hat 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

OPICH Oracle

Version 12.2.0.1.36

Dernier correctif p6880880_190000_Linux-x86-64.zip

Configuration d'Oracle Data Guard avec configuration hypothétique de LA reprise sur incident de NY à LA

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

  • Fonctionnement d'Oracle Standby Database FlexClone. AWS FSX ONTAP FlexClone fournit des copies partagées des mêmes volumes de base de données de secours inscriptibles. Les copies des volumes sont en fait des pointeurs qui reviennent 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 aux nouvelles écritures. Toutes les E/S en lecture sont gérées par des blocs de données d'origine sous réplication active. Ainsi, le clone est très efficace en termes de stockage et peut être utilisé dans 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'importantes économies en réduisant considérablement l'encombrement du stockage Active Data Guard. NetApp recommande de minimiser les activités FlexClone en cas de basculement de la base de données du stockage primaire vers le stockage FSX en veille afin de maintenir les performances Oracle à un niveau élevé.

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

  • Considérations relatives à la structure des répertoires de la base de données de secours. si possible, les fichiers de données, les fichiers journaux et les fichiers de contrôle des systèmes primaire et de secours doivent avoir les mêmes noms et chemins 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 commutateurs 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 consignées dans la base de données primaire qui ne peuvent pas être propagées à la base de données de secours, activez LA JOURNALISATION FORCÉE sur la base de données primaire 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 de configurer Oracle Automatic Storage Management (Oracle ASM) et Oracle Managed Files (OMF) dans une configuration Oracle Data Guard de manière symétrique sur la ou les bases de données primaires 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 les déploiements Oracle en production, car elle est optimisée pour le workload de 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 des workloads.

  • Clusters HA de stockage FSX déploiement sur une ou plusieurs zones. lors de ces tests et validations, nous avons déployé un cluster HA FSX dans une zone de disponibilité AWS unique. Pour le déploiement de production, NetApp recommande de déployer une paire haute disponibilité FSX dans deux zones de disponibilité différentes. Un cluster FSX est alway provisionné dans une paire haute disponibilité qui est mise en miroir synchrone dans une paire de systèmes de fichiers actif-passif afin d'assurer la redondance au niveau du stockage. Un déploiement multizone améliore encore la haute disponibilité en cas de défaillance dans une même zone AWS.

  • Dimensionnement des clusters de stockage FSX. un système de fichiers de stockage Amazon FSX pour ONTAP fournit jusqu'à 160,000 000 IOPS SSD brutes, un débit allant jusqu'à 4 Gbit/s et une capacité maximale de 192 Tio. Cependant, vous pouvez dimensionner le cluster en termes d'IOPS provisionnées, de débit et de limite de stockage (au moins 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é des applications.

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 dans un VPC comme point de départ pour la configuration de Data Guard. La base de données primaire 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, les fichiers de contrôle, etc Pour plus d'informations sur le déploiement d'Oracle dans AWS avec ASM, consultez les rapports techniques suivants.

Votre base de données Oracle principale peut s'exécuter soit sur une solution FSX ONTAP, soit sur tout autre système de stockage choisi dans l'écosystème AWS EC2. La section suivante décrit les 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.

Conditions préalables au déploiement

Details

Le déploiement nécessite les conditions préalables suivantes.

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

  2. Depuis la console AWS EC2, vous devez déployer au moins trois instances EC2 Linux, une étant l'instance principale de base de données Oracle, une instance de base de données Oracle en veille et une instance cible de base de données de clone pour le reporting, le développement, les tests, etc Pour plus d'informations sur la configuration de l'environnement, reportez-vous au schéma d'architecture de la section précédente. Examinez également AWS "Guide de l'utilisateur pour les instances Linux" pour en savoir plus.

  3. À partir de la console AWS EC2, déployez les clusters haute disponibilité de stockage Amazon FSX pour ONTAP pour héberger les volumes Oracle qui stockent la base de données de secours Oracle. Si vous ne connaissez pas le déploiement du stockage FSX, reportez-vous à la documentation "Création de FSX pour les systèmes de fichiers ONTAP" pour obtenir des instructions détaillées.

  4. Les étapes 2 et 3 peuvent être effectuées à l'aide du kit d'outils d'automatisation Terraform suivant, 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 de les exécuter. Ce modèle peut être facilement révisé en fonction de vos propres exigences de déploiement.

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

Préparez la base de données primaire pour Data Guard

Details

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

  1. Configuration db1 de la base de données primaire sur l’instance de base de données EC2 primaire 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. A partir de sqlplus, activez la journalisation forcée sur le serveur principal.

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

    alter database flashback on;
  4. Configurer l'authentification de transport de reprise à l'aide du fichier de mot de passe Oracle - créez un fichier pwd sur le fichier principal à l'aide de l'utilitaire orapwd si ce n'est pas le cas et copiez-le dans le répertoire $ORACLE_HOME/dbs de la base de données de secours.

  5. Créez des journaux de reprise 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 plus que les groupes de fichiers journaux en ligne. La base de données primaire peut alors passer rapidement au rôle de secours et commencer à recevoir des données de reprise, 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. A partir de sqlplus, créez un fichier pfile à partir de spfile pour le modifier.

    create pfile='/home/oracle/initdb1.ora' from spfile;
  7. Révisez le fichier 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. A partir de sqlplus, créez le 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 +DATA disk group (à l'aide de l'utilitaire asmcmd si nécessaire). Utilisez srvctl pour modifier la grille pour 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 des noms.

    # 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 garde de données db1_NY_DGMGRL.demo.netapp pour la base de données primaire 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 Data Guard sont maintenant actifs.

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

La configuration de la base de données principale de Data Guard est terminée.

Préparer la base de données de secours et activer 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é simplifiées, la configuration de stockage de base de données de l'instance de base de données EC2 en veille doit idéalement correspondre à l'instance de base de données EC2 principale, par exemple le nom, le nombre et la taille des groupes de disques ASM. Vous trouverez ci-dessous les procédures détaillées de configuration de 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 oracle

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

  2. Suivez les procédures de la documentation "Tr-4965 : déploiement et protection de bases de données Oracle dans AWS FSX/EC2 avec iSCSI/ASM" Pour installer et configurer GRID et Oracle sur l'instance de base de données EC2 de secours afin qu'elle corresponde à la base de données primaire. Le stockage de la base de données doit être provisionné et alloué à l'instance de base de données EC2 de secours à partir 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 de la Oracle database installation section. La base de données de secours sera instanciée à partir de la base de données primaire à l'aide de la fonction de duplication de la base de données dbca.
  3. Une fois le logiciel Oracle installé et configuré, à partir du répertoire $ORACLE_HOME dbs en attente, copiez le mot de passe oracle à partir 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 un 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 garde de 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 le répertoire d'accueil et le chemin 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 récemment dupliquée s'ouvre initialement 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émarrez la base de données de secours dans mount exécutez la commande suivante pour activer la restauration gérée par 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. Validez l'état de restauration de la base de données en attente. Notez 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 protection Data Guard pour db1, de l'état primaire à l'état de veille, avec la récupération de secours gérée activée.

Configurez Data Guard Broker

Details

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

  1. Démarrez le courtier de protection des données sur les bases de données primaires et de secours à l'aide de la commande suivante via sqlplus.

    alter system set dg_broker_start=true scope=both;
  2. À partir de la base de données primaire, 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éer et activer la configuration 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. Validez l'état de la base de données dans la structure 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 défaillance, Data Guard Broker peut être utilisé pour basculer instantanément la base de données primaire vers la base de données de secours.

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

Details

Le principal avantage de l'activation de la base de données de secours sur AWS FSX ONTAP dans Data Guard est qu'il peut être FlexCloned pour prendre en charge de nombreux autres cas d'utilisation avec un investissement de stockage supplémentaire minimal. Dans la section suivante, nous démontrons comment créer des snapshots et cloner les volumes de base de données montés et sous reprise en veille sur FSX ONTAP à d'autres fins, telles que LE DÉVELOPPEMENT, les TESTS, le REPORTING, etc. utilisation de l'outil NetApp SnapCenter.

Vous trouverez ci-dessous des procédures de haut niveau pour cloner une base de données en LECTURE/ÉCRITURE à partir de la base de données physique de secours gérée dans Data Guard à l'aide de SnapCenter. Pour obtenir des instructions détaillées sur la configuration de SnapCenter, reportez-vous à la section "Solutions de base de données pour le cloud hybride avec SnapCenter" Relavant les sections Oracle.

  1. Nous commençons par créer une table de test et insérer une ligne dans la table de test de la base de données primaire. Nous validerons ensuite si la transaction s'est effectuée jusqu'en veille, puis jusqu'au 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'IP de gestion de cluster FSX et les informations d'identification fsxadmin.

    Capture d'écran montrant cette étape dans l'interface graphique.
  3. Ajoutez AWS ec2-user à Credential dans Settings.

    Capture d'écran montrant cette étape dans l'interface graphique.
  4. Ajoutez l'instance de base de données EC2 de secours et clonez l'instance de base de données EC2 sur Hosts.

    Capture d'écran montrant cette étape dans l'interface graphique.
    Remarque Des piles logicielles Oracle similaires doivent être installées et configurées sur l'instance de base de données EC2 clone. Dans notre cas de test, l'infrastructure grid et Oracle 19C ont été installées et configurées, mais aucune base de données n'a été créée.
  5. Créez une stratégie de sauvegarde personnalisée pour une sauvegarde de base de données hors ligne/montée complète.

    Capture d'écran montrant cette étape dans l'interface graphique.
  6. Appliquez la stratégie de sauvegarde pour protéger la base de données de secours dans Resources onglet.

    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 sauvegardes de la base de données. Sélectionnez une sauvegarde à utiliser pour le clonage de la base de données et cliquez sur Clone pour lancer le flux de travail de clonage.

    Capture d'écran montrant cette étape dans l'interface graphique.
  8. Sélectionnez Complete Database Clone Et nommez le SID de l'instance de clone.

    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 les valeurs par défaut pour les fichiers de données, les fichiers de contrôle et les journaux de reprise. Deux groupes de disques ASM seront créés sur l'hôte clone correspondant 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 requise pour l'authentification basée sur le système d'exploitation. Associez le paramètre d'accueil Oracle à ce qui est configuré sur l'instance de base de données EC2 clone.

    Capture d'écran montrant cette étape dans l'interface graphique.
  11. Modifiez les paramètres de la base de données de clonage si nécessaire et spécifiez les scripts à exécuter avant la fin, 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 la base de données pour une base de données de développement/test/rapport.

    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. Vérifiez le résumé, cliquez sur Finish pour démarrer le clone.

    Capture d'écran montrant cette étape dans l'interface graphique.
  15. Surveiller la tâche de clonage dans Monitor onglet. Nous avons constaté que le clonage d'une base de données prenait environ 8 minutes, soit une taille de volume d'environ 300 Go.

    Capture d'écran montrant cette étape dans l'interface graphique.
  16. Validez la base de données de clonage à partir de SnapCenter, qui est immédiatement enregistrée dans Resources juste après l'opération de clonage.

    Capture d'écran montrant cette étape dans l'interface graphique.
  17. Interroger la base de données de clonage à partir de l'instance EC2 de clone. Nous avons validé que la transaction de test effectuée dans la base de données primaire s'était déroulée en descendant jusqu'à 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>

Cette opération 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 le DÉVELOPPEMENT, les TESTS, les RAPPORTS ou tout autre cas d'utilisation. Il est possible de cloner plusieurs bases de données Oracle depuis la même base de données de secours dans Data Guard.