Menjaga Propagasi Selalu Diaktifkan Di Oracle Streams
Dalam posting ini saya akan menjelaskan cara untuk tetap mengaktifkan layanan Oracle Streams Propagation untuk database target dengan membuat Schedule Job dan prosedur. Propagation adalah layanan yang mentransfer perubahan baru dari database sumber ke database target, jika layanan ini dihentikan maka tidak ada perubahan data yang akan diterapkan ke database target. Sudah saya jelaskan di postingan saya sebelumnya cara membuat Oracle Streams Replication.1. Pertama login ke database dengan kredensial admin Streams.CONNECT [SOURCE_STREAM_ADMIN]2. Kemudian buat tabel untuk memelihara log propagasi, sehingga Anda dapat melihat kapan layanan propagasi dihentikan dan kapan dimulai lagi.Buat Tabel Propagation_Audit (Nama_Propagasi Varchar2(30),Nama_nama_Sumber Varchar2(30),Nama_antrian_tujuan Varchar2(30), Destination_dblink Varchar2(128),Status Varchar2(8),Error_message Varchar2(4000),Error_date Date)/3. Kemudian buat prosedur untuk mencatat status penonaktifan dan mengaktifkannya kembali. Buat Atau Ganti PROSEDUR Ckprop_EnableAs Nomor Errnum; Errmsg Varchar2 (4000); CURSOR Prop_status Dipilih Nama_Propagasi, Destination_dblink, Status, Source_queue_name, Destination_queue_name, Error_message, Error_date Dari DBA_PROPAGATION Dimana Status !='ENABLED';BEGIN Untuk Rec In Prop_status LOOP Sisipkan Ke Propagation_name_Audit Values (Repagation_Audit Nilai Rec.Destination_dblink, Rec.Status, Rec.Error_message, Rec.Error_date); MELAKUKAN; BEGIN Dbms_Aqadm.enable_Propagation_Schedule (Rec.Source_queue_name, Rec.Destination_dblink); PENGECUALIAN Ketika Yang Lain Maka Errnum :=SQLCODE; Errmsg :=SQLERRM; Masukkan Ke Nilai Propagation_Audit ('CKPROP_ENABLE', Rec.Source_queue_name, 'aktifkan kembali propagasi untuk', Rec.Destination_dblink, 'ERROR', Errnum || ':' || Errmsg, Sysdate); MELAKUKAN; AKHIR; END LOOP;EXCEPTION When Others Then Errnum :=SQLCODE; Errmsg :=SQLERRM; Masukkan Ke Nilai Propagation_Audit ('CKPROP_ENABLE', 'Exception handler', Null, Null, 'ERROR', Errnum || ':' || Errmsg, Sysdate); KOMIT;END Ckprop_Enable;/4. Kemudian buat pekerjaan terjadwal untuk diperiksa pada interval yang ditentukan. 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, diaktifkan => TRUE, auto_drop=>FALSE, comments => 'SETIAP 15 MENIT');Selesai.