Dsvolk > > Oracle > > Dba > > My Blog | Search | About
(Not Logged In)
[ welcome! ] [ news ] [ install ] [ jump-jet ] [ app ] [ rac ] [ papers ] [ dba ] [ dvp ] [ racdd4d ] [ oem ] [ statspack ] [ education ] [ tuning ] [ ias ] [ backup ] [ dataprotection ] [ security ] [ oid ] [ options ] [ integration ] [ sales ] [ sun ] [ linux ] [ consulting ] [ faq ]

Oracle DBA

Соглашение о материалах на этом сайте

Мой oracle blog
true dsvolk!
работа для настоящего мужчины  
Ниже я постараюсь описать важнейшие фоновые процессы Oracle и выполняемые ими задачи. Вот почему важно это знать: когда вы определите, какие из событий ожидания (wait event) занимают наибольшие время, нужно будет понять, как это исправить. И понимание работы сервера - здесь ключевое звено. Излагается для версии 9i

 

Database Writer Process (DBWR)

Отвечает за запись модифицированных или "грязных" буферов из кэша базы данных на диск. DBWR пишет на диск при достижении одного из условий:

  • Когда серверный процесс не может обнаружить свободный блок в кэше, после проверки порогового кол-ва буферов, он оповещает DBWR о необходимости записи. DBWR осуществляет запись асинхронно.
  • Когда происходит timeout. Timeout составляет 3 сек. 
  • Когда происходит checkpoint (см. ниже). Checkpoint (вне зависимости от того, полный он или инкриментальный)  должен гарантировать, что все грязные буфера сброшены на диск.

Log Writer Process (LGWR)

Отвечает за запись redo log буфера в redo log файл на диске. LGWR записывает все redo записи из redo log буфера с момента последней записи.

Redo log буфер имеет циклическую структуру. Пока LGWR пишет на диск, серверные процессы могут добавляет redo записи, которые были уже сброшены на диск.

LGWR пишет на диск при достижении одного из условий:

  • Когда пользователь выполняет commit.
  • Каждый 3 секунды
  • Когда redo log буфер заполнен на 1/3
  • Когда его просит DBWR. До того, как DBWR запишет "грязный" блок на диск, все redo записи, связанные с изменениями в этом блоке должны быть записаны. Если DBWR обнаруживает такие не сброшенные записи, он оповещает LGWR и ждет завершения его работы

с LGWR связано еще два понятия - fast commit и group commit. Fast commit - механизм, которые позволяет DBWR не сразу писать требуемые LGWR блоки на диск. Т.е. после commit - redo записи сбрасываются, а вот блоки нет. Group commit - реально запись может производиться не для каждого commit, а сразу для группы транзакций. Это позволяет минимизировать число операций ввода-вывода. 

CheckPoint Process (CKPT)

Отвечает за синхронизацию заголовков файлов данных и control файла в момент прохождения checkpoint. CKPT также оповещает DBWR и LGWR и необходимости сброса блоков данных и redo записей соответственно. CKPT записывает SCN checkpoint'а  в необходимые файлы данных.

Checkpoint происходит:

  • Когда  происходит переключение  redo log группы (или выполняется alter system switch logfile)
  • Когда администратор выполняет alter system checkpoint
  • Когда БД нормально закрывается 
  • Когда табличное пространство нормально переводить в состояние OFFLINE или READONLY
  • Когда начинается online бекап
  • Когда сконфигурировано параметрами LOG_CHECKPOINT_INTERVAL и LOG_CHECKPOINT_TIMEOUT или FAST_START_MTTR_TARGET (последний предпочтительней в 9i)

Читать главу Process Architecture из Concept Guide.

Dsvolk > > Oracle > > Dba > > Last Modified: 25-05-2003 23:57