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

         

Подчиненные процессы ввода-вывода


Подчиненные процессы ввода-вывода используются для эмуляции асинхронного ввода-вывода в системах или на устройствах, которые его не поддерживают. Например, ленточные устройства (чрезвычайно медленно работающие) не поддерживают асинхронный ввод-вывод. Используя подчиненные процессы ввода-вывода, можно сымитировать для ленточных устройств такой способ работы, который операционная система обычно обеспечивает для дисков. Как и в случае действительно асинхронного ввода-вывода, процесс, записывающий на устройство, накапливает большой объем данных в виде пакета и отправляет их на запись. Об их успешной записи процесс (на этот раз — подчиненный процесс ввода-вывода, а не ОС) сигнализирует исходному вызвавшему процессу, который удаляет этот пакет из списка данных, ожидающих записи. Таким образом, можно существенно повысить производительность, поскольку именно подчиненные процессы ввода-вывода ожидают завершения работы медленно работающего устройства, а вызвавший их процесс продолжает выполнять другие важные действия, собирая данные для следующей операции записи.

Подчиненные процессы ввода-вывода используются в нескольких компонентах Oracle 8i — процессы DBWn и LGWR используют их для имитации асинхронного ввода-вывода, а утилита RMAN (Recovery MANager — диспетчер восстановления) использует их при записи на ленту.

Использование подчиненных процессов ввода-вывода управляется двумя параметрами инициализации.

  • BACKUP_TAPE_IO_SLAVES. Этот параметр указывает, используются ли подчиненные процессы ввода-вывода утилитой RMAN для резервного копирования или восстановления данных с ленты. Поскольку этот параметр предназначен для ленточных устройств, а к ленточным устройствам в каждый момент времени может обращаться только один процесс, он — булева типа, а не задает количество используемых подчиненных процессов, как можно было ожидать. Утилита RMAN

    запускает необходимое количество подчиненных процессов, в соответствии с количеством используемых физических устройств. Если параметр BACKUP_TAPE_IO_SLAVES имеет значение TRUE, то для записи или чтения с ленточного устройства используется подчиненный процесс ввода-вывода. Если этот параметр имеет (стандартное) значение FALSE, подчиненные процессы ввода-вывода не используются при резервном копировании. К ленточному устройству тогда обращается фоновый процесс, выполняющий резервное копирование.

  • DBWn_IO_SLAVES. Задает количество подчиненных процессов ввода-вывода, используемых процессом DBWn. Процесс DBWn и его подчиненные процессы всегда записывают на диск измененные буфера буферного кеша. По умолчанию этот параметр имеет значение 0, и подчиненные процессы ввода-вывода не используются.


  • Содержание раздела