Основные положения реляционной модели БД. Введение в структурированный язык запросов - SQL

30.07.2019 Роутеры и модемы

Структура реляционной БД.

Типы БД.

Основные возможности СУБД.

Понятие базы данных, СУБД.

План

ТЕРМИНЫ : база данных, система управления базами данных (СУБД),

реляционная БД, запись БД, поле БД, ключевое поле БД, таблица БД, запрос БД, форма БД, отчёт БД, макрос БД, модуль БД.

Одной из основных сфер использования компьютера в современном информационном обществе является хранение и обработка больших объёмов информации.

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

Далее на примере одной из самых распространенных систем управления базами данных - Microsoft Access входит в состав популярного пакета Microsoft Office - мы познакомимся с основными типами данных, способами создания баз данных и с приемами работы с базами данных.

База данных - организованная совокупность данных, предназначенная для длительного хранения во внешней памяти ЭВМ и постоянного применения. Для хранения БД может использоваться как один компьютер, так и множество взаимосвязанных компьютеров.

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

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

В настоящее время наибольше распространение получили СУБД Microsoft Access, FoxPro , dBase . СУБД делятся по способу организации баз данных на сетевые, иерархические и реляционные СУБД.

Основные возможности СУБД:

ü Обновление, пополнение и расширение БД.

ü Высокая надёжность хранения информации.

ü Вывод полной и достоверной информации на запросы.

ü Средства защиты информации в БД.

БД бывают фактографическими и документальными .

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

Для хранения БД может использоваться как один компьютер, так и множество взаимосвязанных компьютеров.

Если различные части одной БД хранятся на множестве компьютеров, объединённых между собой сетью, то такая БД называется распределённой базой данных .

Известны три основных типа организации данных в БД и связей между ними:

· иерархический (в виде дерева),

· сетевой,

· реляционной .

В иерархической БД существует упорядоченность элементов в записи, один элемент считается главным, остальные – подчинёнными. Поиск какого-либо элемента данных в такой системе может оказаться трудоёмким из-за необходимости последовательно проходить несколько иерархических уровней.

Пример : иерархическую БД образует каталог файлов, хранимый на диске.

Такой же БД является родовое генеалогическое древо.

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

Реляционными БД (от англ. relation – «отношение») называются БД, содержащие информацию в виде прямоугольных таблиц. Согласно этому подходу, такая таблица называется отношением. Каждая строка таблицы содержит информацию об одном отдельном объекте описываемой в БД предметной области, а каждый столбец – определённые характеристики (свойства, атрибуты) этих объектов. Реляционная база данных, по сути, представляет собой двумерную таблицу . В реляционной БД используются четыре основных типов полей:

· Числовой,

· Символьный (слова, тексты, коды и т.д.),

· Дата (календарные даты в форме «день/месяц/год»),

· Логический (принимает два значения: «да» - «нет» или «истина» - «ложь»).

Окно базы данных содержит следующие элементы:

ü Кнопки : «СОЗДАТЬ» , «ОТКРЫТЬ» , «КОНСТРУКТОР» и т. д. Кнопки открывают объект в определенном окне или режиме.

ü Кнопки объектов . (Корешки выбора объектов, ярлычки.) «Таблица» , «Форма» и т. д. Кнопки объектов выводят список объектов, которые могут быть открыты или закрыты.

ü Список объектов. Выводит список объектов, выбираемых пользователем. В нашем варианте список пока пуст.

Основные объекты баз данных:

· Таблица – это объект, предназначенный для хранения данных в виде записей (строк) и полей (столбцов). Обычно каждая таблица используется для хранения сведений по одному конкретному вопросу.

· Форма – это объект Microsoft Access, предназначенный, в основном, для ввода данных. В форме можно разместить элементы управления, применяемые для ввода, изображения и изменения данных в полях таблицы.

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

· Отчет – объект базы данных Microsoft Access, предназначенный для печати данных.

· Макросы – автоматизируют стандартные действия.

· Модули – автоматизируют сложные операции, которые нельзя описать макросами.

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

  • Структурный аспект (составляющая) - данные в базе данных представляют собой набор отношений.
  • Аспект (составляющая) целостности - отношения (таблицы) отвечают определенным условиям целостности. РМД поддерживает декларативные ограничения целостности уровня домена (типа данных), уровня отношения и уровня базы данных.
  • Аспект (составляющая) обработки (манипулирования) - РМД поддерживает операторы манипулирования отношениями (реляционная алгебра, реляционное исчисление).

Кроме того, в состав реляционной модели данных обычно включают теорию нормализации.

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

Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране.

Для лучшего понимания РМД следует отметить три важных обстоятельства:

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

Принципы реляционной модели были сформулированы в 1969-1970 годах Э. Ф. Коддом (E. F. Codd). Идеи Кодда были впервые подробно изложены в статье «A Relational Model of Data for Large Shared Data Banks», ставшей классической.

Строгое изложение теории реляционных баз данных (реляционной модели данных) в современном понимании можно найти в книге К. Дж. Дейта. «C. J. Date. An Introduction to Database Systems» («Дейт, К. Дж. Введение в системы баз данных»).

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

