Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
LAMI DBA

Articles autour des SGBD Oracle, SQL Server & PostgreSQL

DATAGUARD - Protection Mode - Upgrade to MaxProtection - ORA-16627

Hello,

Me revoici avec mon petit dataguard. Lorsqu'on regarde la configuration on constate que le protection mode est à "MaxPerformance". A savoir qu'il y a trois mode de protection.

  • MaxPerformance
  • MaxAvailability
  • MaxProtection

Le MaxProtection comme son nom l'indique va priviligier la sécurité des données et garantir le fameux 0 Data Lost. Evidemment cela à un cout en performance. Car chaque transaction va devoir être acquitée avant de rendre la main à la base primaire.  Dans mon cas, "MaxPerformance", il n'y a pas cette étape. 

DGMGRL>
DGMGRL> show configuration

Configuration - mapogos

  Protection Mode: MaxPerformance
  Members:
  rastadb   - Primary database
    rastastby - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS   (status updated 48 seconds ago)

Je décide donc de modifier mon mode de protection, pour le passer à MaxProtection. Mon client ne veut pas perdre de données.

DGMGRL>
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxProtection;
Error: ORA-16651: upgrade to maximum protection mode not possible

Failed.
DGMGRL>


Ca ne fonctionne pas... Why.. et bien Because... Plus sérieusement, on ne peut pas passer directement du mode MaxPerformance à MaxProtection. Il faut passer par l'intermediaire MaxAvailability. Soit...

DGMGRL>
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
Error: ORA-16627: operation disallowed since no member would remain to support protection mode

Failed.


Ca ne fonctionne toujours pas...  Et oui, dans ma configuration initiale (MaxPerformance), le transport des redo à été configuré à la valeur ASYNC, ce qui n'est evidemment pas compatible avec le mode MaxProtection. On peut facilement le vérifier.

DGMGRL>
DGMGRL>
DGMGRL> show database rastastby 'LogXptMode';
  LogXptMode = 'ASYNC'
DGMGRL>
DGMGRL>
DGMGRL> show database rastadb 'LogXptMode';
  LogXptMode = 'ASYNC'
DGMGRL>

Une fois cela acté, il nous suffit de modifier la valeur.

DGMGRL> edit database rastadb set PROPERTY LogXptMode='SYNC';
Property "logxptmode" updated
DGMGRL>
DGMGRL>
DGMGRL> edit database rastastby set PROPERTY LogXptMode='SYNC';
Property "logxptmode" updated
DGMGRL>

On peut maintenant procéder à la modification de mode de protection en prenant soin de passer par l'étape intemédiaire.

DGMGRL>
DGMGRL>  EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
Succeeded.
DGMGRL>
DGMGRL>  EDIT CONFIGURATION SET PROTECTION MODE AS MaxProtection;
Succeeded.
DGMGRL>

Et tout se passe normalement. La confiance n'excluant pas le contrôle, je jette un dernier coup d'oeil...

DGMGRL>
DGMGRL> show configuration;

Configuration - mapogos

  Protection Mode: MaxProtection
  Members:
  rastadb   - Primary database
    rastastby - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS   (status updated 13 seconds ago)


Et voila... tout le monde est rassuré, "0 Data Lost", mais tout d'un coup, une petite question saugrenue me passe par la tête...

Remarque 1:
Que se passe t'il si pour une raison quelle qu'elle soit ma standby était inaccessible...


Remarque 2:

L'objectif du "0 Data Lost", implique (logiquement) que ma standby ne soit pas trop proche de ma primary... et donc cela risque de poser des soucis de latences.. Rappelez vous... On acquitte sur la Standby avant de rendre la main... Qui dit latences, dit problèmatiques de performances... Veut-on sacrifier les perfs au détriment de la protection de données... Cruel dilemmme !

 

Et bien tout cela fera l'objet de nouveaux articles prochainement. Alors inscrivez vous  à la newsletter pour en être informé.

Enjoy.

 

 


 

 

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
S
mlerci, ça fonctionné pour moi.
Répondre