Обзор Oracle Instance (Инстанция Oracle)

Статьи про Oracle -> Архитектура

Обзор Oracle Instance (Инстанция Oracle)

Предлагаю вам мой перевод части документации Oracle Database Concepts 10g Release 2 (10.2) B14220-02.

v:1.0 20.09.2007

Сервер базы данных Oracle состоит из базы данных и инстанции Oracle. При каждом запуске базы данных запускаются фоновые процессы, и выделяется System Global Area (SGA) - Системная Глобальная Область. Совокупность фоновых процессов и буферов памяти называется инстанцией Oracle.

Структура памяти инстанции
Для выполнения некоторых задач Oracle создает в памяти пользовательские структуры. Например, в таких структурах хранится программный код, который должен быть запущен и данные, к которым обращаются несколько пользователей. Две базовые структуры памяти Oracle: System Global Area (Системная Глобальная Область) и Program Global Area (Программная Глобальная Область).

System Global Area
System Global Area (SGA) - это разделяемая, общая область памяти, которая содержит данные и служебную информацию инстанции Oracle. Oracle выделяет SGA во время запуска инстанции и возвращает память обратно, когда инстанция завершает работу. Каждая инстанция имеет свою SGA.
Пользователи, подключенные к базе данных, работаю с одной, общей областью SGA. Для увеличения производительности SGA должна быть как можно больше (конечно, с учетом физической памяти) чтобы хранить в памяти как можно больше информации, сокращая тем самым, число операций с диском. Информация, хранящаяся в SGA, делится на несколько типов: Database buffers (буферы базы данных), Redo log buffers (буферы отката) и Shared pool (общий, разделяемый пул).

Database Buffer Cache of the SGA (Кэш данных SGA)
Кэш данных SGA хранит наиболее часто используемые блоки данных. Buffer cache (буферный кэш) - это набор буферов данных инстанции. В кэше хранятся как изменяемые так и не изменяемые блоки. Т.к. наиболее часто используемые данные хранятся в памяти, сокращается число обращений к диску, это приводит к увеличению быстродействия.

Redo Log Buffer of the SGA (буфер отката SGA)
Буфер отката хранит redo entries (точки отката) - историю изменений базы данных. Точки отката хранятся в буфере отката SGA и записываются в online redo log, который используется при восстановлении базы данных. Размер буфера отката статичен.

Share Pool of the SGA (разделяемый, общий пул SGA)
Разделяемый пул хранит конструкции общего доступа, такие как общая область SQL. Общая область SQL используется для обработки каждого уникального SQL- запроса. Общая область SQL хранит разобранное дерево и план выполнения запроса. Одна область используется множеством приложений, которые выполняют одни и те же запросы. Такой механизм позволяет более эффективно использовать память.

Statement Handles or Cursors (Указатели выражений или курсоры)
Курсор - это указатель или имя закрытой области SQL, в которой хранится разобранный запрос и необходимая ему информация. Хотя большинство пользователей полагаются на автоматическое управление курсорами Oracle, программный интерфейс позволяет разработчикам приложений получить больший контроль над курсорами.
Например, в предкомпиляторе приложения курсор представляется как именованный ресурс, доступный программе и может быть использован специально для разбора SQL запросов, встроенных в приложение. Разработчик приложения может управлять разбором SQL запросов, увеличивая производительность программы.

Program Global Area (Программная Глобальная область)
Program Global Area (PGA) - это буфер памяти, который содержит данные и управляющую информацию серверных процессов. PGA создается, когда запускаются
серверные процессы. Информация, хранящаяся в PGA, зависит от конфигурации Oracle.

Oracle Background Processes (Фоновые процессы Oracle)
Oracle использует структуры памяти и процессы для управления базой данных и организации доступа к данным. Все структуры памяти находятся в оперативной памяти компьютеров, которые составляют систему базы данных. Процессы это задания, выполняемые в памяти этих компьютеров.
Архитектурные особенности, обсуждаемые в этой части документации, позволяют Oracle поддерживать возможность одновременной работы множества пользователей с одним набором данных.
Oracle создает набор фоновых процессов для каждой инстанции. Фоновые процессы объединяют в себе функции, которые иначе пришлось бы перенести во множество программ Oracle, которые запускались бы для каждого пользовательского процесса. Чтобы увеличить параллелизм и повысить производительность и надежность, процессы выполняют асинхронный ввод/вывод данных и координацию других процессов Oracle.

Архитектура процесса
Процесс - это "нить управления" или механизм операционной системы, который может выполнить серию действий. В некоторых операционных системах это называется job (работа), в некоторых tack (задача). В общем случае процесс имеет свою собственную область памяти, в которой он выполняется.
Сервер базы данных Oracle различает два общих вида процессов: пользовательские процессы и системные (процессы Oracle).

User (Client) Processes (Пользовательские(Клиентские) процессы)
Пользовательские процессы создаются и работают для выполнения программного кода приложения (например, OCI или OCCI программы) или утилит Oracle (например, Enterprise Manager). Кроме того, пользовательские процессы через программный интерфейс управляют связью с процессами сервера.

Процессы Oracle
Процессы Oracle вызываются другими процессами, для выполнения функций от имени вызывающего процесса. Oracle создает серверные процессы для выполнения запросов подключенных пользовательских процессов. Например, если пользователь запрашивает некоторые данные, которых еще нет в буферах данных SGA, связанный серверный процесс читает необходимые данные из блоков данных datafile'ов и помещает их в SGA. В Oracle есть возможность настроить, какое количество пользовательских процессов будет связано с серверным процессом. При конфигурации сервера dedicated (посвященный, предназначенный) серверный процесс обслуживает запросы только одного пользовательского процесса. При конфигурации сервера shared (общий, разделенный) множество пользовательских процессов работают с небольшим количеством общих серверных процессов, при этом уменьшается число серверных процессов и улучшается использование доступных системных ресурсов.
В некоторых системах пользовательские и системные процессы разделены, в других же объединены в единый процесс. Если система использует разделяемый сервер или если пользовательские и серверные процессы выполняются на разных компьютерах, то пользовательские и серверные процессы должны быть разделены. Клиент-серверная архитектура предполагает раздельный запуск пользовательских и серверных процессов на разных компьютерах.

Петрелевич Сергей
petrelevich@yandex.ru

Метки: Oracle Concepts  

Комментарии.

Внимание.
Комментировать могут только зарегистрированные пользователи.
Возможно использование следующих HTML тегов: <a>, <b>, <i>, <br>.