logo search
Книга по БД(Вальке А

7.5. Реагирование на чрезвычайные ситуации

В процессе эксплуатации ИС могут возникать ситуации, когда требуется оперативное вмешательство администратора сервера БД. Например, при активной работе пользователей по вводу информации может быть исчерпано почти все пространство, отведенное под данные. В этом случае, если не принять вовремя меры по добавлению пространства для данных, работа многих пользователей может быть приостановлена.

Идеальный администратор, конечно же, вовремя обнаружит данную проблему и вовремя примет меры по предотвращению неприятных ситуаций. Однако, в реальной промышленной системе необходимо иметь механизм гарантированного заблаговременного предотвращения неприятных ситуаций. Этот механизм должен обеспечивать:

  1. Механизм срочного оповещения администратора

  2. Механизм автоматического разрешения конфликта (если такое, конечно, возможно).

В сервере баз данных Informix Dynamic Server имеется подобный механизм. Этот механизм интегрирован с сервером баз данных. При возникновении события, на которое может потребоваться реакция администратора, происходит запуск специальной программы. Эта программа может проанализировать причину, почему она была запущена, и предпринять необходимые действия.

Для включения режима реагирования на чрезвычайные ситуации необходимо в конфигурационном файле перед запуском сервера установить параметр ALARMPROGRAM в полный путь к той программе, которая и будет анализировать и обрабатывать возникающие события. Установить этот параметр в нужное значение можно как явным редактированием конфигурационного файла, так и через утилиту администратора onmonitor, войдя в подменю Parameters->Diagnostic->Alarm Program:

DIAGNOSTICS: Make desired changes and press ESC to record changes. Press Interrupt to abort changes. Press CTRL-F for field-level help. DIAGNOSTIC PARAMETERS Message Log [/informix/ods_723/IDS .log ] Console Msgs. [/dev/null ] Alarm Program [/informix/ods_723/log_full.sh ] Dump Shared Memory [N] Dump Gcore [N] Dump Core [N] Dump Count [ 1] Dump Directory [/tmp ] Enter pathname for IDS message log

В приведенном выше примере в качестве программы-обработчика событий выступает программа /informix/ods_723/log_full.sh Если конфигурационный параметр ALARMPROGRAM не установлен, то сервер считает, что обработка чрезвычайный ситуаций выключена.

Программа-обработчик может быть как скриптом (текстовым файлом с командами на языке интерпретатора ОС), так и двоичным исполняемым файлом. При возникновении какой-либо ситуации, Informix Dynamic Server запускает программу-обработчик с пятью параметрами, описывающими причину воникновения ситуации, требующей вмешательства администратора. Первый параметр - это код серьезности события, второй параметр - код события. Остальные три перадаваемых параметра - это текстовые пояснительные сообщения. А именно - краткое текстовое описание ошибки (третий параметр), более техническое описание ошибки (четвертый параметр) и имя дополнительного информационного файла, который был создан, если возникшая ситуация предполагает создание такого файла (последний, пятый параметр). Пример передаваемых параметров при возникновении события “превышение допустимого числа пользовательских нитей (сессий)”:

Номер параметра

Передаваемое значение

1 (код серьезности)

3

2 (код события)

21

3 (краткое описание)

IDS resource overflow: ‘Userthreads’

4 (техническое описание)

User thread table overflow - user id 1017

5 (ссылка на файл)

NULL

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

Таблица. Значения кода серьезности события.

Значение кода серьезности

Описание

2

Информацилонное сообщение. Никаких проблем не возникло, некоторые утилиты успешно отработали (например, закончилось сохранение журнала на диск).

3

Необходимо обратить внимание. Данные не потеряны, работа системы продолжается, но требуется обратить внимание (например, один из зазеркалированных чанков оказался недоступен и, возможно, требуется замена диска). Администратор должен по возможности максимально быстро устранить причину.

4

Предупреждение об опасности. Случилось что-то непредвиденное, что может привести к потере данных или ограничить доступ к данным (например, выявлено нарушение целостности системных данных). Требуется немедленное вмешательство.

5

Фатальная ошибка. Случилось что-то, что привело к непреднамеренному аварийному завершению работы сервера БД.

Таблица. Значения кода некоторых событий.

Код события

Описание события

1

Проблема доступа к данным в какой-то таблице (имя таблицы указано в тексте сообщения), например, из-за порчи носителя.

14

Проблема доступа к данным в какой-то базе данных (имя базы данных указано в тексте сообщения), например, из-за порчи носителя.

15

Неудачная попытка провести репликацию, например, из-за потери связи

20

Логические журналы заполнены, требуется архивация

21

Сервер БД исчерпал все ресурсы.

23

Заполнение очередного логического журнала

В системной документации (Informix Dynamic Server/Adfministration Guide) детально расписаны все возможные значения кода серьезности и кода события

Программа-обработчик может (и должна!) обработать переданные ей параметры. Если программа-обработчик ситуаций написана на C/C++, то для доступа к передаваемым параметрам следует использовать стандартные переменные argv и argc. Если программа пишется на языке интерпретатора команд для ОС Unix (ksh или sh), то для доступа к передаваемым параметрам следует использовать параметры соответственно $1, $2 и т.д.

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

В стандартной поставке Informix Dynamic Server (в директории $INFORMIXDIR/etc) есть файл logevent.sh, содержащий программу, реагирующую на важные события и выполняющую некоторые полезные действия, в том числе и автоматическую архививацию очередного заполненного журнала. Для установки данной программы в качестве обработчика событий надо установить параметр ALARMPROGRAM в logevent.sh (так как директория $INFORMIXDIR/etc обычно не входит в переменную окружения PATH, то следует указать полный путь к данной программе), например:

/usr/informix/etc/logevent.sh

В продуктах фирмы Informix для графического администрирования серверов БД есть специальная утилита Informix Enterprise Command Center (Командный Центр). Эта утилита также позволяет работать с сообщениями о событиях. Для каждого из серверов БД, управляемого данной утилитой, можно открыть окно со списком сообщений (“Alerts”). Сообщения, которые еще не были обработаны администратором и требуют реагирования, помечены значком “!”:

В окне Командного Центра администратор может с помощью мышки выбрать нужное сообщение, а затем нажать кнопку “Resolve” (“Решить”). После этого включается специальная программа, которая порекомендует администратору выполнить те или иные действия по реагированию на возникгую ситуацию.