Достоинства реляционной модели

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

Недостатки реляционной модели

  • Относительно низкая скорость доступа и большой объем внешней памяти.
  • Трудность понимания структуры данных из-за появления большого кол-ва таблиц в результате логического проектирования.
  • Далеко не всегда предметную область можно представить в виде совокупности таблиц.

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

Наличие двух уровней системы:

уровня непосредственного управления данными во внешней памяти (а также обычно управления буферами оперативной памяти, управления транзакциями и журнализацией изменений БД),

языкового уровня (например уровня, реализующего язык SQL).

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

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

Регулярность структур данных . Поскольку основным объектом реляционной модели данных является плоская (в 1НФ) таблица, главный набор объектов внешней памяти может иметь очень простую регулярную структуру. При этом необходимо обеспечить возможность эффективного выполнения операторов языкового уровня как над одним отношением (простые операции селекции и проекции), так и над несколькими отношениями (наиболее распространена и трудоемка операция соединения нескольких отношений). Для этого во внешней памяти должны поддерживаться дополнительные индексы.

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



Соответственно, возникают следующие разновидности объектов во внешней памяти базы данных:

строки отношений - основная часть базы данных, большей частью непосредственно видимая пользователям;

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

журнальная информация , поддерживаемая для удовлетворения потребности в надежном хранении данных;

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

· внутренние каталоги (справочники), описывающие физические свойства объектов базы данных, например число атрибутов отношения, их размер и, возможно, типы данных;

· описание индексов, определенных для данного отношения;

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

Базовые структуры памяти

Структура и типы страниц

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

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

Выделяют четыре типа страниц:

· страницы данных,

· страницы индексов,

· страницы blob-объектов,

· битовые страницы.

Страница данных . Основная единица осуществления операций обмена. Структура страницы данных представлена на рис. 32.

Рис. 32. Структура страницы данных

Заголовок страницы включает внутрисистемную информацию, используемую СУБД в механизме управления страницами.

Данные на странице представляются в виде строк . Каждая строка соответствует некоторому кортежу отображаемого отношения.

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

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

Страница blob . Страницы blob (B inary L arge Ob ject) предназначены для хранения слабоструктурированной информации, содержащей тексты большого объема, графическую информацию, двоичные коды. Эти данные рассматриваются как потоки байтов произвольного размера, а в страницах данных формируются ссылки на эти страницы. Данные таких типов в ранних СУБД относились к типу MEMO.

Битовая страница . Битовые страницы содержат описатели других типов страниц. Описатель страницы включает две составляющих – тип страницы и ее состояние (свободна /занята ).

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

Общим для СУБД является понятие пространства (для некоторых СУБД табличное пространство ). В табличных пространствах размещены различные логические структуры данных, такие как таблицы и индексы, временные таблицы и словарь данных. Группировка хранимых данных по пространствам производится по ряду признаков: частота изменения данных, характер работы с данными (преимущественно чтение или запись и т.п.), скорость роста объема данных, важность и т.п. Таким образом, например, только читаемые таблицы помещаются в одно пространство, для которого установлены одни параметры хранения, таблицы транзакций размещаются в пространстве с другими параметрами и т.д. (рис. 33).

Рис.33. Физическое размещение данных по устройствам

Одна логическая единица данных (таблица или индекс) размещается точно в одном пространстве, которое может быть отображено на несколько физических устройств или файлов. При этом физически разнесены (располагаться на разных дисках) могут не только логические единицы данных (таблицы отдельно от индексов), но и данные одной логической структуры (таблица на нескольких дисках). Такой способ хранения называется горизонтальной фрагментацией (или секционированием ): таблица делится на фрагменты по строкам. Фрагментация - один из способов повышения производительности.

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

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

Пусть, например, для таблицы Person создаются два раздела part1 и part2 , каждый из которых размещен в своем табличном пространстве (tblspace1 и tblspace2 ). Записи со значением поля Num от 1 до 499 будут располагаться в первом разделе, а записи с номерами от 500 до 1000 - во втором (рис. 34.).

Тогда при запросе:

SELECT FIO FROM person WHERE Num BETWEEN 10 AND 40

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

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

Рис. 34. Пример кластеризации записей

База данных (БД) - структурированный организованный набор данных, описывающих характеристики какой-либо физической или виртуальной системы.

База данных - это организованная структура, предназначенная для хранения информации.

СУБД - инструментальное программное обеспечение, предназначенное для организации ведения БД.

По виду модели БД разделяются:

    Иерархические БД

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

    Сетевые СУБД

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

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

Реляционные СУБД являются в настоящий момент самыми распространенными. Реляционная модель ориентирована на организацию данных в виде двумерных таблиц. Реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:

Каждый элемент таблицы - один элемент данных;

Все столбцы в таблице однородные, т.е. все элементы в столбце имеют одинаковый тип (числовой, символьной и т.д.) и длину;

Каждый столбец имеет уникальное имя.

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

    Объектно-ориентированные

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

    Многомерные

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

9. Языки программирования. Машинный код. Трансляторы. Двоичное кодирование информации.

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

Машинный код процессора

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

Уровни языков программирования

Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня . Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.

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

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

