Дек 162011
 

По просьбам трудящихся, оставленным в комментариях к этому посту, решил написать, как анализировать redo logs на другой базе. Здесь подразумевается, что база, с которой мы взяли логи (далее исходная) и та, на которой мы будем их анализировать (далее целевая) одной и той же версии и работают на железе одинаковой архитектуры и на одинаковых ОС.
Такой анализ немного осложняется тем, что на целевой базе скорее всего будут отсутствовать объекты, которые есть на основной и в результате этого в колонках sql_redo и sql_undo представления v$logmnr_contents вместо понятного sql-выражения будет нечто невразумительное, что-то вроде этого:

INSERT INTO Object#2581(col#1, col#2) VALUES (HEXTORAW('4a6f686e20446f65'), HEXTORAW('c306'));

Чтобы избежать подобного эффекта, создаётся так называемый LogMiner dictionary, который может находиться как в отдельном файле, так и быть частью redo log'а.
Итак, у нас есть 2 способа создать словарь: Continue reading »

Ноя 182011
 

В чём состоит разница между командами ALTER SYSTEM SWITCH LOGFILE и ALTER SYSTEM ARCHIVE LOG CURRENT? На первый взгляд, эти команды выполняют одно и то же:

  1. Вызывают событие checkpoint
  2. Процесс LGWR перестаёт писать в текущий лог и начинает писать в следующий
  3. Процесс ARCH архивирует старый лог

но делают они это немного по-разному. Continue reading »

Апр 292011
 

Logminer - специальный инструмент для ретроспективного анализа redo logs базы данных. Он может пригодиться, когда не настроен аудит или, например, для анализа производительности.

Пусть, напиример, перед нами стоит задача: понять, что делалось с таблицей в определённый промежуток времени. Тогда последовательность действий будет такова: Continue reading »