■ 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;