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_TABLESPACESouMAINTAIN_GLOBALdeDBMS_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_SPADVetDBMS_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.DEPTsurBLACK) 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.
"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 :

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 donné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éesAprè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é:
-- 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;

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 vueDBA_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 ?

2 commentaires:
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
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
Enregistrer un commentaire