Перезапуск репликации на подстанции

Материал из ИбисоПедии
Перейти к: навигация, поиск

Данная процедура может понадобиться для очистки застрявших данных в таблице MIS.BUFFER_TRANSFER (select * from MIS.BUFFER_TRANSFER WHERE REGIST_DATE < TRUNC(SYSDATE)-10)

Возможные проблемы:

  • MIS.JOB_PROPAGATE_DICT может не существовать на подстанции (комметраим строчку и выполняем повторно первый скрипт )
  • MIS.JOB_PROPAGATE может не работать (и поэтому первый скрипт может не сработать)

Отключаем все JOB

begin
  DBMS_SCHEDULER.DISABLE('MIS.CONTROL_JOB_RUNNING');
  DBMS_SCHEDULER.DISABLE('JOB_PROPAGATE_DICT'); -- работает только на ЦДС
  DBMS_SCHEDULER.DISABLE('MIS.JOB_PROPAGATE_CALL_INFO'); -- работает только на ПС
  DBMS_SCHEDULER.DISABLE('MIS.UPDATE_STATION_LINK_ID_1');
  dbms_scheduler.stop_job('MIS.JOB_PROPAGATE',force => TRUE);  -- работает только на ПС
  DBMS_SCHEDULER.DISABLE('MIS.JOB_PROPAGATE');  -- работает только на ПС
  dbms_scheduler.stop_job('MIS.JOB_PROPAGATE_STATION_ID_2',force => TRUE);  -- работает только на ЦДС
  DBMS_SCHEDULER.DISABLE('MIS.JOB_PROPAGATE_STATION_ID_2');  -- работает только на ЦДС
end;
/

Проверяем, что все JOB остановились

SELECT job_name,
       state,
       last_start_date,
       last_run_duration,
       next_run_date,
       enabled
  FROM dba_scheduler_jobs
 WHERE owner = 'MIS'

Очищаем буферную таблицу

BEGIN
    DELETE FROM mis.buffer_transfer
     WHERE regist_date <= TRUNC (SYSDATE) - 10;

    COMMIT;
END;

Включаем JOB

begin
  DBMS_SCHEDULER.ENABLE('MIS.CONTROL_JOB_RUNNING');
--  DBMS_SCHEDULER.ENABLE('MIS.JOB_PROPAGATE_DICT');  /* для подстанции не включаем*/
--  DBMS_SCHEDULER.ENABLE('MIS.JOB_PROPAGATE_CALL_INFO'); /* для ЦДС не включаем*/
  DBMS_SCHEDULER.ENABLE('MIS.UPDATE_STATION_LINK_ID_1');
--  DBMS_SCHEDULER.ENABLE('MIS.JOB_PROPAGATE'); /* для ЦДС не включаем*/
end;
/