Дек 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 »

Июн 212011
 

Если база старая, то весьма вероятно, что в ней осталось много пользователей с правами DBA, например, после уволившихся сотрудников или давно неактуальных скриптов. С точки зрения информационной безопасности это неправильно, поэтому надо навести порядок. Если у такого пользователя есть объекты, то его удаление или блокировка может привести к печальным последствиям для других объектов.

Этим запросом получим статистику по таким пользователям: Continue reading »

Май 132011
 

Оператор Grant позволяет нам предоставить привилегию или назначить роль пользователю. Информация о предоставленных правах хранится в трёх представлениях: dba_tab_privs, dba_sys_privs, и dba_role_privs.
У данного оператора есть особенность: При выдаче прав на объекты в dba_tab_privs в поле grantor будет указано не имя пользователя, который, собственно предоставил грант (будь то sys, system, или юзер с ролью DBA), а владелец объекта, т.е. было бы корректнее назвать этот столбец не grantee, а owner.
Как обычно, на слово мне не верим, и проводим эксперимент: Continue reading »

Апр 292011
 

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

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

Янв 172011
 

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