Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Обеспечение целостности данных

Транзакции

Транзакция — это одна или более SQL-команд, завершаемых фиксацией (commiting) или откатом (rollbacking).

Под фиксацией (commiting) понимается принятие и сохране­ние всех изменений.

Откат (rollbacking) — это процедура отмены последних изме­нений, т. е. возврат к предыдущему состоянию БД.

Чтобы понять как работает система Oracle, рассмотрим по ша­гам пример работы простой транзакции.

Итак, транзакция выполняется следующим образом.

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

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

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

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

5. Серверный процесс ищет данные в SGA (если они там есть) или считывает их из файла данных в SGA.

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

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

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

Примечание. Транзакция не считается зафиксированной до тех пор, пока не завершена запись в файл журнала изменений (redo log file). Этот механизм способствует тому, что в случае сбоя зафиксированная транзакция может быть восстановлена.

 

При работе с СУРБД Oracle необходимо решать задачу обеспе­чения целостности данных (восстановления базы данных после сбоев, перехвата ошибок и т.д.), для чего используются следу­ющие функции: создание контрольных точек, журнализация и ар­хивирование.

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

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

Контрольная точка может работать в двух режимах: нормаль­ной контрольной точки и быстрой контрольной точки.

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

В режиме быстрой контрольной точки процесс DBWR записыва­ет одновременно несколько буферов. Эта контрольная точка вы­полняется очень быстро и более эффективна при вводе-выводе, однако она значительно снижает производительность системы.

Частое выполнение контрольных точек способствует увеличе­нию времени, необходимого на восстановление системы в случае сбоя.

Контрольная точка автоматически выполняется при смене жур­нала изменений.

Журнализация и архивирование. Журнал изменений (redo log) записывает все изменения БД Oracle. Целью его создания является возможность экстренного восстановления БД в случаях сбоев си­стемы и потери файлов данных. Восстановив файлы данных из ранее сделанных резервных копий, файлы журнала изменений (включая архивные файлы журнала) могут повторить все послед­ние транзакции и таким образом файлы данных будут полностью восстановлены.

Когда файл журнала изменений оказывается полностью запол­ненным, происходит смена журнала и процесс LGWR заводит новый файл. Во время смены журнала процесс ARCH записывает заполненный файл в архив файлов журнализации. В тот момент, когда архивирование только закончилось, файл журнала измене­ний помечается как доступный. Очень важно, чтобы архивные файлы журнала изменений надежно хранились, так как они мо­гут понадобиться для восстановления системы.

 

<== предыдущая лекция | следующая лекция ==>
Физическая архитектура хранения данных | Структура организации доступа к данным в трехуровневой архитектуре
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 455; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.