Популярными на сегодня являются языки программирования:

Pascal (Паскаль), создан в конце 70-х годов основоположником множества идей современного программирования Никлаусом Виртом и имеет возможности, позволяющие успешно применять его при создании крупных проектов.

Basic (Бейсик), д ля этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в 60-х годах в качестве учебного языка и очень прост в изучении. Его современная модификация Visual Basic, совместимая с Microsoft office, позволяет расширять возможности пакетов Excel и Access.

С (Си), Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix).

Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# - Common Language Runtime.

Основные функции СУБД Прикладное программное обеспечение ППО, пользователи Система управления базами данных Операционная система База данных Обеспечение доступа ППО к базе данных Управление базой данных «железо»

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

Классификация СУБД По степени универсальности СУБД делят на два класса: 1. СУБД общего назначения (СУБД ОН) 2. специализированные СУБД (Сп. СУБД). Специализированные СУБД создаются в тех случаях, когда ни одна из существующих СУБД общего назначения не может удовлетворительно решить задачи, стоящие перед разработчиками. Причин может быть несколько: не достигается требуемого быстродействия обработки данных; необходима работа СУБД в условиях жёстких аппаратных ограничений; требуется поддержка специфических функций обработки данных. Сп. СУБД предназначены для решения конкретной задачи, а приемлемые параметры этого решения достигаются следующим образом: 1. за счёт знания особенностей конкретной предметной области, 2. путём сокращения функциональной полноты системы.

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

Требования к реляционным СУБД (по Кодду) 1. 2. 3. Явное представление данных (The Information Rule). Информация должна быть представлена в виде данных, хранящихся в ячейках. Данные, хранящиеся в ячейках, должны быть атомарны. Порядок строк в реляционной таблице не должен влиять на смысл данных. Гарантированный доступ к данным (Guaranteed Access Rule). К каждому элементу данных должен быть гарантирован доступ с помощью комбинации имени таблицы, первичного ключа строки и имени столбца. Полная обработка неизвестных значений (Systematic Treatment of Null Values). Неизвестные значения (NULL), отличные от любого известного значения, должны поддерживаться для всех типов данных при выполнении любых операций.

Требования к реляционным СУБД (по Кодду) 4. 5. Доступ к словарю данных в терминах реляционной модели (Dynamic On-Line Catalog Based on the Relational Model). Словарь данных должен сохраняться в форме реляционных таблиц, и СУБД должна поддерживать доступ к нему при помощи стандартных языковых средств. Полнота подмножества языка (Comprehensive Data Sublanguage Rule). Система управления реляционными базами данных должна поддерживать единственный язык запросов, который позволяет выполнять все операции работы к данным: операции определения данных, операции манипулирования данными, управление доступом к данным, управление транзакциями.

Требования к реляционным СУБД (по Кодду) 6. 7. Поддержка обновляемых представлений (View Updating Rule). Обновляемое представление должно поддерживать все операции манипулирования данными, которые поддерживают реляционные таблицы: операции выборки, вставки, модификации и удаления данных. Наличие высокоуровневых операций управления данными (High-Level Insert, Update, and Delete). Операции вставки, модификации и удаления данных должны поддерживаться не только по отношению к одной строке реляционной таблицы, но по отношению к любому множеству строк.

Требования к реляционным СУБД (по Кодду) 8. Физическая независимость данных (Physical Data Independence). Приложения не должны зависеть от используемых способов хранения данных на носителях, от аппаратного обеспечения компьютеров, на которых находится реляционная база данных. 9. Логическая независимость данных (Logical Data Independence). Представление данных в приложении не должно зависеть от структуры реляционных таблиц.

Требования к реляционным СУБД (по Кодду) 10. Независимость контроля целостности (Integrity Independence). Вся информация, необходимая для поддержания целостности, должна находиться в словаре данных. СУБД должна выполнять проверку заданных ограничений целостности и автоматически поддерживать целостность данных. 11. Независимость от распределенности (Distribution Independence). База данных может быть распределенной, может находиться на нескольких компьютерах, и это не должно оказывать влияние на приложения. 12. Согласование языковых уровней (Non-Subversion Rule). Не должно быть иного средства доступа к данным, отличного от стандартного языка работы с данными. Если используется низкоуровневый язык доступа к данным, он не должен игнорировать правила безопасности и целостности, которые поддерживаются языком более высокого уровня.

Требования к составу и функциям СУБД 1. Хранение, извлечение и обновление данных. 2. Каталог (ССД), доступный конечным пользователям. Обычно в системном каталоге хранятся следующие сведения: имена, типы и размеры элементов данных; имена связей; накладываемые на данные ограничения поддержки целостности; имена пользователей, которым предоставлено право доступа к данным; внешняя, концептуальная и внутренняя схемы и отображения между ними; статистические данные, например частота транзакций и счетчики обращений к объектам базы данных.

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

