Управление информацией

Базы данных и управление информацией



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



Сервер ORACLE обеспечивает эффективные и действенные решения для основных средств баз данных:



управление большими базами данных и контроль управления пространством.



ORACLE поддерживает самые большие базы данных, потенциального размера до сотен гигабайт. Чтобы обеспечить действенный контроль за использованием дорогостоящих дисковых устройств, он предоставляет полный контроль распределения пространства.



много одновременных пользователей базы данных.



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



высокая производительность обработки транзакций.



ORACLE поддерживает все описанные выше средства, сохраняя высокую степень суммарной производительности системы



Пользователи базы данных не страдают от низкой производительности обработки.



высокая степень готовности.



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



управляемая доступность.



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



промышленные стандарты.



ORACLE удовлетворяет промышленно принятым стандартам по языку доступа к данным, операционным системам, интерфейсам с пользователем и сетевым протоколам. Это "открытая" система, которая защищает инвестиции заказчика.



Сервер ORACLE7 был сертифицирован Национальным институтом стандартов и технологий США как 100%-совместимый со стандартом ANSI/ISO SQL89. ORACLE7 полностью удовлетворяет требованиям правительственного стандарта США FIPS127-1 и имеет "маркировщик" для подчеркивания нестандартных применений SQL.



Кроме того, ORACLE7 был оценен Правительственным национальным центром компьютерной безопасности (NCSC) как совместимый с критериями защиты Оранжевой книги; сервер ORACLE7 и Trusted ORACLE7 отвечают соответственно как уровням C2 и B1 Оранжевой книги, так и сравнимым с ними европейским критериям защиты ITSEC.



управляемая защита.



Для защиты от несанкционированного доступа к базе данных ORACLE предоставляет защищенные от сбоев средства безопасности, лимитирующие и отслеживающие доступ к данным. Эти средства позволяют легко управлять даже наиболее сложными схемами доступа.



автоматизированное обеспечение целостности.



ORACLE автоматически поддерживает целостность данных, соблюдая "организационные правила", которые диктуют стандарты приемлемости данных. Как следствие, устраняются затраты на кодирование и сопровождение проверок в многочисленных приложениях базы данных.



окружение клиент/сервер (распределенная обработка).



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



системы распределенных баз данных.



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



переносимость.



Программное обеспечение ORACLE переносимо между различными операционными системами и одинаково во всех системах



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



совместимость.



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



связываемость.



Программное обеспечение ORACLE позволяет различным типам компьютеров и операционных систем совместно использовать информацию посредством сетей.



Структура базы данных и управление пространством



Этот раздел описывает архитектуру базы данных ORACLE, включая физическую и логическую структуры, которые образуют базу данных



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



 Реляционные СУБД.



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



Структуры - это хорошо определенные объекты, хранящие данные базы данных



Структурами и данными, хранящимися в них, можно манипулировать посредством операций.



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



Правила целостности - это законы, которые определяют, какие операции допускаются над данными и структурами базы данных. Правила целостности защищают структуры и данные базы данных.



Реляционные СУБД обладают следующими достоинствами:



независимость физической структуры данных и логической структуры базы данных

изменяемый и легкий доступ ко всем данным

полная гибкость в проектировании базы данных

уменьшение расхода памяти и сокращение избыточности данных



БАЗА ДАННЫХ ORACLE - это коллекция данных, рассматриваемая как единица. Главная цель базы данных - хранение и извлечение взаимосвязанной информации.



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



База данных ORACLE может быть ОТКРЫТА (доступна) или ЗАКРЫТА (недоступна). В обычных ситуациях база данных открыта и доступна для использования. Однако иногда база данных закрывается для специфических административных функций, которые требуют, чтобы данные в базе данных были недоступны пользователям.



Структура базы данных



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



 Физическая структура базы данных



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



Файлы базы данных предоставляют действительную физическую память для информации базы данных.



 Логическая структура базы данных



Логическая структура базы данных ORACLE определяется:



одним или несколькими табличными пространствами

объектами схем базы данных (таблицами, обзорами, индексами, кластерами, последовательностями, хранимыми процедурами)



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



 Логические структуры 



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



