Oracle флэшбэки, запрос прошлых данных
Знаете ли вы, как именно работает запрос прошлых данных?
Версия оракула 10G
С помощью этого запроса я могу восстановить некоторые данные, но иногда этот запрос
select *
from table as of timestamp systimestamp - 1
восстановить ошибку (слишком старый снимок). Можно ли увеличить время на эту работу и получить данные о 24 часах? Спасибо!
2 ответа
Ошибка означает, что сегмент отката стал недействительным, потому что, как правило, запрос занимал слишком много времени. Есть и другие причины. Как откат размеров сегмента.
Сколько строк в таблице? - вы можете получить представление из этого выбора num_rows из all_tables, где table_name='MYTABLE_NAME_GOES_HERE';
Если есть много строк, вам может понадобиться добавить какой-нибудь индекс для поддержки вашего запроса. Потому что полный та
Ключевым вопросом здесь является определение размера сегментов отмены, а также сохранение и гарантия отмены.
Короче говоря, вам нужно, чтобы размер табличного пространства отмены был таким, чтобы в нем содержались все изменения, которые могут быть сделаны с максимальным периодом, на который вы хотите вспомнить, и вы хотите установить для параметра отмены хранения это значение. Если для вашего приложения действительно важно, чтобы отмена была сохранена, тогда установите гарантию отмены в табличном пространстве отмены.
Полезные документы: http://docs.oracle.com/cd/B12037_01/server.101/b10739/undo.htm
Имейте в виду, что быстродействие флешбека довольно низкое для объемных данных, так как требуемые блоки отмены должны быть найдены в табличном пространстве. 11g имеет лучшие варианты для высокопроизводительного воспоминания.