Системный каталог создается либо автоматически при создании базы данных, либо администратором базы данных сразу же после ее создания. Например, в Oracle выполняется набор поставляемых производителем макросов SQL, которые атоматически создают доступные пользователям таблицы и представления системного каталога. Таблицы и представления системного каталога принадлежат системе, а не какой-нибудь отдельной схеме. Например, в Oracle владельцем системного каталога яшшется пользователь с именем SYS, имеющий права неограниченного доступа к базе данных. В Sybase системный каталог для сервера SQL размещается в базе данных MASTER.
Системный каталог содержит массу информации, доступной многим пользователям и иногда используемой этими пользователями для своих собственных нужд. Системный каталог содержит информацию по следующим разделам.
• Учетные записи пользователей и установки по умолчанию.
• Привилегии и другая связанная с безопасностью информация.
• Статистика, характеризующая производительность системы.
• Размеры объектов.
• Динамика роста объектов.
• Структура таблиц и параметры их хранения.
• Структура индексов и параметры их хранения.
• Информация о других объектах базы данных, в частности, представлениях, синонимах, триггерах, сохраненных процедурах.
• Ограничения для таблиц и информация о ссылочной целостности данных.
• Пользовательские сеансы доступа.
• Информация об аудитах.
• Внутренние параметры базы данных.
• Размещение файлов базы данных.
Системный каталог управляется сервером базы данных. Например, при создании таблицы сервер базы данных вставляет данные об этом в соответствующую таблицу или представление каталога. При изменении пользователем структуры своей таблицы соответствующие объекты словаря данных тоже обновляются. В следующих разделах систематично описываются типы данных, которые отслеживаются в системном каталоге.
В системном каталоге хранится информация обо всех пользователях базы данных: их привилегиях доступа к системе и объектам, информация о принадлежащих им объектах, а также информация о не принадлежащих им объектах, к которым эти пользователи имеют доступ. Пользовательские таблицы и представления оказываются доступными для извлечения этой информации. По поводу имеющихся в системном каталоге объектов обратитесь к документации, предлагаемой вашей реализацией базы данных.
Системный каталог содержит также информацию о безопасности, в частности, учетные записи пользователей, закодированные пароли, пользовательские привилегии и группы привилегий доступа к данным. В некоторых реализациях предусмотрены таблицы аудита с данными обо всех действиях, предпринятых пользователями в отношении базы данных с указанием времени и инициатора этих действий и другой соответствующей информации. Могут подробно отслеживаться также и пользовательские сеансы доступа к базе данных.
Системный каталог содержит также информацию о структуре самой базы данных. Эта информация может включать дату создания базы данных, имена и размеры ее объектов, размеры и адреса размещения файлов, информацию о ссылочной целостности данных, об имеющихся индексах, столбцах таблиц и их атрибутах.
В системном каталоге обычно представлена и статистика, характеризующая производительность системы. Такая статистика обычно включает информацию о скорости выполнения операторов SQL и том методе, который был выбран оптимизатором для их выполнения. Другая информация о производительности может содержать параметры использования памяти, доступного базе данных свободного пространства, фрагментации таблиц и индексов. Эта информация может быть использована для оптимизации структуры и работы базы данных, оптимизации операторов SQL и выбора оптимальных способов доступа к данным с целью уменьшения времени, необходимого для выполнения запросов.
Разные реализации баз данных предлагают свои таблицы и представления системного каталога, часто разделенные на группы по уровням доступа на пользовательские, системные и предназначенные для администратора базы данных. Конкретную информацию о содержимом таблиц системного каталога можно получить из запросов к этим таблицам и из документации к базе данных. Для некоторых из наиболее распространенных реализаций соответствующая информация представлена в табл. 21.1.