Оценка закрытия периода

Материал из START-IP
Перейти к навигации Перейти к поиску

Процедура закрытия периода состоит из трех этапов выполняемых заданиями:

  • job_daily
  • job_monthly
  • job_monthly_final

Задания выполняются последовательно, т.е. пока не выполнится job_daily, job_monthly будет ждать его завершения, а job_monthly_final будет ждать завершения job_monthly.


job_daily

Тяжелая операция для job_daily в момент перехода на новый расчетный период это смена тарифных планов.

Оценить количество оставшихся необработанных смен ТП запланированных на 1-ое число, можно следующим запросом:


SELECT 'Обработанных: ' ||  COUNT(1) 
from tb_tariff_change_tasks
where tct_plan_date = trunc(sysdate,'mm')
AND TCT_EXEC_DATE IS NULL
UNION ALL
SELECT 'Ошибочных: ' ||  COUNT(1) 
from tb_tariff_change_tasks
WHERE TCT_PLAN_DATE = TRUNC(SYSDATE,'mm')
AND TCT_ERROR_TEXT IS NOT NULL;

Нормой является смена одного тарифного плана в секунду и выше.


Проверить количество незакрытых счетчиков можно следующим запросом


SELECT COUNT(1) FROM TB_COUNTERS 
WHERE 
    CNT_CLOSED='N' 
    AND NVL(CNT_BILL_DATE,CNT_CREATE_DATE) < TRUNC(SYSDATE)
    AND CNT_INT_CODE='GENERAL';

Нормой является 10-20 в секунду. Внимание: может остаться незакрытыми некоторое количество счетчиков !

job_monthly.

Тяжелым моментом работы этого задания является обработка абонентов и их счетчиков

Оценить количество оставшихся необработанных счетчиков можно запросом:


select count(1) 
from tb_counters c ,tb_serv_defs 
where nvl(cnt_bill_date, cnt_create_date)<trunc(sysdate,'MM') 
and cnt_closed='N'
and c.cnt_srd_code=srd_code and c.cnt_int_code =srd_int_code and nvl(srd_prdmonth,1)=1 

Так же оценить скорость скорость закрытия периода можно запросом

SELECT S.INST_id, S.SID, R.JOB, CLIENT_INFO
FROM GV$SESSION S, DBA_JOBS_RUNNING R, DBA_JOBS J
WHERE S.SID=R.SID and r.job=j.job and what like '%job_month%';
<pre>

поле client_info будет содержать какое количество счетчиков из общего числа уже обработано.

В случае если настроено параллельное выполнение закрытия периода, оценку времени выполнения
необходимо выполнять отдельно по каждому заданию(job) и затем оценивать по максимальному.

----

Оценить количество абонентов с незакрытым прошлым периодом:

<pre>

SELECT COUNT(1) FROM TB_ACCOUNTS
WHERE ACC_PERIOD_DATE < TRUNC(SYSDATE,'mm')
AND  EXISTS (SELECT 1 FROM ABONENT WHERE AB_ID = ACC_AB_ID AND AB_CLOSED = 'Y');


Нормой будет являться такая скорость обработки абонентов, чтобы закрыть период в течении первых суток месяца.

В случае если, согласно оценке, время закрытия периода явно превышает допустимый предел, необходимо выполнить Трассировка_сессии job-а, и ее результаты отправить в техническую поддержку.