Zachování propagace vždy povolené v Oracle Streams
V tomto příspěvku popíšu, jak zachovat povolenou propagaci Oracle Streams Propagace je služba, která přenáší nové změny ze zdrojové databáze do cílové databáze. Pokud se tato služba zastaví, pak se na cílovou databázi nebudou vztahovat žádné změny dat. Již jsem vysvětlil ve svém předchozím příspěvku, jak vytvořit Oracle Streams Replication.1. Nejprve se přihlaste do databáze pomocí přihlašovacích údajů správce streamů. PŘIPOJTE [SOURCE_STREAM_ADMIN]2. Poté vytvořte tabulku pro udržování protokolu šíření, abyste mohli zobrazit, kdy byla služba šíření zastavena a kdy byla znovu spuštěna. Vytvořte tabulku Propagation_Audit (Propagation_name Varchar2(30), Source_queue_name Varchar2(30),Destination_queue_name Varchar2(30), Destination_dblink Varchar2(128),Status Varchar2(8),Error_Message Varchar2(4000),Error_date Date)/3. Poté vytvořte proceduru pro zaprotokolování stavu deaktivace a znovu ji povolte. Vytvořit nebo nahradit PROCEDURE Ckprop_EnableAs Errnum Number; Errmsg Varchar2 (4000); CURSOR Prop_status je 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, Rec In Prop_name, Rec In Prop_name, Rec In Prop_name, LOOP_ce. Rec.Destination_dblink, Rec.Status, Rec.Error_message, Rec.Error_date); SPÁCHAT; BEGIN Dbms_Aqadm.enable_Propagation_Schedule (Rec.Source_queue_name, Rec.Destination_dblink); VÝJIMKA When Others Then Errnum :=SQLCODE; Errmsg :=SQLERRM; Vložit do hodnot Propagation_Audit ('CKPROP_ENABLE', Rec.Source_queue_name, 'znovu povolit šíření pro', Rec.Destination_dblink, 'ERROR', Errnum || ':' || Errmsg, Sysdate); SPÁCHAT; KONEC; END LOOP;EXCEPTION When Others Then Errnum :=SQLCODE; Errmsg :=SQLERRM; Vložit do hodnot Propagation_Audit ('CKPROP_ENABLE', 'Ovladač výjimek', Null, Null, 'CHYBA', Errnum || ':' || Errmsg, Sysdate); COMMIT;END Cckprop_Enable;/4. Poté vytvořte naplánovanou úlohu ke kontrole v zadaném intervalu.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, end_date => TRUE, auto_drop=>FALSE, komentáře => 'KAŽDÝCH 15 MIN');Je hotovo.