Configurer Streams avec Oracle Enterprise Manager Grid Control 11g

Depuis la version 10.2.0.5 d’Enterprise Manager, Oracle Streams peut être configuré depuis le Grid Control. Je vous propose d’illustrer quelques unes de ces possibilités à travers la mise en place de la réplication monodirectionnelle d’une table entre 2 bases de données. Bien sur, certaines choses peuvent encore progresser et en particulier pour couvrir l’étendue des possibilités offertes par Streams. Enfin, il faut reconnaître à Oracle que « ça a de la gueule ». Assez disserté, plongeons dans les possibilités offertes par Enterprise Manager

Remarques préliminaires:
Pour mettre en oeuvre Streams, certains pré-requis sont nécessaires. Ceux-ci sont à compléter par le fait que vous ne pouvez pas créer n’importe quel type de configuration Streams depuis l’assistant de configuration. Les scripts générés correspondent, en effet, soit à une configuration « Downstreams Capture », soit à l’utilisation d’une des procédures MAINTAIN_TABLES, MAINTAIN_SCHEMAS, MAINTAIN_TABLESPACES ou MAINTAIN_GLOBAL de DBMS_STREAMS_ADM. Vous ne pourrez donc pas, encore et par exemple, mettre en oeuvre une configuration utilisant la capture synchrone depuis Grid Control. D’un autre côté, toutes les configurations peuvent être supervisées, y compris les plus complexes et EM offre de superbes interfaces avec sur les topologies et sur Streams Performance Advisor (i.e. les packages UTL_SPADV et DBMS_STREAMS_ADVISOR_ADM).

Configuration de la réplication d’une table

Commençons par un exemple simple; nous allons mettre en place la réplication monodirectionnelle d’une table entre deux bases de données. Cette configuration est assez représentative des possibilités offertes par les assistants de configuration de Streams et surtout très simple.

Avant de commencer, vérifiez quelques éléments de configuration :

  • La base de données doit être en mode archivelog
  • Créez un tablespace STREAMS_TBS pour les files d’attentes de l’administrateur Streams
  • On supposera que la table existe sur la base de données source (e.g. SCOTT.DEPT sur BLACK) et qu’elle n’existe pas sur la base de données cible (e.g. WHITE). On supposera également que l’utilisateur propriétaire de la table existe sur la destination. J’ai donc créé l’utilisateur SCOTT à cet effet.

Première bonne surprise, la création de l’administrateur Streams est pris en charge par l’assistant et vous pouvez même créer tous les administrateurs de toutes vos bases de données en une seule opération. Pour cela, sélectionnez "Data Movement -> Streams -> Setup" puis, si vous n’êtes pas connecté en tant qu’Administrateur Streams, vous pourrez sélectionner "Streams Administrator User". Remplissez alors le formulaire de création des administrateurs Streams pour toutes vos bases de données comme ci-dessous :

Vous l’aurez compris pour configurer Streams, il faut être connecté avec un Administrateur Streams. Sélectionnez le menu « Logout  » reconnectez-vous à votre base de données avec l’administrateur Streams. Une fois l’opération effectuée, vous pouvez lancer l’assistant de configuration de la réplication de tables à partir du menu "Data Movement -> Streams -> Setup" comme ci-dessous:
Laissez-vous ensuite guider dans la configuration:

  • Choisissez une ou un ensemble de table à répliquer sur votre base de données:

  • Sélectionnez ensuite les espaces pour stocker les fichiers d’export/import datapump ainsi que les options de configuration avancées de Streams :

  • Sélectionnez quand l’opération sera réalisée :
  • Enfin, validez l’ensemble des opérations qui seront effectuées à travers le récapitulatif proposé. Vous pouvez même accéder et de modifier les scripts générés pour l’occasion :

Une fois la réplication en place, n’oubliez pas de tester son fonctionnement.

Gérer vos configurations Streams

Vous pouvez visualiser votre configuration Streams à partir du menu "Data Movement -> Streams -> Manage Replication. Les différents écrans qui s’appuient sur DBMS_STREAMS_ADVISOR_ADM et les vues associées permettent de suivre le fonctionnement d’Oracle Streams sur la base de données locale comme vous pouvez vous en rendre compte ci-dessous:Vous pouvez aller encore plus loin grâce au menu Advisor Central -> Streams Performance Advisor qui offre, en s’appuyant sur le package UTL_SPADV, une vue globale de la configuration et des performances associées au niveau global :
L’assistant vous présente également un niveau détaillé pour chacun des composants Streams sur l’ensemble des bases de don
nées impliquées :

Superviser Oracle Streams

Enterprise Manager offre également un ensemble de mesures et d’alertes associées à Streams. Vous décrouvrirez ces mesures en explorant l’ensemble des mesures disponibles pour votre base de données :
Pour se rendre compte du fonctionnement de la supervision de Streams, vous pouvez, par exemple, faire échouer un process. Etant donné que nous avons mis en place une configuration monodirectionnelle, un moyen simple consiste à générer un conflit en adaptant le script ci-dessous à votre contexte :

-- Sur la base destination, modifier les données
-- pour que la modification à suivre détecte un conflit et échoue
connect scott@white
update dept set LOC='PARIS'
where deptno=10;

commit;
-- Sur la base source, modifiez les données
-- qui se propagera jusqu'à arriver en conflit et faire échouer le process d'apply
connect scott@black
update dept set LOC='PARIS'
where deptno=10;

commit;

Après quelques secondes (sauf si votre process d’apply ignore les erreurs), vous découvrirez une alerte sur votre base de données destination indiquant que le processus d’apply a échoué:

Conclusion

Pour ce qui est de résoudre le problème, ne cherchez pas, vous ne pouvez pas encore le faire depuis la console ! Il faut interroger la vue DBA_APPLY_ERROR et utiliser le package DBMS_APPLY_ADM de manière adéquate :
Il faut bien continuer à justifier nos salaires. Il n’empêche, quand on fait le bilan de ce qui est désormais disponible et surtout d’où on vient, on ne peut qu’applaudir avec enthousiasme. Je reste curieux de voir comment GoldenGate pourra exploiter les forces de Streams dans la prochaine version… C’est bien de ça dont il s’agit ?

1 réflexion sur “Configurer Streams avec Oracle Enterprise Manager Grid Control 11g”

  1. Bonjour,
    Merci pour ton Blog il est terrible.
    j’ai cependant un probleme pour mettre streams en place ( j’ai oracle EMGrid Control 10).
    Je veux carrément répliquer une base entiere A vers une base cible B (lecture seule)
    Je n’arrive pas a comprendre de quoi on part au départ pour la base cible …
    1/ Dois je copier ma base (arret/copie des fichiers dbf et recréation d’une base cible identique et) configurer streams qui va rejouer les archives
    2/Dois je recréer une base vide avec les meme tablespace, fichiers etc, la déclarer dans le grid control, choisir replicate whole database
    3/ faire autrement
    Bref je suis un peu perdue..
    Merci pour ton complement d’info

    Clem

Les commentaires sont fermés.