среда, 2 февраля 2011 г.

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

В этом курсе мы будем работать с Oracle 10g Lite (Express Edition).

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

  • СУРБД - система управления реляционными базами данных;
  • ОРБД - объектно-реляционная база данных;
  • ООРБД - объектно-ориентированная реляционная база данных.
  • При работе Oracle одновременно присутствует множество процессов, выполняющих специфические задачи. Каждый процесс имеет отдельный блок памяти для хранения локальных переменных, стек адресов и другую информацию. Все эти процессы имеют общую область памяти, называемую разделяемой областью памяти. В этой памяти хранятся данные общего пользования. В англоязычной литературе называется Global System Area (GSA). Доступ к GSA для записи и чтения могут получить одновременно различные процессы и программы. Эта область находится в разделяемом сегменте памяти. Можно считать, что GSA - единый центр для координации и управления всеми процессами обработки информации, происходящими в системе.

    Для Oracle характерен механизм многозадачной обработки функций, однако Lite-версии могут этот механизм не поддерживать. Формирование базы данных Oracle является достаточно сложным процессом и можно выделить три этапа:

    1. Формирование экземпляра (предустановочная стадия)
    2. Установка базы данных экземпляром (установочная стадия)
    3. Открытие базы данных (стадия открытия).

    Предустановочная стадия

    1. Считывается файл параметров (по умолчанию: init.ora) - важный файл (редактировать только после бэкапа).
    2. Запускаются фоновые процессы.
    3. Инициализируется GSA.

    * Имя экземпляра определяется значением, указанным в init.ora.

    Установочая стадия

    1. Определяются значения параметров базы данных в соответствии с init.ora. На этой стадии и далее init.ora определяется как контрольный файл базы данных.
    2. При необходимости на второй стадии выполняется модификация данных, хранящихся в init.ora.
    3. Экземпляр получает исключительный доступ к файлам базы данных, имена которых хранятся в контрольном файле. Через этот файл они становятся доступными пользователям базы данных.

    Если стадия открытия не завершена, то к базе данных также возможен доступ (только для администратора с помощью специальной утилиты Server Manager).
    В частности, с помощью утилиты Server Manager можно:

    * создать каталог для размещения базы данных
    ** установить связь с базой данных
    * выполнять монтирование и демонтирование базы данных
    * выполнять очистку ОЗУ (часть ГСО, используемой базой)
    * оценивать объем занимаемой памяти
    * завершить работу с экземпляром Oracle

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

    GSA (Глобальная системная область)

    Назначение и структура ГСО:

    В GSA хранятся структуры памяти, необходимые для манипулирования данными для анализа предложений SQL, для кэширования транзакций. Все операции базы данных в том или ином виде используют информацию, находящуюся в GSA.

    GSA состоит из таких компонент:

    * разделяемый пул (Shared Pool) - содержит кэш библиотек, кэш словаря, управляющие структуры сервера.

    Кэш библиотеки используется для хранения текста, хранения форматов лексического анализатора, хранение плана выполнения предложений SQL, хранение заголовки PL/SQL пакетов и процедур, выполнявшихся ранее.

    Кэш словаря предназначен для хранения строки словаря данных, которая была использована для анализа предложений SQL. Таких строк может быть несколько.

    // Оракл работает со своей версией SQL - называется PL/SQL.

    Использование разделяемого пула для обработки SQL-выражений

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

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

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

    В общем, для кэша библиотек в разделяемом пуле выделяется две области:
    1. Разделяемая область SQL.
    2. Локальная область SQL.

    Локальная область SQL делится также на две части:
    1. Переходящая область SQL - содержит информацию, которая сохраняет свое значение и может быть использована несколькими выражениями SQL.
    2. Область времени выполнения (runtime) - содержит только ту информацию, которая нужна для выполняемого в текущий момент выражения.

    Кэш словаря содержит информацию содержит, необходимую для лексического анализа SQL-выражений.

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

    Учитывая изложенный механизм работы Oracle, следует отметить, что выполнение одиночных, простых SQL-инструкций на Oracle не будет выполняться быстрее, чем Delphi & FoxPro. Однако, реализация сложной программы выполнится с существенными преимуществами по эффективности и времени.

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

    Назначение и функционирование кэш-буфера

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



    3 комментария: