Лекция 5. Автоматизация задач администрирования БД. Ошибки сервера.
Рассмотренные в предыдущих главах функции администрирования баз данных, такие как резервное копирование и репликация, как правило, являются рутинными процедурами, выполняемыми с заранее заданной цикличностью. В таких условиях целесообразным является максимальная автоматизация запуска, мониторинга и подведения итогов этих процедур. Требуемая автоматизация достигается или созданием программных оболочек администрирования баз данных, или имеющихся в составе СУБД средств автоматизации. Одним из наиболее простых и наглядных средств автоматизации рутинных операций администрирования баз данных является SQL Server Agent для СУБД Microsoft SQL Server.
В рамках современных СУБД, функцию автоматизации с целью обеспечения присутствия правильного управляющего или корректирующего воздействия берут на себя специальные программные компоненты. Так, например, в MS SQL Server такой программный компонент называется агентом. Агент SQL Server является одним из наиболее простых и наглядных средств автоматизации рутинных операций администрирования баз данных.
Перечислим ***типовые задачи, доступные для автоматизации*** при помощи агента SQL Server:
- запуск, мониторинг и журналирование процедур полного, дифференцированного резервного копирования;
- запуск, мониторинг и журналирование процедур резервного копирования журнала транзакций;
- запуск исполняемой программы или утилиты;
- выполнение задач Distribution Agent при репликации;
- выполнение задач Merge Agent при репликации;
- выполнение задач Snapshot Agent при репликации.
Схема компонентов СУБД MS SQL Server, настраиваемых при автоматизации администрирования баз данных показана на рис. 1.
![Рисунок 1. Структурные компоненты СУБД, обслуживающие процедуру автоматизации администрирования.](/uploads/msu_image/image/10226/%D0%A0%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA1.jpg)
Ключевым компонентом является Служба SQL Server Agent, которая хранит скрипты действий для агентов, настройки агентов и другую метаинформацию, которая требуется для их функционирования.
Приложение – это исполняемое приложение или утилита, к которой в рамках автоматизации администрирования может обратиться агент. Как правило, это утилиты, контролирующие нормальную работу сервера баз данных, а также его запуск-останов.
Служба MSSQLSERVER – служба, обеспечивающая функционирование ядра сервера. Действия агента, направленные на эту службу, автоматизируют перечисленные выше основные функции администрирования.
Все события, полученные в ходе мониторинга исполняемой процедуры администрирования и по итогам этого процесса журналируются в Журнале событий приложений Windows. Этот журнал обладает удобной фильтрацией, что позволяет достаточно быстро получить информацию о ходе и результатах любой процедуры агента.
Перечислим компоненты Агента MS SQL Server.
Задание – определенная администратором последовательность действий, реализующая процедуру автоматизации администрирования баз данных. Задание может быть выполнено один или несколько раз на локальном или удаленных серверах. Выполнение задания может осуществляться несколькими способами:
- с помощью настроенного в мастере одного или нескольких расписаний;
- с помощью настроенного в СУБД алерта (alert, предупреждения);
- через выполнение хранимой процедуры sp_start_job.
Задание может состоять из нескольких последовательных шагов (связанные задачи). Базовые настройки задания показаны на рис. 2.
![Рисунок 2. Базовые (General) настройки задания (Job) агента.](/uploads/msu_image/image/10227/%D0%A0%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA2.jpg)
В базовых настройках задания указывается имя задания (желательно, чтобы имя, при своей лаконичности, указывало на процедуру, которая реализуется в задании агентом), пользователь задания (прокси-пользователь, от имени которого будет выполняться задание), категория задания и краткое описание процедуры задания.
В случае необходимости разбиения задания на шаги используются продвинутые (Advanced) настройки агента автоматизации, рис. 3.
![Рисунок 3. Продвинутые настройки шагов задания.](/uploads/msu_image/image/10228/%D0%A0%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA3.jpg)
Ключевыми элементами настройки шагов задания является указание действия при успехе (on success) и неудаче (on failure) при выполнении задания.
Расписание – определенное администратором время выполнения задания. Для одного задания может быть создано несколько расписаний, также как и несколько заданий могут управляться одним расписанием. Условием времени выполнения задания по расписанию может являться:
- запуск агента MS SQL Server;
- загрузка центрального процессора сервера, определенная как: «простой»;
- однажды, в указанные дату и время или с установленной периодичностью.
Настройки расписания агента (Schedule) показаны на рис. 4.
![Рисунок 4. Составление расписание агента MS SQL Server.](/uploads/msu_image/image/10229/%D0%A0%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA4.jpg)
В случае выбора однократного выполнения процедуры, достаточно указать дату и время ее выполнения. Есть варианты ежедневного, еженедельного выполнения процедуры. Также можно указать дни недели и время выполнения процедуры. Дополнительно можно указать длительность периода регулярных выполнений задания, если это необходимо.
Предупреждение (Notification) – автоматический ответ на наступление запрограммированного события. Этим событием может быть начало или конец выполнения задания, или же системным ресурсом, которое достигло установленного порогового значения. Результатом предупреждения может стать уведомление администратора о возникшем событии или автоматическое выполнение запрограммированного задания.
Настройки предупреждения (Notifications) показаны на рис. 5.
![Рисунок 5. Настройки предупреждения для задания агента MS SQL Server.](/uploads/msu_image/image/10230/%D0%A0%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA5.jpg)
Адресатом получения Предупреждения является Оператор. Это совокупность контактных сведений лица, ответственного за администрирование сервера баз данных. Как правило, предупреждения настраиваются на доставку электронной почтой.
Ключевым элементом обработки результатов выполнения заданий является обработка сообщений об ошибках (alert). Это сообщения, содержащие информацию о нештатной ситуации выполнения задания. Структура сообщения об ошибке:
- однозначный номер сообщения об ошибке;
- число в диапазоне от 0 до 25, представляющее уровень серьезности ошибки;
- номер строки, в которой произошла ошибка;
- текст описания ошибки.
Пример сообщения об ошибке: (Сообщение 208, Уровень 15, Строка 2 Недействительное имя объекта 'authors’).
Уровень серьезности ошибки является самым важным показателем любого alert и указывает на критичность и последствия возникшей в ходе выполнения процедуры ошибки.
Уровни от 0 до 10 обозначают просто информационные сообщения, где ничего не требуется исправлять.
Все уровни ошибок от 11 до 16 указывают программные ошибки, которые могут быть разрешены пользователем.
Значения уровней 17 и 18 обозначают программные и аппаратные ошибки, которые обычно не завершают выполнение процесса.
Все ошибки уровня 19 и выше являются неисправимыми системными ошибками. Соединение программы, вызвавшей такую ошибку, закрывается, после чего ее процесс удаляется.
Базовые настройки сообщения об ошибке (General) показаны на рис. 6.
![Рисунок 6. Настройки сообщения об ошибке](/uploads/msu_image/image/10231/%D0%A0%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA6.jpg)
В базовых настройках необходимо указать имя сообщения, имя базы данных в которой будет отслеживаться возникновение ошибки (есть настройка all databases), а также номер ошибки или уровень серьезности ошибки. Следующим этапом настройки сообщения об ошибке является настройка ответа СУБД на ее возникновение (рис. 7, Response).
![Рисунок 28. Настройка ответа на возникновение ошибки.](/uploads/msu_image/image/10232/%D0%A0%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA7.jpg)
**Вопросы для самостоятельного изучения по итогам лекции.**
1. Перечислите все задачи администрирования многопользовательских баз данных, которые на ваш взгляд можно было бы автоматизировать средствами агента?
2. Что такое журнал событий приложений Windows? Каким образом он связан с автоматизацией задач администрирования?
3. С помощью каких средств возможна автоматизация задач администрирования в СУБД Oracle и в СУБД PostgreSQL?