Табличные пространства



База данных разделяется на логические единицы хранения, называемые ТАБЛИЧНЫМИ ПРОСТРАНСТВАМИ. Табличное пространство служит для того, чтобы группировать вместе взаимосвязанные логические структуры. Например, в табличном пространстве обычно группируются все объекты приложения, чтобы упростить некоторые административные операции.



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



Каждая база данных логически разделяется на одно или более табличных пространств.

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

Общая емкость памяти табличного пространства определяется суммой размеров файлов данных, составляющих это табличное пространство (на рисунке SYSTEM имеет емкость 2M, а DATA - 4M).

Суммарная емкость всех табличных пространств базы данных составляет общую емкость базы данных (6M).



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



Табличное пространство может находиться в состояниях ОНЛАЙН (доступно) или ОФЛАЙН (недоступно). Обычно табличное пространство находится в онлайне, так что пользователи имеют доступ к информации в нем. Однако иногда табличное пространство может переводиться в офлайн, чтобы сделать часть базы данных недоступной, сохраняя в то же время нормальный доступ к остальной части базы данных. Это облегчает выполнение многих административных задач.



Схемы и объекты схем



СХЕМА - это коллекция объектов. ОБЪЕКТЫ СХЕМЫ - это логические структуры, непосредственно относящиеся к данным базы данных



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



 Таблицы

 ТАБЛИЦА - это основная единица хранения данных в базе данных ORACLE. Таблицы базы данных хранят все данные, доступные пользователям.



Данные таблицы хранятся в виде СТРОК и СТОЛБЦОВ. Каждая таблица определяется с ИМЕНЕМ ТАБЛИЦЫ и набором столбцов. Каждому столбцу дается ИМЯ СТОЛБЦА, ТИП ДАННЫХ (такой как CHAR, DATE или NUMBER), а также ШИРИНА (которая может быть предопределена типом данных, как в случае DATE) или МАСШТАБ и ТОЧНОСТЬ (только для типа данных NUMBER). После того, как таблица создана, в нее могут быть вставлены строки действительных данных. После этого строки таблицы можно опрашивать, удалять или обновлять.



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



 Обзоры ОБЗОР - это настроенное по заказу представление данных из одной или нескольких таблиц. Обзор можно рассматривать как "хранимый запрос".



Обзоры в действительности не содержат данных; вместо этого они доставляют данные из тех таблиц, на которых они основаны (так называемых БАЗОВЫХ ТАБЛИЦ обзоров). Базовые таблицы, в свою очередь, могут быть как таблицами, так и обзорами.



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



Широкое применение обзоров обусловлено следующими их свойствами:



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

Обзоры позволяют скрыть сложность данных. Например, единственный обзор может служить для построения СОЕДИНЕНИЯ, которое является отображением взаимосвязанных столбцов или строк из нескольких таблиц. Однако такой обзор скрывает тот факт, что эти данные на самом деле принадлежат разным таблицам

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

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

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



 Последовательности



ПОСЛЕДОВАТЕЛЬНОСТЬ генерирует уникальные порядковые номера, которые могут использоваться как значения числовых столбцов таблиц базы данных. Последовательности упрощают прикладное программирование, автоматически генерируя уникальные числовые значения для строк одной или нескольких таблиц.



Например, предположим, что двое пользователей одновременно вставляют строки о новых сотрудниках в таблицу EMP. Благодаря использованию последовательности для генерации уникальных номеров сотрудников для столбца EMPNO, никто из них не должен ожидать другого, чтобы ввести очередной свободный номер сотрудника. Последовательность автоматически генерирует правильное значение для каждого из пользователей.



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



 Программные единицы



ПРОЦЕДУРА или ФУНКЦИЯ - это совокупность предложений SQL и PL/SQL, сгруппированных вместе как выполнимая единица, исполняющая специфическую задачу. 



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



С помощью PL/SQL такие процедуры и функции можно определять и сохранять в базе данных для продолжительного использования.



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



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



 Синонимы



СИНОНИМ - это алиас (дополнительное имя) для таблицы, обзора, последовательности или программной единицы. Синоним не есть объект, но он является прямой ссылкой на объект. Синонимы используются для:



