После запуска в промышленную эксплуатацию необходимо в обязательном порядке настроить мониторинг экземпляра БД
.
Контроль должен отслеживать следующие группы параметров:
Для мониторинга можно использовать любую распространенную систему, которая позволяет получать данные с помощью скриптов, запускаемых из командной строки. Наиболее популярными системами мониторинга среди российских операторов связи являются бесплатные Zabbix и Nagios.
Для мониторинга показателей экземпляра БД можно использовать скрипты (раздел Oracle), разработанные для Zabbix.
Чтобы настроить контроль заданий , можно воспользоваться одним из специально разработанных скриптов (1 , 2).
Различаются 7 состояний
Код | Состояние | Норма |
---|---|---|
1034 | В ожидании | Д |
2034 | Выполняется | Д |
3034 | К запуску | Д |
4034 | Блокировано | Н |
5034 | Удалено | Н |
6034 | Ошибка запуска | Н |
7034 | Не запущено | Д |
Не нормальными являются состояния, помеченные буквой Н. Исключение: задание заблокировано принудительно.
Необходимо мониторить состояние табличных пространств (tablespaces) БД. Нужную информацию даёт следующий SQL-запрос:
WITH TBLSP_TOTALSPACE AS ( SELECT TABLESPACE_NAME, ROUND(SUM(BYTES/(1024*1024))) TOTALSPACE, ROUND(SUM(DECODE(MAXBYTES, 0, BYTES, MAXBYTES))/(1024*1024)) TOTALMAXSPACE FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME ), TBLSP_USEDSPACE AS ( SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024)) TOTALUSEDSPACE FROM DBA_SEGMENTS GROUP BY TABLESPACE_NAME ) SELECT TS.TABLESPACE_NAME "TABLESPACE", US.TOTALUSEDSPACE "Used MB", (TS.TOTALSPACE - US.TOTALUSEDSPACE) "Free MB", TS.TOTALSPACE "Total MB", TS.TOTALMAXSPACE "Total Max MB", ROUND(100*((TS.TOTALMAXSPACE - US.TOTALUSEDSPACE)/ TS.TOTALMAXSPACE)) "Pct. Free" FROM TBLSP_TOTALSPACE TS, TBLSP_USEDSPACE US WHERE US.TABLESPACE_NAME = TS.TABLESPACE_NAME; |
В результате запроса получится таблица приблизительно следующего вида:
# | TABLESPACE | Used MB | Free MB | Total MB | Total Max MB | Pct. Free |
---|---|---|---|---|---|---|
1 | SYSAUX | 713 | 32055 | 750 | 32768 | 98 |
2 | HYDRA | 5182 | 15010 | 8222 | 20192 | 74 |
3 | HYDRA_INDEX | 12418 | 11870 | 13150 | 24288 | 49 |
4 | UNDOTBS1 | 294 | 32474 | 11450 | 32768 | 99 |
5 | SYSTEM | 768 | 31982 | 790 | 32768 | 98 |
Здесь особое внимание нужно уделить показателям Free MB и Pct. Free для пространств HYDRA
и HYDRA_INDEX
. При слишком маленьких значениях необходимо автоматически информировать администратора о проблеме со свободным местом. Начиная с 20%. В противном случае в БД могут остановиться важные системные задания, например, с такой ошибкой:
Ошибка при запуске JB_DATA_COLLECT_PKG.EX_DATA_COLLECT_ACCOUNTING [ORA-01654: unable to extend index AIS_NET.EX_TRAFFIC_COL_C_FIRM_IDX by 8192 in tablespace HYDRA_INDEX] |
Значение Total MB показывает фактически выделенное место под табличное пространство, а Total Max MB показывает максимально возможное место, которое СУБД разрешено захватить под данное пространство при увеличении его размера. Следует учитывать, что значение Total Max MB может быть больше объема доступного дискового пространства.
Приведенный ниже запрос возвращает количество нетарифицированных телефонных звонков за текущий час:
SELECT COUNT(*) FROM EX_V_CDR WHERE N_CDR_TYPE_ID = SYS_CONTEXT('CONST', 'CDR_TYPE_PhoneCall') AND N_CDR_STATE_ID = SYS_CONTEXT('CONST', 'CDR_Status_Finished') AND D_BEGIN_ACC >= TRUNC(SYSDATE, 'HH') AND (N_SUM_A IS NULL AND N_SUM_B IS NULL); |
Нормой считается 0.
Запрос показывает в какое время была произведена последняя загрузка CDR в АСР:
SELECT MAX(D_BEGIN) FROM EX_V_CDR WHERE N_CDR_TYPE_ID = SYS_CONTEXT('CONST', 'CDR_TYPE_PhoneCall') AND N_CDR_STATE_ID = SYS_CONTEXT('CONST', 'CDR_Status_Finished'); |
Триггер настраивается в зависимости от настроек периодичности загрузки.
Данный контроль необходимо осуществлять, т.к. превышение пороговых значение влияет на производительность БД.
Таблица | Порог |
---|---|
EX_CALL_DATA_REC | 1 миллион |
EX_DATA_COLLECT | 2 миллиона |
EX_TRAFFIC_COLLECT_C | 2 миллиона |
SD_GOOD_MOVES | 15 миллионов |