Скачиваний:
49
Добавлен:
10.02.2015
Размер:
873.98 Кб
Скачать

LCKn (Parallel Server

LoCK)

- до десяти процессов (где n - от 0 до 9) могут использоваться при работе сервера в параллельном режиме. Выполняют функции межэкземплярной блокировки.

Dnnn (Dispatcher)

при работе сервера в мультинитевом режиме, существует хотя бы один диспетчерский процесс, ответственный за каждый протокол взаимосвязи. Диспетчерские процессы организуют взаимодействие между пользовательскими и разделяемыми серверными процессами.

Процессы Oracle

Процессы Oracle

Как работает транзакция

Из предыдущих выпусков мы уже знаем, что транзакция - это одна или более SQL-команд, завершенных фиксацией или откатом. Под фиксацией (commiting) понимается принятие и сохранение всех изменений. Откат (rollbacking) - это процедура отмены последних изменений, т.е. возврат к предыдущему состоянию БД. Чтобы понять, как работает система Oracle, мы по шагам рассмотрим пример работы простой транзакции. Замечу, что для работы данного примера необходим SQL*Net (сетевой протокол Oracle), так как мы будем иметь дело с клиент- серверным приложением. Итак, транзакция выполняется следующим образом:

Как работает транзакция(2)

1. Приложение обрабатывает пользовательский ввод и создает соединение с сервером посредством SQL*Net.

2. Сервер принимает запрос на соединение и создает серверный процесс.

3. Пользователь выполняет SQL-команду (или совокупность команд). В нашем примере будем считать, что пользователь изменяет данные в строке таблицы.

4. Серверный процесс просматривает разделяемый пул - есть ли там SQL-область с идентичными SQL-командами. Если он находит аналогичную разделяемую SQL-область, то серверный процесс проверяет права пользователя на доступ к данным. Предположим, что права есть, тогда серверный процесс выполняет команды, используя разделяемую SQL-область. Однако, если разделяемая SQL-область не найдена, то выделяется память под новую, а затем происходит разбор и выполнение SQL-команд

Как работает транзакция(3)

5. Серверный процесс ищет данные в SGA (если они есть в buffer cache) или считывает их из файла данных в кэш буферов.

6. Серверный процесс изменяет данные в SGA. Запомните, что серверный процесс может только читать данные из файла данных. Позже процесс DBWR запишет измененные блоки данных в постоянное хранилище.

7. Пользователь выполняет команду COMMIT (фиксация) или ROLLBACK (откат). COMMIT завершает транзакцию, а ROLLBACK отменяет изменения. Если транзакция зафиксирована, то процесс LGWR немедленно записывает ее в файл журнала изменений.

8. Если транзакция успешно завершена, то клиентскому процессу передается код завершения. Если произошел какой-либо сбой, то возвращается сообщение об ошибке

Как работает транзакция(4)

Функции СУРБД ORACLE

При работе с СУРБД Oracle Вы должны организовать выполнение таких функций как целостность данных, восстановление после сбоев, перехват ошибок и т.д. Это можно устроить посредством контрольных точек, журналирования и архивирования. Рассмотрим далее некоторые из этих функций.

Создание контрольных точек (checkpointing)

Как мы уже знаем, сигнал к созданию контрольной точки поступает либо от процесса DBWR, либо от LGWR. Но что же такое контрольная точка? И для чего она необходима?

Так как все изменения блоков данных происходят в блоковых буферах, то изменения данных в памяти не обязательно отражаются в этих блоках на диске. Процесс кэширования происходит по алгоритму последнего использованного блока, поэтому буфер, подверженный постоянным изменениям, помечается как последний использованный, и процесс DBWR не записывает его на диск. Контрольная точка применяется для того, чтобы эти буферы были записаны на диск. Все грязные буферы вынуждены быть сохранены на диске в обязательном порядке. Но это вовсе не означает, что вся работа прекращается в момент выполнения контрольной точки.

Соседние файлы в папке Презентации студентов