Créer la base de données de secours de Data Guard
Une fois la base de données principale préparée pour Data Guard, elle est prête à être dupliquée sur le site de secours. Le guide suivant utilise duplication active pour créer une copie cohérente de la base de données.
Pour rappel, les exemples suivants sont utilisés tout au long de ce guide:
Nom de base de données unique | Noms d'hôtes du serveur | Noms d'instance RAC | Rôle |
---|---|---|---|
DBDG_SITE1 | site1db1, site1db2 | DBDG_SITE11, DBDG_SITE12 | Principal |
DBDG_SITE2 | site2db1, site2db2 | DBDG_SITE21, DBDG_SITE22 | Instance de secours |
Les serveurs de solution Bare Metal exécutant Oracle dans ce guide sont configurés avec les variables d'environnement suivantes:
Nom de la variable d'environnement | Value |
---|---|
ORACLE_BASE | /apps/oracle/oracle_base |
ORACLE_HOME | /apps/oracle/19.0.0/db_home1 |
Vous devrez peut-être modifier les chemins d'accès des variables d'environnement en fonction de votre configuration.
Configurer la base de données de secours
Configurer la connectivité de la base de données
Connectez-vous à chaque serveur de solution Bare Metal en emplacement de secours et modifiez le fichier $ORACLE_HOME/network/admin/tsnames.ora
pour mettre à jour la configuration du service réseau:
DBDG_SITE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE2) (UR=A)
)
)
DBDG_SITE1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE1)
)
)
Configurer un écouteur temporaire
Pour éviter de redémarrer l'écouteur utilisé pour les autres connexions à la base de données, la duplication de base de données est effectuée à l'aide d'un écouteur temporaire. Cet exemple utilise le port 1523, mais vous pouvez utiliser n'importe quel port ouvert pour la communication entre les clusters. Vous supprimez cet écouteur temporaire après la duplication de la base de données.
Connectez-vous au premier serveur de solution Bare Metal dans l'emplacement de secours à utiliser lors du processus de duplication de la base de données. Modifiez le fichier
$ORACLE_HOME/network/admin/listener.ora
pour mettre à jour la configuration du service réseau:LISTENER_DBDG_SITE2 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = site1db1)(PORT = 1523)) ) ) SID_LIST_LISTENER_DBDG_SITE2 = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = DBDG_SITE2_DGMGRL) (ORACLE_HOME = ORACLE_HOME) (SID_NAME = DBDG_SITE21) ) ) ADR_BASE_LISTENER = /apps/oracle/oracle_base
Démarrez l'écouteur temporaire:
lsnrctl start LISTENER_DBDG_SITE2
Préparer la base de données de secours
Chaque instance de base de données nécessite un répertoire permettant de stocker les journaux d'audit. Créez le répertoire de fichier d'audit sur chaque serveur de solution Bare Metal dans l'emplacement de la base de données de secours:
mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
Modifiez le fichier
$ORACLE_HOME/dbs/initDBDG_SITE21.ora
qui a été copié précédemment sur le serveur de base de données de secours:- Définissez le champ
db_unique_name
sur le nom de la nouvelle base de données de secours. - Modifiez les paramètres spécifiques à l'instance en fonction des noms d'instance de la base de données de secours. En voici quelques exemples :
instance_number
thread
undo_tablespace
- Définissez le paramètre
audit_file_dest
pour utiliser le répertoire créé à l'étape précédente. - Si les groupes de disques ASM de chaque emplacement utilisent des noms différents, modifiez les paramètres
db_file_name_convert
etlog_file_name_convert
pour qu'ils correspondent aux nouveaux emplacements des fichiers. - Mettez en commentaire le paramètre
control_files
.
L'exemple suivant montre un fichier de paramètre de base de données mis à jour avec des modifications en utilisant les exemples fournis dans ce guide. Notez que votre fichier de paramètres contiendra des paramètres supplémentaires spécifiques à la configuration de votre base de données. Seuls les paramètres qui nécessitent une modification de l'instance de secours sont affichés:
*.db_unique_name='DBDG_SITE2' DBDG_SITE21.instance_number=1 DBDG_SITE22.instance_number=2 DBDG_SITE21.thread=1 DBDG_SITE22.thread=2 DBDG_SITE21.undo_tablespace='UNDOTBS1' DBDG_SITE22.undo_tablespace='UNDOTBS2' *.audit_file_dest='/apps/oracle/oracle_base/admin/DBDG_SITE2/adump' #*.control_files='+DATA/DBDG_SITE1/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE1/CONTROLFILE/current.257.1091317089'
- Définissez le champ
Dans le fichier
/etc/oratab
, ajoutez une entrée afin que la commandeoraenv
puisse définir des variables d'environnement pour la base de données de secours:DBDG_SITE21:ORACLE_HOME:N
Créer la base de données de secours
Définissez la variable d'environnement
ORACLE_SID
pour pouvoir vous connecter à la base de données de secours:source oraenv <<< "DBDG_SITE21"
Vous devriez recevoir la réponse
The Oracle base has been set to /apps/oracle/oracle_base
.Avant de dupliquer la base de données principale, vous devez démarrer manuellement l'instance de secours sur un nœud. Connectez-vous au premier serveur de solution Bare Metal situé dans l'emplacement de secours, démarrez SQL*Plus, puis démarrez la base de données de secours dans
nomount mode
à l'aide depfile
:sqlplus / as sysdba
STARTUP NOMOUNT PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
Si l'opération réussit, vous devriez recevoir une réponse de ce type :
ORACLE instance started. Total System Global Area 1.2885E+10 bytes Fixed Size 15988824 bytes Variable Size 1845493760 bytes Database Buffers 1.1006E+10 bytes Redo Buffers 17563648 bytes
Quittez SQL*Plus après le démarrage de l'instance:
EXIT;
Vérifiez la connectivité au service de base de données de secours. À partir de chaque serveur de solution Bare Metal situé à l'emplacement de la base de données principale, essayez de vous connecter à l'instance de secours à l'aide de SQL*Plus. Saisissez manuellement le mot de passe de connexion à distance SYS pour vous connecter à l'instance.
sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
Si l'opération réussit, vous devriez recevoir une invite SQL*Plus standard, dans laquelle vous pouvez vérifier les paramètres d'instance:
SHOW PARAMETER DB_UNIQUE_NAME;
Vous devriez obtenir un résultat semblable à celui-ci :
NAME TYPE VALUE ---------------- ----------- ------------------------------ db_unique_name string DBDG_SITE2
Quittez SQL*Plus après avoir vérifié le paramètre
DB_UNIQUE_NAME
:EXIT;
Connectez-vous à Recovery Manager, puis exécutez la commande
duplicate
pour dupliquer la base de données de secours à partir de la base de données principale active:rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATION
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;
Si l'opération réussit, un message semblable à l'exemple suivant doit s'afficher:
Finished Duplicate Db at ...
Quittez Recovery Manager:
EXIT;
Finaliser la création de la base de données de secours
Lors de la duplication de la base de données, ASM crée des fichiers de contrôle pour la base de données de secours. Connectez-vous à la nouvelle instance de secours et obtenez le ou les nouveaux noms de fichier de contrôle. L'exemple suivant montre deux fichiers de contrôle stockés dans les groupes de disques
+DATA
et+RECO
:sqlplus / as sysdba
SET LINESIZE 140 COLUMN NAME FORMAT a15 COLUMN VALUE FORMAT a125 SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='control_files';
Le ou les noms de fichier de contrôle sont affichés dans le champ "Valeur" :
NAME VALUE --------------- ---------------------------------------------------------------------------------------------------- control_files +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
Enregistrez les noms de fichier de contrôle de l'étape précédente et remplacez les entrées du paramètre
control_files
dans$ORACLE_HOME/dbs/initDBDG_SITE21.ora
par les nouvelles valeurs. S'il existe plusieurs fichiers de contrôle, placez-les entre guillemets simples, séparés par une virgule:*.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
Connectez-vous à la base de données de secours avec SQL*Plus et créez un
spfile
à partir du nouveaupfile
:sqlplus / as sysdba
CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
Copiez le fichier de mot de passe sur le groupe de disques ASM à l'aide de la commande
asmcmd
:asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
Arrêtez l'instance de base de données de secours, puis supprimez le fichier
pfile
et le mot de passe du fichier temporaires:sqplus / as sysdba
SHUTDOWN IMMEDIATE; EXIT;
rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
Arrêtez l'écouteur temporaire utilisé pour la duplication de base de données sur le premier serveur de solution Bare Metal situé à l'emplacement de la base de données de secours:
lsnrctl stop LISTENER_DBDG_SITE2
Supprimez les entrées temporaires du fichier
$ORACLE_HOME/network/admin/listener.ora
sur le premier serveur de solution Bare Metal à l'emplacement de la base de données de secours.Ajoutez la nouvelle base de données de secours et les nouvelles instances au registre de clusters à l'aide de la commande
srvctl
:srvctl add database \ -db DBDG_SITE2 \ -oraclehome /apps/oracle/19.0.0/db_home1 \ -spfile +DATA/DBDG_SITE2/spfileDBDG_SITE2 \ -pwfile +DATA/DBDG_SITE2/orapwDBDG_SITE2 \ -role PHYSICAL_STANDBY \ -startoption MOUNT srvctl add instance \ -db DBDG_SITE2 \ -instance DBDG_SITE21 \ -node site2db1 srvctl add instance \ -db DBDG_SITE2 \ -instance DBDG_SITE22 \ -node site2db2
Démarrez la base de données de secours à l'aide de la commande
srvctl
:srvctl start database -db DBDG_SITE2
Étapes suivantes
Ensuite, configurez et activez l'agent Data Guard.