Как отключить ведение журнала ретроспективных запросов для конкретной таблицы (Oracle)?

У нас есть конкретная таблица, в которой много активности, и она создает много записей об изменениях. Следствием этого является то, что данные воспоминаний возвращаются только через пару дней. Это нормально для многих случаев, но было бы полезно иметь доступ к большему количеству исторических данных.

Мы хотели бы либо ограничить ведение журнала на нашей одной таблице высокой активности. Или полностью отключить. Я полагаю, что мы можем сделать это с помощью табличного пространства, я просто не нашел много о том, как сделать эти изменения.

2 ответа

Решение

Вы можете отключить флэшбэкинг с помощью alter table пункт:

alter table YOUR_TABLE_NAME no flashback archive;

Можно также ограничить архив указанным размером. Для этого вам необходимо создать архив флэшбека, предназначенный для этой таблицы, с желаемым сроком хранения и, по желанию, размером квоты:

create flashback archive YOUR_TABLE_ARCHIVE tablespace SOME_TABLESPACE quota 512M retention 1 DAY;

Затем назначьте новый архив в таблицу:

alter table YOUR_TABLE_NAME flashback archive YOUR_TABLE_ARCHIVE;

Изучите документацию Oracle, чтобы проверить дополнительные требования. Например вам нужно FLASHBACK ARCHIVE ADMINSTER привилегия для выполнения заявления выше.

Вы можете сгенерировать сценарии для всех таблиц в любой схеме, выполнив следующий запрос:

SELECT 'изменить таблицу' || ВЛАДЕЛЕЦ || '.' || ИМЯ_ТАБЛИЦЫ || 'нет архива воспоминаний;'FROM ALL_TABLES WHERE OWNER IN ('YOUR_SCHEMA');

Другие вопросы по тегам