Oracle
 sql >> Base de données >  >> RDS >> Oracle

Maintenir la propagation toujours activée dans Oracle Streams

Dans cet article, je vais décrire comment conserver la propagation Oracle Streams activée service pour la base de données cible en créant un travail planifié et une procédure. La propagation est un service qui transfère les nouvelles modifications de la base de données source à la base de données cible. Si ce service est arrêté, aucune modification de données ne s'appliquera à la base de données cible. J'ai déjà expliqué dans mon post précédent comment créer Oracle Streams Replication.1. Connectez-vous d'abord à la base de données avec les informations d'identification de l'administrateur Streams.CONNECT [SOURCE_STREAM_ADMIN]2. Créez ensuite la table pour conserver le journal de propagation, afin que vous puissiez voir quand le service de propagation a été arrêté et quand il a redémarré. Destination_dblink Varchar2(128),Status Varchar2(8),Error_message Varchar2(4000),Error_date Date)/3. Créez ensuite une procédure pour enregistrer l'état de désactivation et réactivez-le. Créer ou remplacer la PROCÉDURE Ckprop_EnableAs Errnum Number ; Errmsg Varchar2 (4000); CURSOR Prop_status Is Select Propagation_name, Destination_dblink, Status, Source_queue_name, Destination_queue_name, Error_message, Error_date From DBA_PROPAGATION Where Status !='ENABLED';BEGIN For Rec In Prop_status LOOP Insert Into Propagation_Audit Values ​​(Rec.Propagation_name, Rec.Source_queue_name, Rec. Rec.Destination_dblink, Rec.Status, Rec.Error_message, Rec.Error_date); COMMETTRE; COMMENCER Dbms_Aqadm.enable_Propagation_Schedule (Rec.Source_queue_name, Rec.Destination_dblink); EXCEPTION When Others Then Errnum :=SQLCODE; Errmsg :=SQLERRM; Insérer dans les valeurs Propagation_Audit ('CKPROP_ENABLE', Rec.Source_queue_name, 'réactiver la propagation pour', Rec.Destination_dblink, 'ERROR', Errnum || ':' || Errmsg, Sysdate); COMMETTRE; FINIR; END LOOP;EXCEPTION When Others Then Errnum :=SQLCODE; Errmsg :=SQLERRM; Insérer dans les valeurs Propagation_Audit ('CKPROP_ENABLE', 'Gestionnaire d'exceptions', Null, Null, 'ERROR', Errnum || ':' || Errmsg, Sysdate); COMMIT;END Ckprop_Enable;/4. Créez ensuite une tâche planifiée pour vérifier à intervalle spécifié.Exec DBMS_SCHEDULER.CREATE_JOB (

job_name => 'propagation_check', job_type => 'STORED_PROCEDURE', job_action => 'ckprop_enable', number_of_arguments => 0, start_date =>Sysdate, repeat_interval => 'FREQ=MINUTELY;INTERVAL=5', end_date => Null, activé => TRUE, auto_drop=>FALSE, comments => 'TOUTES LES 15 MIN'); C'est fait.