Общая характеристика продуктов Oracle
Все продукты Oracle (СУБД, средства разработки, средства
для конечного пользователя, сетевые компоненты) являются открытыми,
масштабируемыми и программируемыми. Они позволяют разрабатывать приложения, как
уровня небольшой рабочей группы, так и уровня огромного предприятия с тысячами пользователей, терабайтными базами, размещенными в
различных зданиях и даже странах.
Средства Oracle позволяют надежно защитить эти данные,
обеспечить их целостность и непротиворечивость. Продукты Oracle работают более
чем на ста вычислительных платформах (компьютер + операционная система),
поддерживают все основные промышленные сетевые протоколы и графические оконные
среды. Это позволяет с минимальными затратами переносить готовые приложения с
одной платформы на другую. Например, разработав приложение на однопроцессорном
персональном компьютере с MS Windows, можно далее
выполнять его на Unix-машинах, больших IBM машинах, SMP и MPP архитектурах,
высоконадежных и кластерных архитектурах.
Вообще же Oracle обеспечивает надежную защиту
данных как от несанкционированного доступа (роли, привилегии, ограничения на
использование ресурсов компьютера), так и от всевозможных сбоев. Какой бы сбой
не произошел (вплоть до уничтожения дисков), всегда существует возможность
восстановить систему либо к моменту, предшествовавшему сбою, либо к заданному моменту
времени. При большинстве сбоев восстановление БД выполняется автоматически.
Oracle позволяет реализовать системы, работающие непрерывно (24 часа, 7 дней в
неделю). При этом операции копирования и восстановления БД не снижают
производительность работы пользователей.
При создании приложений возможно часть обработки
и контроля данных вынести на сервер. Oracle реализует мощный механизм
декларативных и процедурных ограничений целостности (вплоть до каскадных
операций), позволяет создавать хранимые процедуры, триггеры БД, функции, алерты, пакеты процедур и функций, задавать расписание для
автоматического выполнения работ.
Для защиты от
несанкционированного доступа к базе данных ORACLE предоставляет защищенные от
сбоев средства безопасности, лимитирующие и отслеживающие доступ к данным. Эти
средства позволяют легко управлять даже наиболее сложными схемами доступа. Автоматизированное
обеспечение целостности ORACLE автоматически поддерживает целостность данных,
соблюдая "организационные правила", которые диктуют стандарты
приемлемости данных. Как следствие, устраняются затраты на кодирование и
сопровождение проверок в многочисленных приложениях базы данных.
Чтобы извлечь максимум
преимуществ из данной компьютерной системы или сети, ORACLE позволяет разделять
работу между сервером базы данных и прикладными программами клиентов. Вся
тяжесть управления совместно используемыми данными может быть сосредоточена в
компьютере, выполняющем СУБД, в то время как рабочие станции, на которых
работают приложения, могут сконцентрироваться на интерпретации и отображении
данных.
В компьютерных
окружениях, соединенных сетями, ORACLE комбинирует данные, физически
находящиеся на разных компьютерах, в одну логическую базу данных, к которой
имеют доступ все пользователи сети. Распределенные системы обладают такой же
степенью прозрачности для пользователей и согласованности данных, что и
нераспределенные системы, предоставляя в то же время преимущества управления
локальной базой данных.
Структура
памяти
Механизмы ORACLE
работают через использование структур памяти и процессов. Все структуры памяти
располагаются в основной памяти (иногда называемой виртуальной памятью или
памятью произвольного доступа) компьютеров, составляющих систему базы данных. Процессы
- это задания или задачи, работающие в памяти этих компьютеров. ORACLE создает
и использует свои структуры памяти для выполнения некоторых задач. Например,
память используется для размещения исполняемого программного кода и данных,
разделяемых между пользователями. С ORACLE ассоциируются несколько базовых
структур памяти: глобальная область системы (которая включает буферы базы данных и журнала повторения, а также разделяемый пул) и глобальные области программ.
Глобальная область системы (SGA) - это область разделяемой памяти, распределяемая ORACLE,
которая содержит данные и управляющую информацию для одной инстанции ORACLE.
Область SGA и фоновые процессы ORACLE составляют инстанцию ORACLE. SGA
распределяется при запуске инстанции и освобождается при закрытии инстанции.
Каждая запускающаяся инстанция имеет свою собственную область SGA. Данные в SGA
разделяются (т.е. совместно используются) всеми пользователями, присоединенными
к базе данных. Для оптимальной производительности SGA должна быть максимально
большой (пока позволяет реальная память), чтобы держать как можно больше данных
в памяти и минимизировать дисковые операции. Информация, хранящаяся в SGA,
подразделяется на несколько типов структур памяти, включая буферы базы данных,
буферы журнала повторения и разделяемый пул. Эти области имеют фиксированные
размеры и создаются при запуске инстанции. Буферный кэш базы данных в SGA хранит
наиболее недавно использовавшиеся блоки данных из базы данных; его составляет все
множество буферов базы данных в инстанции. Эти буферы могут содержать
модифицированные данные, которые еще не записаны на диск для постоянного
хранения. Поскольку последние использовавшиеся (в том числе и наиболее часто
использующиеся) данные поддерживаются в памяти, требуется меньше дисковых
операций, и производительность увеличивается. Буфер журнала повторения в SGA
хранит записи повторения - журнал изменений, осуществленных в базе данных.
Записи повторения, хранящиеся в буферах журнала повторения, записываются в
онлайновый файл журнала, который используется при необходимости восстановления
базы данных. Его размер статичен. Разделяемый пул - это часть SGA,
содержащая конструкты разделяемой памяти, такие как разделяемые области SQL.
Разделяемая область SQL требуется для обработки каждого уникального предложения
SQL, выданного базе данных. Разделяемая область SGA содержит такую информацию,
как дерево разбора и план исполнения для соответствующего предложения.
Единственная разделяемая область SGA используется всеми приложениями, которые
выдают то же самое предложение. Это позволяет оставлять больше разделяемой
памяти для других целей.
Курсор - это описатель (имя или указатель) области памяти,
ассоциированной с конкретным предложением. Хотя большинство пользователей
ORACLE полагаются на автоматическую обработку курсоров, обеспечиваемую
утилитами ORACLE, программные интерфейсы предлагают разработчикам приложений
большую степень контроля над курсорами. Например, при разработке приложений предкомпиляторов
курсор является именованным ресурсом, доступным программе, и может специально
использоваться для разбора предложений SQL, встроенных в приложение.
Разработчик может написать приложение так, чтобы оно контролировало фазы
исполнения предложения SQL и за счет этого повышало свою производительность.
Глобальная область
программы (PGA) - это буфер памяти,
содержащий данные и управляющую информацию для процесса сервера. PGA создается
ORACLE при запуске процесса сервера. Информация в области PGA зависит от
конфигурации ORACLE.
Каждая база данных ORACLE имеет один или более
физических файлов данных. Эти файлы содержат все данные базы данных. Данные
логических структур базы данных, таких как таблицы и индексы, физически
хранятся в файлах данных, распределенных для базы данных. Файл данных может
быть ассоциирован лишь с одной базой данных. Однажды созданный файл данных не
может изменить свой размер. Один или несколько файлов данных формируют
логическую единицу пространства базы данных, называемую табличным
пространством. Данные в файле данных считываются по мере необходимости во время
нормальной работы базы данных, и размещаются в Кэш памяти ORACLE.
Модифицированные или новые данные необязательно записываются в файл данных
немедленно. Чтобы уменьшить объем дисковых операций и увеличить
производительность, данные накапливаются в памяти, и записываются в
соответствующие файлы данных одномоментно, как определяется фоновым процессом
ORACLE, называемым DBWR.
Каждая база данных ORACLE имеет набор из двух или
более файлов журнала повторения работы. Комплект файлов журнала повторения
работы для одной базы данных совместно называется журналом повторения (redo log). Основная функция журнала повторения - регистрация
всех изменений, осуществляемых в данных. Все изменения, выполняемые в базе
данных, записываются в журнал повторения. Если в результате сбоя
модифицированные данные не удастся постоянно записать в файлы данных, эти
изменения можно получить из журнала повторения, так что работа никогда не
теряется. Файлы журнала повторения критичны в вопросе защиты базы данных от сбоев.
Чтобы защититься от таких сбоев, которые затрагивают сам журнал повторения,
ORACLE допускает зеркальный журнал повторения, так что две или более копий
журнала повторения можно поддерживать одновременно на разных дисках. Информация
в файле журнала повторения используется только для восстановления базы данных
после сбоя системы или носителя, в результате которого данные базы данных не
могут быть записаны в файлы данных. Например, когда неожиданное отключение
питания резко прерывает работу базы данных, данные в памяти
не могут быть записаны в файлы данных. Однако все потерянные данные
могут быть восстановлены при последующем открытии базы данных после устранения
неисправности в питании. ORACLE автоматически применяет к файлам базы данных
все изменения, зарегистрированные в самых последних файлах журнала повторения,
и восстанавливает базу данных в состояние на момент сбоя. Процесс применения
журнала повторения в процессе операции восстановления базы данных называется прокруткой
вперед.
Каждая база данных ORACLE имеет управляющий файл, в котором
записывается физическая структура базы данных. В частности, этот файл содержит
следующую информацию: имя базы данных, имена и местоположения файлов данных и
файлов журнала повторения этой базы данных, отметку времени создания базы
данных. Как и для журнала повторения, ORACLE позволяет поддерживать зеркальные
управляющие файлы с целью защиты управляющей информации. При каждом запуске
инстанции базы данных ORACLE ее управляющий файл используется для того, чтобы
идентифицировать базу данных и файлы журнала повторения, которые должны быть
открыты для продолжения работы базы данных. Когда физический состав базы данных
изменяется (например, создается новый файл данных или файл журнала), ORACLE
автоматически модифицирует управляющий файл, чтобы отразить это изменение.
Управляющий файл базы данных используется также в тех случаях, когда требуется
восстановление базы данных.
Каждая база данных ORACLE имеет словарь данных. Он представляет
собой набор таблиц и обзоров, используемых, как только читаемое представление
базы данных. Например, в словаре данных хранится информация о логической и
физической структуре базы данных. Помимо этой важной информации, словарь данных
хранит также следующую информацию: о действительных пользователях базы данных
ORACLE, об ограничениях целостности, определенных для таблиц базы данных, о
том, сколько пространства распределено для каждого объекта схемы, и сколько из
него используется. Словарь данных создается при создании самой базы данных.
Чтобы точно отражать состояние базы данных в любой момент, словарь данных
автоматически обновляется ORACLE в ответ на специальные действия (такие как
изменение структуры базы данных). Словарь данных критичен для работоспособности
базы данных, ибо на нем основывается регистрация, верификация и управление
текущей работой. Например, во время операций с базой данных ORACLE обращается к
словарю данных для проверки того, что объекты схем существуют и что
пользователи имеют к ним соответствующие права доступа.
Процессы
Процесс - это
"канал управления", механизм в операционной системе, который
исполняет последовательность шагов. Некоторые операционные системы используют
термины «задание» или «задача». Процесс обычно имеет собственную область личной
памяти, в которой он работает. СУБД ORACLE имеет два общих типа процессов:
пользовательские процессы и процессы ORACLE. Пользовательский процесс
создается и поддерживается для исполнения программного кода прикладной
программы (такой как программа Pro*C) или инструмента
ORACLE (такого как SQL*DBA). Пользовательский процесс также управляет взаимодействием
с процессами сервера.
Процессы ORACLE вызываются другими процессами для того,
чтобы выполнять функции от имени вызывающего процесса.
ORACLE создает процессы сервера, чтобы обрабатывать
запросы от присоединенных пользовательских процессов. Процесс сервера (механизмы
выполнения программного кода) отвечает за связь с
пользовательским процессом и за взаимодействие с ORACLE для выполнения запросов
ассоциированного пользовательского процесса. Например, если пользователь
запрашивает данные, которых еще нет в буферах базы данных в SGA, то
ассоциированный процесс сервера считывает соответствующие блоки данных из файлов данных в SGA. ORACLE можно конфигурировать на
различное число пользовательских процессов, на один процесс сервера. В конфигурации
выделенного сервера каждый процесс сервера обрабатывает запросы для одного
пользовательского процесса. Конфигурация многоканального сервера позволяет
многим пользовательским процессам совместно использовать небольшое число
процессов сервера, минимизируя количество процессов сервера и максимизируя
утилизацию доступных системных ресурсов. В некоторых системах
пользовательский и серверный процессы разделены, тогда как в других системах
они объединены в единый процесс. Если система конфигурирована на
многоканальный сервер, или если пользовательские и серверные процессы работают
на разных машинах, то пользовательский процесс и процесс сервера должны быть
раздельными.
ORACLE создает
множество фоновых процессов для каждой инстанции. В фоновых процессах
сосредоточены те функции, которые иначе пришлось бы выполнять множеством
программ ORACLE, запускаемых для каждого пользовательского процесса. Фоновые
процессы асинхронно выполняют операции ввода-вывода и отслеживают другие
процессы ORACLE, обеспечивая лучший параллелизм и улучшая производительность и
надежность. Область SGA и фоновые процессы ORACLE в совокупности составляют инстанцию
ORACLE (конкретная реализация системы). Каждая инстанция ORACLE может
использовать несколько фоновых процессов.