Tr-4981 : réduction des coûts du service 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 en tant que stockage de base de données Oracle en mode site de secours pour réduire les coûts de licence et d'exploitation de la solution haute disponibilité/reprise après incident Oracle Data Guard dans AWS.
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 Facteurs clés à prendre en compte lors du déploiement.
Architecture
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 du cluster de stockage FSX. Un système de fichiers de stockage Amazon FSX ONTAP fournit jusqu'à 160,000 000 IOPS SSD brutes, un débit 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.
-
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.
-
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.
-
À partir de la console AWS EC2, déployez des clusters haute disponibilité de stockage Amazon FSX ONTAP pour héberger des volumes Oracle qui stockent la base de données de secours Oracle. Si vous ne connaissez pas bien le déploiement du stockage FSX, consultez la documentation "Création de systèmes de fichiers FSX ONTAP" pour obtenir des instructions détaillées.
-
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
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.
-
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 --------------------------------------------------------------------------------
-
A partir de sqlplus, activez la journalisation forcée sur le serveur principal.
alter database force logging;
-
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;
-
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.
-
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.
-
A partir de sqlplus, créez un fichier pfile à partir de spfile pour le modifier.
create pfile='/home/oracle/initdb1.ora' from spfile;
-
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
-
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';
-
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
-
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))
-
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
-
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
-
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.
-
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.
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. -
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 .
-
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) ) )
-
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
-
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
-
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 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
-
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.
-
Validez l'état de restauration de la base de données en attente. Notez 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 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.
-
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;
-
À 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.
-
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)
-
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.
-
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
-
Ajouter un cluster de stockage FSX à
Storage Systems
Dans SnapCenter avec l'IP de gestion de cluster FSX et les informations d'identification fsxadmin. -
Ajoutez AWS ec2-user à
Credential
dansSettings
. -
Ajoutez l'instance de base de données EC2 de secours et clonez l'instance de base de données EC2 sur
Hosts
.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. -
Créez une stratégie de sauvegarde personnalisée pour une sauvegarde de base de données hors ligne/montée complète.
-
Appliquez la stratégie de sauvegarde pour protéger la base de données de secours dans
Resources
onglet. -
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. -
Sélectionnez
Complete Database Clone
Et nommez le SID de l'instance de clone. -
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.
-
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.
-
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.
-
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.
-
Configurez la notification par e-mail si vous le souhaitez.
-
Vérifiez le résumé, cliquez sur
Finish
pour démarrer le clone. -
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. -
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. -
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.
Où trouver des informations complémentaires
Pour en savoir plus sur les informations fournies dans ce document, consultez ces documents et/ou sites web :
-
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