Системный словарь данных Oracle Хранит всю информацию о структуре, информационных объектах и отношениях в конкретной базе данных. Словарь данных представляет собой набор таблиц и вспомогательных объектов (индексов, кластеров, синонимов, представлений, последовательностей), информация о которых также хранится в таблицах словаря. Логически словарь данных разделяется на: üбазовые таблицы; üпредставления базовых таблиц; üдинамические таблицы и их представления. Всего словарь данных включает более 100 базовых таблиц, которые расположены в табличном пространстве SYSTEM и нигде более. Их имена включают символ "$" (поэтому его не рекомендуется использовать в названиях небазовых объектов), например: AUD$ – таблица audit-информации; FILE$ – таблица файлов; USER$ – таблица пользователей; IND$ – таблица индексов; OBJ$ – таблица объектов; SEG$ – таблица сегментов; SYN$ – таблица синонимов; TAB$ – таблица таблиц; TS$ – таблица табличных областей; VIEW$ – таблица представлений.

Работа с системным словарём Для получения информации из словаря данных пользователям предоставлены представления базовых таблиц. Они разбиты на три группы: DBA – представления, предназначенные пользователям, являющимися АБД, то есть которым присвоена роль DBA. По этим представлениям предоставляется наиболее полная информация из словаря данных; USER – представления, по которым каждый пользователь получает информацию о тех объектах, которыми владеет; ALL – представления, дающие каждому пользователю всю информацию об объектах, к которым ему разрешен доступ. Например: DBA/ALL/USER_INDEXES – все/доступные/пользовательские индексы; DBA/ALL/USER_IND_COLUMNS – все/доступные/пользовательские колонки индексов; DBA/ALL/USER_OBJECTS – все/доступные/пользовательские объекты; DBA/ALL/USER_SYNONYMS – все/доступные/пользовательские синонимы; DBA/ALL/USER_TABLES – все/доступные/пользовательские таблицы; DBA/ALL/USER_TAB_COLUMNS – все/доступные/пользовательские колонки таблиц; DBA/ALL/USER_TAB_PRIVS – все/доступные/пользовательские привилегии на таблицы; DBA/ALL/USER_VIEWS – все/доступные/пользовательские представления.

Работа с системным словарём Некоторые представления (по смыслу их применения) присутствуют только в одной или двух группах. Наиболее характерно это для DBA-представлений, например: DBA_DATA_FILES – данные о физических файлах базы и журналов; DBA/USER_FREE_SPACE – свободная память в табличных пространствах (вся и доступная конкретному пользователю); DBA_PROFILES – перечень вариантов "стоимости" системных ресурсов; DBA_ROLES – перечень определенных в базе данных ролей. Примеры извлечения данных из ССД: select table_name from user_tables; select * from all_views; select view_name from dba_views;

Работа с системным словарём Важное значение имеет синоним DICT к представлению DICTIONARY. По нему выбираются имена таблиц, представлений, синонимов словаря данных с описаниями, если таковые есть в базе данных. Приведем небольшой фрагмент: select * from dict; ALL_CATALOG Все таблицы, представления, синонимы, последовательности, доступные пользователю ALL_DB_LINKS Связи базы данных, доступные пользователю DBA_OBJECTS Все объекты в базе данных DBA_ROLES Все роли, которые существуют в БД USER_EXTENTS Экстенты, принадлежащие пользователю USER_VIEWS Определения представлений, принадлежащих пользователю DUAL Специальная таблица, содержащая один столбец DUMMY и одну строку DICT Синоним для DICTIONARY TABS Синоним для USER_TABLES

Работа с системным словарём АБД открыт доступ к этим таблицам, но работать на этом уровне, за исключением случаев КРАЙНЕЙ необходимости, НИКОГДА НЕ рекомендуется: вся информация словаря данных доступна через представления базовых таблиц; данные в базовых таблицах представлены без дублирования по правилам внутри системной упорядоченности, без расшифровки; количество, названия, размеры столбцов таблиц сделаны без учета достаточной наглядности; случайная, намеренная или еще по какой-либо причине КОРРЕКТИРОВКА содержимого базовых таблиц (даже в очевидных случаях, например, хранение данных о давно удаленных табличных пространствах), как правило, приводит к ПОВРЕЖДЕНИЮ словаря данных, то есть к ПОТЕРЕ всей базы данных. Редчайшее исключение представляет AUD$ (таблица аудиторской информации), из которой следует периодически удалять ненужные записи, поскольку при включенном audit-режиме эта таблица быстро наполняется и может переполнить табличное пространство SYSTEM.

Требования к составу и функциям СУБД 3. 4. 5. 6. 7. 8. 9. Поддержка транзакций. Служба управления параллельной работой. Службы восстановления. Службы контроля доступа к данным. Службы поддержки целостности данных. Службы поддержки независимости от данных. Вспомогательные службы.

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

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

Основные программные компоненты СУБД Препроцессор языка DML. Этот модуль преобразует внедренные в прикладные программы DML-операторы в вызовы стандартных функций базового языка. Для генерации соответствующего кода препроцессор языка DML должен взаимодействовать с процессором запросов. Компилятор языка DDL. Преобразует DDL-команды в набор таблиц, содержащих метаданные. Затем эти таблицы сохраняются в системном каталоге, а управляющая информация - в заголовках файлов с данными. Диспетчер словаря. Управляет доступом к системному каталогу и обеспечивает работу с ним. Системный каталог доступен большинству компонентов СУБД.

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

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

