Выбрать главу

■ USER_AUDIT_TRAIL отображает все записи аудиторского следа, которые

относятся к текущему пользователю.

Вы можете использовать эти представления для исследования содержимого

аудиторского следа. Существует несколько похожим образом поименованных

представлений, которые администратор базы данных может

использовать для просмотра аудиторского следа; эти представления

имеют имена DBA_AUDIT_OBJЕСТ, DBA_AUDIT_SESSION, DBA_AUDIT_STATEMENT,DBA_

AUDIT_TRAIL и другие. Эти представления позволяют АБД просматривать

аудиторские записи по всем пользователям. Дополнительные сведения об

этих представлениях можно получить в опубликованном корпорацией

Oracle руководстве Oracle Database Reference.

310 Глава 9

Итоги

В этой главе мы узнали, что:

■ Пользователь создается с помощью оператора CREATE USER.

■ Системные привилегии позволяют выполнять в базе данных определенные

действия, например операторы DDL.

■ Объектные привилегии позволяют вам выполнять определенные

действия с объектами базы данных, например операторы DML для

таблиц.

■ Можно избежать указания имени схемы за счет создания синонима

для таблицы.

■ Ролью называется группа привилегий, которые можно назначить

пользователю или другой роли.

■ Аудит исполнения выражений SQL можно выполнить с помощью выражения

AUDIT.

В следующей главе вы узнаете больше о создании таблиц и увидите, как

создавать индексы, последовательности и представления.

Глава 10

Создание таблиц,

последовательностей,

индексов

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

Таблицы

В этом разделе вы узнаете больше о создании таблиц. Вы увидите, как можно

модифицировать и удалить таблицу и как получать информацию о таблице

из словаря данных. Словарь данных содержит информацию о всех

элементах базы данных - таблицы, последовательности, индексы и т.п.

Создание таблицы

Для создания таблицы используется оператор CREATE TABLE. Упрощенный

синтаксис оператора CREATE TABLE имеет следующий вид:

□ CREATE [GLOBAL TEMPORARY] TABLE имя_таблицы (

имя_столбца тип [CONSTRAINT опр_огранич DEFAULT выр_по_умолч ]

[, имя_столбца тип [CONSTRAINT опр_огранич DEFAULT выр_по_умолч ] . . . ]

)

[ON COMMIT {DELETE | PRESERVE} ROWS]

TABLESPACE таб_простр;

где

■ GLOBAL TEMPORARY указывает, что строки таблицы являются временными

(такие таблицы также известны как временные). Строки во временной

таблице относятся к конкретной пользовательской сессии, и

то, как долго эти строки будут сохраняться, определяется выражением

ON COMMIT;

■ имя_таблицы определяет имя таблицы;

■ имя_столбца определяет имя столбца;

■ тип определяет тип данных столбца;

■ опр о гранич является ограничением для столбца;

■ выр_по_умолч определяет выражение, используемое для назначения

столбцу значения по умолчанию;

■ ON COMMIT управляет продолжительностью жизни строк во временной

таблице. Значение DELETE указывает, что строки будут удалены в

конце транзакции. Значение PRESERVE указывает, что строки будут

удалены только в конце сеанса. Если фраза ON COMMIT для временной

таблицы будет опущена, значением по умолчанию будет DELETE;

■ таб_простр определяет табличное пространство, в котором будет храниться

таблица. Если табличное пространство не указано явно, для

Создание таблиц, последовательностей, индексов и представлений 313

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

текущего пользователя.

Примечание Полный синтаксис оператора CREATE TABLE намного богаче, чем приведенный

здесь. Для знакомства с полным синтаксисом я рекомендую справочное руководство по

SQL (Oracle Database SQL Reference) корпорации Oracle.

В следующем примере мы подключаемся как пользователь store и создаем

таблицу order_status2 :

□ CONNECT store/store_password

CREATE TABLE order_status2 (

id INTEGER

CONSTRAINT order_status2_pk PRIMARY KEY,

status VARCHAR2(10),

lastjnodified DATE DEFAULT SYSDATE

);

Примечание Если вы хотите выполнять примеры, используемые в этой главе, вам придется

вводить их вручную и выполнять,.используя SQL*Plus.

В следующем примере создается временная таблица order_status_temp,

строки которой будут удаляться в конце сеанса, для чего будет указана фраза

ON COMMIT PRESERVE ROWS:

□ CREATE GLOBAL TEMPORARY TABLE order jstatusjtemp (

id INTEGER,

status VARCHAR2(10),

lastjnodified DATE DEFAULT SYSDATE

) ON COMMIT PRESERVE ROWS;

Пример, приведенный ниже, выполняет следующие действия:

■ добавляет строку в order_status_temp;

■ отключается от базы данных для завершения сеанса, что приводит к

удалению всех строк в order_status_temp;