931.00K
Category: databasedatabase

Обзор архитектуры БД Oracle

1.

2.

Обзор архитектуры ORACLE
БД Oracle состоит из двух уровней:
физический и
логический.
Физический уровень включает файлы, которые хранятся на диске,
логический уровень представляет компоненты физического уровня.

3.

Физический уровень
включает три категории файлов:
- файлы данных (1+)
- файлы журналирования операций - redo log files (2+)
- управляющие файлы (1+)

4.

Физический уровень
Файлы данных (1+)
Хранится информация, имеющаяся в БД.
Может быть один файл данных или сотни.
Информация из одной таблицы может быть разбросана по нескольким
файлам данных (а несколько таблиц могут делить между собой пространство
файлов данных). Распределение таблиц по нескольким файлам данных
может значительно увеличить производительность системы.
Количество файлов данных ограничено параметром MAXDATAFILES.

5.

Физический уровень
Файлы журналирования операций - redo log files (2+)
Файлы журналирования операций = журнал операций
Содержат информацию, необходимую для процесса восстановления в
случае сбоя системы. Хранят все изменения, которые произошли в БД.
С помощью журнала операций восстанавливаются те изменения, которые
были произведены, но не зафиксированы перед сбоем системы.
Файлы журналирования операций очень хорошо защищены против
аппаратных сбоев (как на программном, так и на аппаратном уровне).

6.

Физический уровень
Управляющие файлы (1+)
Содержат информацию, необходимую для запуска экземпляра Oracle (в том
числе расположение файлов данных и файлов журналирования операций).
Управляющие файлы должны быть хорошо защищены.
В управляющем файле хранится информация:
- о местонахождении других физических файлов, составляющих базу данных, - файлов данных
и журналов;
- о содержимом и состоянии базы данных:
- имя базы данных;
- время создания базы данных;
- имена и местонахождение файлов данных и журнальных файлов;
- информация о табличных пространствах;
- информация о файлах данных в автономном режиме;
- история журналов и информация о порядковом номере текущего журнала;
- информация об архивных журналах;
- информация о наборах и фрагментах резервных копий, файлах данных и журналах;
- информация о копиях файлов данных;
- информация о контрольных точках.

7.

Физический уровень
- файлы данных (1+)
- файлы журналирования операций - redo log files (2+)
- управляющие файлы (1+)

8.

Логический уровень
Его составляют элементы:
- табличные пространства (1+)
- схема БД = таблицы
кластеры
индексы
представления
хранимые процедуры
и т.д.
+
+
+
+
+

9.

Логический уровень
Табличные пространства (1+)
БД разделяется на логические части, называемые табл.пространствами – ТП.
Они используются для логической группировки данных между собой.
Например, можно определить одно ТП для бухгалтерских данных, а другое
для складских. Сегментирование на ТП упрощает администрирование.
Каждое ТП состоит из одного или более файлов данных.
Используя несколько файлов данных для одного ТП, можно распределить их
по разным дискам, увеличив скорость ввода-вывода и производительность
системы.
Т.о., БД Oracle состоит из ТП, которые состоят из файлов данных, которые
могут быть разбросаны по нескольким физическим дискам.
При создания БД Oracle автоматически строится ТП SYSTEM.
В нем хранится словарь данных с информацией о таблицах, индексах,
кластерах и т.д.

10.

Логический уровень
Табличные пространства (1+)

11.

Логический уровень
Табличные пространства (1+)

12.

Логический уровень
Табличные пространства (1+)

13.

«Базы данных» & «экземпляр»
«Базы данных» =? «экземпляр»
БД – физическое хранилище информации
Экземпляр – программное обеспечение, работающее на сервере и
предоставляющее доступ к информации в БД.
БД хранится на дисках компьютера, сервера
Экземпляр исполняется на конкретном компьютере или сервере

14.

«Базы данных» & «экземпляр»
БД – физическая сущность: она состоит из файлов, хранящихся на дисках.
Экземпляр – сущность логическая: он состоит из структур в оперативной
памяти и процессов, работающих на сервере.
Экземпляр может быть частью одной и только одной БД.
Напротив, с одной БД может быть ассоциировано несколько экземпляров.
Время жизни экземпляров ограничено, БД может существовать вечно.
Пользователи не имеют прямого доступа к информации, хранящейся в БД;
они должны запрашивать информацию у экземпляра.

15.

«Базы данных» & «экземпляр»
Аналогия из реального мира
БД = остров
Экземпляр = мост к острову
Транспорт попадает на остров и уходит с него по мосту.
Если мост перекрыт, то остров на месте, но транспорту туда не попасть.
В Oracle:
- если экземпляр запущен, то данные могут попадать в БД и уходить из нее.
Физическое состояние БД при этом изменяется.
- если экземпляр остановлен, то пользователи не могут обращаться к БД,
пусть даже физически она никуда не делась. БД в этом случае статична,
никаких изменений в ней не происходит.

16.

SGA и PGA
SGA – System Global Area, системная глобальная область
Область разделяемой памяти, которую Oracle использует для
хранения данных и управляющей информации одного конкретного
экземпляра Oracle. SGA размещается в памяти при запуске
экземпляра Oracle и освобождает память при останове. Каждый
запущенный экземпляр Oracle имеет свою собственную SGA.
PGA – Program Global Area, программная глобальная область
Область памяти в каждом процессе. Область памяти, в которой
хранятся данные и управляющая информация о серверных
процессах Oracle. Размер и содержание PGA определяется
опциями, которые указываются при инсталляции Oracle.

