Проблема
Сделки не отправляются во внешние системы.
Решение
В данном разделе обсуждается ситуация с не отправленными сделками из системы Адаптер Навигатора. Необходимо проверить следующие данные:
Заполнено поле IDPOCKET в таблице TBL_FORD32 по сделке. Запросом ниже можно это проверить.
SELECT * FROM tbl_ford32 WHERE ticket='<<номер_сделки>>';
Если поле IDPOCKET заполнено, необходимо искать причину в FAQ, раздел "Не приходят сделки" принимающего адаптера, предварительно записав номер пакета, в котором ушла сделка.
Поле IDPOCKET пустое, необходимо проверить:
- Адаптер Навигатора работает корректно.
- Сервис адаптера RN5NewDSrvc.exe работает корректно (он же установлен как служба RN5OutDocSrvc).
- Сделка не является частью сделки (SWOP,REPO, межпортфельная сделка).
- Существует ли подписка у адаптера внешней системы на данный объект.
- Корректно ли создаются алерты на базе.
- Проходит фильтры данная сделка;
- Диспетчер BUS запущен, при необходимости попробуйте перезапустить Диспетчер BUS;
Проверить наличие лицензии на публикацию объектов:
SELECT decode (nvl(ACTION,0),3,'Both',2,'Send out',1,'Incoming', 0, 'License N/A or Not correct Alias object or/and alias system') as "License status", decode (sign(to_number(m.END_LIC_DATE-sysdate)),1,'Active','Not Active') as "Date License status" FROM LIC_BUS_MATRIX m, LIC_BUS_SYS_ALIAS a, LIC_BUS_OBJ_ALIAS o WHERE m.SYSTEM_ID = a.SYSTEM_ID AND m.OBJ_NAME = o.OBJ_NAME AND o.OBJ_ALIAS = :ObjectName AND a.SYSTEM_ALIAS = :SystemName;
Выполнить скрипт для активации отправки объекта с которым возникли проблемы (в примере используется vw_FX):
BEGIN prc_alert_over_job('TBLFORD32UPDATED','vw_FX'); commit; end;
Если алерты на базе работают корректно и нет проблем с работой сервиса отправки RN5NewDSrvc.exe (служба RN5OutDocSrvc), то в лог файле адаптера должны появится следующие записи:
RN5OutDocSrvc: Обнаружены изменения в Базе Данных(Было получено оповещение TBLFORD32UPDATED) RN5OutDocSrvc: PrepareDocuments: SubscribleObjList.Count > 0
После выполнения проверить отправились сделки, или нет.
Возможно расхождение времени БД с временем сервера приложений. Удостоверьтесь, что время сервера приложений идентично времени БД.
Собрав данные, попробуйте их проанализировать, может быть, ответ лежит на поверхности. Ну если нет, берем всё, что удалось собрать и заводим задачу. Вам помогут. К задаче, прикрепите результаты следующих запросов:
select * from DBA_JOBS_RUNNING; select * from DBA_JOBS; select * from USER_JOBS;
Если выполненные действия не привели к выгрузке сделок необходимо провести глубокий анализ формирования пакетов для отправки.
Адаптер Навигатора для наполнения xml файла вызывает пакет PKG_GET_OUTDOCUMENT, процедура SP_GET_DOCUMENT_DS, которая вызывает функцию, возвращающую табличный тип в курсор - источник для заполнения XML-файла. В зависимости от типа объекта выполняются следующие команды:
Также необходимо проверить текущие настройки временных зон на клиенте и в Базе Данных, например, с помощью следующего запроса:
BEGIN DBMS_OUTPUT.PUT_LINE('Sysdate LOCAL_TZ ='||TO_CHAR(SYSDATE,'DD.MM.YYYY HH24:MI:SS.SSSSSSSSS')); DBMS_OUTPUT.PUT_LINE('Session Timezone ='||SESSIONTIMEZONE || ' / ' || TZ_OFFSET(SESSIONTIMEZONE)); DBMS_OUTPUT.PUT_LINE('Session Timestamp ='||TO_CHAR(CURRENT_TIMESTAMP,'DD.MM.YYYY HH24:MI:SS.SSSSSSSSS') || ' / ' || CURRENT_TIMESTAMP); DBMS_OUTPUT.PUT_LINE('DB Server Timestamp ='||TO_CHAR(SYSTIMESTAMP,'DD.MM.YYYY HH24:MI:SS.SSSSSSSSS') || ' / ' || SYSTIMESTAMP); DBMS_OUTPUT.PUT_LINE('DB Timezone ='||DBTIMEZONE || ' / ' || TZ_OFFSET(DBTIMEZONE)); EXECUTE IMMEDIATE 'ALTER SESSION SET TIME_ZONE=DBTIMEZONE'; DBMS_OUTPUT.PUT_LINE('Sysdate DBTIMEZONE ='||TO_CHAR(SYSDATE,'DD.MM.YYYY HH24:MI:SS.SSSSSSSSS')); DBMS_OUTPUT.PUT_LINE('DB Timestamp ='||TO_CHAR(CURRENT_TIMESTAMP,'DD.MM.YYYY HH24:MI:SS.SSSSSSSSS') || ' / ' || CURRENT_TIMESTAMP); -- Revert session time zone to local setting EXECUTE IMMEDIATE 'ALTER SESSION SET TIME_ZONE=LOCAL'; END; /
Прикрепите всю информацию в задачу.
Похожие статьи
Related issues