Перезапуск репликации на подстанции — различия между версиями

Материал из ИбисоПедии
Перейти к: навигация, поиск
(Отключаем все JOB)
 
(не показаны 2 промежуточные версии этого же участника)
Строка 6: Строка 6:
  
 
== Отключаем все JOB ==
 
== Отключаем все JOB ==
<source lang="sql">
+
<source>
 
begin
 
begin
 
   DBMS_SCHEDULER.DISABLE('MIS.CONTROL_JOB_RUNNING');
 
   DBMS_SCHEDULER.DISABLE('MIS.CONTROL_JOB_RUNNING');
   DBMS_SCHEDULER.DISABLE('JOB_PROPAGATE_DICT');
+
   DBMS_SCHEDULER.DISABLE('JOB_PROPAGATE_DICT'); -- работает только на ЦДС
 
   DBMS_SCHEDULER.DISABLE('MIS.JOB_PROPAGATE_CALL_INFO'); -- работает только на ПС
 
   DBMS_SCHEDULER.DISABLE('MIS.JOB_PROPAGATE_CALL_INFO'); -- работает только на ПС
 
   DBMS_SCHEDULER.DISABLE('MIS.UPDATE_STATION_LINK_ID_1');
 
   DBMS_SCHEDULER.DISABLE('MIS.UPDATE_STATION_LINK_ID_1');
Строка 21: Строка 21:
  
 
Проверяем, что все JOB остановились
 
Проверяем, что все JOB остановились
<source lang="sql">
+
<source >
 
SELECT job_name,
 
SELECT job_name,
 
       state,
 
       state,
Строка 34: Строка 34:
  
 
== Очищаем буферную таблицу ==
 
== Очищаем буферную таблицу ==
<source lang="sql">
+
<source>
 
BEGIN
 
BEGIN
 
     DELETE FROM mis.buffer_transfer
 
     DELETE FROM mis.buffer_transfer
Строка 44: Строка 44:
  
 
== Включаем JOB==
 
== Включаем JOB==
<source lang="sql">
+
<source>
 
begin
 
begin
 
   DBMS_SCHEDULER.ENABLE('MIS.CONTROL_JOB_RUNNING');
 
   DBMS_SCHEDULER.ENABLE('MIS.CONTROL_JOB_RUNNING');
 
--  DBMS_SCHEDULER.ENABLE('MIS.JOB_PROPAGATE_DICT');  /* для подстанции не включаем*/
 
--  DBMS_SCHEDULER.ENABLE('MIS.JOB_PROPAGATE_DICT');  /* для подстанции не включаем*/
  DBMS_SCHEDULER.ENABLE('MIS.JOB_PROPAGATE_CALL_INFO');
+
--  DBMS_SCHEDULER.ENABLE('MIS.JOB_PROPAGATE_CALL_INFO'); /* для ЦДС не включаем*/
 
   DBMS_SCHEDULER.ENABLE('MIS.UPDATE_STATION_LINK_ID_1');
 
   DBMS_SCHEDULER.ENABLE('MIS.UPDATE_STATION_LINK_ID_1');
  DBMS_SCHEDULER.ENABLE('MIS.JOB_PROPAGATE');
+
--  DBMS_SCHEDULER.ENABLE('MIS.JOB_PROPAGATE'); /* для ЦДС не включаем*/
 
end;
 
end;
 
/
 
/

Текущая версия на 08:47, 30 сентября 2020

Данная процедура может понадобиться для очистки застрявших данных в таблице 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;
/