Урок 3: Создание базы данных Oracle. Архитектура

Источник: all-oracle

Это уже третий урок, как и обещано, он посвящен созданию базы данных. Занятие разбито на две части, первая - теоретическая, вы познакомитесь с основными понятиями и компонентами базы данных, архитектурой и т.д. Вторая часть практическая, с помощью утилиты dbca мы создадим нашу первую базу данных.

Архитектура базы данных

База данных Oracle содержит следующие виды файлов.

  • Управляющие файлы (Control files) - содержат метаданные о самой базе данных. Эти файлы очень важны для базы данных. Без них не могут быть открыты файлы данных и поэтому не может быть открыт доступ к информации базы данных.
  • Файлы данных (Data files) - содержат информацию базы данных.
  • Оперативные журналы (оперативные файлы повторного выполнения) - позволяют восстановить базу данных после сбоя экземпляра. Когда работа базы данных завершается аварийно и при этом не теряются никакие файлы данных, экземпляр может восстановить базу данных на основе информации в этих файлах.

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

  • Файл параметров - используется для описания стартовой конфигурации экземпляра.
  • Файл паролей - позволяет пользователям удаленно подсоединяться к базе данных для выполнения административных задач.
  • Архивные журналы (архивные файлы повторного выполнения) - содержат историю созданных экземпляром оперативных журнальных файлов (их автономные копии). Эти файлы позволяют восстановить базу данных. Используя их и резервы базы данных, можно восстановить потерянный файл данных.

Остановимся на каждом типе файлов подробнее

Управляющие файлы

Управляющий файл читается при старте экземпляра в ходе монтирования базы данных. В записях этого файла хранятся описания физических файлов, образующие базу данных. Когда файлы добавляются к базе данных, в управляющий файл автоматически вносятся изменения.

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

Оперативные журналы

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

Журнальные файлы входят в группы журналов. Группа содержит журнальный файл и его мультиплексируемые копии. Каждая такая копия -  член журнальной группы, и каждая группа однозначно определяется ее номером. Процесс записи данных повторного выполнения (log writer - LGWR) пишет информацию из журнального буфера в журнальную группу. После заполнения файлов журнальной группы или выполнения операции перехода из одной группы в другую процесс LGWR начинает писать в следующую группу. Журнальные группы используются "по кругу".

Табличные пространства и файлы данных

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

Сегменты, экстенты и блоки

Такие объекты БД, как таблицы и индексы, хранятся в табличных пространствах в виде сегментов. Каждый сегмент состоит из одного или более экстентов. Экстент состоит из смежных блоков данных. Поэтому каждый экстент может находиться только в одном файле данных. Блоки данных - наименьшие единицы ввода/вывода в базе данных.

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

Размер блока данных устанавливается в момент создания БД. Стандартный размер 8K подходит для многих баз данных. Если БД используется для хранилища данных с большими таблицами и индексами, тогда использование блоков большего размера может дать выигрыш в производительности. Если БД используется для транзакционного приложения, в котором чтения и записи производятся в случайном порядке, тогда лучше  задать меньший размера блока. Максимальный размер блока зависит от ОС. Минимальный размер - 2K (почти во всех случаях его не рекомендуется использовать).

Экземпляр Oracle

Сервер Oracle включает базу данных Oracle и экземпляр. Экземпляр состоит из буферов памяти, образующих системную глобальную область (System Global Area - SGA), и фоновых процессов, которые контролируют и выполняют большую часть невидимой работы при выполнении экземпляра.

Экземпляр простаивает (idle) до момента его старта. При запуске читается файл параметров инициализации и на его основе конфигурируется экземпляр.

Пользователи могут соединяться с базой данных после того, как экземпляр запустится и база данных будет открыта.

Структуры памяти Oracle

Основные структуры памяти, связанные с экземпляром Oracle:

  • Системная глобальная область (System Global Area- SGA), разделяемая всеми серверными и фоновыми процессами
  • Программная глобальная область (Program Global Area - PGA), частная для каждого серверного  и фонового процесса; для каждого процесса выделяется одна PGA.
  • Системная глобальная область (SGA) - это область разделяемой памяти, в которой содержатся данные и управляющая информация экземпляра.

