
- •МГТУ им. Баумана Кафедра: «Компьютерные системы и сети» Базы Данных Зо Надежда Санчельевна
- •Основные понятия и условные сокращения
- •Буфер
- •Блок (Block)
- •Узкое место (Bottleneck),
- •Контрольная точка (Checkpoint)
- •SGA (System Global Area)
- •DBWR (DataBase WRiter)
- •Чистый буфер (clean buffer), Грязный буфер (dirty buffer)
- •Параллелизм
- •DDL (Data Definition
- •DML (Data Manipulation
- •Динамические таблицы производительности (Dynamic
- •Функция
- •Процедура
- •Программный блок
- •Запрос
- •Триггер
- •Транзакция
- •Объекты схемы
- •Таблица
- •Кластер
- •Индекс
- •Представление (вид)
- •Хранимая процедура
- •Последовательность (sequence)
- •Конфигурации ORACLE
- •OLTP (Online Transaction
- •Характерные черты OLTP-систем
- •DSS (Decision Support
- •Характерные черты DSS
- •Хранилище данных (Data Warehouse)
- •Характерные черты OLAP-систем
- •Обзор архитектуры ORACLE
- •Физический уровень
- •1. Один или более файлов данных
- •2. Два или более файлов журналирования операций (redo log files)
- •3. Один или более управляющих файлов
- •Логический уровень
- •Табличные пространства и файлы данных
- •Табличные пространства и файлы данных(2)
- •Табличные пространства и файлы данных(3)
- •Табличные пространства и файлы данных(4)
- •Табличные пространства и файлы данных(5)
- •Сегменты, экстенты и блоки данных
- •Сегменты
- •Экстенты
- •Блоки данных
- •Сегменты, экстенты и блоки данных
- •Экземпляр ORACLE
- •Экземпляр ORACLE
- •Системная Глобальная Область (SGA)
- •Кэш буферов БД
- •Буфер журнала изменений
- •Разделяемый пул (shared pool)
- •Библиотечный кэш
- •Кэш словаря данных
- •Кэш словаря данных (2)
- •Программная Глобальная Область
- •Экземпляр ORACLE
- •Процессы Oracle
- •Процессы Oracle
- •DBWR (DataBase WRiter)
- •LGWR (LoG WRiter)
- •CKPT (ChecK PoinT)
- •PMON (Process MONitor)
- •SMON (System MONitor)
- •RECO (RECOvery)
- •ARCH (ARCHiver)
- •LCKn (Parallel Server
- •Dnnn (Dispatcher)
- •Процессы Oracle
- •Процессы Oracle
- •Как работает транзакция
- •Как работает транзакция(2)
- •Как работает транзакция(3)
- •Как работает транзакция(4)
- •Функции СУРБД ORACLE
- •Создание контрольных точек (checkpointing)
- •Создание контрольных точек (checkpointing)(2)
- •Журналирование и архивирование
- •Журналирование и архивирование(2)
- •Производительность ORACLE
- •Производительность
- •Производительность
- •Параллельный сервер ORACLE
- •Репликация данных
- •Репликация данных(2)
- •Репликация данных(3)
- •Применение SQL
- •Выполнение SQL запросов, Выборка данных
- •Отображение данных с помощью выражения Select
- •Отображение данных с помощью выражения Select
- •Использование псевдонимов для столбцов
- •Выборка данных с использование Where
- •Выборка данных с использование Where
- •Применение регулярных выражений (RegExp)
- •Сортировка данных
- •Выборка данных из нескольких таблиц
- •Выборка данных из нескольких таблиц
- •Выборка данных из нескольких таблиц
- •Выборка данных из нескольких таблиц
- •Выборка данных из нескольких таблиц
- •Выборка данных из нескольких таблиц
- •Выборка данных из нескольких таблиц
- •Использование связанных переменных
- •Псевдостолбцы
- •Арифметические
- •Числовые функции
- •Агрегирующие функции
- •Агрегирующие функции
- •Агрегирующие функции
- •Управление данными
- •Вставка
- •Обновление
- •Удаление
- •Выражения для управления транзакциями
- •COMMIT
- •ROLLBACK
- •Создание таблиц
- •Управления столбцами
- •Переименование и удаление таблиц
- •Управление индексами
- •Управление индексами
- •Управление видами
- •Управление
- •Управление синонимами
- •Вложенные SQL запросы
- •Вложенные SQL запросы
- •Вложенные SQL запросы
- •Триггеры
- •Типы триггеров
- •Триггеры
- •Триггеры
- •Триггеры
- •Триггеры с обработкой исключений
- •Триггер, который выполняется только один раз для запроса

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 не записывает его на диск. Контрольная точка применяется для того, чтобы эти буферы были записаны на диск. Все грязные буферы вынуждены быть сохранены на диске в обязательном порядке. Но это вовсе не означает, что вся работа прекращается в момент выполнения контрольной точки.