Translate

mercredi 27 février 2019

Test de FailOver ( DataGuard )




Notre client voulait faire un essai de relève qui allait s'approcher le plus possible à une vraie situation de "Disaster Recovery", pour ce faire, un FAILOVER serait forcé pendant les essais mais sans impacter la base de données primaire.

Celle-ci, est une petite bases de données mais cela va vous donner une bonne idée des travaux :


ASM sur Serveur StandBy :
-------------------------
Valider l'espace disponible sur le Dsigroup
ASMCMD> lsdg *MYDB*
State    Type    ...  Total_MB  Free_MB  ...  Name
MOUNTED  EXTERN  ...     30700    23615  ...  FLASMYDBD/
MOUNTED  EXTERN  ...    102380    66597  ...  DATAMYDBD/


StandBy Database :
------------------

SELECT DATABASE_ROLE FROM V$DATABASE ;
DATABASE_ROLE
----------------
PHYSICAL STANDBY


SHOW PARAMETER RECOVERY
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      +FLASMYDBD
db_recovery_file_dest_size           big integer 15G


Valider la synchronisation de la base de données STANDBY
LOGS             TIME                  SEQUENCE# INCARNATION# 
---------------- -------------------- ---------- ------------ 
LAST APPLIED  :  11-FEB-2019 13:40:34      62228            2 
LAST RECEIVED :  11-FEB-2019 14:00:32      62229            2 

Arrêter l'apply :
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  


Créer un RESTORE POINT GUARANTEE :
CREATE RESTORE POINT TEST_FAILOVER GUARANTEE FLASHBACK DATABASE; 


Vérifier le RESTORE POINT :
COL NAME FORMAT A20
COL SCN  FORMAT A15
COL TIME FORMAT A20
SELECT NAME, TO_CHAR(SCN) SCN, TO_CHAR(TIME,'DD/MM/YYYY HH24:MI') TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE/1024/1024 MO
FROM V$RESTORE_POINT 
WHERE GUARANTEE_FLASHBACK_DATABASE = 'YES' ;
 
NAME                 SCN             TIME                 DATABASE_INCARNATION# GUA         MO
-------------------- --------------- -------------------- --------------------- --- ----------
TEST_FAILOVER        9811893079035   11/02/2019 14:20                         2 YES        300


Primary Database :
------------------
Créer un décalage des SCN entre la Primaire et la standBy :
ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER SYSTEM ARCHIVE LOG CURRENT;

Vérifier la configuration de destination :
SHOW PARAMETER LOG_ARCHIVE_DEST
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                     string
log_archive_dest_1                   string      LOCATION=+FLASMYDBD/...
log_archive_dest_10                  string
...
...
log_archive_dest_2                   string      service="SMYDB", LGWR AS...
...
...

SHOW PARAMETER LOG_ARCHIVE_DEST_STATE_2
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2             string      ENABLE


Empêcher l'envoie des archives vers la StandBy :

ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER;


SHOW PARAMETER LOG_ARCHIVE_DEST_STATE_2
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2             string      DEFER


StandBy Database :
------------------
Valider le type de controlfile :
SELECT CONTROLFILE_TYPE FROM V$DATABASE; 
CONTROL
-------
STANDBY


Convertir la base de données en Bd Primaire :
ALTER DATABASE ACTIVATE STANDBY DATABASE;


Valider que le type de controlfile ait changé : 
SELECT CONTROLFILE_TYPE FROM V$DATABASE; 
CONTROL
-------
CURRENT

Ouvrir la bases de données :
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE; 
ALTER DATABASE OPEN;

Valider le Rôle de la base de données :
SELECT DATABASE_ROLE FROM V$DATABASE ;
DATABASE_ROLE
----------------
PRIMARY



StandBy Database :
------------------
Procéder aux essais , il faut noter que tous les objets crées ou toutes les modifications vont disparaître après cet essai.

SQL> CREATE TABLE TOTO ( COL1 VARCHAR2 (100)); 
Table created. 

SQL> INSERT INTO TOTO VALUES ( 'Testing Failover - FlashBack'); 
1 row created. 

SQL> commit; 
Commit complete.


StandBy Database :
------------------
Une fois les essais terminés, il faut revenir en arrière .

Repartir la base de données :
STARTUP MOUNT FORCE;

Exécuter le Flashback :
FLASHBACK DATABASE TO RESTORE POINT TEST_FAILOVER ;

Valider le type de controlfile :
SELECT CONTROLFILE_TYPE FROM V$DATABASE; 
CONTROL
-------
BACKUP

Convertir la base de données à Physical StandBy :
ALTER DATABASE CONVERT TO PHYSICAL STANDBY;  
STARTUP MOUNT FORCE;  
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION ; 

Valider le type de controlfile :
SELECT CONTROLFILE_TYPE FROM V$DATABASE; 
CONTROL
-------
STANDBY


Primary Database :
------------------
Activer l'envoi des archives :
ALTER SYSTEM ARCHIVE LOG CURRENT;  
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; 

SHOW PARAMETER LOG_ARCHIVE_DEST_STATE_2
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2             string      ENABLE


StandBy Database :
------------------
Ouvrir la base de donnes en Read-only pour confirmer que les objets crééer ont disparus

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  
ALTER DATABASE OPEN READ ONLY;  

SQL> SELECT * FROM TOTO;  
SELECT * FROM TOTO
  *
ERROR at line 1:
ORA-00942: table or view does not exist


Réactiver la synchronisation :
STARTUP FORCE MOUNT;  
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION ; 

S'assurer que la bases de données continue à synchroniser :
LOGS             TIME                  SEQUENCE# INCARNATION# NAME
---------------- -------------------- ---------- ------------ 
LAST APPLIED  :  11-FEB-2019 14:32:25      62238            2 
LAST RECEIVED :  11-FEB-2019 14:32:28      62239            2 


Supprimer le Restore Point :

COL NAME FORMAT A20
COL SCN  FORMAT A15
COL TIME FORMAT A20
SELECT NAME, TO_CHAR(SCN) SCN, TO_CHAR(TIME,'DD/MM/YYYY HH24:MI') TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE/1024/1024 MO
FROM V$RESTORE_POINT 
WHERE GUARANTEE_FLASHBACK_DATABASE = 'YES' ;

NAME                 SCN             TIME                 DATABASE_INCARNATION# GUA         MO
-------------------- --------------- -------------------- --------------------- --- ----------
TEST_FAILOVER        9811893079035   11/02/2019 14:20                         2 YES        600


DROP RESTORE POINT TEST_FAILOVER ;  



Aucun commentaire:

Enregistrer un commentaire