SGA содержит следующие структуры данных:

  • Кэш буферов БД (Database buffer cache) - для блоков данных выбираемых из БД.
  • Журнальный буфер (Redo log buffer) - для кэширования информации повторного выполнения (используемой при восстановлении экземпляра) до момента их записи в журнальные файлы.
  • Разделяемый пул (Shared pool) - для кэширования различных структур, которые могут совместно использоваться пользователями.
  • Большой пул (Large pool) - необязательная область, в которой отводится память  для буферов, требуемых большими операциями ввода/вывода.
  • Java-пул, используемый для Java-кода сеансов и данных внутри виртуальной Java-машины (Java Virtual Machine - JVM).

При запуске экземпляра с помощью Enterprise Manager или SQL*Plus выводится информация о памяти, выделенной для SGA. В рамках динамической инфраструктуры SGA можно без остановки экземпляра менять размеры кэша буферов БД, разделяемого пула, большого пула, Java-пула и пула потоков.

Преконфигурированная база данных уже настроена и использует подходящие параметры распределение оперативной памяти. Однако по мере роста базы данных может возникнуть необходимость внести изменения в эти параметры.

Oracle позволяет выдавать сигнальные сообщения (alerts) для своевременного определения проблем, связанных с размером структур памяти, и содержит советчики (advisors), которые помогают установить подходящие значения для параметров.

Программная глобальная область (PGA) - это область памяти, выделяемая для каждого серверного процесса, содержащая данные и управляющую информацию этого процесса. Серверный процесс - это процесс, который обрабатывает запросы клиента. Каждый серверный процесс имеет свою приватную область PGA, которая создается при старте серверного процесса. Доступ к этой области имеет только этот серверные процесс, чтения и запись в эту область выполнятся через код Oracle, вызываемый из этого серверного процесса.

Совокупный размер памяти, выделяемый под области PGA и их содержимое, зависит от того, сконфигурирован ли в экземпляре режим разделяемого сервера. Обычно PGA содержит:

  • Приватную область SQL (Private SQL area), в которой находятся информация привязки и структуры памяти, создаваемые при выполнении команд. Каждый сеанс, в котором выполняется команда SQL, имеет приватную область  SQL.
  • Память сеанса (Session memory), выделяемая для обработки переменных сеанса и другой связанной с сеансом информацией.
Процессы Oracle

Когда вызывается прикладная программа или инструментальное средство, например, Enterprise Manager, Oracle создает серверный процесс для выполнения команд, порождаемых приложением.

Кроме того, Oracle создает набор фоновых процессов для экземпляра. Эти процессы взаимодействуют друг с другом и с операционной системой. Они управляют структурами памяти, записывают информацию на диск в асинхронном режиме ввода/вывода и выполняют общесистемные служебные действия.

Состав работающих в текущий момент фоновых процессов зависит от используемых функциональных возможностей базы данных. Наиболее общие процессы следующие:

  • Системный монитор (System monitor - SMON); выполняет восстановление после отказа экземпляра при старте экземпляра.
  • Монитор процессов (Process monitor - PMON); выполняет очистку после аварийного завершения пользовательского процесса.
  • Процесс записи в БД (Database writer - DBWn); пишет модифицированные блоки из кэша буферов БД в файлы на диск.
  • Процесс контрольной точки (Checkpoint - CKPT); сигнализирует DBWn о контрольной точке и изменяет все файлы данных и управляющие файлы, внося в них информацию о самой последней контрольной точке.
  • Процесс записи в журнал (Log writer - LGWR); пишет журнальные записи на диск.
  • Архиватор (Archiver - ARCn); копирует файлы оперативного журнала в архив после заполнения оперативных журнальных файлов или после выполнения переключения журнала.
Словарь данных

Словарь данных - централизованный набор таблиц и представлений, используемых в режиме "только чтение" для получения данных о БД. В словаре хранится, например:

  • логическая и физическая структура БД;
  • информация о пользователях БД;
  • ограничения целостности;
  • данные о выделенном для объектов схем пространстве и сколько из этого пространства используется.

Словарь создается, когда создается база данных, и автоматически изменяется при изменении структур базы данных. Enterprise Manager получает информацию об объектах БД из словаря. Вы можете только выполнять запросы информации из таблиц словаря данных. Enterprise Manager делает тоже самое для вас и представляет информацию в удобном для использования виде. Представление DICTIONARY содержит описание таблиц и представлений словаря данных. В именах представлений обычно имеется один из трех префиксов:

  • USER- информация, относящаяся к объектам, принадлежащим пользователю.
  • ALL - информация, относящаяся к объектам, доступным пользователю.
  • DBA - информация о всех объектах базы данных.

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


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=20626