Описание репликации между подстанциями — различия между версиями
Admin (обсуждение | вклад) (→Решение проблем) |
Admin (обсуждение | вклад) |
||
| (не показаны 4 промежуточные версии 2 участников) | |||
| Строка 27: | Строка 27: | ||
|передача оперативных данных на подстанции (вызовы) | |передача оперативных данных на подстанции (вызовы) | ||
|MIS.PKG_REPLICATION.PROPAGATE_BUFFER_TRANSFER(<STATION_ID>) | |MIS.PKG_REPLICATION.PROPAGATE_BUFFER_TRANSFER(<STATION_ID>) | ||
| + | |один раз в 20 секунд | ||
| + | |- | ||
| + | |MIS.JOB_PROPAGATE | ||
| + | |передача оперативных данных c подстанции на ЦДС (вызовы). Работает только на ПС | ||
| + | |MIS.PKG_REPLICATION.PROPAGATE_BUFFER_TRANSFER | ||
|один раз в 20 секунд | |один раз в 20 секунд | ||
|- | |- | ||
| Строка 43: | Строка 48: | ||
|MIS.PKG_STATION_LINK.CONTROL_JOB_RUNNING(); | |MIS.PKG_STATION_LINK.CONTROL_JOB_RUNNING(); | ||
|Один раз в минуту | |Один раз в минуту | ||
| + | |- | ||
| + | |MIS.DEL_SYS_AUD | ||
| + | |Чистит таблицу sys.aud$ | ||
| + | | begin delete from sys.aud$; commit; end; | ||
| + | |Один раз в месяц | ||
|} | |} | ||
| Строка 53: | Строка 63: | ||
* MIS.JOB_PROPAGATE_CALL_INFO - передача дозаполненных вызовов (раз в пять минут) | * MIS.JOB_PROPAGATE_CALL_INFO - передача дозаполненных вызовов (раз в пять минут) | ||
* MIS.CONTROL_JOB_RUNNING следит за подвисшими джобами (один раз в минуту) | * MIS.CONTROL_JOB_RUNNING следит за подвисшими джобами (один раз в минуту) | ||
| + | * MIS.DEL_SYS_AUD2 удаляет все данные из sys.aud$ (один раз в месяц) | ||
При поднятии дампа станции из бекапа центральной следует использовать скрипт ER/DB_ER/CreateRostovStantion.bat. | При поднятии дампа станции из бекапа центральной следует использовать скрипт ER/DB_ER/CreateRostovStantion.bat. | ||
| Строка 58: | Строка 69: | ||
== Полезные запросы == | == Полезные запросы == | ||
| − | <source | + | <source> |
-- Анализ сбоев работы заданий по репликации | -- Анализ сбоев работы заданий по репликации | ||
select TRUNC("CURRENT_DATE"), JOB_NAME, count(*) | select TRUNC("CURRENT_DATE"), JOB_NAME, count(*) | ||
| Строка 66: | Строка 77: | ||
</source> | </source> | ||
| − | <source | + | <source> |
-- просмотр логов JOB | -- просмотр логов JOB | ||
SELECT * | SELECT * | ||
| Строка 73: | Строка 84: | ||
</source> | </source> | ||
| − | <source | + | <source> |
-- Состояние заданий репликации | -- Состояние заданий репликации | ||
SELECT job_name, | SELECT job_name, | ||
| Строка 86: | Строка 97: | ||
| − | <source | + | <source> |
-- более детальный просмотр логов | -- более детальный просмотр логов | ||
SELECT * | SELECT * | ||
| Строка 94: | Строка 105: | ||
=== Отключение репликации === | === Отключение репликации === | ||
| − | <source | + | <source> |
-- отключает все триггера репликации | -- отключает все триггера репликации | ||
prompt *** 06-replication_disable.sql **************************************** | prompt *** 06-replication_disable.sql **************************************** | ||
| Строка 135: | Строка 146: | ||
Решение см. [[Репликация. Проблемы с PEOPLE_ADDR]] | Решение см. [[Репликация. Проблемы с PEOPLE_ADDR]] | ||
| − | ==== В MIS.BUFFER_TRANSFER накапливаются записи и никогда не отсылаются на подстанции ==== | + | ==== В MIS.BUFFER_TRANSFER накапливаются записи и никогда не отсылаются на подстанции. LAST_TRY_DATE NULL ==== |
| − | Причина - запись не отправляется на подстанцию пока не назначена какая либо подстанция. Обычно связано с дубликатами вызовов | + | Причина - запись не отправляется на подстанцию пока не назначена какая либо подстанция. Обычно связано с дубликатами вызовов, в таблице |
Текущая версия на 20:10, 26 ноября 2017
Содержание
Введение
В данной статье описана схема реализации репликации в Ростове-На-Дону. Репликация основана на работе JOB, которые через DBLINK передают данные. Все данные, которые будут участвовать в репликации, через срабатывание триггеров, попадают в таблицу MIS.BUFFER_TRANSFER. Далее из этой таблицы с помощью JOB данные рассылаются на подстанции. Ошибки возникшие во время передачи попадают в таблицу MIS.BUFFER_TRANSFER_LOG. Логика работы с репликацией собрана в пакете MIS.PKG_REPLICATION.
Описание потоков данных, участвующих в репликации
Здесь должно быть описание того какие данные попадают от станции на подчтанции
ЦДС
На ЦДС работают четыре вида JOB:
Общее кол-во JOB на ЦДС составляет 20 штук
| JOB | Описание | Тело | периодичность |
|---|---|---|---|
| MIS.UPDATE_STATION_LINK_ID_ | Проверка связи с подстанциями. Результат храниться в таблице MIS.STATION_LINK | MIS.PKG_STATION_LINK.UPDATE_LINK_STATE(10); | один раз в минуту |
| MIS.JOB_PROPAGATE_STATION_ID_(<STATION_ID>) | передача оперативных данных на подстанции (вызовы) | MIS.PKG_REPLICATION.PROPAGATE_BUFFER_TRANSFER(<STATION_ID>) | один раз в 20 секунд |
| MIS.JOB_PROPAGATE | передача оперативных данных c подстанции на ЦДС (вызовы). Работает только на ПС | MIS.PKG_REPLICATION.PROPAGATE_BUFFER_TRANSFER | один раз в 20 секунд |
| MIS.JOB_PROPAGATE_DICT | Передача справочников на подстанции | MIS.PKG_REPLICATION.PROPAGATE_BT_DICTIONARY_INFO | Один раз в 5 минут |
| MIS.JOB_PROPAGATE_CALL_INFO (disabled) | Передает дозаполненную информацию о вызов.Работает только на подстации | MIS.PKG_REPLICATION.PROPAGATE_BT_CALL_INFO | Один раз в пять минут |
| MIS.CONTROL_JOB_RUNNING | Следит за состоянием джобов по репликации, если джоб выполняется дольше чем должен, то его перезапускает, логи хранятся в таблице MIS.JOB_RESTART_LOG | MIS.PKG_STATION_LINK.CONTROL_JOB_RUNNING(); | Один раз в минуту |
| MIS.DEL_SYS_AUD | Чистит таблицу sys.aud$ | begin delete from sys.aud$; commit; end; | Один раз в месяц |
Подстанция
Работают четыре вида JOB:
- MIS.UPDATE_STATION_LINK_ID_1 - проверка связи с главной станцией. (раз в минуту)
- MIS.JOB_PROPAGATE - Передача оперативных данных на ЦДС (раз в двадцать секунд). Вызов MIS.PKG_REPLICATION.PROPAGATE_BUFFER_TRANSFER
- MIS.JOB_PROPAGATE_CALL_INFO - передача дозаполненных вызовов (раз в пять минут)
- MIS.CONTROL_JOB_RUNNING следит за подвисшими джобами (один раз в минуту)
- MIS.DEL_SYS_AUD2 удаляет все данные из sys.aud$ (один раз в месяц)
При поднятии дампа станции из бекапа центральной следует использовать скрипт ER/DB_ER/CreateRostovStantion.bat. Создание JOB подстанции можно найти ER/DB_ER/Expa/cr_stjob.sql
Полезные запросы
-- Анализ сбоев работы заданий по репликации
select TRUNC("CURRENT_DATE"), JOB_NAME, count(*)
from MIS.JOB_RESTART_LOG
group by TRUNC("CURRENT_DATE"), JOB_NAME
order by 1 desc-- просмотр логов JOB
SELECT *
FROM sys.dba_scheduler_job_log
WHERE job_name = '%%'-- Состояние заданий репликации
SELECT job_name,
state,
last_start_date,
last_run_duration,
next_run_date,
enabled
FROM dba_scheduler_jobs
WHERE owner = 'MIS'
-- более детальный просмотр логов
SELECT *
FROM sys.dba_scheduler_jobs
WHERE job_name LIKE '%JOB_PROPAGATE_CALL_INFO%'Отключение репликации
-- отключает все триггера репликации
prompt *** 06-replication_disable.sql ****************************************
DECLARE
CURSOR cur_trig
IS
SELECT owner, trigger_name
FROM dba_triggers
WHERE trigger_name LIKE '%REPLICATION%' AND owner IN ('MIS', 'MED');
BEGIN
FOR v_cur_trig IN cur_trig
LOOP
DBMS_OUTPUT.put_line (
v_cur_trig.owner || '-- ' || TO_CHAR (v_cur_trig.trigger_name));
EXECUTE IMMEDIATE 'ALTER TRIGGER '
|| v_cur_trig.owner
|| '.'
|| v_cur_trig.trigger_name
|| ' DISABLE';
END LOOP;
END;
/Перезапуск репликации на подстанции
Отключение репликации через пакет
MIS.PKG_REPLICATION.IS_REPL - перекомпилить пакет со значение по умолчанию TRUE
Решение проблем
MIS.BUFFER_TRANSFER_LOG накапливаются записи MIS.FK_PEOPLE_ADDR$ADDR, MIS.FK_PEOPLE_ADDR$PEOPLE
- В таблице MIS.BUFFER_TRANSFER_LOG накапливаются записи
- -2291:ORA-02291: integrity constraint (MIS.FK_PEOPLE_ADDR$ADDR) violated - parent key not found
- -2291:ORA-02291: integrity constraint (MIS.FK_PEOPLE_ADDR$PEOPLE) violated - parent key not found
Решение см. Репликация. Проблемы с PEOPLE_ADDR
В MIS.BUFFER_TRANSFER накапливаются записи и никогда не отсылаются на подстанции. LAST_TRY_DATE NULL
Причина - запись не отправляется на подстанцию пока не назначена какая либо подстанция. Обычно связано с дубликатами вызовов, в таблице
Смотри также: