Oracle для профессионалов


Оперативный журнал повторного выполнения


В каждой базе данных Oracle есть как минимум два оперативных файла журнала повторного выполнения. Эти оперативные файлы журнала повторного выполнения имеют фиксированный размер и используются циклически. Сервер Oracle выполняет запись в файл журнала 1, а когда доходит до конца этого файла, — переключается на файл журнала 2 и переписывает его содержимое от начала до конца. Когда заполнен файл журнала 2, сервер переключается снова на файл журнала 1 (если имеется всего два файла журнала повторного выполнения; если их три, сервер, разумеется, переключится на третий файл).

Переход с одного файла журнала на другой называется переключением журнала. Важно отметить, что переключение журнала может вызвать временное "зависание" плохо настроенной базы данных. Поскольку журналы повторного выполнения используются для восстановления транзакций в случае сбоя, перед повторным использованием файла журнала необходимо убедиться, что его содержимое не понадобится в случае сбоя. Если сервер Oracle "не уверен", что содержимое файла журнала не понадобится, он приостанавливает на время изменения в базе данных и убеждается, что данные, "защищаемые" этой информацией повторного выполнения, записаны на диск. После этого обработка возобновляется, и файл журнала переписывается. Мы затронули ключевое понятие баз данных — обработку контрольной точки. Чтобы понять, как используются оперативные журналы повторного выполнения, надо разобраться с обработкой контрольной точки, использованием буферного кеша базы данных и рассмотреть функции процесса записи блоков базы данных (Database Block Writer - DBWn). Буферный кеш и процесс DBWn подробно рассматриваются ниже, но мы все равно забегаем вперед, так что имеет смысл поговорить о них.

В буферном кеше базы данных временно хранятся блоки базы данных. Это структура в области SGA разделяемой памяти экземпляра Oracle. При чтении блоки запоминаются в этом кеше (предполагается, что в дальнейшем их не придется читать с диска). Буферный кеш — первое и основное средство настройки производительности сервера. Он существует исключительно для ускорения очень медленного процесса ввода-вывода. При изменении блока путем обновления одной из его строк изменения выполняются в памяти, в блоках буферного кеша. Информация, достаточная для повторного выполнения этого изменения, записывается в буфер журнала повторного выполнения — еще одну структуру данных в области SGA. При фиксации изменений с помощью оператора COMMIT сервер Oracle не записывает на диск все измененные блоки в области SGA. Он только записывает в оперативные журналы повторного выполнения содержимое буфера журнала повторного выполнения. Пока измененный блок находится в кеше, а не на диске, содержимое соответствующего оперативного журнала может быть использовано в случае сбоя экземпляра. Если сразу после фиксации изменения отключится питание, содержимое буферного кеша пропадет.




Начало  Назад  Вперед



Книжный магазин