- •Средства параллельной обработки информации в Oracle.
- •Введение в параллельную обработку
- •Однопроцессорные и многопроцессорные компьютеры
- •Системы с разделением памяти
- •Системы с разделением дисков
- •Системы без разделения
- •Параллельная обработка sql-операторов
- •Последовательная обработка
- •Параллельная sql-обработка
- •Архитектура параллельной sql-обработки
- •Разделение данных и параллельная sql-обработка
- •Способы разделения данных
- •Параллельный сервер Oracle— поддержка нескольких экземпляров для обеспечения высокой степени доступности данных
- •Параллельное обращение к базе данных
- •Архитектура параллельного сервера
- •Распределенные блокировки
- •Блокировки параллельного управления кэшем (рсм)
- •Передача блоков
- •Потоки журнала транзакций
- •Запуск сервера
- •Управление базой данных в конфигурации параллельного сервера
- •Автоматическое восстановление экземпляров
- •Прозрачное устранение отказов приложений
- •Восстановление базы данных после сбоя носителя
- •Уникальные свойства базы данных в конфигурации параллельного сервера
- •Генерация последовательностей
- •Списки свободных блоков данных
- •Выделение экстентов для экземпляров
- •Частные сегменты отката
- •Индексы с обратными ключами
- •Комбинация параллельной sql-обработки и обработки параллельного сервера
Параллельный сервер Oracle— поддержка нескольких экземпляров для обеспечения высокой степени доступности данных
Следующий вид параллельной обработки данных, рассматриваемый в этом разделе, - это параллельное обращение к базе данных. Далее рассказывается о специальном функциональном средстве Oracle, применяемом в слабосвязанных многопроцессорных компьютерных системах и называемом параллельным сервером.
Параллельное обращение к базе данных
Параллельный сервер, применяемый в Oracle8, позволяет системе базы данных Oracleиспользовать все преимущества обеспечения высокой степени доступности информации, предоставляемые многопроцессорными компьютерными системами с разделением дисков и без него. С помощью параллельного сервера несколько экземпляровOracleServerмогут параллельно работать с одной и той же базой данныхOracle. Каждый экземплярOracleвыполняется в отдельном узле кластеризованной или слабосвязанной системы. Конфигурация базы данных, использующей параллельный сервер, представлена на рис. 9.
Каждый экземпляр в параллельном сервере OracleServerявляется отдельным набором фоновых процессов и кэшей памятиOracle. Каждый экземпляр монтирует и открывает одну и ту же базу данных
Oracleв "параллельном" режиме и предоставляет приложениям различные способы соединения и работы с совместно используемой базой данных.
Приложения некоторых видов не могут пользоваться преимуществами конфигурации параллельного сервера Oracle. В следующих разделах подробно рассказано, как параллельный серверOracleработает с информацией, сохраняя целостность данных, и дано общее представление о том, приложения каких видов нормально функционируют в конфигурации параллельного сервераOracle.
Архитектура параллельного сервера
Для сохранения целостности информации базы данных, с которой параллельно работает несколько экземпляров Oracle, в параллельном сервереOracleреализованы специальные алгоритмы. Чтобы определить, будет ли приложение работать в системе параллельного сервера, следует знать принципы работы специального алгоритма блокирования данных, применяемого в параллельном сервере.
Ранее было рассказано о том, каковы принципы внутренних алгоритмов параллельности работы OracleServerи как эти алгоритмы помогают сохранить целостность базы данных. Блокировки строк предотвращают возможные конфликты среди транзакций, работающих с одной и той же группой данных, и обеспечивают отличный уровень параллельности. В то же время алгоритм многовариантности позволяет операциям чтения и записи выполняться независимо друг от друга.
Распределенные блокировки
Приложения, работающие в среде параллельного сервера, запрашивают и модифицируют данные через экземпляр Oracleточно так же, как это делают приложения, работающие в базовой одноэкземплярной конфигурации. Например, транзакция, обновляющая строку таблицы, устанавливает исключающую блокировку этой строки; сервер считывает блок данных, содержащий указанную строку, в буферный кэш данных соответствующего экземпляра, а затем обновляет строку.
К одной и той же базе данных обращается несколько экземпляров, поэтому в параллельном сервере Oracleнеобходимо использовать распределенные блокировки. Распределенная блокировка (distributed lack) — это специальный тип блокировки данных, предотвращающий возникновение конфликтов между двумя экземплярами, когда они работают с различными ресурсами базы данных, например с сегментами отката, элементами кэшированного словаря данных или с кэшированными блоками данных. В конфигурации параллельного сервера экземпляр устанавливает распределенную блокировку, если при запросе ресурса этот ресурс помещается в областьSGAэкземпляра. Экземпляр снимает распределенную блокировку только тогда, когда другой экземпляр запрашивает тот же самый ресурс. Для координирования распределенных блокировок и доступа к разделяемым ресурсам базы данных каждый экземпляр в параллельном сервереOracleиспользует один или несколько специальных блокирующих фоновых процессов (Lock (LCK) background processes) и менеджер распределенных блокировок базовой операционной системы.