Oracle 11g Release 2 Data Guard (1/5) : 5 minutes pour créer une configuration

LinkedIn 0
Twitter
Facebook 0
Google+ 0

Si vous avez eu l’opportunité de regarder les nouvelles fonctionnalités 11g Release 2 d’Oracle Data Guard et de son broker, vous avez découvert une liste de 33 améliorations répertoriées. Cela va du positionnement d’une propriété sur plusieurs bases de données avec dgmgrl à la correction automatique de blocs corrompus, les cruelles ORA-01578, grâce à Oracle Active Data Guard. Cela passe également désormais par la compression de l’ensemble du traffic réseau avec l’option Advanced Compression et par la garantie d’un délai de mise à jour des bases de données standby pour vos requêtes… Un véritable inventaire, à la Prévert, déjà si indispensable qu’on se demande comment on a fait jusqu’à maintenant !
Cela étant, vous m’accorderez que, le fait que ce soit dans la documentation ne signifie ni que ça marche, ni que ce soit simple. J’ai quelques bon contre-exemples sur cette version justement. Enfin, pour Data Guard, c’est une belle histoire et je vous propose donc de partager à travers une série de 5 articles quelques unes des fonctionnalités associées. Le plan que j’ai imaginé est le suivant :

  • Le 1er article (celui-ci), présente comment créer une configuration Data Guard en 5 minutes, en plus du temps de copie de la base de données et comment effectuer une transition des roles des bases de données
  • Le 2nd article, présente comment changer le mode de protection, activer Snapshot Standby et Real Time Query
  • Le 3ème article illustre le fonctionnement de la correction automatique de blocs corrumpus sur la base de données primaire et standby
  • Le 4ème article démontre comment garantir la fraicheur des données sur la standby
  • Le 5ème article illustre l’utilisation du Block Change Tracking File sur la base standby et l’utilisation de la commande recover database noredo pour gérer la perte d’un fichier archivelog

Il me semble qu’il s’agit d’un tour d’horizon assez complet de l’état de l’art de Data Guard en 11g Release 2. Bien sur, si vous avez d’autres idées, n’hésitez pas à les partager en laissant vos commentaires…
J’espère que votre intérêt est aiguisé ! Maintenant, commençons par constituer un environnement pour nos tests en 5 minutes ou à peine plus.

Un environnement de test

Pour faire mes tests, j’ai utilisé Oracle 11g Release 2 sur Linux 32 bits. La base de données primaire et son instance s’appellent BLACK. La base de données standby s’appellera forcément BLACK mais son instance et son db_unique_name s’appelleront WHITE.
A quelques nuances près comme l’utilisation de oradim sur Windows ou OpenVMS, vous pourrez réaliser des configurations tout aussi simplement sur votre système d’exploitation préféré. Sur cet environnement, il y a une seule base de données standby physique; les bases de données primaires et standby sont sur le même serveur. A ce propos, le fait que primaire et standby soient sur le même serveur rend la configuration plutôt plus complexe ! Cela nécessite que (1) vous utilisiez le paramètre db_unique_name et (2) que l’arborescence des fichiers soit différente entre les bases de données primaires et standby.
D’autre part, vous noterez que l’arborescence de la base de données primaire est compatible OFA. Les fichiers de données résident sur un système de fichiers et n’utilisent pas une configuration Oracle Managed Files (OMF). Si, avec une configuration OMF (ou ASM), la configuration est encore plus simple, vous serez attentif à changer l’arborescence de manière pertinente dans le cas où vous n’utilisez pas OFA.

Avant de commencer

Voici quelques notes, en vrac, avant de démarrer :

  • La commande DUPLICATE ... FROM ACTIVE DATABASE permet de créer la base de données standby en 8 lignes. Il faut noter quelques points à ce propos : (1) cette commande ne nécessite pas d’option d’après la lecture d’Oracle® Database Licensing Information, (2) cette commande ne permet pas (au moins d’après ma compréhension !) d’utiliser d’algorithme de compression, ni de paralléliser la copie de la base de données. Ce dernier point en particulier limite l’intérêt de cette approche pour des grosses bases de données. Dans ce cas, il faudra sans doute utiliser une approche en plusieurs étapes avec une commande duplicate depuis une sauvegarde.
  • La syntaxe RMAN startup auxiliary ne fonctionne plus ! Il faut désormais utiliser obligatoirement startup clone
  • Il n’est pas nécessaire d’avoir un fichier d’initialisation init.ora ou spfile pour démarrer la base de données auxiliaire; c’est sûrement vrai depuis 10g mais je l’ai découvert par hasard.
  • La standby physique fonctionne désormais même lorsque le fichier de mot de passe est créé avec ignorecase=n et que le paramètre sec_case_sensitive_logon est positionné à true
  • Le paramètre StaticConnectIdentifier du broker 11g R2 permet de positionner des alias TNS avec des enregistrements statiques de nom d’instance et qui, par conséquent fonctionnement même lorsque les instances sont arrêtées
  • La commande du broker edit configuration set property permet à partir de 11g R2 de changer une propriété de la configuration Data Guard sur l’ensemble des bases de données simultanément.

