...
Приведенный ниже запрос возвращает количество нетарифицированных телефонных звонков за последний час:
Code Block | ||||
---|---|---|---|---|
| ||||
-- Не были тарифицированы или были тарифицированы неуспешно SELECT COUNT(*) FROM ( EX_V_CDR WHERE SELECT EC.N_CDR_ID FROM EX_CDR EC WHERE NOT EXISTS ( SELECT 1 FROM SS_CDR_DETAILS SCD WHERE SCD.N_CDR_ID = EC.N_CDR_TYPE_ID AND SCD.C_ACTIVE = 'Y') AND EC.D_END >= SYSDATE - 1/24 AND EC.N_CDR_STATE_ID = SYS_CONTEXT('CONST', 'CDR_TYPEStatus_PhoneCallFinished') AND EC.N_DURATION_SEC != 0 AND EC.C_ACTIVE = 'Y' UNION ALL SELECT EC.N_CDR_ID FROM EX_CDR EC INNER JOIN SS_CDR_DETAILS SCD ON SCD.N_CDR_ID = EC.N_CDR_ID AND SCD.N_RATING_STATE_ID = SYS_CONTEXT('CONST', 'CDR_StatusRATING_FinishedSTATE_Fail') AND WHERE EC.D_END >= SYSDATE - 1/24 AND AND (EC.N_SUMCDR_ASTATE_ID IS= NULL AND N_SUM_B IS NULL) AND SYS_CONTEXT('CONST', 'CDR_Status_Finished') AND EC.N_DURATION_SEC != 0 AND EC.C_ACTIVE = 'Y' ); |
Нормой считается 0, т.е. полное отсутствие нетарифицированных звонков.
...
Code Block | ||
---|---|---|
| ||
SELECT DECODE(MAX(D_LOG_CREATE), NULL, 'Never', TO_CHAR(MAX(D_LOG_CREATE), 'DD.MM.YYYY HH24:MI:SS')) VC_LAST_LOAD_DATE FROM EX_V_CDR WHERE N_CDR_TYPE_ID = SYS_CONTEXT('CONST', 'CDR_TYPE_PhoneCall')_TEL; |
В результате выполнения запроса может быть либо точная дата в следующем виде:
...
Code Block | ||
---|---|---|
| ||
SELECT DECODE(MAX(D_LOG_CREATE), NULL, -1, TO_CHAR((SYSDATE-MAX(D_LOG_CREATE))*(60*60*24), 'FM99999999999999990')) N_LAST_LOAD_SEC FROM EX_V_CDR WHERE N_CDR_TYPE_ID = SYS_CONTEXT('CONST', 'CDR_TYPE_PhoneCall')_TEL; |
Триггер для мониторинга следует настраивать в зависимости от интервала загрузки CDR или RADIUS-аккаунтинга.
...
Code Block | ||
---|---|---|
| ||
SELECT DECODE(MAX(D_ENDFINISH), NULL, 'Never', TO_CHAR(MAX(D_ENDFINISH), 'DD.MM.YYYY HH24:MI:SS')) VC_LAST_UPDATE FROM EXEP_V_CDR WHERE N_CDR_TYPE_ID IN (SYS_CONTEXT('CONST', 'CDR_TYPE_PPP_WithCharging'), SYS_CONTEXT('CONST', 'CDR_TYPE_PPP_WOCharging'))SESSIONS; |
В результате выполнения запроса может быть либо точная дата в следующем виде:
...
Code Block | ||
---|---|---|
| ||
SELECT DECODE(MAX(D_ENDFINISH), NULL, -1, TO_CHAR((SYSDATE-MAX(D_ENDFINISH))*(60*60*24), 'FM99999999999999990')) N_LAST_UPDATE_SEC FROM EXEP_V_CDR WHERE N_CDR_TYPE_ID IN (SYS_CONTEXT('CONST', 'CDR_TYPE_PPP_WithCharging'), SYS_CONTEXT('CONST', 'CDR_TYPE_PPP_WOCharging'))SESSIONS; |
Триггер для мониторинга следует настраивать в зависимости от интервала загрузки RADIUS-аккаунтига.
...
Для определения количества завершенных РРР-сессий и звонков в месяц можно использовать следующий запросследующие запросы:
Code Block |
---|
-- Для PPP-сессий (есть маппинг состояний сессий в состояния CDR) SELECT COUNT(*) FROM EXEP_V_CDRSESSIONS WHERE D_FINISH N_SERVICE_ID = 40223001 -- Идентификатор службы AND BETWEEN TO_DATE('01.05.2024 00:00:00', 'DD.MM.YYYY HH24:MI:SS') AND TO_DATE('31.05.2024 23:59:59', 'DD.MM.YYYY HH24:MI:SS') -- Задаём период AND N_CDR_STATE_ID IN (SYS_CONTEXT('CONST', 'CDR_Status_Finished'), SYS_CONTEXT('CONST', 'CDR_Status_FinForced')); -- Для звонков SELECT COUNT(*) FROM EX_V_CDR_TEL WHERE D_END BETWEEN TO_DATE('01.05.20132024 00:00:00', 'DD.MM.YYYY HH24:MI:SS') AND TO_DATE('31.05.20132024 23:59:59', 'DD.MM.YYYY HH24:MI:SS') -- Задаём период AND N_CDR_STATE_ID IN (SYS_CONTEXT('CONST', 'CDR_Status_Finished'), SYS_CONTEXT('CONST', 'CDR_Status_FinForced')); |
...