06дек
Нормальная контрольная точка
Если абстрагироваться, то можна сказать, что контрольная точка Checkpoint представляет собой указатель на позицию в журнале повторного выполнения, от которой начнется восстановление экземпляра после сбоя.Из этого и будем исходить.До версии 8.1 ораклом поддерживается нормальная контрольная точка. При каких событиях она выполняется и как именно проходит её работа?
Контрольная точка - значительная пиковая нагрузка на сервер:
- на диски сбрасываются "грязные" блоки данных,
- в заголовки файлов данных прописывается SCN на момент выполнения контрольной точки,
- вносятся изменения в управляющий файл.
События, вызывающие выполнение контрольной точки:
- Переключение оперативных журналов.
- Экземпляр достиг значений установленных параметрами LOG_CHECKPOINT_TIMEOUT и LOG_CHECKPOINT_INTERVAL .
- при выполнении команды SHUTDOWN NORMAL/ TRANSACTIONAL/IMMEDIATE;
- при выполнении команды ALTER SYSTEM CHECKPOINT;
- при восстановлении после сбоя экземпляра (instance recovery) или сбоя носителя (media recovery).
Выполнение контрольной точки – процесс весьма непростой, требующий значительных ресурсов системы. Прохождение контрольной точки - это тесное взаимодействие фоновых процессов – DBWR(основная нагрузка),LGWR, CKPT.
Примитивное описание выполнения контрольной точки:
- DBWR зависает в ожидании команды от LGWR
- LGWR сбрасывает все записи из журнального буфера, которые защищают блоки данных включительно до «SCN контрольной точки» (т.е. номера системного изменения, на который будет согласована наша база данных).
- LGWR оповещает DBWR о необходимости записи всех модифицированных блоков из кэша данных, включая как подтвержденные, так и не подтвержденные данные, в файлы данных.
- DBWR вешает замок на cache buffer lru chain (список LRU) и выбирает блоки, последние изменения которых были произведены до «SCN контрольной точки» включительно, записывает эти блоки в файлы данных.
- После окончания записи грязных блоков DBWR дает сигнал LGWR о завершении своей работы.
- LGWR дает команду приступить к работе процессу CKPT. Этот процесс обновляет заголовки online-файлов данных тех табличных пространств, которые находятся в режиме read/write, отмечая «SCN контрольной точки». А также вносит изменения в следующие структуры управляющего файла:
- FILE HEADER
- DATABASE
- CKPT PROGRESS
- REDO THREAD
- DATAFILE
До версии 8.0 процесс LGWR это все делал сам.
Таким образом, выполнение контрольной точки влечет за собой следующие ресурсоёмкие операции:
- Процесс выполняются в строгой последовательности – значит, иногда зависают в ожидании
- Большой объем записи в файлы данных
- Значительный объем записи в управляющий файл
- Значительный объем обновлений заголовков файлов данных.
В то же время контрольная точка гарантирует, что в кэше буферов нет ни одного блока, модифицированного до «SCN контрольной точки», т.е. давно измененных блоков в кэше нет. Таким образом, время восстановления после сбоя экземпляра будет уменьшено.
Есть некоторые события (например, table drop/move/truncate, index drop/rebuild, direct read), которые также вызывают запись “грязных” блоков затрагиваемых операцией сегментов на диски. Но эти события не являются контрольными точками, потому что не осуществляют запись в управляющий файл и не сокращают время восстановления в случае сбоя.
Здесь мною использовалась информация из очень многих источников, но больше всего почерпнуто из http://www.oracle.com/global/ru/oramag/aug2005/admin_check_point.html. Большое спасибо всем источникам! А Вам успехов в труде и личной жизни!