Янв 202011
 

Столкнулся с ситуацией: на полностью идентичных наборах данных многие запросы, прежде всего DELETE и INSERT на БД версии 11.2.0.1 выполняются в десятки-сотни раз медленнее, чем на 10.2.0.4. Данные получены экспортом с 10-й БД на 11-ю. В трейсах было видно, что большая часть времени в запросе уходила не на ожидания, а на CPU.
Сначала я грешил на баги Оракла, но после длительной возни с трейсами, профилировщиком процессов ОС и их техподдержкой, удалось разобраться, наконец, в чём дело.
Эти БД достались мне "в наследство" от предыдущего админа, который для чего-то установил event '10340 trace name context forever, level 16' на 11-й базе. Зачем он это сделал, выяснить не удалось, зато удалось найти описание этого события в файле $ORACLE_HOME/rdbms/mesg/oraus.msg, (информация отсюда):

10340, 00000, "Buffer queues sanity check for corrupted buffers"
//*Document: NO
//*Cause:
//*Action: Check all buffer queues for corrupted buffer every 5 minutes

Непонятно, как проверка очередей раз в 5 минут могла вызвать такое падение производительности. После того, как я отключил этот эвент:

ALTER SYSTEM SET event = '' SCOPE=SPFILE;

и перезапустил БД, скорость выполнения запросов нормализовалась. Теперь надо отслеживать поведение базы, чтобы убедиться, что отключение эвента больше ни на что не повлияло.

Кстати, включать-выключать события можно только с использованием параметра SCOPE=SPFILE, т.к. иначе не все сессии будут работать с одинаковым эвентом, и это может закончиться крахом сессий, а то и всей базы.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)