Базы данных

Словарь данных

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'

предыдущаяследующая тема