21 Février 2018
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.
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.