TR-4981 : Réduction des coûts d'Oracle Active Data Guard avec Amazon FSx ONTAP
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
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.
-
Un compte AWS a été configuré et les segments VPC et réseau nécessaires ont été créés dans votre compte AWS.
-
À 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.
-
À 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.
-
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
|
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.
-
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 --------------------------------------------------------------------------------
-
Depuis sqlplus, activez la journalisation forcée sur le serveur principal.
alter database force logging;
-
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;
-
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.
-
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.
-
Depuis sqlplus, créez un pfile à partir de spfile pour l'édition.
create pfile='/home/oracle/initdb1.ora' from spfile;
-
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
-
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';
-
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
-
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))
-
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
-
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.
-
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.
-
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.
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. -
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 .
-
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) ) )
-
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
-
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
-
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.
-
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
-
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.
-
Valider l’état de récupération de la base de données de secours. Remarquez le
recovery logmerger
dansAPPLYING_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.
-
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;
-
À 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.
-
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)
-
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.
-
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
-
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. -
Ajouter AWS ec2-user à
Credential
dansSettings
. -
Ajoutez une instance de base de données EC2 de secours et clonez l'instance de base de données EC2 vers
Hosts
.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. -
Créez une politique de sauvegarde adaptée à la sauvegarde complète de la base de données hors ligne/montée.
-
Appliquer une politique de sauvegarde pour protéger la base de données de secours dans
Resources
languette. -
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. -
Sélectionner
Complete Database Clone
et nommez l'instance clone SID. -
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.
-
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.
-
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.
-
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.
-
Configurez la notification par e-mail si vous le souhaitez.
-
Consultez le résumé, cliquez
Finish
pour démarrer le clone. -
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. -
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. -
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
Pour en savoir plus sur les informations décrites dans ce document, consultez les documents et/ou sites Web suivants :
-
Concepts et administration de Data Guard
-
WP-7357 : Déploiement de bases de données Oracle sur EC2 et FSx : bonnes pratiques
-
Amazon FSx ONTAP
-
Amazon EC2