Основные объекты Oracle База данных (DATABASE) – объект, который находится на самом верхнем уровне физической организации базы данных Oracle находится объект, который так и называется: база данных (database). База данных состоит из словаря-справочника данных, собственно данных и различных вспомогательных объектов: файла параметров инициализации, управляющего файла, файла сегментов отката и двух файлов журнала транзакций. (Этот перечень может быть расширен, например, за счет копий управляющего файла). База данных может быть создана автоматически при инсталляции СУБД Oracle или вручную с помощью команды CREATE DATABASE. Табличная область (TABLESPACE) – область памяти, предназначенная для хранения всех объектов БД. Табличная область имеет имя и занимает один или более файлов операционной системы. Создается командой CREATE TABLESPACE. Иногда табличную область называют табличным пространством.

Основные объекты Oracle Пользователь (USER) – объект, обладающий возможностью создавать и использовать другие объекты Oracle, а также запрашивать выполнение функций сервера. К числу таких функций относятся организация сессии, изменение состояния сервера и базы данных, создание других объектов БД, запросы на выполнение операторов SQL и проч. В СУБД Oracle имя пользователя совпадает с именем схемы. Создается командой CREATE USER. Каждый объект БД принадлежит тому пользователю, который его создал, и находится в его схеме. Полное имя любого объекта БД (кроме базы данных, табличных областей и пользователей) состоит из имени схемы, в которой он создан, и собственно имени объекта, например: scott. emp Здесь scott – имя пользователя (схемы), emp – имя объекта (таблицы "Сотрудники"), а точка – это т. н. квалифицированная ссылка, разделяющая уровни определения.

Основные объекты Oracle Кластер (CLUSTER) – объект, задающий способ совместного хранения данных нескольких таблиц, содержащих информацию, обычно обрабатываемую совместно. Кластеризация таблиц позволяет уменьшить время выполнения выборки. Создается командой CREATE CLUSTER. Включает таблицы с данными. Таблица (TABLE) является базовой структурой реляционной модели. Как известно, вся информация в базе данных хранится в таблицах. Таблицы состоят из множества поименованных столбцов или атрибутов. Множество значений столбца определено с помощью ограничений целостности, то есть поддерживается ограниченная концепция домена (множества допустимых значений). Таблица может быть пустой или состоять из одной или более строк значений атрибутов. Строки значений атрибутов таблицы называют также записями или кортежами. Создается командой CREATE TABLE, может быть создана в кластере.

Основные объекты Oracle Индекс (INDEX) – это объект базы данных, создаваемый для повышения производительности выборки данных. Индекс создается для столбца (столбцов) таблицы и обеспечивает более быстрый доступ к данным этой таблицы за счет упорядочения данных столбца (столбцов) по значению. Создается командой CREATE INDEX. Кластеры, таблицы и индексы называются объектами, занимающими память, т. к. в них хранятся фактографические данные. Им при создании выделяется определенный объем памяти (один или несколько экстентов), который может быть увеличен при добавлении в них данных. Экстент (extent) – это непрерывная область памяти в табличном пространстве. Все экстенты, относящиеся к одному объекту, образуют сегмент (segment). Кластер Таблица Индекс

Основные объекты Oracle Представление (VIEW) – это поименованная, динамически поддерживаемая сервером выборка данных из одной или нескольких таблиц. В основе представления лежит оператор SELECT, который называется базовым запросом представления. Базовый запрос определяет видимые пользователем данные. Представление позволяет ограничить данные, которые пользователь может модифицировать. Данные в представлении не хранятся: сервер формирует представление каждый раз при обращении к нему (это называется материализация представления). Используя представления, администратор безопасности может ограничить доступную пользователям часть базы данных только теми данными, которые реально необходимы им для выполнения работы. Создается командой CREATE VIEW. Последовательность (SEQUENCE) – это объект, обеспечивающий генерацию уникальных номеров в условиях многопользовательского асинхронного доступа. Обычно элементы последовательности используются для вставки уникальных идентификационных номеров для элементов таблиц базы данных. Создается командой CREATE SEQUENCE.

Основные объекты Oracle Синоним (SYNONYM) – это альтернативное имя или псевдоним объекта Oracle, который позволяет пользователям базы данных иметь доступ к данному объекту. Синоним может быть частным и общим. Общий (public) синоним позволяет всем пользователям базы данных обращаться к соответствующему объекту по альтернативному имени. При этом имя схемы для обращения к объекту не надо указывать, даже если Вы подключились не как владелец объекта, а из другой схемы. Создается командой CREATE SYNONYM. Роль (ROLE) – именованная совокупность привилегий, которые могут быть предоставлены пользователям или другим ролям. Используется для эффективного управления разграничением доступа к данным. Oracle поддерживает несколько стандартных или предопределенных ролей (DBA, CONNECT, RESOURCE и др.). Создается командой CREATE ROLE.

