Oracle Streams est une fonctionnalité standard d’Oracle (depuis la version 9i) qui permet de répliquer des données, d’une base source vers une ou plusieurs bases destination.
Et ce avec différents niveau de granularité :
- réplication de table(s)
- de schema(s)
- de base complète
sachant que chaque niveau peut lui même être affiné en le filtrant par des règles…
Comment fonctionne Oracle Streams
Oracle Streams s’appuie sur 3 processus distincts :
- la capture : sur la db source, intercepte toutes les modifications faites sur les données (via les redo logs) et les transforme en enregistrements logiques (Logical Change Record ou LCRs). CEs LCRs sont empilés dans une queue de messages,
- la propagation : entre db source et destination, transporte ces LCRs et les empile dans une queue de messages
- l’application (apply process) : sur la db destination, qui dépile les messages, les transforme et répercute les modifications sur les données cibles.

détail d’une capture
détail de la propagation
Techniquement, la configuration et la mise en oeuvre d’Oracle Streams se fait avec un nombre restreint de procédures du package PL/SQL standards DBMS_STREAMS_ADM. Ce package permet :
- la gestion des queues de messages (procédure DBMS_STREAMS_ADM.SETUP_QUEUES, DBMS_STREAMS_ADM.REMOVE_QUEUES
- la gestion des règles de filtrage (procédures DBMS_STREAMS_ADM.ADD_%_RULES)
- (procedures DBMS_STREAMS_ADM.MAINTAIN_GLOBAL, DBMS_STREAMS_ADM.MAINTAIN_SCHEMA, DBMS_STREAMS_ADM.MAINTAIN_TABLES,…)
Quelques utilisations d’Oracle Streams
Oracle streams peut être utilisé notamment pour les sctions suivantes :
- réplication automatique de données
- chargement d’infocentre / entrepot de données
- sauvegarde de données
- audit
- gestion de piles de messages
Surveillance d’Oracle STreams
On peut également, administrer une partie de Streams avec la GRID Console
Les principales vues du dictionnaire de données concernant Streams sont les suivantes :
- DBA_APPLY, DBA_APPLY_%
- DBA_CAPTURE, DBA_CAPTURE_%
- DBA_HIST_STREAMS_%
- DBA_PROPAGATION
- DBA_RULE_%
- DBA_STREAMS_%
ainsi que les vues dynamiques suivantes :
V$BUFFERED_%, V$PROPAGATION_SENDER, V$PROPAGATION_RECEIVER, V$RULE_%, V$STREAMS_%




