Monday, September 07, 2009

ACTIVE DATA GUARD
VERIFICATION ET PARAMETRAGE DE L'ACTIVE DATA GUARD SOUS ORACLE DATABASE 11G

Jusqu'à la version 10.2 d'Oracle, les bases de données standby physiques ne pouvaient fonctionner que dans deux modes exclusifs :
- Ouverture en lecture seule pour permettre que les utilisateurs puissent exécuter des requêtes d'intérrogation et ainsi décharger en partie la base de données de production.
- Ouverture en récupération managée pour permettre l'application des données de redo que la standby reçoit de la base de données de production.
L'inconvénient majeur de ce fonctionnement en deux modes exclusifs l'un de l'autre est que lorsque la standby physique est en lecture seule, les fichiers de log sont accumulés pour n'être appliqués qu'une fois que la standby est remise dans le mode "récupération managée".
C'est, entre autres, pour cette raison qu'Oracle a introduit l'Active Dataguard en 11g. Cette nouvelle fonctionnalité permet aux utilisateurs d'avoir un accès en lecture seule aux bases de données standby physiques pendant que le transport des logs et leur application continuent sur ces mêmes bases de données.
"Active Data Guard" est mentionnée comme une nouvelle option payante dans les brochures du produit Oracle Database 11g.
Et on pourrait s'attendre à la retrouver dans la vue v$option lorsque cette option est activée. Or il n'en est rien. Il se pose dès lors la question de savoir comment vérifier la présence de cette option et comment la paramétrer/activer.
C'est l'objet du présent article.

Vérification d'Active Data Guard
La vérification de la présence de l'option "Active Data Guard" se fait sur la standby database à l'aide de la requête ci-dessous.
SQL> SELECT 'Active Data Guard is Enabled' ADG
2 FROM v$MANAGED_STANDBY A, V$DATABASE B
3 WHERE A.PROCESS LIKE 'MRP%' AND B.OPEN_MODE='READ ONLY';

ADG
----------------------------
Active Data Guard is Enabled

Si cette requite affiche comme réponse "Active Data Guard Enabled" (comme c'est le cas ci-dessus) alors on peut en conclure qu'Active Data Guard est "activée.
Si par contre la réponse est "no rows selected" comme ci-dessous, alors l'option n'est pas activée et il faudra la paramétrer.
SQL> SELECT 'Active Data Guard is Enabled' ADG
2 FROM v$MANAGED_STANDBY A, V$DATABASE B
3 WHERE A.PROCESS LIKE 'MRP%' AND B.OPEN_MODE='READ ONLY';

no rows selected


Paramétrage d'Active Data guard
Plusieurs étapes sont nécessaires pour paramétrer Active Data Guard.

1°) Vérifier si la standby est en récupération managée
SQL> select process, status from v$managed_standby ;
PROCESS STATUS
--------- ------------
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
MRP0 APPLYING_LOG
6 rows selected.

2°) Si c'est le cas comme dans l'exemple ci-dessus (la présence du processus MRP0 l'atteste), arrêter la récupération managée et vérifier l'effectivité de l'arrêt.
SQL> alter database recover managed standby database cancel ;
Database altered.
SQL> select process, status from v$managed_standby ;
PROCESS STATUS
--------- ------------
ARCH CONNECTED
ARCH CONNECTED
ARCH CLOSING
ARCH CONNECTED
ARCH CONNECTED
RFS IDLE
RFS IDLE
RFS IDLE
8 rows selected.

3°) Ouvrir la standby avec la commande alter et l'option open
SQL> alter database open
Note : Une solution alternative consiste à arrêter la standby et à la re-démarrer comme une bd classique
SQL> shutdown
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 857903104 bytes
Fixed Size 1303272 bytes
Variable Size 486542616 bytes
Database Buffers 364904448 bytes
Redo Buffers 5152768 bytes
Database mounted.
Database opened.

4°) Re-démarrer la récupération managée avec l'option "using current logfile".
SQL> alter database recover managed standby database using current logfile disconnect ;
Database altered.

5°) vérifier que la récupération managée a démarré et que l'Active Dataguard est "activée"
SQL> select process, status from v$managed_standby ;
PROCESS STATUS
--------- ------------
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
MRP0 APPLYING_LOG
6 rows selected.

SQL> SELECT 'Active Data Guard is Enabled' ADG
2 FROM v$MANAGED_STANDBY A, V$DATABASE B
3 WHERE A.PROCESS LIKE 'MRP%' AND B.OPEN_MODE='READ ONLY';

ADG
----------------------------
Active Data Guard is Enabled

Voilà comment gérer la nouvelle fonctionnalité "Active Data Guard" dans Oracle Database 11g.
Nous verrons dans notre prochain post, une procédure compacte (simplifiée) de mise en place d'une configuration "Active Data Guard".
A bientôt donc !

0 Comments:

Post a Comment

<< Home