Основные объекты Oracle Специфичными для распределенных систем являются такие объекты Oracle как снимок и связь базы данных. Снимок (SNAPSHOT) – локальная копия таблицы удаленной базы данных, которая используется либо для тиражирования (копирования) всей или части таблицы, либо для тиражирования результата запроса данных из нескольких таблиц. Снимки могут быть модифицируемыми или предназначенными только для чтения. Снимки только для чтения возможно периодически обновлять, отражая изменения основной таблицы. Изменения, сделанные в модифицируемом снимке, распространяются на основную таблицу и другие копии. Создается командой CREATE SNAPSHOT. Связь базы данных (DATABASE LINK) – это объект базы данных, который позволяет обратиться к объектам удаленной базы данных. Имя связи базы данных можно рассматривать как ссылку на параметры механизма доступа к удаленной базе данных (имя узла, протокол и т. п.). Использование одного имени упрощает работу с объектами удаленной базы данных. Создается командой CREATE DATABASE LINK.

Основные объекты Oracle Для программирования алгоритмов обработки данных, поддержки сложных правил целостности данных Oracle использует процедурные объекты: Процедура (PROCEDURE) – это подпрограмма на языке PL/SQL, предназначенная для решения конкретной задачи обработки данных. Создается командой CREATE PROCEDURE. Функция (FUNCTION) – это подпрограмма на языке PL/SQL, предназначенная для решения конкретной задачи и возвращающая конкретное значение. Создается командой CREATE FUNCTION. Пакет (PACKAGE) – это поименованный, структурированный набор переменных, процедур и функций, связанных единым функциональным замыслом. Пакет состоит из спецификации и тела пакета. Спецификация содержит описания внешних переменных, констант, типов и подпрограмм, а тело пакета – реализацию подпрограмм и описание внутренних переменных, констант и типов, которые доступны только внутри пакета. Спецификация пакета создается командой CREATE PACKAGE, а тело пакета – CREATE PACKAGE BODY. Триггер (TRIGGER) – это хранимая процедура, которая автоматически запускается тогда, когда происходит связанное с триггером событие. Обычно события связаны с выполнением операторов INSERT, UPDATE или DELETE в некоторой таблице. Создается командой CREATE TRIGGER.

Физическая структура базы данных Oracle Параметры среды: $ORACLE_HOME – имя домашней директории Oracle. $ORACLE_SID – имя базы данных Oracle. База данных Oracle включает: Управляющие файлы (ctrl 1$ORACLE_SID. ctl, ctrl 2$ORACLE_SID. ctl, . .) Файл параметров запуска экземпляра init$ORACLE_SID. ora Файл параметров конфигурации базы config$ORACLE_SID. ora Журнальные файлы регистрации изменений (log 1$ORACLE_SID. dbf, log 2$ORACLE_SID. dbf, . .) Системное табличное пространство (SYSTEM, system$ORACLE_SID. dbf) Временное табличное пространство (TEMP, temp$ORACLE_SID. dbf) Табличное пространство для данных пользователей (USER, user$ORACLE_SID. dbf)

Структуры оперативной памяти Oracle SGA – это память, используемая всеми процессами экземпляра. Существует всего одна SGA для экземпляра. Изменения, сделанные в элементах SGA для одного процесса, немедленно становятся доступными для всех процессов, функционирующих в составе этого экземпляра. Создаваемая при запуске экземпляра Oracle, SGA имеет фиксированный размер. Она существует до тех пор, пока экземпляр не будет завершен вручную, или случится перезагрузка операционной системы, или произойдет аварийное завершение (крах) собственно Oracle. Основными внутренними структурами SGA являются: кеш буферов данных (Database Buffer Cache), то есть набор свободных, считанных и модифицированных блоков данных, в которых размещается информация из базы; буфер журнала транзакций (Redo Log Buffer); разделяемый (общий) буферный пул (Shared Buffer Pool).

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

Структуры оперативной памяти Oracle. SGA Буфер журнала регистрации изменений представляет собой циклически используемую память. В этот буфер поступают все изменения, происходящие в базе с пользовательскими, системными, служебными данными. Поскольку журнал регистрации изменений предназначен для восстановления состояния базы данных после аварийных ситуаций, записи журнала несут в себе "старое" и "новое" значения изменившихся элементов, в частности целиком записи данных после операций вставки их в базу или удаления из БД. Если обработка данных производится так интенсивно, что буфер журнала переполняется, то есть если процесс LGWR (процесс записи в журнал) не успевает переносить данные из буфера на диск, Oracle начинает сдерживать пользовательские процессы. Разделяемый (общий) буферный пул включает в себя: 1. кеш словаря (Dictionary Cache): хранит в себе наиболее часто (в текущей работе) используемые сведения из системного словаря данных, а именно: названия таблиц и представлений, имена столбцов и типы данных, привилегии и роли пользователей, права доступа к объектам базы данных и др. 2. разделяемую (общую) область SQL и PL/SQL (Shared SQL and PL/SQL), которая известна также как "библиотечный кеш" (library cache): включает в себя набор курсоров, то есть структур памяти, в которых хранятся результаты синтаксический разбора и планы выполнения SQL-предложений и блоков PL/SQL.