маскировки действительного имени и владельца объекта

обеспечения общего доступа к объекту

достижения прозрачности местоположения для таблиц, обзоров или программных единиц удаленной базы данных

упрощения кодирования предложений SQL для пользователей базы данных



Синоним может быть общим или личным. Индивидуальный пользователь может создать ЛИЧНЫЙ СИНОНИМ, который доступен только этому пользователю. Администраторы баз данных чаще всего создают ОБЩИЕ СИНОНИМЫ, благодаря которым объекты базовых схем становятся доступными для общего пользования всем пользователям базы данных.



 Индексы, кластеры и хэшированные кластеры



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



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



Индексы создаются по одному или нескольким столбцам таблицы



Однажды созданный, индекс автоматически поддерживается и используется ORACLE. Изменения в данных таблицы (такие как добавление новых строк, обновление или удаление строк) автоматически отражаются во всех соответствующих индексах при полной прозрачности для пользователей.



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



КЛАСТЕРЫ предоставляют необязательный способ хранения данных таблиц. Кластер - это группа из одной или нескольких таблиц, физически хранящихся вместе, так как они имеют общие столбцы м часто используются совместно. Ввиду того, что взаимосвязанные строки хранятся физически близко друг от друга, время дискового доступа сокращается.



Взаимосвязанные столбцы таблиц в кластере называются КЛЮЧОМ КЛАСТЕРА. Ключ кластера индексируется, так что строки кластера могут извлекаться с минимальными затратами на ввод-вывод



Поскольку данные ключа кластера в индексированном (не хэшированном) кластере хранятся в одном экземпляре для всех таблиц кластера, достигается экономия пространства по сравнению с обычными (некластеризованными) таблицами. 



 Кластеризованные таблицы: Некластеризованные таблицы:



 Связанные данные хранятся Связанные данные хранятся вместе, более эффективно отдельно, занимая больше места



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



Как и индексы, кластеры не влияют на проектирование приложений



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



ХЭШИРОВАННЫЕ КЛАСТЕРЫ похожи на обычные, индексированные, кластеры. Однако в хэшированных кластерах строки записываются не на основе ключа кластера, а на основе значения ФУНКЦИИ ХЭШИРОВАНИЯ, применяемой к ключу кластера. Все строки с одинаковым значением такого хэш-ключа хранятся на диске вместе.



Хэшированные кластеры выигрывают по сравнению с индексированной таблицей и индексированным кластером, когда таблица часто опрашивается на равенство (например, выбираются все строки по отделу 10). Для таких запросов значения указанного ключа кластера хэшируются, и результирующие значения хэш-ключа прямо указывают на участок диска, в котором хранятся соответствующие строки.



 Связи баз данных



СВЯЗЬ БАЗ ДАННЫХ - это именованный объект, который описывает "путь" от одной базы данных к другой. Связи баз данных неявно используются при обращении к ГЛОБАЛЬНОМУ ИМЕНИ ОБЪЕКТА в распределенной базе данных. 



Блоки данных, экстенты и сегменты



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



 Блоки данных ORACLE На самом низком уровне, данные базы данных ORACLE хранятся в БЛОКАХ ДАННЫХ. Один блок данных соответствует специфическому числу байт физического пространства на диске. Размер блока данных указывается для каждой базы данных ORACLE при ее создании. База данных использует и распределяет свободное пространство в блоках данных ORACLE.



 Экстенты Следующий уровень логического пространства в базе данных называется экстентом. ЭКСТЕНТ - это специфическое число непрерывных блоков данных, полученных за одно распределение и используемых для хранения специфического типа информации.



 Сегменты Уровень логического пространства в базе данных, следующий за экстентом, называется сегментом. СЕГМЕНТ - это набор экстентов, распределенных для конкретной логической структуры. Например, различные типы сегментов включают:



Сегмент данных Каждая некластеризованная таблица имеет сегмент данных. Все данные таблицы хранятся в экстентах ее сегмента данных



Каждый кластер имеет сегмент данных



Данные каждой таблицы кластера хранятся в сегменте данных этого кластера.



Сегмент индекса Каждый индекс имеет сегмент индекса, в котором хранятся все данные индекса.



