-
Qu'est-ce qu'une base de données Oracle Snapshot Standby ?
-
Meilleure pratique pour tester Oracle Snapshot Standby
-
Protégez votre base de données Oracle avec une solution professionnelle
-
Conclusion
Qu'est-ce qu'une base de données Oracle Snapshot Standby ?
Le Data Guard d'Oracle 11g nous offre non seulement la fonction remarquable de requête en temps réel grâce à Active Data Guard, mais aussi une autre commodité appelée la fonctionnalité Snapshot Standby database. Cette fonctionnalité permet de placer la base de données secondaire en mode « lecture-écriture », servant d'environnement pour des tests qui peuvent être inconvenants à effectuer directement sur la base de données primaire de production, comme simuler des déploiements en ligne et d'autres tâches. Une fois les tâches terminées en mode lecture-écriture, il est aisé de ramener le rôle de la base de données snapshot standby à son rôle de base de données secondaire, reprenant ainsi la synchronisation avec la base de données principale. Lorsque celle-ci est en état de base de données snapshot standby, elle peut recevoir les journaux de la base de données primaire, mais les modifications ne peuvent pas être appliquées à la base de données secondaire.
Meilleure pratique pour tester Oracle Snapshot Standby
1. Arrêt du processus Redo Apply
Si la base de données secondaire est actuellement engagée dans la procédure Redo Apply, il est nécessaire de l'arrêter en premier lieu.
sys@ora11gdg> alter database recover managed standby database cancel; Database altered.
2. Examiner l'état actuel de la base de données en veille pour s'assurer qu'elle est dans l'état MONTÉ.
sys@ora11gdg> select database_role,open_mode from v$database; DATABASE_ROLE OPEN_MODE PHYSICAL STANDBY MOUNTED
À ce stade, la base de données en veille assume le rôle de base de données physique en veille et fonctionne en mode MONTÉ.
3. S'assurer que la zone de récupération des flashbacks a été désignée.
Rappel amical : L'activation de la fonctionnalité de base de données d'attente instantanée (Snapshot Standby) ne nécessite pas l'activation de la fonctionnalité Flashback Database sur les bases de données principale et secondaire. Elle est indépendante de l'état d'activation de la fonctionnalité flashback database.
sys@ora11gdg> show parameter db_recovery_file_dest NAME TYPE VALUE db_recovery_file_dest string /u01/app/oracle/flash_recovery_area db_recovery_file_dest_size big integer 3852M
Confirmez que la fonction de flashback n'est pas activée sur la base de données principale.
sys@ora11g> select FLASHBACK_ON from v$database; FLASHBACK_ON NO
Confirmez que la fonction de flashback n'est pas activée sur la base de données secondaire.
sys@ora11gdg> select FLASHBACK_ON from v$database; FLASHBACK_ON NO
4. Ajuster la base de données en attente à l'état Snapshot Standby en exécutant une seule commande SQL simple.
sys@ora11gdg> alter database convert to snapshot standby; Database altered. sys@ora11gdg> select database_role,open_mode from v$database; DATABASE_ROLE OPEN_MODE SNAPSHOT STANDBY MOUNTED
5. Placer la base de données en attente dans un état lecture-écriture pour un accès externe.
sys@ora11gdg> alter database open; Database altered. sys@ora11gdg> select database_role,open_mode from v$database; DATABASE_ROLE OPEN_MODE SNAPSHOT STANDBY READ WRITE
Une toute nouvelle base de données en mode lecture-écriture s'ouvre devant nous.
6. Analyse des informations journales pendant le processus de basculement.
Journal d'alerte de la base de données principale pour Oracle 11g :
Mon Mar 19 18:46:28 2012 LNS: Attempting destination LOG_ARCHIVE_DEST_2 network reconnect (3135) LNS: Destination LOG_ARCHIVE_DEST_2 network reconnect abandoned Errors in file /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_nsa2_27302.trc: ORA-03135: connection lost contact Error 3135 for archive log file 2 to 'ora11gdg' Errors in file /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_nsa2_27302.trc: ORA-03135: connection lost contact LNS: Failed to archive log 2 thread 1 sequence 50 (3135) Errors in file /u01/app/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_nsa2_27302.trc: ORA-03135: connection lost contact
Journal d'alerte de la base de données en veille pour Oracle 11g :
Mon Mar 19 18:46:26 2012 alter database convert to snapshot standby Starting background process RVWR Mon Mar 19 18:46:26 2012 RVWR started with pid=26, OS id=8824 Allocated 3981204 bytes in shared pool for flashback generation buffer Created guaranteed restore point SNAPSHOT_STANDBY_REQUIRED_03/19/2012 18:46:26 krsv_proc_kill: Killing 3 processes (all RFS) Begin: Standby Redo Logfile archival End: Standby Redo Logfile archival RESETLOGS after complete recovery through change 1472476 Resetting resetlogs activation ID 4174194338 (0xf8cd26a2) Online log /u01/app/oracle/oradata/ora11gdg/redo01.log: Thread 1 Group 1 was previously cleared Online log /u01/app/oracle/oradata/ora11gdg/redo02.log: Thread 1 Group 2 was previously cleared Online log /u01/app/oracle/oradata/ora11gdg/redo03.log: Thread 1 Group 3 was previously cleared Standby became primary SCN: 1472474 Mon Mar 19 18:46:29 2012 Setting recovery target incarnation to 5 CONVERT TO SNAPSHOT STANDBY: Complete - Database mounted as snapshot standby Completed: alter database convert to snapshot standby
La ligne d'information cruciale indique : « Point de restauration garanti créé SNAPSHOT_STANDBY_REQUIRED_03/19/2012 18:46:26. » Cela marque le moment où nous sommes passés en mode instantané, facilitant ainsi la réversion ultérieure.
7. Test de la réception des journaux de la base de données principale par la base de données secondaire en mode instantané.
Même lorsque la base de données principale commute les journaux, la base de données secondaire continue de recevoir les journaux, bien qu'elle ne les applique pas.
1) Commutateur de journal sur la base de données principale.
sys@ora11g> alter system switch logfile; System altered.
2) Le contenu du journal d'alerte enregistré par la base de données principale
Journal d'alerte de la base de données principale pour Oracle 11g :
Mon Mar 19 18:52:00 2012 Thread 1 cannot allocate new log, sequence 52 Private strand flush not complete Current log# 3 seq# 51 mem# 0: /u01/app/oracle/oradata/ora11g/redo03.log Mon Mar 19 18:52:00 2012 ARC3: Standby redo logfile selected for thread 1 sequence 50 for destination LOG_ARCHIVE_DEST_2 Thread 1 advanced to log sequence 52 (LGWR switch) Current log# 1 seq# 52 mem# 0: /u01/app/oracle/oradata/ora11g/redo01.log Mon Mar 19 18:52:03 2012 Archived Log entry 91 added for thread 1 sequence 51 ID 0xf8cd26a2 dest 1: Mon Mar 19 18:52:03 2012 LNS: Standby redo logfile selected for thread 1 sequence 51 for destination LOG_ARCHIVE_DEST_2 LNS: Standby redo logfile selected for thread 1 sequence 52 for destination LOG_ARCHIVE_DEST_2
Journal d'alerte de la base de données en attente pour Oracle 11g :
Mon Mar 19 18:52:00 2012 RFS[5]: Assigned to RFS process 9174 RFS[5]: Identified database type as 'snapshot standby': Client is ARCH pid 27296 Mon Mar 19 18:52:00 2012 RFS[6]: Assigned to RFS process 9176 RFS[6]: Identified database type as 'snapshot standby': Client is ARCH pid 27300 RFS[6]: Selected log 4 for thread 1 sequence 50 dbid -120744030 branch 778023141 Mon Mar 19 18:52:00 2012 Archived Log entry 47 added for thread 1 sequence 50 ID 0xf8cd26a2 dest 1: Mon Mar 19 18:52:03 2012 RFS[7]: Assigned to RFS process 9180 RFS[7]: Identified database type as 'snapshot standby': Client is LGWR ASYNC pid 27302 RFS[7]: Selected log 4 for thread 1 sequence 51 dbid -120744030 branch 778023141 Mon Mar 19 18:52:04 2012 Archived Log entry 48 added for thread 1 sequence 51 ID 0xf8cd26a2 dest 1: RFS[7]: Selected log 4 for thread 1 sequence 52 dbid -120744030 branch 778023141
3) Examiner le contenu des fichiers journaux dans les répertoires d'archive des bases de données principale et secondaire
(1) Fichiers journaux d'archivage de la base de données principale :
ora11g@secdb /home/oracle/arch/ora11g$ ls -ltr total 879M ...omitted... -rw-r----- 1 oracle oinstall 1.1M Mar 19 18:51 1_50_778023141.arc -rw-r----- 1 oracle oinstall 363K Mar 19 18:52 1_51_778023141.arc
(2) Fichiers journaux d'archivage de la base de données en attente :
ora11g@secdb /home/oracle/arch/ora11gdg$ ls -ltr total 847M ...omitted... -rw-r----- 1 oracle oinstall 1.1M Mar 19 18:52 1_50_778023141.arc -rw-r----- 1 oracle oinstall 363K Mar 19 18:52 1_51_778023141.arc
Comme observé, la base de données en attente a réussi à recevoir les fichiers journaux envoyés par la base de données principale.
8. Création d'un utilisateur, de tables et initialisation des données dans une base de données secondaire en instantané.
sys@ora11gdg> create user ocmu identified by ocmu; User created. secooler@ora11gdg> grant dba to ocmu; Grant succeeded. secooler@ora11gdg> conn ocmu/ocmu Connected. ocmu@ora11gdg> create table t (x varchar2(8)); Table created. ocmu@ora11gdg> insert into t values ('Secooler'); 1 row created. ocmu@ora11gdg> commit; Commit complete. ocmu@ora11gdg> select * from t; X Secooler
À cet instant, la base de données secondaire est dans un état modifiable et ajustable, ce qui correspond au mode « READ WRITE » souhaité.
Il est crucial de noter que la mise en œuvre de la fonctionnalité de base de données Snapshot Standby repose fondamentalement sur le principe des données flashback. Par conséquent, toute action susceptible de nuire à la capacité de retourner la base de données en arrière doit être évitée ici. Sinon, la base de données Snapshot Standby ne pourra pas revenir à son état précédent de récupération en attente.
9. Restaurer la base de données en mode snapshot vers une base de données physique en attente
1) Redémarrer la base de données secondaire dans l'état MOUNTED.
ocmu@ora11gdg> conn / as sysdba Connected. sys@ora11gdg> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. sys@ora11gdg> startup mount ORACLE instance started. Total System Global Area 313860096 bytes Fixed Size 1336232 bytes Variable Size 268438616 bytes Database Buffers 37748736 bytes Redo Buffers 6336512 bytes Database mounted. sys@ora11gdg> select database_role,open_mode from v$database; DATABASE_ROLE OPEN_MODE SNAPSHOT STANDBY MOUNTED
2) Exécutez une commande pour restaurer l'identité d'origine de la base de données de standby physique.
sys@ora11gdg> alter database convert to physical standby; Database altered.
3) Le journal d'alerte de la base de données secondaire documente soigneusement ce processus de transition.
Mon Mar 19 19:30:24 2012 alter database convert to physical standby ALTER DATABASE CONVERT TO PHYSICAL STANDBY (ora11gdg) Flashback Restore Start Flashback Restore Complete Stopping background process RVWR Deleted Oracle managed file /u01/app/oracle/flash_recovery_area/ORA11GDG/flashback/o1_mf_7pg3n2jc_.flb Deleted Oracle managed file /u01/app/oracle/flash_recovery_area/ORA11GDG/flashback/o1_mf_7pg52yst_.flb Guaranteed restore point dropped Clearing standby activation ID 4174523254 (0xf8d22b76) The primary database controlfile was created using the 'MAXLOGFILES 30' clause. There is space for up to 27 standby redo logfiles Use the following SQL commands on the standby database to create standby redo logfiles that match the primary database: ALTER DATABASE ADD STANDBY LOGFILE 'srl1.f' SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE 'srl2.f' SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE 'srl3.f' SIZE 52428800; ALTER DATABASE ADD STANDBY LOGFILE 'srl4.f' SIZE 52428800; Completed: alter database convert to physical standby
À partir du journal d'alerte, il peut être déduit que la méthode de récupération a utilisé la fonctionnalité Flashback Database. Cela signifie que même si la base de données secondaire n'était pas en mode flashback, la transition de rôle de la base de données secondaire peut tout de même être réalisée en utilisant la fonctionnalité Flashback Database.
4) Redémarrez la base de données de secours en mode de journal de récupération automatique.
(1) À ce stade, la base de données est dans un état NON MONTÉE et doit être redémarrée.
Veuillez noter qu'il nécessite un redémarrage de la base de données au lieu d'utiliser la commande ALTER, sinon le message d'erreur suivant sera rencontré :
sys@ora11gdg> alter database mount; alter database mount l ERROR at line 1: ORA-00750: database has been previously mounted and dismounted sys@ora11gdg> shutdown immediate; ORA-01507: database not mounted ORACLE instance shut down. sys@ora11gdg> startup mount; ORACLE instance started. Total System Global Area 313860096 bytes Fixed Size 1336232 bytes Variable Size 268438616 bytes Database Buffers 37748736 bytes Redo Buffers 6336512 bytes Database mounted. sys@ora11gdg> alter database recover managed standby database disconnect; Database altered.
(2) En examinant le journal d'alerte de la base de données secondaire, le processus de récupération peut être observé de manière claire.
Mon Mar 19 19:43:48 2012 Managed Standby Recovery not using Real Time Apply Parallel Media Recovery started with 4 slaves Waiting for all non-current ORLs to be archived... All non-current ORLs have been archived. Clearing online redo logfile 1 /u01/app/oracle/oradata/ora11gdg/redo01.log Clearing online log 1 of thread 1 sequence number 1 Completed: alter database recover managed standby database disconnect Clearing online redo logfile 1 complete Clearing online redo logfile 2 /u01/app/oracle/oradata/ora11gdg/redo02.log Clearing online log 2 of thread 1 sequence number 2 Clearing online redo logfile 2 complete Media Recovery Log /home/oracle/arch/ora11gdg/1_49_778023141.arc Media Recovery Log /home/oracle/arch/ora11gdg/1_50_778023141.arc Media Recovery Log /home/oracle/arch/ora11gdg/1_51_778023141.arc Media Recovery Log /home/oracle/arch/ora11gdg/1_52_778023141.arc Media Recovery Log /home/oracle/arch/ora11gdg/1_53_778023141.arc Media Recovery Log /home/oracle/arch/ora11gdg/1_54_778023141.arc Media Recovery Waiting for thread 1 sequence 55
(3) Surveillez l'état de l'application de journal en inspectant la vue de performances dynamique V$ARCHIVED_LOG.
sys@ora11gdg> select sequence#, first_time, next_time, applied from v$archived_log order by sequence#; SEQUENCE# FIRST_TIME NEXT_TIME APPLIED ...omitted... 49 20120319 18:32:32 20120319 18:38:03 YES 50 20120319 18:38:03 20120319 18:51:00 YES 51 20120319 18:51:00 20120319 18:52:03 YES 52 20120319 18:52:03 20120319 19:09:57 YES 53 20120319 19:09:57 20120319 19:10:15 YES 54 20120319 19:10:15 20120319 19:10:25 YES 52 rows selected.
10. Activer la base de données en veille pour qu'elle passe à l'état READ ONLY afin de vérifier que les opérations effectuées sur la base de données snapshot en veille ont été annulées.
sys@ora11gdg> alter database recover managed standby database cancel; Database altered. sys@ora11gdg> alter database open read only; Database altered. sys@ora11gdg> select database_role,open_mode from v$database; DATABASE_ROLE OPEN_MODE PHYSICAL STANDBY READ ONLY sys@ora11gdg> select username from dba_users where username = 'OCMU'; no rows selected
La conclusion a été confirmée car l'utilisateur de test « OCMU » créé précédemment n'existe pas.
Protégez votre base de données Oracle avec une solution professionnelle
Oracle Snapshot Standby est très utile à des fins de test. Cependant, pour protéger encore davantage votre environnement de base de données, il est recommandé de sauvegarder votre base de données Oracle avec une solution de sauvegarde et de reprise après sinistre professionnelle.
Vinchin Backup & Recovery offre des fonctionnalités puissantes pour protéger vos bases de données dans les machines virtuelles et les serveurs physiques, de manière très automatique, flexible et efficace. Il fournit une protection multi-type des bases de données de Oracle DB, MySQL, SQL Server, Postgres Pro et MariaDB, avec prise en charge de la compression des bases de données, gestion centralisée des tâches, stratégies de sauvegarde intelligentes, sauvegarde de base de données en ligne et support avancé pour SQL Server/Oracle. De plus, il prend également en charge le puissant fonction de protection contre le ransomware et la migration V2V entre plus de 10 plates-formes virtuelles.
Vinchin Backup & Recovery a été sélectionné par des milliers d'entreprises et vous aussi pouvez commencer à utiliser ce puissant système avec un essai de 60 jours avec toutes les fonctionnalités ! De plus, contactez-nous et faites-nous part de vos besoins, et vous recevrez une solution adaptée à votre environnement informatique.
Conclusion
Le trait remarquable de la “base de données en mode instantané d'attente” permet à la base de données d'attente de devenir temporairement une base de données indépendante en lecture-écriture. Cela élargit considérablement les possibilités d'utilisation de la base de données d'attente. En exploitant cette fonctionnalité spéciale de la base de données d'attente, vous pouvez tester et reproduire en toute sécurité des problèmes qui pourraient être « risqués » à simuler et reproduire dans l'environnement de production. Une fois les tests terminés, vous pouvez restaurer son identité en tant que base de données physique d'attente et continuer avec la récupération des journaux.
Partager sur: