Préparer la base de données principale de Data Guard
Data Guard nécessite une base de données principale et au moins une base de données de secours pour fonctionner. Avant de configurer Data Guard sur la solution Bare Metal, créez la base de données principale.
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 principale
Connectez-vous au premier serveur de solution Bare Metal qui héberge la base de données principale.
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 principale. Modifiez le nom de l'instance pour qu'il corresponde à l'instance en cours d'exécution sur chaque nœud et spécifiez le chemin d'accès complet à la page d'accueil de la base de données Oracle:DBDG_SITE11:ORACLE_HOME:N
Définissez la variable d'environnement
ORACLE_SID
afin de pouvoir vous connecter à la base de données principale:source oraenv <<< "DBDG_SITE11"
Vous devriez recevoir la réponse
The Oracle base has been set to /apps/oracle/oracle_base
.
Configurer la journalisation des bases de données et activer la base de données Flashback
Démarrez SQL*Plus, puis activez
force logging
afin que les espaces de tablenologging
ajoutés à la base de données soient enregistrés:sqlplus / as sysdba
ALTER DATABASE FORCE LOGGING;
Vérifiez que
archivelog mode
etflashback database
sont activés:ARCHIVE LOG LIST; SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
Si
archivelog mode
etflashback database
sont désactivés, activez-les à l'aide des commandes SQL suivantes:Arrêtez la base de données en cluster afin d'effectuer les modifications requises:
srvctl stop database -d
Exécutez les commandes SQL requises pour activer
archivelog mode
etflashback database
:STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE FLASHBACK ON; ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SID='*' SCOPE=BOTH; ALTER DATABASE OPEN; SHUTDOWN IMMEDIATE; EXIT;
Redémarrez la base de données en cluster:
srvctl start database -d DBDG_SITE1
Préparer la base de données pour Data Guard
Connectez-vous au premier serveur de solution Bare Metal qui héberge la base de données principale et définissez la variable d'environnement
ORACLE_SID
afin de pouvoir vous connecter à la base de données principale:source oraenv <<< "DBDG_SITE11"
Vous devriez recevoir la réponse
The Oracle base has been set to /apps/oracle/oracle_base
.Démarrez SQL*Plus, puis modifiez les paramètres d'initialisation de base de données requis pour la configuration et les services Data Guard:
sqlplus / as sysdba
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SID='*' SCOPE=SPFILE; ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SID='*' SCOPE=BOTH; ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SID='*' SCOPE=SPFILE; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
Vérifiez l'existence de journaux de rétablissement de secours dans la base de données. Chaque thread doit avoir un groupe de journaux de rétablissement de secours supérieur au nombre de groupes de journaux de rétablissement en ligne.
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
L'exemple suivant comporte quatre journaux de rétablissement en ligne par thread et ne comporte aucun groupe de journaux de rétablissement de secours. Comme il existe quatre groupes de journaux de rétablissement en ligne, cinq groupes de journaux de rétablissement de secours doivent être créés pour chaque thread:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4
Si vous disposez de suffisamment de groupes de journaux de rétablissement de secours, ignorez cette étape. Les groupes de journaux de rétablissement de secours doivent avoir la même taille que chaque groupe de journaux de rétablissement en ligne. Créez le nombre de groupes de journaux de rétablissement de secours nécessaire avec le code PL/SQL suivant:
SET FEEDBACK OFF SET SERVEROUTPUT ON DECLARE CURSOR cur_thread IS SELECT THREAD# THREAD, COUNT(*) COUNT FROM V$LOG GROUP BY THREAD#; standbylog_count NUMBER := 0; standbylog_group NUMBER := 0; standbylog_size NUMBER := 0; last_group_number NUMBER; sqlstmt VARCHAR2(200); BEGIN SELECT MAX(GROUP#), MAX(BYTES) INTO last_group_number, standbylog_size FROM V$LOG; standbylog_group := last_group_number + 1; FOR rec_thread IN cur_thread LOOP standbylog_count := rec_thread.count + 1; FOR i IN 1..standbylog_count LOOP sqlstmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rec_thread.thread || ' GROUP ' || TO_CHAR(standbylog_group) || ' SIZE ' || standbylog_size || ';'; DBMS_OUTPUT.PUT_LINE( sqlstmt); standbylog_group := standbylog_group + 1; END LOOP; END LOOP; END; / SET FEEDBACK ON
L'exemple de résultat suivant vous demande de créer cinq groupes de journaux de rétablissement de secours pour chacun des deux threads:
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 9 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 15 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 16 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 17 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 18 SIZE 2147483648;
Vérifiez que les journaux de rétablissement de secours sont correctement configurés pour votre configuration:
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
La sortie suivante comporte quatre groupes de journaux de rétablissement en ligne par thread et cinq groupes de journaux de rétablissement par thread:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4 Standby logfile groups in thread 1: 5 Standby logfile groups in thread 2: 5
Quittez SQL*Plus:
EXIT;
Copier les paramètres de base de données et les fichiers de mot de passe sur les serveurs de secours
Créez un fichier de paramètres de base de données et copiez-le sur le serveur de secours:
Créez un dossier pour le fichier de paramètres de la base de données de secours (
pfile
):mkdir /home/oracle/backup
Démarrez SQL*Plus, puis créez la base de données de secours
pfile
:sqlplus / as sysdba
CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
Quittez SQL*Plus, puis copiez le
pfile
sur le premier serveur de solution Bare Metal dans l'emplacement de secours:EXIT;
scp /home/oracle/backup/initDBDG_SITE21.ora ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora
Vérifiez que le mot de passe de connexion à distance SYS est enregistré en toute sécurité. Si vous ne connaissez pas le mot de passe, réinitialisez-le.
Copiez le fichier de mot de passe dans le cluster de secours:
Obtenez l'emplacement du fichier de mot de passe à l'aide de la commande
srvctl
:srvctl config database -db DBDG_SITE1 | grep -i password
Le résultat suivant indique l'emplacement d'un magasin de fichiers de mot de passe dans ASM:
Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
Créez une copie temporaire du fichier de mot de passe sur le système de fichiers local à l'aide de la commande
asmcmd
:asmcmd cp +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663 /tmp/orapwDBDG_SITE21
Copiez le fichier de mot de passe sur le premier serveur de solution Bare Metal dans l'emplacement de secours, puis supprimez la copie temporaire du serveur de solution Bare Metal dans l'emplacement principal:
scp /tmp/orapwDBDG_SITE21 ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21 rm /tmp/orapwDBDG_SITE21
Configurer la connectivité de la base de données
Modifiez le fichier $ORACLE_HOME/network/admin/tsnames.ora
sur chaque serveur de solution Bare Metal dans l'emplacement de la base de données principale pour mettre à jour la configuration du service réseau.
Le fichier contient trois entrées. une pour chaque base de données, et une entrée temporaire utilisée lors de la duplication de base de données que vous supprimerez ultérieurement:
DBDG_SITE1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE1) (UR=A)
)
)
DBDG_SITE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE2) (UR=A)
)
)
DBDG_SITE2_FOR_DUPLICATION =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = site2db1)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = DBDG_SITE21) (UR=A)
)
)
La base de données principale est maintenant prête à être utilisée dans une configuration Data Guard.
Étapes suivantes
Ensuite, créez la base de données de secours de Data Guard.