Сегмент отката Администратор создает в базе данных один или несколько сегментов отката для временного хранения информации "отмены"



Эта информация служит:

для генерации согласованных по чтению образов информации базы данных

для восстановления базы данных

для отката неподтвержденных транзакций пользователей.



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



ORACLE распределяет память для всех типов сегментов экстентами



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



 Физические структуры 



Последующие секции объясняют физические структуры базы данных ORACLE, включая файлы данных, файлы журнала повторения работы и управляющие файлы.



Файлы данных



Каждая база данных ORACLE имеет один или более физических ФАЙЛОВ ДАННЫХ. Эти файлы содержат все данные базы данных. Данные логических структур базы данных, таких как таблицы и индексы, физически хранятся в файлах данных, распределенных для базы данных.



Файлы данных имеют следующие характеристики:



Файл данных может быть ассоциирован лишь с одной базой данных.

Однажды созданный файл данных не может изменить свой размер.

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



 Использование файлов данных



Данные в файле данных считываются по мере необходимости во время нормальной работы базы данных, и размещаются в кэше памяти ORACLE. Например, предположим, что пользователь хочет обратиться к некоторым данным в таблице базы данных. Если запрошенная информация еще не находится в кэше памяти для базы данных, она считывается из соответствующих файлов данных и размещается в памяти.



Модифицированные или новые данные необязательно записываются в файл данных немедленно. Чтобы уменьшить объем дисковых операций и увеличить производительность, данные накапливаются в памяти, и записываются в соответствующие файлы данных одномоментно, как определяется фоновым процессом ORACLE, называемым DBWR. 



Файлы журнала повторения



Каждая база данных ORACLE имеет набор из двух или более ФАЙЛОВ ЖУРНАЛА ПОВТОРЕНИЯ РАБОТЫ. Комплект файлов журнала повторения работы для одной базы данных совместно называется ЖУРНАЛОМ ПОВТОРЕНИЯ (redo log). Основная функция журнала повторения - регистрация всех изменений, осуществляемых в данных. Все изменения, выполняемые в базе данных, записываются в журнал повторения. Если в результате сбоя модифицированные данные не удастся постоянно записать в файлы данных, эти изменения можно получить из журнала повторения, так что работа никогда не теряется.



Файлы журнала повторения критичны в вопросе защиты базы данных от сбоев. Чтобы защититься от таких сбоев, которые затрагивают сам журнал повторения, ORACLE допускает ЗЕРКАЛЬНЫЙ ЖУРНАЛ ПОВТОРЕНИЯ, так что две или более копий журнала повторения можно поддерживать одновременно на разных дисках.



 Использование файлов журнала повторения



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



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



Процесс применения журнала повторения в процессе операции восстановления базы данных называется ПРОКРУТКОЙ ВПЕРЕД. 



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



Каждая база данных ORACLE имеет УПРАВЛЯЮЩИЙ ФАЙЛ, в котором записывается физическая структура базы данных. В частности, этот файл содержит следующую информацию:



имя базы данных

имена и местоположения файлов данных и файлов журнала повторения этой базы данных

отметку времени создания базы данных



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



 Использование управляющих файлов



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



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



Словарь данных 



Каждая база данных ORACLE имеет СЛОВАРЬ ДАННЫХ. Он представляет собой набор таблиц и обзоров, используемых как ТОЛЬКО ЧИТАЕМОЕ представление базы данных. Например, в словаре данных хранится информация о логической и физической структуре базы данных



Помимо этой важной информации, словарь данных хранит также следующую информацию:



о действительных пользователях базы данных ORACLE

об ограничениях целостности, определенных для таблиц базы данных

о том, сколько пространства распределено для каждого объекта схемы, и сколько из него используется



Словарь данных создается при создании самой базы данных. Чтобы точно отражать состояние базы данных в любой момент, словарь данных автоматически обновляется ORACLE в ответ на специальные действия (такие как изменение структуры базы данных). Словарь данных критичен для работоспособности базы данных, ибо на нем основывается регистрация, верификация и управление текущей работой. Например, во время операций с базой данных ORACLE обращается к словарю данных для проверки того, что объекты схем существуют и что пользователи имеют к ним соответствующие права доступа.