Service, fichier de mot de passe et configuration réseau

Comme le titre de ce paragraphe le suggère, configurer manuellement une base de données standby nécessite que vous commenciez par configurer le service pour cette nouvelle base de données, le fichier de mot de passe et les listeners et alias TNS. Commencez donc par le service; sur Linux et Unix, cela consiste à alimenter le fichier oratab comme ci-dessous :

L’étape suivante consiste à créer un fichier de mots de passe pour notre nouvelle instance standby. Le mot de passe utilisé, ainsi que la politique de respect de la casse, pour SYS (si vous utilisez SYS) doit être identique à celui de la base de données primaire. Voici comment configurer ce mot de passe sur le serveur de la standby :

Ensuite, je vous conseille, pour simplifier la mise en oeuvre de la commande duplicate et de la gestion des roles d’effectuer des enregistrements statiques des instances dans les listeners respectifs de BLACK et de WHITE :

Enfin, sur dans tous les $ORACLE_HOME de vos configurations, ajoutez les alias TNS pour se connecter à BLACK et WHITE. Par exemple, dans mon cas, j’utilise le fichier tnsnames.ora et j’ai ajouté les entrées ci-dessous:

Créer la base de données standby

Pour créer la base de données standby, il suffit de démarrer l’instance WHITE depuis recovery manager en adaptant le script ci-dessous:

Un message comme celui ci-dessous s’affiche :

Vous n’avez plus ensuite qu’à créer l’arborescence pour vos fichiers ; visiblement RMAN est capable de créer certains répertoires mais je n’ai pas eu l’opportunité de tester sans créer les répertoires pour les datafiles et archivelogs :

Lancer enfin la commande duplicate comme ci-dessous; vous remarquerez l’utilisation de seulement 4 paramètres :

Il ne vous reste plus qu’à patienter et le cas échéant, superviser l’avancement de la sauvegarde avec v$rman_status et v$session_longops; si vous n’utilisez qu’une base de test, en moins de 3 minutes, vous aurez constitué la base de données standby; voici un exemple d’exécution de la commande :

Démarrer le broker et créer les standby logs

Remarquez qu’on aurait pu commencer par démarrer le broker et les standby logs. Avant ou maintenant, en fait, peu importe ! Démarrer le process dmon sur les 2 instances et créer les fichiers de standby logs en prenant soin de vous assurer que la taille des fichiers est égale ou supérieure à celle des redologs, comme ci-dessous :

Créer et activer la configuration Data Guard

Pour terminer la configuration, il suffit de créer la configuration dans le broker et de l’activer; l’ensemble du paramétrage de la « managed » standby sera créé en conséquence :

Pour terminer, enregistrez les alias TNS statique dans le nouveau paramètre d’Oracle 11g Release 2 StaticConnectIdentifier; cela simplifie la lisibilité de la configuration ainsi que les arrêts/démarrages des instances depuis le broker:

Changer les rôles des bases de données

Vous voulà prêt à tester le changement de rôle des bases de données (et 2 minutes qui font 5 avec les 3 minutes précédentes!); toujours depuis l’interface en ligne de commande du broker :

Et dans le sens inverse :

Conclusion de ce premier article

Après ce premier article, personne ne dira plus jamais que Data Guard et les managed standby sont compliqués ! Après tout, si vous ne gardez que la substance de cette article, il y a, tout au plus, 15 lignes utiles. Et vous verrez bientôt qu’ensuite, c’est encore plus facile ! Est-ce que ça vous intéresse ?

LinkedIn 0
Twitter
Facebook 0
Google+ 0

