Администраторы баз данных Oracle обычно используют сценарии SQL для предупреждений о ненормальных ситуациях. В Oracle Database 11g и 12c предусмотрена встроенная система сигналов (Oracle alerts), формально именуемая генерируемыми сервером сигналами тревоги, которые автоматически предупреждают о возникновении проблемных ситуаций. База данных генерирует сигналы в ответ на возникновение специфических событий, или когда определенные метрики базы данных превышают свои пороговые значения.
В Oracle сигналы на основе пороговых значений называют сигналами с состоянием (stateful alerts), и они могут быть настроены как на предупреждающие пороговые значения, так и на критичные. Таким образом, сигналы на основе пороговых значений основаны на метриках, а не событиях. В отличие от старых систем уведомления OEM, сама база данных собирает связанные с сигналами метрики вместо OEM. Предупреждающие и критичные пороговые значения могут быть установлены администратором баз данных или же можно принять внутренние настройки порогов Oracle.
Сигналы Oracle, не связанные с порогами — это сигналы, вызванные проблемами, которые основаны на возникновении в базе данных определенных событий (обычно плохих). В Oracle это называют сигналами без состояния (stateless alerts). Ниже даны некоторые примеры.
- Переполнение пространства области восстановления.
- Приостановка возобновляемого сеанса.
- Устаревший снимок.
Таким образом, существуют три ситуации, когда база данных может посылать сигнал.
- Метрика преодолевает критичное пороговое значение.
- Метрика преодолевает пороговое значение предупреждения.
- Возникновение непорогового (проблемного) типа сигналов.
При использовании сигналов на основе пороговых значений Oracle делает различие между предупреждающим сигналом (уровень серьезности 5) и критичным сигналом (уровень серьезности 1). Например, по умолчанию база данных будет посылать предупреждающий сигнал, когда любое табличное пространство превысит порог в 85% занятого места. Когда использованное пространство достигнет 97%, вы получите критичный сигнал.
Генерируемые сервером сигналы по умолчанию (Oracle Alerts default)
Oracle предлагает несколько генерируемых сервером сигналов по умолчанию, которые могут базироваться как пороговых значениях, так и на возникновении проблем. Ниже перечислены некоторые готовые генерируемые сервером сигналы в Oracle Database 11g.
- Устаревший снимок.
- Использование табличного пространства (предупреждающий сигнал при 85% занятого места и критичный — при 97%).
- Приостановка возобновляемого сеанса.
- Исчерпано свободное место в области восстановления.
На заметку! Oracle автоматически устанавливает пороги на всех метриках объектного типа SYSTEM.
В дополнение к сигналам по умолчанию можно выбирать и другие сигналы, а также изменять пороги сигналов по умолчанию. Эти задачи решаются с помощью OEM Database Control или поставляемых с Oracle пакетов PL/SQL. Средство Database Control можно так-же использовать для установки правил уведомления, например, указать период задержки сигналов, в течение которого никакие сигналы базой данных посылаться не будут.
Когда база выдает сигнал, его можно увидеть в таблице Alerts (Сигналы), показанной на рисунке ниже, которая находится в нижней части домашней страницы Database Control, и вы получите уведомление, только если сконфигурируете систему на его отправку. Данные сигнала по умолчанию обновляются каждые 60 секунд. Чтобы получить подробную информацию о сигнале, щелкните на сообщении в столбце Message (Сообщение) таблицы Alerts. Обычно предупреждения сопровождаются рекомендациями по устранению вызвавшей их проблемы.
Удостоверьтесь в установке параметра STATISTICS_LEVEL равным TYPICAL или ALL, чтобы использовать средство серверной генерации сигналов. В дополнение можно отображать сигналы, непосредственно подписавшись на очередь доставки сигналов.
Oracle alert log - лог сигналов тревоги
В файле alert.log хранится журнал сигналов тревоги и ошибок экземпляра. Многих системных администраторов интересует, где он располагается. Его нахождение задается настройкой background_dump_dest в файле параметров init[SID].ora. Выполните такой запрос:
SQL> show parameter dump_dest NAME TYPE VALUE ----------------------- ------- ------------------------------------------- background_dump_dest string /u01/app/oracle/diag/rdbms/test/test/trace core_dump_dest string /u01/app/oracle/diag/rdbms/test/test/cdump user_dump_dest string /u01/app/oracle/diag/rdbms/test/test/trace
Также местоположение файла alert log можно узнать из представления V$PARAMETER:
SQL> SELECT NAME,VALUE 2 FROM V$PARAMETER 3 WHERE NAME = 'background_dump_dest'; NAME VALUE ------------------------ ------------------------------------------- background_dump_dest /u01/app/oracle/diag/rdbms/test/test/trace
Также вы может писать свои сообщения в alert.log:
-- Запись в alert.log exec dbms_system.ksdwrt (2, 'Пример записи в alert.log подготовлен для сайта http://all-oracle.ru'); PL/SQL procedure successfully completed. -- Очистка буфера exec dbms_system.ksdfls; PL/SQL procedure successfully completed.