Системная архитектура ORACLE



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



Структуры памяти и процессы 



Механизмы ORACLE работают через использование структур памяти и процессов. Все структуры памяти располагаются в основной памяти (иногда называемой виртуальной памятью или памятью произвольного доступа) компьютеров, составляющих систему базы данных



ПРОЦЕССЫ - это задания или задачи, работающие в памяти этих компьютеров.



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



ORACLE создает и использует свои структуры памяти для выполнения некоторых задач. Например, память используется для размещения исполняемого программного кода и данных, разделяемых между пользователями. С ORACLE ассоциируются несколько базовых структур памяти: глобальная область системы (которая включает буфера базы данных и журнала повторения, а также разделяемый пул) и глобальные области программ. Следующие секции подробно объясняют каждую из этих видов областей.



Глобальная область системы (SGA) ГЛОБАЛЬНАЯ ОБЛАСТЬ СИСТЕМЫ (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) - это буфер памяти, содержащий данные и управляющую информацию для процесса сервера



PGA создается ORACLE при запуске процесса сервера. Информация в области PGA зависит от конфигурации ORACLE.



Процессы --------



ПРОЦЕСС - это "канал управления", механизм в операционной системе, который исполняет последовательность шагов. Некоторые операционные системы используют термины ЗАДАНИЕ или ЗАДАЧА



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



СУБД ORACLE имеет два общих типа процессов: пользовательские процессы и процессы ORACLE.



Пользовательские процессы (клиенты)



ПОЛЬЗОВАТЕЛЬСКИЙ ПРОЦЕСС создается и поддерживается для исполнения программного кода прикладной программы (такой как программа Pro*C) или инструмента ORACLE (такого как SQL*DBA)



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



Процессы ORACLE



ПРОЦЕССЫ ORACLE вызываются другими процессами для того, чтобы выполнять функции от имени вызывающего процесса. Ниже обсуждаются различные типы процессов ORACLE и их специфические функции.



 Процессы сервера ORACLE создает ПРОЦЕССЫ СЕРВЕРА, чтобы обрабатывать запросы от присоединенных пользовательских процессов. Процесс сервера отвечает за связь с пользовательским процессом и за взаимодействие с ORACLE для выполнения запросов ассоциированного пользовательского процесса. Например, если пользователь запрашивает данные, которых еще нет в буферах базы данных в SGA, то ассоциированный процесс сервера считывает соответствующие блоки данных из файлов данных в SGA.



ORACLE можно конфигурировать на различное число пользовательских процессов на один процесс сервера. В КОНФИГУРАЦИИ ВЫДЕЛЕННОГО СЕРВЕРА каждый процесс сервера обрабатывет запросы для одного пользовательского процесса. КОНФИГУРАЦИЯ МНОГОКАНАЛЬНОГО СЕРВЕРА позволяет многим пользовательским процессам совместно использовать небольшое число процессов сервера, минимизируя количество процессов сервера и максимизируя утилизацию доступных системных ресурсов.



В некоторых системах пользовательский и серверный процессы разделены, тогда как в других системах они объединены в единый процесс. Если система конфигурирована на многоканальный сервер, или если пользовательские и серверные процессы работают на разных машинах, то пользовательский процесс и процесс сервера должны быть раздельными.



 Фоновые процессы



ORACLE создает множество ФОНОВЫХ ПРОЦЕССОВ для каждой инстанции



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



Область SGA и фоновые процессы ORACLE в совокупности составляют инстанцию ORACLE.

Каждая инстанция ORACLE может использовать несколько фоновых процессов. Эти процессы имеют следующие имена: DBWR, LGWR, CKPT, SMON, PMON, ARCH, RECO, Dnnn и LCKn. Каждый из этих фоновых процессов описан ниже.



 Писатель базы данных (DBWR)



ПИСАТЕЛЬ БАЗЫ ДАННЫХ записывает модифицированные блоки из буферного кэша базы данных в файлы данных. Благодаря способу, которым ORACLE осуществляет журнализацию, процессу DBWR не требуется записывать эти блоки при завершении транзакции

