sql >> Base de Datos >  >> RDS >> Oracle

Mantener la propagación siempre habilitada en Oracle Streams

En esta publicación describiré cómo mantener habilitada la propagación de Oracle Streams servicio para la base de datos de destino mediante la creación de un trabajo de programación y un procedimiento. La propagación es un servicio que transfiere los nuevos cambios de la base de datos de origen a la base de datos de destino, si este servicio se detiene, no se aplicarán cambios de datos a la base de datos de destino. Ya expliqué en mi publicación anterior cómo crear Oracle Streams Replication.1. Primero inicie sesión en la base de datos con las credenciales de administrador de Streams. CONECTE [SOURCE_STREAM_ADMIN]2. A continuación, cree la tabla para mantener el registro de propagación, de modo que pueda ver cuándo se detuvo el servicio de propagación y cuándo volvió a iniciarse. Crear tabla Propagation_Audit (Propagation_name Varchar2(30),Source_queue_name Varchar2(30),Destination_queue_name Varchar2(30), Destination_dblink Varchar2(128),Estado Varchar2(8),Error_message Varchar2(4000),Error_date Fecha)/3. Luego cree un procedimiento para registrar el estado de deshabilitación y volver a habilitarlo. Cree o reemplace el PROCEDIMIENTO Ckprop_EnableAs Errnum Number; Errmsg Varchar2 (4000); CURSOR Prop_status es Seleccione 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 into 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); COMPROMETERSE; BEGIN Dbms_Aqadm.enable_Propagation_Schedule (Rec.Source_queue_name, Rec.Destination_dblink); EXCEPCIÓN Cuando Otros Entonces Errnum :=SQLCODE; Errmsg :=SQLERRM; Insertar en Propagation_Audit Values ​​('CKPROP_ENABLE', Rec.Source_queue_name, 're-enable propagation for', Rec.Destination_dblink, 'ERROR', Errnum || ':' || Errmsg, Sysdate); COMPROMETERSE; FIN; END LOOP;EXCEPTION Cuando Otros Entonces Errnum :=SQLCODE; Errmsg :=SQLERRM; Insertar en Propagation_Audit Values ​​('CKPROP_ENABLE', 'Exception handler', Null, Null, 'ERROR', Errnum || ':' || Errmsg, Sysdate); COMMIT;FIN Ckprop_Enable;/4. Luego cree un trabajo programado para verificar en el intervalo especificado. 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 => Nulo, habilitado => VERDADERO, auto_drop=>FALSO, comentarios => 'CADA 15 MIN'); Listo.