Oracle поддерживает исчерпывающий словарь метаданных. Этот словарь описывает структуру таблиц, последовательностей, представлений, индексов, ограничений, хранимых процедур и многое другое. Он также содержит исходные тексты процедур, функций и триггеров.
В таблице DICT словаря метаданных содержатся данные, описывающие сам словарь. Можно запрашивать данные из этой таблицы, чтобы узнать больше о содержимом словаря данных, но нужно иметь в виду, что она имеет большие размеры. Например, если запросить имена всех таблиц словаря данных, будет возвращено более 800 строк.
Предположим, нужно узнать, какие таблицы с информацией о пользовательских и системных таблицах имеются в словаре данных. В этом может помочь следующий запрос:
SELECT Table_Name, Contents
FROM DICT
WHERE Table_Name LIKE (' 0/0TABLES0/0');
Будет возвращено около двадцати пяти строк. Одна из таблиц будет называться USER_TABLES. Чтобы увидеть столбцы этой таблицы, нужно ввести:
DESC USER_TABLES;
Можно использовать эту стратегию для получения из словаря метаданных информации об интересующих объектах и структурах. В табл. 4.1 перечислены многие из пердставлений и указано их назначение. Таблицы USER_SOURCE и USER_TRIGGERS полезны, когда требуется узнать, исходные тексты каких процедур и триггеров хранятся в настоящий момент в базе данных.
Таблица 4.1. Метаданные в СУБД Oracle
|
Имя таблицы |
Содержимое |
|
DICT |
Метаданные, описывающие словарь данных |
|
USER_CATALOG |
Список таблиц, представлений, последовательностей и других структур, принадлежащих пользователю |
|
USER_TABLES |
Структуры таблиц пользователя |
|
USER_TAB_COLUMNS |
Потомок таблицы USER TABLES. Содержит данные о столбцах таблиц. Синонимом является COLS |
|
USER_VIEW |
Пользовательские представления |
|
USER_CONSTRAINTS |
Пользовательские ограничения |
|
USER_CONS_COLUMNS |
Потомок таблицы USER_CONSTRAINTS. Содержит столбцы, на которые наложены ограничения |
|
USER_TRIGGERS |
Метаданные, описывающие триггеры. Есть смысл запрашивать столбцы Trigger Name, Trigger Type и Trigger Event. Предупреждение: Trigger Body в действительности не содержит исходного кода триггера |
|
USER_SOURCE |
Исходные тексты. Например, для получения текста процедуры MYTRIGGER: SELECT Text FROM USER SOURCE WHERE Name = 'MYTRIGGER' AND Type = 'PROCEDURE' |