Нормальная контрольная точка

dbstalker, 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.

Примитивное описание выполнения контрольной точки:

  1. DBWR зависает в ожидании команды от LGWR
  2. LGWR сбрасывает все записи из журнального буфера, которые защищают блоки данных включительно до «SCN контрольной точки» (т.е. номера системного изменения, на который будет согласована наша база данных).
  3. LGWR оповещает DBWR о необходимости записи всех модифицированных блоков из кэша данных, включая как подтвержденные, так и не подтвержденные данные, в файлы данных.
  4. DBWR вешает замок на cache buffer lru chain (список LRU) и выбирает блоки, последние изменения которых были произведены до «SCN контрольной точки» включительно, записывает эти блоки в файлы данных.
  5. После окончания записи грязных блоков DBWR дает сигнал LGWR о завершении своей работы.
  6. 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. Большое спасибо всем источникам! А Вам успехов в труде и личной жизни!

 

Новый комментарий

Я не спамер: введите суму 8+7



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Расписание автобусов
18 июля, 3 ответа
Отдых в августе
17 июля, 4 ответа