17.

SGA и PGA
SGA – System Global Area, системная глобальная область
Информация в SGA состоит из следующих компонентов (каждый из которых
создается в памяти при запуске экземпляра):
- кэш буферов БД
- буфер журнала изменений
- разделяемый пул (shared pool)
- библиотечный кэш
- кэш словаря данных

18.

SGA и PGA
SGA – System Global Area, системная глобальная область
Кэш буферов БД
Здесь хранятся последние открытые блоки данных.
Эти блоки могут содержать:
- данные, которые изменились, но еще не были записаны на диск (грязные
блоки);
- данные, которые не изменялись либо были записаны на диск после
изменения (чистые блоки).
Так как кэш буферов БД хранит блоки
данных на основе алгоритма последних
используемых блоков, то наиболее
активно используемые блоки постоянно
остаются в памяти (тем самым, снижая
дисковый ввод/вывод и увеличивая
производительность системы).

19.

SGA и PGA
SGA – System Global Area, системная глобальная область
Буфер журнала изменений
Хранит данные об изменениях БД.
Буфер журнала изменений записывается в файл журнала изменений
настолько быстро и эффективно, насколько это возможно.
Журнал изменений используется для восстановления экземпляра СУБД
Oracle в случае сбоя системы.

20.

SGA и PGA
SGA – System Global Area, системная глобальная область
Разделяемый пул (shared pool)
Хранятся такие структуры разделяемой памяти, как разделяемые SQLобласти в библиотечном кэше и внутренняя информация словаря данных.
Разделяемый пул важен, потому что недостаточный объем памяти,
выделенный для него, может привести к деградации производительности
всей системы.
Разделяемый пул состоит из библиотечного кэша и кэша словаря данных.

21.

SGA и PGA
SGA – System Global Area, системная глобальная область
Библиотечный кэш
Используется для хранения разделяемых SQL. Здесь для каждого
уникального SQL-выражения строится дерево разбора строк и план
исполнения, которые кэшируются (т.е. сохраняются в библиотечном кэше).
Если несколько приложений отправляют одинаковые SQL-выражения, то для
ускорения работы используется разделяемая SQL-область (так как
используются уже разобранные строки и готовый план исполнения, то
происходит экономия времени).

22.

SGA и PGA
SGA – System Global Area, системная глобальная область
Кэш словаря данных
Содержит набор таблиц и представлений, используемых в качестве ссылок к
БД Oracle. Хранится информация о логической и физической структуре БД.
Словарь данных содержит информацию:
- пользовательская информация - пользовательские привилегии, ограничения
целостности, определенные для таблиц БД - имена и типы данных всех
столбцов таблиц БД.
- информация об объеме памяти, определенном и используемом объектами
схемы данных.
Oracle обращается к словарю данных при
разборе SQL-выражений. Объем памяти,
определенный для словаря данных, д.б.
достаточно велик для кэширования
данных. Если кэш словаря данных мал, то
- снижение производительности.

23.

SGA и PGA
PGA – Program Global Area, программная глобальная область
Эта область состоит из следующих компонентов:
- пространство стека - это память, хранящая переменные сеансов, массивы
сеансов и т.д.
- информация сеанса - если Oracle работает не в мультинитевом режиме, то
информация сеанса хранится в PGA. В противном случае, информация
сеанса хранится в SGA.
- приватная SQL-область - это часть PGA, где хранятся связанные
переменные и буферы реального времени.

24.

Как работает транзакция
Транзакция - это одна или более SQL-команд, завершенных фиксацией или
откатом.
Фиксация (commiting) – принятие и сохранение всех изменений.
Откат (rollbacking) – процедура отмены последних изменений, т.е. возврат к
предыдущему состоянию БД.
1. Приложение обрабатывает пользовательский ввод и создает соединение с
сервером.
2. Сервер принимает запрос на соединение и создает серверный процесс.
3. Пользователь выполняет SQL-команду (или совокупность команд):
пользователь изменяет данные в строке таблицы.
4. Серверный процесс просматривает разделяемый пул - есть ли там SQLобласть с идентичными SQL-командами.
4.1. если он находит аналогичную разделяемую SQL-область, то…
4.2. если разделяемая SQL-область не найдена, то…

25.

Как работает транзакция
4. Серверный процесс просматривает разделяемый пул - есть ли там SQLобласть с идентичными SQL-командами.
4.1. если он находит аналогичную разделяемую SQL-область, то
серверный процесс проверяет права пользователя на доступ к данным.
И если права есть, тогда серверный процесс выполняет команды,
используя разделяемую SQL-область.
4.2. если разделяемая SQL-область не найдена, то выделяется память
под новую, а затем происходит разбор и выполнение SQL-команд.
5. Серверный процесс ищет данные в SGA (если они есть в buffer cache) или
считывает их из файла данных в кэш буферов.
6. Серверный процесс изменяет данные в SGA. Позже процесс запишет
измененные блоки данных в постоянное хранилище.
7. Пользователь выполняет команду COMMIT или ROLLBACK. Если
транзакция зафиксирована, то процесс немедленно записывает ее в файл
журнала изменений.
8. Если транзакция успешно завершена, то клиентскому процессу передается
код завершения. Если произошел сбой, то возвращается сообщение об
ошибке.
English     Русский Rules