Структуры оперативной памяти Oracle. PGA представляет собой область оперативной памяти, выделяемую для обеспечения функционирования отдельного процесса. Имеет место одна и только одна целиком выделяемая процессу и независимая от других процессов PGA для каждого процесса экземпляра. Размер PGA может динамически увеличиваться в процессе функционирования. PGA часто называют глобальной областью процесса (Process Global Area). Когда процесс Oracle нормально завершается, вся память PGA возвращается операционной системе. PGA процесса Oracle-сервера включает в себя: область стека, содержащую переменные и служебную информацию о сеансе; частную SQL-область, которую иногда называют "Глобальной областью пользователя" (UGA – User Global Area), в которой производится синтаксический разбор SQL-предложений и блоков PL/SQL. Эта область физически располагается в SGA (вариант архитектуры MTS) или в PGA (архитектура с выделенными серверами). Важно то, что рекурсивные сессии не получают свои собственные UGA, а разделяют UGA породившей их сессии; необязательная область сортировки (размером sort_area_size), которая как временная память требуется для хранения промежуточных результатов сортировки данных. Если выделенной памяти недостаточно для проведения сортировки, процесс использует временный сегмент соответствующего табличного пространства.

Процессы экземпляра Oracle Набор работающих с базой данных фоновых процессов и порожденная при запуске экземпляра SGA (Системная Глобальная Область) составляют экземпляр Oracle. Все процессы экземпляра функционируют на едином программном ядре ($ORACLE_HOME/bin/oracle) СУБД. Обычно процессы экземпляра определяют как фоновые (обслуживающие, вспомогательные, дополнительные) и серверные (содержательная обработка запросов). Минимально необходимым для функционирования Oracle является набор из следующих четырех фоновых процессов: ora_pmon_ – процесс мониторинга внутреннего состояния системы ora_dbwr_ – процесс записи данных в базу данных Oracle ora_lgwr_ – процесс записи в журнал регистрации изменений ora_smon_ – процесс системного мониторинга.

Процессы экземпляра Oracle 1. pmon – фоновый процесс-монитор. Он следит: за состоянием процессов в системе (в частности, он отслеживает обращение к серверу со стороны пользователей (connect) и запускает сервер-процессы); обнаруживает аварийные ситуации и "мертвые" блокировки сервер-процессов; освобождает ресурсы, то есть снимает блокировки; завершает транзакции, удаляет процессы из списка активных; восстанавливает состояние (rollback – откат) базы данных после ненормальных ситуаций завершения пользовательских процессов. 2. dbwr – фоновый процесс записи блоков данных в базу из списка модифицированных блоков в SGA. dbwr "пробуждается" к работе, если: длина списка модифицированных блоков превысила пороговое значение; в списке свободных буферов не хватает памяти для чтения новых блоков; истек очередной 3 -х секундный интервал времени; фоновый процесс записи в журнал lgwr сигнализирует о начале формирования очередной контрольной точки.

Процессы экземпляра Oracle 3. lgwr – фоновый процесс записи в журнал регистрации изменений в базе данных. Регистрация транзакций осуществляется следующим образом: по мере выполнения транзакции создаются небольшие записи, называемые элементами повтора (redo entries), в которых содержится информация, достаточная для воссоздания изменений, вносимых транзакцией. элементы повтора транзакции временно сохраняются в буфере журнала повтора. когда запрашивается завершение транзакции, процесс lgwr считывает необходимые элементы повтора из буфера журнала транзакций и записывает их в журнал транзакций базы данных. Транзакция считается завершенной, когда процесс lgwr запишет элемент повтора транзакции в журнал транзакций и сделает запись о ее завершении в журнале транзакций. Данные из SGA-буфера переносятся на диск в следующих случаях: выполнена операция COMMIT фиксации изменений очередной транзакции; истек очередной 3 -х секундный интервал времени; буфер журнала в SGA заполнен на одну треть своей емкости; процесс dbwr записал на диск очередную порцию модифицированных буферов.

Процессы экземпляра Oracle 4. smon – обязательный процесс системного мониторинга выполняет: автоматическое восстановление (roll forward – накат вперед) базы данных, если ее предыдущий запуск завершился ненормально или аварийно; освобождение временных сегментов от ненужных данных; объединение смежных свободных экстентов табличных пространств в непрерывные участки. 5. arch – необязательный фоновый процесс архивирования файлов оперативных журналов регистрации изменений в базе данных. Место копирования (диск, лента, . . .) определяется параметром log_archive_dest в файле init. ora. Если процесс arch не успел заархивировать очередной журнальный файл (например, переполнена файловая система и не хватает места, чтобы разместить файл-архив), а требуется на него переключение, Oracle приостанавливает функционирование, выполняя только транзакции, не связанные с ведением журнала.

Процессы экземпляра Oracle 6. ckpt – необязательный вспомогательный процесс записи контрольной точки в оперативный журнал фиксации изменений. Обычно контрольные точки записывает lgwr. Процесс ckpt (checkpoint_process = true в файле init. ora) лишь освобождает lgwr от этой функции. 7. reco – (полу) обязательный процесс, ответственный за связи с удаленными базами данных. Процесс reco можно не запускать (в init. ora параметр disributed_transaction = 0), но тогда экземпляр не сможет использовать ни одной "связи между базами данных". 8. snp. X – от одного до десяти процессов автоматического обновления снапшотов локальной базы. Количество задается в init. ora параметром snapshot_refresh_processes, а параметр snapshot_refresh_interval определяет регулярность их включения. Процессы snp. X можно отнести к серверным, поскольку они, связываясь с другими (в частности с той же самой) базами данных, работают с пользовательской информацией в базе данных.

