Создание системы мониторинга Scheduled_job в Oracle Базы

advertisement
Создание системы мониторинга Scheduled_job в Oracle
Базы данных Oracle являются широко распространённым инструментом СУБД в
ЦЕРНе. Это очень мощный инструмент хранения и обработки данных. Ответственность за
тонкую настройку и администрирование этих баз данных лежит на особых специалистах —
DBA (Database Administrators), потому что это требует внушительного багажа знаний и
опыта.
База данных Oracle используется в Dashboard для хранения сырых данных
мониторинга, их периодической обработки (агрегации) и хранения агрегированных данных.
Все результаты мониторинга, что можно увидеть на сайте Dashboard, проходят
стандартный путь. Сначала коллектор, специальная программа, извлекает сырые данные из
очереди сообщений и записывает их в базе данных в том же виде. Это может быть
информация об открытии файла, закрытии, начале передачи, конце передачи и др. Подобных
сообщений слишком много, чтобы эффективно ими оперировать.
Каждые десять минут, используя механизм DBMS_Scheduler , запускается серия
процедур(scheduled_jobs), призванных агрегировать сырые данные, появившиеся после
последнего успешного выполнения процедур. Эти процедуры агрегируют информацию по
некоторым полям и десятиминутным интервалам. Поэтому процедура должна работать не
более 10-ти минут, иначе следующий её запуск должен будет обработать объём информации,
пришедший со времени предыдущего запуска, что может ещё более увеличить задержку
выполнения агрегации, что, в свою очередь, вызовет задержки на пользовательском
интерфейсе. После агрегации данные доступны для пользовательского интерфейса.
На данный момент механизм планировщика заданий Oracle работает на пределе, что
требует особой тщательности при добавлении новых процедур или модификации старых.
Чтобы обеспечить надёжную работу Dashboard во время выполнения каких-то обновлений,
помочь идентифицировать задержку по причине увеличения потоков данных и понять,
насколько велики задержки, была создана система мониторинга выполнения заданий Oracle.
Вся информация о работающих процедурах и также о процедурах, закончивших своё
выполнение, находится в Oracle в соответствующих таблицах. Основной проблемой здесь
является задача визуализации этой информации для пользователей. Существует несколько
схем (независимых наборов таблиц): CMS_PRODUCTION, ATLAS_PRODUCTION,
CMS_INTEGRATION и др. В каждой из этих схем выполняются свои процедуры, которые не
зависят друг от друга.
В результате был создан веб-сайт, показывающий информацию о текущих
работающих процедурах. Это несколько таблиц, и каждая таблица посвящена отдельной
схеме базы данных. Каждая строка таблицы — это процедура, которая либо работает, либо
уже закончила свою работу. При необходимости, кликнув на процедуру, можно увидеть
детализированную информацию о ней: длительности выполнения процедуры за последний
месяц и информацию о количестве сообщений, которые она агрегировала. Это позволяет
заметить увеличение времени выполнения процедуры в зависимости от количества
полученных сообщений.
Благодаря системе мониторинга Scheduled_jobs Oracle стало возможно следить за
временем выполнения процедур и упростить процесс их разработки и модификации.
Оказалось, что очень сложно выявить корреляцию между количеством новых сообщений и
временем выполнения процедур. Судя по всему, из-за особенностей внутреннего
планировщика Oracle, а также принципов кэширования, задержка может появиться даже
тогда, когда для неё не было видимых причин.
Ниже представлен общий вид интерфейса к разработанной системе и примеры
получаемых результатов:
Download