From: Владимир Голяков <http://a-sys.ru>
Date: Mon, 20 Mar 2005 18:21:07 +0000 (UTC)
Newsgroups: http://a-sys.ru
Subject: Средства диагностики и утилиты отладки в Oracle
Для правильной диагностики проблем СУРБД Oracle необходимо знать
утилиты отладки, предоставляемые Oracle. Необходимо понимать такие
операции, как чтение дампов управляющего файла или файлов трассировки.
Трассировочные файлы Oracle
Главным является файл журнала оповещений (alert.log), который содержит
важнейшую информацию о работе БД, в ходе диагностики его следует
проверять в первую очередь.
В начале работы БД в alert.log заносятся все параметры файла init.ora
и сообщения о запуске фоновых процессов. Регистрируется также
используемый этим экземпляром поток и последовательный номер журнала,
в который производит запись процесс LGWR.
В общем случае заносится также информация о запусках и остановах БД,
создании табличных пространств и сегментов отката, некоторых операциях
alter, переключениях журналов и сообщениях об ошибках.
Помимо alert.log Oracle автоматически генерирует два файла
трассировки. Один из них - фоновый файл трассировки, создается
фоновыми процессами DBWR и LGWR. Эти файлы трассировки могут и не
создаваться при запуске системы, в зависимости от наличия информации
для записи.
Файл трассировки второго типа создается соединением пользователя с БД
и называется пользовательским файлом трассировки.
Такой файл появляется, только если сеанс пользователя наталкивается на
ошибку.
Имена файлов трассировки имеют стандартный формат и зависят от
используемой ОС. В среде UNIX фоновый файл трассировки выглядит как
ORA_PID_PROCESS.trc, а пользовательский файл - PROCESS_ID.trc. При
этом ORA_PID представляет идентификатор процесса Oracle, а PROCESS_ID
- системного процесса, создавшего файл трассировки.
Для отладки поддерживаются различные средства диагностики. Для
выгрузки в файлы трассировки диагностической информации можно
подключить определенные события. Для диагностики повреждений диска и
памяти применяются некоторые специальные параметры init.ora. Эти
параметры не задаются при нормальной работе БД, т.к. они снижают ее
производительность.
Задание событий трассировки
Приведем способы задания событий трассировки:
выгрузить содержание всего управляющего файла
alter session set events 'immediate trace name controlf level 10';
(rdbms/mesg/oraus.msg)
выгрузить состояние системы для диагностики проблем, связанных с
зависанием
alter session set events 'immediate trace name systemstate level 10';
выгрузить содержание всех заголовков файлов данных
alter session set events 'immediate trace name file_hdrs level 10';
выгрузить стек ошибки и процесса (напр., ошибка ORA-00604)
alter session set events ' 604 trace name errorstack forever' ;
При задании событий с помощью init.ora используются следующие строки:
EVENT = "604 TRACE NAME ERRORSTACK FOREVER" - выгружается стек ошибок
каждый раз, когда процесс встречает ошибку ORA-00604;
EVENT = "10210 TRACE NAME CONTEXT FOREVER, LEVEL 10" - контролируется
целостность каждого блока при чтении с диска в кэш.
Наиболее распространенные коды событий:
10013 и 10015 -- применяются при диагностике проблем, связанных с
повреждением сегментов отката.
event = "10015 trace name context forever"
10029 и 10030 -- информация о началах и остановках сеансов.
10210 и 10211 -- проверяются блоки данных, считываемые в область SGA
event = "10210 trace name context forever, level 10"
10231 и 10232 -- пропустить поврежденные блоки в ходе сканирования
таблицы и выгрузить их в файл трассировки
alter session set events '10231 trace name context off';
event = "10231 trace name context forever, level 10"
Первый оператор отключает проверку блоков для данного сеанса. Второй
включает проверку всех блоков БД, считываемых любым
процессом в область SGA.
Некоторые другие события: http://www.orafaq.com/faqdbain.htm#EVENTS
Анализ журнала с помощью LogMiner
Архивные файлы журналов повторов очень важны, особенно для
восстановления БД. Для того, чтобы прочитать внесенные в БД изменения,
которые содержаться в архивном файле журнала повторов, необходимо
открыть указанный файл и изучить его содержимое.
Для этого существует специальный инструмент под названием LogMiner.