Oracle
 sql >> база данни >  >> RDS >> Oracle

Поддържане на разпространение винаги активирано в Oracle Streams

В тази публикация ще опиша как да поддържате активирана услугата Oracle Streams Propagation за целевата база данни чрез създаване на задание и процедура по график. Разпространението е услуга, която прехвърля новите промени от изходната база данни към целевата база данни, ако тази услуга бъде спряна след това никакви промени в данните няма да се прилагат към целевата база данни. Вече обясних в предишната си публикация как да създадете Oracle Streams Replication.1. Първо влезте в базата данни с идентификационни данни за администратор на потоци. CONNECT [SOURCE_STREAM_ADMIN]2. След това създайте таблицата, за да поддържате дневника на разпространението, така че да можете да видите кога услугата за разпространение е спряна и кога е започнала отново. Създайте таблица Propagation_Audit (име на разпространение Varchar2(30),Source_queue_name Varchar2(30),Destination_queue_name Varchar2(30), Destination_dblink Varchar2(128),Състояние Varchar2(8),Error_message Varchar2(4000),Error_date Дата)/3. След това създайте процедура за регистриране на състоянието на деактивиране и повторното му активиране. Създайте или заменете ПРОЦЕДУРА Ckprop_EnableAs Errnum Number; Errmsg Varchar2 (4000); CURSOR Prop_status е Изберете Propagation_name, Destination_dblink, Status, Source_queue_name, Destination_queue_name, Error_message, Error_date от DBA_PROPAGATION Където Status !='ENABLED';BEGIN For Rec In Prop_status To LOOP.Insert.c. Rec.Destination_dblink, Rec.Status, Rec.Error_message, Rec.Error_date); COMMIT; BEGIN Dbms_Aqadm.enable_Propagation_Schedule (Rec.Source_queue_name, Rec.Destination_dblink); ИЗКЛЮЧЕНИЕ Когато други тогава Errnum :=SQLCODE; Errmsg :=SQLERRM; Вмъкване в стойности за одит на разпространение ('CKPROP_ENABLE', Rec.Source_queue_name, 're-enable propagation for', Rec.Destination_dblink, 'ERROR', Errnum || ':' || Errmsg, Sysdate); COMMIT; КРАЙ; END LOOP;ИЗКЛЮЧЕНИЕ Когато други тогава Errnum :=SQLCODE; Errmsg :=SQLERRM; Вмъкване в стойности за одит на разпространение ('CKPROP_ENABLE', 'Обработчик на изключения', Null, Null, 'ERROR', Errnum || ':' || Errmsg, Sysdate); COMMIT;END Ckprop_Enable;/4. След това създайте планирано задание за проверка на определен интервал.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 enabled => TRUE, auto_drop=>FALSE, comments => 'ВСЕКИ 15 МИНУТИ'); Готово е.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция TRANSLATE() в Oracle

  2. Как да разделите низ, разделен със запетая в Oracle

  3. Условно дефинирайте курсор

  4. Най-популярните заявки за намиране на Patch, приложен в приложенията на Oracle

  5. Заявете две таблици от различни схеми