Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Weitergabe in Oracle Streams immer aktiviert lassen

In diesem Beitrag beschreibe ich, wie die Oracle Streams-Weitergabe aktiviert bleibt Dienst für die Zieldatenbank durch Erstellen eines Zeitplanjobs und einer Prozedur. Die Weitergabe ist ein Dienst, der die neuen Änderungen von der Quelldatenbank in die Zieldatenbank überträgt. Wenn dieser Dienst beendet wird, gelten keine Datenänderungen für die Zieldatenbank. Ich habe bereits in meinem vorherigen Beitrag erklärt, wie man Oracle Streams Replication.1 erstellt. Melden Sie sich zuerst mit den Anmeldeinformationen des Streams-Administrators bei der Datenbank an. CONNECT [SOURCE_STREAM_ADMIN]2. Erstellen Sie dann die Tabelle, um das Weitergabeprotokoll zu verwalten, damit Sie sehen können, wann der Weitergabedienst gestoppt und wann er wieder gestartet wurde. Destination_dblink Varchar2(128),Status Varchar2(8),Error_message Varchar2(4000),Error_date Date)/3. Erstellen Sie dann eine Prozedur, um den Deaktivierungsstatus zu protokollieren, und aktivieren Sie ihn erneut. Erstellen oder ersetzen Sie PROCEDURE Ckprop_EnableAs Errnum Number; Errmsg Varchar2 (4000); CURSOR Prop_status ist 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 In Propagation_Audit Values ​​(Rec.Propagation_name, Rec.Source_queue_name, Rec.Destination_queue_name, Rec.Destination_dblink, Rec.Status, Rec.Error_message, Rec.Error_date); BEGEHEN; BEGIN Dbms_Aqadm.enable_Propagation_Schedule (Rec.Source_queue_name, Rec.Destination_dblink); AUSNAHME When Others Then Errnum :=SQLCODE; Errmsg :=SQLERRM; Insert Into Propagation_Audit Values ​​('CKPROP_ENABLE', Rec.Source_queue_name, 'Reenable propagation for', Rec.Destination_dblink, 'ERROR', Errnum || ':' || Errmsg, Sysdate); BEGEHEN; ENDE; END LOOP;EXCEPTION When Others Then Errnum :=SQLCODE; Errmsg :=SQLERRM; Insert Into Propagation_Audit Values ​​('CKPROP_ENABLE', 'Exception handler', Null, Null, 'ERROR', Errnum || ':' || Errmsg, Sysdate); COMMIT;END Ckprop_Enable;/4. Erstellen Sie dann einen geplanten Job, der in einem bestimmten Intervall überprüft werden soll. Führen Sie 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, aktiviert => TRUE, auto_drop=>FALSE, comments => 'ALLE 15 MIN');Fertig.