Для того чтобы воспрепятствовать записи о вставленных данных в журнальный файл, в OracleS можно использовать другой механизм. Он доступен только в том случае, если администратор базы данных установил этот объект в режим NOLOGGING, например:
CREATE TABLE document_keywords
( keyword VARCHAR(20) NOT NULL , doc_id NUMBER NOT NULL ) NOLOGGING;
Назначение опции NOLOGGING — разрешить вставку Данных в таблицу при отключенной регистрации этих действий в журнальном файле. Чтобы это работало, необходимо также включить в предложение INSERT подсказку APPEND, которая описана в следующем разделе.
Подсказка APPEND
Опция прямой загрузки SQL*Loader вводит данные над меткой максимальной заполненности таблицы (high water mark). Это означает, что данные добавляются в блоки, которые ранее не содержали данных для указанной таблицы.* В OracleS введена новая подсказка (hint) — APPEND, — которая указывает, что данный режим должен использоваться при вставках строк, и обеспечивает размещение новых строк выше текущей метки максимальной заполненности. Если для таблицы установлен и флаг NOLOGGING, то вставляемые данные не регистрируются в журнальном файле — хотя какая-то активность в этом плане может отмечаться, и мы считаем, что она связана с регистрацией факта выполнения вставки.
Как и следовало ожидать, использование этой подсказки сопряжено с некоторыми неудобствами. Главный недостаток состоит в том, что следующим за INSERT предложением должно быть COMMIT или ROLLBACK. Предложение INSERT не обязательно должно быть единственным в этой транзакции, но оно должно быть последним. Мы заметили, что если для таких предложений INSERT выполняется откат транзакции, то стандартное правило Oracle действует на все дополнительные экстенты, выделенные во время выполнения INSERT. Они остаются выделенными.
В документации по Oracle также предупреждают, что существование глобальных индексов, триггеров и ограничений ссылочной целостности для таблицы приводит к игнорированию подсказки APPEND. Мы принимаем это предупреждение только в отношении включенных триггеров и включенных ограничений ссылочной целостности. Ясно, что пользователь в любой ситуации несет полную ответственность за выполнение всех действий, которые в обычном случае выполнялись бы триггером или ограничением ссылочной целостности. Если это действие не выполняется до предложения INSERT, его приходится откладывать на последующие транзакции, потому что за
*      Это не совсем так. Конечно, такие блоки могли прежде содержать строки, удаленные в ходе операции TRUNCATE TABLE... REUSE STORAGE. Операция TRUNCATE TABLE опускает метку максимальной заполненности в начало таблицы.
86	OmcleS