Системным каталогом называется набор таблиц и представлений, в которых содержится полное описание существующих в базе данных объектов, а так же различные характеристики, связанные с функционированием системы. Данные, доступные через объекты системного каталога, используются как самой системой Oracle, например, при исполнении запросов и т.д., так и пользователями, если необходимо получить информацию, например, об существующих таблицах и их структурах. В частности, команда DESCR при исполнении обращается соответствующим представлениями системного каталога; аналогичного результата можно добиться исполнением SELECT-запроса к этим представлениям.
Объекты системного каталога можно разбить на три группы.
1. Системные таблицы, например, SYS.OBJ$. Эти таблицы, называемые так же базовыми, недоступны для непосредственного обращения обычных пользователей и предназначены для непосредственного доступа исключительно самой системой. Как следует из названия, эти таблицы находятся в схеме системной учетной записи SYS.
|
|
2. Системные представления (Static Data Dictionary Views). Эти представления доступны для каждой учетной записи, однако их содержание для различных учетных записей в общем случае будет различным. С каждым видом объектов базы данных ассоциировано тройка системных представлений; например, сведения о таблицах можно получить, обращаясь к представлениям USER_TABLES, ALL_TABLES и DBA_TABLES. Префиксы USER, ALL и DBA имеют следующий смысл. USER_-представление описывает объекты, владельцем которой является данная учетная запись (т.е. которые созданы в данной схеме), ALL_-представление – объекты, которые доступны для данной учетной записи (свои собственные и объекты в других схемах), и, наконец, DBA_-представление описывает все объекты во всех схемах. DBA_- представления, однако, существуют только для учетных записей, обладающих административными правами.
3. Так называемые динамические таблицы и представления; их имена начинаются с символов V$ и V_$, например, V$SESSION. Эти представления содержат различные сведения и параметры, касающиеся функционирования системы.
Пользователю не следует пытаться менять данные этих таблиц и представлений и тем более их структуру.
Рассмотрим более подробно работу с системными представлениями. В Таблице 2 приведены некоторые часто используемые представления.
Название представления | Содержание |
ALL_TABLES | Таблицы |
ALL_TAB_COLS ALL_TAB_COLUMNS | Поля таблиц и представлений |
ALL_CONSTRAINTS | Ограничения, наложенные на поля таблиц |
ALL_INDEXES | Индексы |
ALL_SEQUENCES | Последовательности |
ALL_SYNONYMS | Синонимы |
ALL_USERS | Учетные записи |
ALL_VIEWS | Представления |
Ниже приведены типичные запросы, иллюстрирующие обращения к представлениями системного каталога; значения запросов воспроизводятся фрагментарно.
|
|
1. Существующие таблицы, доступные текущему данной учетной записи.
SELECT OWNER, TABLE_NAME, NUM_ROWS, BLOCKS
FROM ALL_TABLES
OWNER | TABLE_NAME | NUM_ROWS | BLOCKS |
SYS | CON$ | ||
SYS | UNDO$ | ||
SYS | CDEF$ |
2. Существующие представления, владельцем которой является данная учетная запись, и из определения.
SELECT VIEW_NAME, TEXT FROM USER_VIEWS
VIEW_NAME | TEXT |
Все заказы | select "Имя", "Фамилия", "Клиент", "Дата регистр", "Название", "Количество", "Мера изм", "Дата выполн" from "Клиент", "Товар", "Заказ", "СоставЗак" where "Клиент"."Код Клиента" = "Заказ"."Клиент" and "Заказ"."Код заказа" = "СоставЗак"."Код заказа" and "Товар"."Код товара" = "СоставЗак"."Код товара" |
Мои записи | select name "Имя", birth "Дата рождения" from "Все записи" where username = USER |
3. Определение полей таблицы CLIENTS, определенной в счхеме учетной записи CUSTOMER.
SELECT OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE
FROM ALL_TAB_COLUMNS
WHERE owner = 'CUSTOMER'
AND TABLE_NAME = 'CLIENTS'
TABLE_NAME | COLUMN_NAME | DATA_TYPE | DATA_LENGTH | NULLABLE |
CLIENTS | TITLE | CHAR | Y | |
CLIENTS | REGISTRDATE | DATE | Y | |
CLIENTS | CITY | CHAR | Y | |
CLIENTS | STREET | CHAR | Y | |
CLIENTS | APPERTMENT | CHAR | Y |
4. Список наложенных на таблицу 'Заказ' ограничений
SELECT TABLE_NAME, CONSTRAINT_NAME,
CONSTRAINT_TYPE, STATUS from user_constraints
WHERE TABLE_NAME = 'Заказ'
TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE | STATUS |
Заказ | SYS_C0010013 | C | ENABLED |
Заказ | SYS_C0010014 | C | ENABLED |
Заказ | SYS_C0010015 | C | ENABLED |
Заказ | Заказ_Д_C | C | ENABLED |
Заказ | SYS_C0010017 | P | ENABLED |
Заказ | Заказ_ДК_U | U | ENABLED |
Заказ | SYS_C0010019 | R | ENABLED |
Читателю рекомендуется сравнить полученный список ограничений с определениям таблицы 'Заказ' в разделе 2.5.
5. Список существующих незаблокированнных учетных записей в системе в порядке создания.
SELECT USERNAME, USER_ID, PASSWORD,
ACCOUNT_STATUS AS “STATUS”, CREATED
FROM dba_users
WHERE ACCOUNT_STATUS = 'OPEN'
ORDER BY CREATED
USERNAME | USER_ID | PASSWORD | STATUS | CREATED |
SYS | 75800913E1B66343 | OPEN | 07-FEB-06 | |
SYSTEM | 970BAA5B81930A40 | OPEN | 07-FEB-06 | |
ANONYMOUS | anonymous | OPEN | 07-FEB-06 | |
CUSTOMER | 609B4C253EA8EA39 | OPEN | 09-JUL-08 | |
NEMONOSTRUM | EXTERNAL | OPEN | 09-JAN-09 |