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éduresMAINTAIN_TABLES
,MAINTAIN_SCHEMAS
,MAINTAIN_TABLESPACES
ouMAINTAIN_GLOBAL
deDBMS_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 packagesUTL_SPADV
etDBMS_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
surBLACK
) 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’utilisateurSCOTT
à 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:
- 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”
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.