I dette indlæg vil jeg beskrive, hvordan man holder Oracle Streams-udbredelse aktiveret service for måldatabasen ved at oprette et Schedule Job og en procedure. Udbredelsen er tjenesten, der overfører de nye ændringer fra kildedatabasen til måldatabasen, hvis denne service bliver stoppet, vil ingen dataændringer gælde for måldatabasen. Jeg forklarede allerede i mit tidligere indlæg, hvordan man opretter Oracle Streams Replication.1. Log først ind på databasen med Streams-administratoroplysninger. FORBIND [SOURCE_STREAM_ADMIN]2. Opret derefter tabellen for at vedligeholde udbredelsesloggen, så du kan se, hvornår udbredelsestjenesten blev stoppet, og hvornår den kommer i gang igen. Opret tabeludbredelse_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. Opret derefter en procedure for at logge deaktiveringsstatus og genaktiver den. Opret eller erstat PROCEDURE Ckprop_EnableAs Errnum Number; Errmsg Varchar2 (4000); CURSOR Prop_status er Vælg Propagation_name, Destination_dblink, Status, Source_queue_name, Destination_queue_name, Error_message, Error_date From DBA_PROPAGATION Hvor Status !='ENABLED';BEGIN For Rec In Prop_status LOOP Indsæt i Propagation_Requeue_name,Requep_Name,Requep_Name,Requep. Rec.Destination_dblink, Rec.Status, Rec.Error_message, Rec.Error_date); BEGÅ; BEGIN Dbms_Aqadm.enable_Propagation_Schedule (Rec.Source_queue_name, Rec.Destination_dblink); UNDTAGELSE When Others Then Errnum :=SQLCODE; Errmsg :=SQLERRM; Indsæt i Propagation_Audit-værdier ('CKPROP_ENABLE', Rec.Source_queue_name, 'genaktiver udbredelse for', Rec.Destination_dblink, 'ERROR', Errnum || ':' || Errmsg, Sysdate); BEGÅ; 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. Opret derefter et planlagt job for at kontrollere med specificeret interval.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=MINUTEL;INTERVAL=5', slutdato => Nul, aktiveret => SAND, auto_drop=>FALSK, kommentarer => 'HVER 15. MIN.'); Det er gjort.