Базы данных Oracle - статьи

         

Журналы базовых таблиц


Пример создания журнала для исходной (базовой) таблицы:

CREATE MATERIALIZED VIEW LOG ON emp;

После этой команды в схеме появится служебная таблица для журнализации изменений в EMP и служебный триггер для актуализации таких изменений. (В последних версиях Oracle этот триггер сделан внутренним и в таблице USER_TRIGGERS не виден).

Объем данных, попадаемых в журнал, можно регулировать фразой WITH предложения CREATE MATERIALIZED VIEW LOG, вставляемой после фразы ON:

CREATE MATERIALIZED VIEW LOG ON имя WITH ...

Вот возможные указания для обычных таблиц:

  • PRIMARY KEY: можно не указывать, так как в последних версиях первичный ключ заносится в журнальную строку автоматически.
  • ROWID: при внесении изменений в базовую таблицу в журнальной будет отмечаться ее физический адрес.
  • (список_столбцов): при внесении изменений в базовую таблицу в журнальную будут заноситься значения полей.
  • SEQUENCE: при добавлении в журнальную таблицу новой строки она будет специально нумероваться
  • INCLUDING NEW VALUES: в журнал будут помещаться не только старые, но и новые значения. По умолчанию используется EXCLUDING NEW VALUES.
  • (Для более экзотических объектных таблиц можно еще указывать WITH OBJECT ID).

    Примеры:

    DROP MATERIALIZED VIEW LOG ON emp;

    CREATE MATERIALIZED VIEW LOG ON emp WITH ROWID;

    DROP MATERIALIZED VIEW LOG ON emp;

    CREATE MATERIALIZED VIEW LOG ON emp WITH ROWID, SEQUENCE, (sal,comm);

    DROP MATERIALIZED VIEW LOG ON emp;

    CREATE MATERIALIZED VIEW LOG ON emp WITH (sal,comm) INCLUDING NEW VALUES;

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



    Содержание раздела