Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по ORACLE 2004 года.doc
Скачиваний:
36
Добавлен:
03.05.2015
Размер:
466 Кб
Скачать
☆

Запросы к словарю данных

Запрашивать данные из словаря данных можно с помощью команды SELECT языка SQL. Возможность доступа к разным представлениям словаря данных зависит от вашего уровня привилегии.

Классы представлений

Префикс

Описание

USER_

Включает только объекты, владельцем которых является пользователь. В частности, представления с этим префиксом позволяют пользователю получить данные о созданных им таблицах и предоставленных им привилегиях.

ALL_

Помимо объектов, принадлежащих самому пользователю, включает объекты, на доступ к которым ему предоставлено право.

DBA_

Позволяет пользователям с уровнем привилегий DBA обращаться к любому объекту в базе данных.

V$

Позволяет выводить информацию о производительности сервера базы данных и блокировках. Сначала доступен только администратору базы данных.

Прочие представления

Для некоторых представлений словаря данных (например, синонимов представлений с длинными именами) вышеуказанные префиксы не используются.

Имя представления

Описание

DICTIONARY

Перечень всех таблиц словаря данных, представлений и синонимов.

TABLE_PRIVILEGES

Права на доступ к объектам, предоставленные и полученные пользователем, а также объекты, принадлежащие пользователю.

IND

Синоним представления USERINDEXES.

Пример.

Представление DICTIONARY позволяет получить список всех представлений словаря данных, доступных пользователю, с кратким описанием в колонке примечаний. Обращаться к этому представлению можно и по синониму DICT.

SQL> SELECT *

2 FROM DICTIONARY;

Пример.

Структуру любого представления словаря данных можно вывести с помощью команды DESCRIBE языка SQL*Plus. Запросите структуру представления USER_OBJECTS.

SQL> desc user_objects

Имя Пусто? Тип

----------------------------------------- -------- ----------------------------

OBJECT_NAME VARCHAR2(128)

SUBOBJECT_NAME VARCHAR2(30)

OBJECT_ID NUMBER

DATA_OBJECT_ID NUMBER

OBJECT_TYPE VARCHAR2(18)

CREATED DATE

LAST_DDL_TIME DATE

TIMESTAMP VARCHAR2(19)

STATUS VARCHAR2(7)

TEMPORARY VARCHAR2(1)

GENERATED VARCHAR2(1)

SECONDARY VARCHAR2(1)

Пример.

Описание любого столбца таблицы или представления словаря данных можно получить с помощью представления DICT_COLUMNS.

SQL> select column_name, comments

2 from dict_columns

3 where table_name='user.objects';

Пример.

Вывод списка типов объектов, принадлежащих пользователю.

SQL> SELECT DISTINCT object_type

2 FROM user_objects;

Пример

Запрашивая данные из столбца COMMENTS представления DICTIONARY, можно получить данные на конкретную тему. Найдите все представления словаря данных, имеющие отношение к ключевому слову "Grant".

COLUMN table_name FORMAT A20

COLUMN comments FORMAT A30

SQL> SELECT *

2 FROM dictionary

3 WHERE LOWER(comments) LIKE '%grant%';

TABLE NAME

COMMENTS

------------------------

---------------------------------------------------------------------

ALL_COL_PRIVS

Grants on columns for which the user is the grantor, grantee, owner, or an enabled role or PUBLIC is the grantee

ALL_COL_PRIVS_MADE

Grants on columns for which the user is owner or grantor

ALL_COL_PRIVS_RECD

Grants on columns for which the user, PUBLIC or enabled role is the grantee

…

20 строк выбрано.

Проверка ограничений для таблицы

Полный список ограничений для своей таблицы можно получить с помощью запроса к таблице USER_CONSTRAINTS.

Пример.

Проверка ограничений для таблицы Film.

SQL> select constraint_name, constraint_type,

2 search_condition, r_constraint_name

3 from user_constraints

4 where table_name='FILM';

CONSTRAINT_NAME

С

SEARCH_CONDITION

R_CONSTRAINT_NAME

NAMEF_NN

FILMID_PK

…

C

P

"NAMEF" IS NOT NULL

Просмотреть имена столбцов, на которые распространяются соответствующие ограничения, можно с помощью представления словаря данных USER_CONS_COLUMNS. Этот запрос особенно полезен для ограничений, имена которых присвоены системой.

Пример.

Вывод словарной информации по ограничениям на столбцы для таблицы Film.

SQL> select constraint_name, column_name

2 from user_cons_columns

3 where table_name='FILM';

CONSTRAINT_NAME

COLUMN_NAME

-------------------------------------------------------------

-----------------------------------------------

FILMID_PK

NAMEF_NN

FILMID

NAMEF