14 réflexions sur “Oracle 11g Release 2 Data Guard (1/5) : 5 minutes pour créer une configuration”

  1. Ping : Oracle Database 11g Release 2 Data Guard (6/5): Créer une standby logique avec le broker | EASYTEAM

  2. Ping : Oracle Database 11g Release 2 Data Guard (6/5): Créer une standby logique avec le broker | EASYTEAM LE BLOG

  3. Ping : Oracle Database 11g Release 2 Data Guard (7/5): Observer et Fast Start Failover « EASYTEAM LE BLOG

  4. Bonjour,
    Je pense que la vrai nouveauté du rman dans cette version 11gr2 est de pouvoir faire un duplicate de la base sans que la cible soit disponible:
    DUPLICATE DATABASE TO WHITE
    BACKUP LOCATION ‘/u02/oradata/backup_WHITE’; – emplacement du backup sur disque.
    Bonne journée

  5. Ping : Active Data Guard 11g Release 2 (5/5) : BCTF et RECOVER NOREDO sur la Standby « EASYTEAM Le BLOG

  6. Ping : Oracle 11g Release 2 Data Guard (3/5) : Automatic Block Media Recovery « EASYTEAM Le BLOG

  7. Ping : Oracle 11g Release 2 Data Guard (2/5) : Compression, Snapshot Standby, Real Time Query, etc « EASYTEAM Le BLOG

  8. A propos de ma 3è suggestion, j’avais effectivement oublié que l’on pouvait avoir une hétérogénéité des OS entre la primary et la standby. A propos, est-ce que Oracle ne conseille pas fortement que la primary et la standby aient le même OS ?
    Concernant ma question, je craignais que les switchovers et les transitions de rôles à l’aide de dgmgrl échouent du fait de l’absence d’une ligne avec global_dbname et le suffixe _DGMGRL. Mais vous avez effectivement montré que les transitions de rôles marchent. Et je me demande si la présence de la primary et de la standby sur la même machine physique n’y est pas pour quelque chose dans cette réussite ou si ce n’est pas le miracle du nouveau paramètre « staticConnectIdentifier ».
    Je vais regarder ce nouveau paramètre mais votre éclairage ne sera pas de trop.
    Cdlt,
    Komlan

  9. Hello,
    Après un lecture attentive de ce premier du riche programme que vous nous avez proposé, je reviens avec trois suggestions et une question :
    – Créer un fichier init.ora minimaliste pour la standby. Il ne devrait contenir qu’une ligne avec « db_name=BLACK ». Je pense que cela éviterait le message « startup failed », dans l’esprit des bonnes pratiques.
    – Créer les standby redologs sur la primaire avant l’exécution de la commande duplicate. Cela éviterait de les créer manuellement deux fois (une fois sur la primaire et une 2è fois sur la standby) par la suite.
    – Copier le fichier des mots de passe de la primaire sur la standby en lui donnant le nom adéquat.
    Ces trois suggestions ont été mises en oeuvre il y a un mois dans un test 11gR1 dont le compte-rendu se trouve sur le blog bd-oracle passion (http://bkomlan.blogspot.com – Création d’une active dataguard, une procédure compacte).
    Pensez-vous qu’avec des SID_DESC simplifiés dans les fichiers listener.ora, vous n’aurez pas de message ORA-12514 lors des switchovers et autres conversions à l’aide de dataguard broker (dgmgrl) ?
    [A ma connaissance, jusqu’à la 11gR1, il fallait à peu près :
    (SID_DESC =
    (GLOBAL_DBNAME = _DGMGRL.)
    (SERVICE_NAME = .)
    (SID_NAME = )
    (ORACLE_HOME = )
    )
    ]
    Encore une fois, merci pour le joli travail qui montre que l’on peut aller encore plus loin que je ne le pensais.
    Cordialement,
    Komlan

    1. Attention (!!!!!)
      L’outil de gestion des commentaires a massacré et rendu incompréhensibles plusieurs lignes de déclaration de service (in listener.ora) contenu dans mon dernier post.
      Webmaster, au secours ! Que dois-je faire ou comment dois-je faire ?
      Je tente une correction bricolée dans l’espoir que ça passe :
      (SID_DESC =
      (GLOBAL_DBNAME = [db_unique_name]_DGMGRL.[db_domain])
      (SERVICE_NAME = [db_unique_name].[db_domain])
      (SID_NAME = [ORACLE_SID])
      (ORACLE_HOME = [ORACLE_HOME])
      )
      Cdlt,
      Komlan

    2. Concernant les 3 remarques :
      1) Tout est une question de rapidité. Je voulais montrer que ça marche même sans init.ora.
      2) D’accord. C’est ce que je voulais dire avec mon commentaire à propos du moment pour créer les standby logs
      3) Est-ce que marche dans tous les cas ? On peut avoir une standby Windows d’une primaire Linux. Il faut s’assurer avec la copie d’avoir les bon droits et faire un scp si les serveurs sont distant. Je préfère la méthode orapwd. Cela dit, on fait comme on veut.
      Je ne comprends pas la question à propos du paramétrage du listener.ora. Quel est le problème qu’on essaie de résoudre ? Il n’y a pas de ORA-12514 dans mon test.
      A propos des messages d’erreurs, ça va vous faire plaisir, toutes les utilisations de crsctl, même avec succès, en 11.2 renvoient un message « CRS-« .

  10. Michel Stevelinck

    Cher Master,
    Ah que oui je suis intéressé ! Je viens tout juste de faire un upgrade de ma certification de OCP 10g vers 11g (histoire de me forcer à étudier la théorie) et j’ai une furieuse envie de tester les nouvelles fonctionalités de la 11gR2 sur Linux (redhat). Vos articles sont appréciés et attendus. Au sein de ma société, on commence tout juste à mettre du 11g en production. Mais les nouvelles fonctionalités sont très intéressantes. Je considère pour ma part que la 11g… c’est de la 10g accomplie. Cela fait du bien d’avoir un explorateur qui nous dit « devinez ce que je viens de trouver sous une pierre … ». Un tout grand merci et on attend la suite avec gourmandise.
    Très cordialement,
    Michel

  11. Bonjour, Brave collègue
    C’est peu de dire que ça nous intéresse.
    J’aurais bien souhaité prendre en charge une partie de ce travail avec vous, car c’est un joli rendez-vous du donner et du recevoir.
    Bref je vous suivrai pas à pas et je ne manquerai pas de vous balancer de temps en temps des mails d’encouragement et quelques petites questions.
    Bon courage !
    Bien cordialement,
    Komlan

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *