sql >> Database >  >> RDS >> Oracle

Propagation altijd ingeschakeld houden in Oracle Streams

In dit bericht zal ik beschrijven hoe u Oracle Streams Propagation ingeschakeld kunt houden service voor de doeldatabase door een geplande taak en procedure te maken. De propagatie is een service die de nieuwe wijzigingen van de brondatabase naar de doeldatabase overbrengt. Als deze service wordt gestopt, zijn er geen gegevenswijzigingen van toepassing op de doeldatabase. Ik heb in mijn vorige bericht al uitgelegd hoe u Oracle Streams Replication.1 kunt maken. Log eerst in op de database met Streams-beheerdersreferenties.CONNECT [SOURCE_STREAM_ADMIN]2. Maak vervolgens de tabel om het propagatielogboek bij te houden, zodat u kunt zien wanneer de propagatieservice is gestopt en wanneer deze opnieuw wordt gestart.Create Table 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 Datum)/3. Maak vervolgens een procedure om de uitschakelstatus vast te leggen en opnieuw in te schakelen.Create or Replace PROCEDURE 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 Invoegen in Propagation_Audit_waarden, Rec.Propagation_name, Rec.Propagation_name Rec.Destination_dblink, Rec.Status, Rec.Error_message, Rec.Error_date); VERBINDEN; BEGIN Dbms_Aqadm.enable_Propagation_Schedule (Rec.Source_queue_name, Rec.Destination_dblink); UITZONDERING Wanneer Anderen Dan Errnum :=SQLCODE; Errmsg :=SQLERRM; Invoegen in Propagation_Audit-waarden ('CKPROP_ENABLE', Rec.Source_queue_name, 'propagation opnieuw inschakelen voor', Rec.Destination_dblink, 'ERROR', Errnum || ':' || Errmsg, Sysdate); VERBINDEN; EINDE; END LOOP;UITZONDERING Wanneer Anderen Dan Errnum :=SQLCODE; Errmsg :=SQLERRM; Invoegen in Propagation_Audit-waarden ('CKPROP_ENABLE', 'Exception handler', Null, Null, 'ERROR', Errnum || ':' || Errmsg, Sysdate); COMMIT;END Ckprop_Enable;/4. Maak vervolgens een geplande taak om met een opgegeven interval te controleren.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, ingeschakeld => TRUE, auto_drop=>FALSE, opmerkingen => 'ELKE 15 MIN'); Het is klaar.

  1. Verbinding maken met de database vanuit Unity

  2. Conditional Split Transformation:gegevens exporteren van SQL Server naar Oracle- en MySQL-databases

  3. hoe dubbele rijen uit een tabel in mysql te verwijderen

  4. PL/SQL Strong-referentiecursor met door de gebruiker gedefinieerd recordgegevenstype