Вместо этого DBWR оптимизирован так, чтобы минимизировать обращения к диску. В общем случае, DBWR выполняет запись лишь тогда, когда в SGA требуется прочитать очередную порцию данных, а в буферном кэше недостает свободных буферов. Первыми записываются те данные, к которым было самое давнее обращение.



 Писатель журнала (LGWR)



ПИСАТЕЛЬ ЖУРНАЛА записывает на диск записи журнала повторения



Эти записи генерируются в буфере журнала повторения в SGA. Когда транзакция завершается и буфер журнала заполняется, LGWR переписывает записи журнала повторения в файл журнала повторения.



 Контрольная точка (CKPT)



В специфические моменты времени все модифицированные буфера в SGA записываются процессом DBWR в файлы данных; это событие называется контрольной точкой. Процесс КОНТРОЛЬНОЙ ТОЧКИ отвечает за своевременную сигнализацию процессу DBWR о контрольных точках и обновление всех файлов данных и управляющих файлов базы данных, чтобы отразить последнюю контрольную точку



Процесс CKPT не обязателен; если он отсутствует, его функции берет на себя процесс LGWR.



 Монитор системы (SMON)



МОНИТОР СИСТЕМЫ осуществляет восстановление инстанции во время запуска инстанции. В системе с несколькими инстанциями (при использовании Параллельного сервера), процесс SMON одной инстанции может также осуществлять восстановление других сбившихся инстанций. SMON также очищает временные сегменты, которые больше не используются, и восстанавливает мертвые транзакции, пропущенные после сбоя и восстановления инстанции в результате сбоев файлов или офлайновых ошибок. Процесс SMON в конечном счете восстанавливает такие транзакции, когда табличное пространство или файл переводится в онлайн. SMON также сжимает свободные экстенты в базе данных, чтобы сделать свободное пространство непрерывным и более доступным для распределения.



 Монитор процессов (PMON)



МОНИТОР ПРОЦЕССОВ осуществляет восстановление процесса после сбоя пользовательского процесса. PMON отвечает за очистку кэша и освобождение ресурсов, использовавшихся процессом. PMON также контролирует диспетчерские и серверные процессы, и рестартует их, если они сбиваются.



 Архиватор (ARCH)



АРХИВАТОР копирует онлайновые файлы журнала повторения в архивную память, когда они переполняются. ARCH активен лишь тогда, когда журнал повторения используется в режиме ARCHIVELOG.



 Восстановитель (RECO)



ВОССТАНОВИТЕЛЬ используется для разрешения распределенных транзакций, зависших в результате сетевого или системного сбоя в распределенной базе данных. В моменты, определяемые таймером, локальный RECO пытается соединиться с удаленными базами данных и автоматически подтвердить или отменить локальную порцию каждой висящей распределенной транзакции.



 Диспетчер (Dnnn)



ДИСПЕТЧЕРЫ - это необязательные фоновые процессы, существующие лишь в конфигурации многоканального сервера. По меньшей мере один диспетчерский процесс создается для каждого используемого коммуникационного протокола (D000, ..., Dnnn). Каждый диспетчерский процесс отвечает за маршрутизацию запросов от присоединенных пользовательских процессов к доступным разделяемым серверным процессам, и за возвращение ответов обратно в ассоциированные пользовательские процессы.



 Блокировка (LCKn)



До десяти процессов БЛОКИРОВКИ (LCK0, ..., LCK9) используются для межинстанционных блокировок в среде Параллельного сервера ORACLE.



 Программный интерфейс 



ПРОГРАММНЫЙ ИНТЕРФЕЙС - это механизм, посредством которого пользовательский процесс общается с процессом сервера. Он выступает как метод стандартной коммуникации между любым инструментом или приложением клиента (таким как SQL*Forms) и программным обеспечением ORACLE. Программный интерфейс должен:



действовать как механизм коммуникации, форматируя запросы на данные, передавая данные, перехватывая и возвращая ошибки

выполнять преобразование и трансляцию данных, в частности, между разными типами компьютеров, или во внешние типы данных программы пользователя



Коммуникационное программное обеспечение и SQL*Net



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