Процессы экземпляра Oracle 9. db. XX – дополнительные процессы записи в базу данных. Если узким местом производительности базы является ввод/вывод, а база физически размещается на нескольких дисках, рекомендуется запустить несколько дополнительных процессов записи (в среднем, по одному на каждый отдельный диск). Количество дополнительных db. XX определяется параметром db_writers. 10. d. XXX – процессы диспетчеры в варианте архитектуры MTS с разделяемыми серверами. Количество функционирующих в данный момент диспетчеров зависит от напряженности работы Oracle, но не превышает заданного параметром mts_max_dispatchers числа. Каждый диспетчер обслуживает только конкретный сетевой или внутренний протокол. Например: mts_dispatchers="tcp, 1" mts_dispatchers="ipc, 1"

Процессы экземпляра Oracle 11. s. XXX – процессы серверы в варианте архитектуры MTS с разделяемыми серверами. Количество функционирующих в данный момент серверов зависит от напряженности работы Oracle, но не превышает заданного параметром mts_max_servers числа. Стартуя, Oracle запускает несколько (mts_servers) сервер-процессов, а затем то мере возрастания или снижения нагрузки запускает или завершает дополнительные процессы. 12. oracle – выделенный процесс сервера, индивидуально обслуживающий какой-то пользовательский (в частном случае и процесс snp) процесс, вполне возможно функционирующий на другой машине. 13. loc. X – от одного до десяти процессов блокировок, обеспечивающих взаимное управление ресурсами в среде параллельного сервера.

Архитектуры серверов Oracle Однопользовательский вариант (пример среды – MS DOS) характеризуется тем, что: происходит объединение пользовательского процесса, процесса сервера и фоновых процессов в рамки одной задачи операционной системы; возможен запуск только одной базы данных и одного экземпляра Oracle; в распределенной базе данных не может функционировать в качестве сервера. Многопользовательский вариант (пример среды – UNIX) характеризуется тем, что: происходит разделение пользовательских, серверных и фоновых процессов на отдельные задачи операционной системы; есть возможность запуска нескольких баз данных и экземпляров Oracle; возможно функционирование в качестве сервера в распределенной БД.

Архитектуры серверов Oracle Однозадачный вариант (пример среды – Net. Ware) характеризуется тем, что: пользовательский процесс и процесс сервера образуют единую задачу операционной системы, называемую задачей пользователя; в каждый момент времени на сервере может выполняться только одна задача пользователя; возможен доступ многих пользователей через Net 8 (SQL*Net) к базе данных. Двухзадачный вариант (пример среды – UNIX) характеризуется тем, что: пользовательский процесс и процесс обслуживающего сервера представляют собой полностью самостоятельные процессы операционной системы вплоть до того, что могут функционировать на разных машинах и платформах (архитектура "клиент-сервер"); в каждый момент времени на сервере может функционировать несколько (много) пользовательских и серверных процессов; возможен доступ многих пользователей через Net 8 (SQL*Net) к локальным базам данных и локальных пользователей к удаленным базам данных.

Архитектуры серверов Oracle Однонитевая архитектура, или вариант с выделенными (Dedicated) серверами: жесткое закрепление за каждым пользовательским процессом процесса сервера, который выполняет его и только его запросы к базе данных. Параллельный сервер (среда – кластерные системы, например, RM-1000): на каждом процессоре кластера функционирует свой экземпляр Oracle, включающий отдельную область SGA и набор системных процессов; каждый экземпляр ведет свои собственные журналы регистрации изменений; база данных и управляющие файлы являются общими для всех экземпляров; к каждому экземпляру возможно подключение многих пользователей; каждый экземпляр адресуем отдельно, и может самостоятельно работать как часть распределенной системы.

Архитектуры серверов Oracle Многонитевая архитектура (MTS – Multi-Tread Server), вариант с разделяемыми серверами характеризуется: наличием процессов-диспетчеров, принимающих запросы от пользовательских процессов и возвращающих им результаты выполненных сервер-процессами запросов; наличием в SGA: одной входной очереди для всех сервер-процессов, в которую диспетчеры помещают заявки на обслуживание от пользователей; нескольких выходных очередей, закрепленных по одной за каждым процессом диспетчером, куда серверы помещают и откуда диспетчеры передают пользователям результаты выполнения запросов к базе данных; переносом в SGA экземпляра Oracle частных SQL-областей, ранее размещавшихся в PGA процессов серверов; динамическим изменением в зависимости от текущей нагрузки системы количества функционирующих диспетчеров и сервер-процессов; ни диспетчеры, ни серверы не закрепляются за какими-либо процессами пользователей: запросы обслуживаются по мере поступления; возможностью одновременного функционирования выделенных и разделяемых серверов.