В до-реляционных базах данных записи были связаны между собой указателями. Каждая цепочка имеет владельца и ноль или более участников. Например, все записи сотрудников в отделе могут быть связаны с соответствующей записью отдела в таблице отделов. В такой схеме каждая запись сотрудника указывает на следующую и предыдущую записи в цепочке, а также на запись отдела. Чтобы составить список всех сотрудников отдела, сначала нужно перейти к уникальной записи отдела (обычно с использованием метода прямого доступа, известного как хеширование), а затем следовать цепочке записей сотрудников.
Записи могут участвовать в нескольких цепочках; например, все записи сотрудников с одним и тем же заданием можно связать с соответствующей записью задания в таблице заданий. Чтобы составить список всех сотрудников, выполняющих определенную работу, вы можете перейти к записи о работе и затем следовать цепочке записей о сотрудниках.
В реляционных базах данных вся структура состоит из таблиц, каждая из которых владеет какой-то конкретной информацией. Строки в этих таблицах содержат информацию об объекте, а столбцы его характеристику.
Внутренняя архитектура
Так же, как автомобильный двигатель имеет много взаимосвязанных частей, которые должны хорошо работать вместе, и так же, как автомобильный механик должен понимать отдельные части и как они связаны с целым, так и движок Oracle Database имеет много взаимосвязанных частей, и Администратор базы данных должен понимать его отдельные компоненты и как они связаны с целым.
В качестве примера на рисунке ниже показана интересная схема внутренней работы механизма Oracle Database. Эта диаграмма была разработана программным инструментом Spotlight от Quest Software. Имя базы данных (pdb1) отображается в правом верхнем углу диаграммы.
На этом изображении различные компоненты архитектуры базы данных Oracle сгруппированы следующим образом:
- Панель Service представляет пользователей, которые используют базу данных;
- Панель Host представляет хост-компьютер базы данных;
- Панель Server Processes представляет компьютерные процессы на главном компьютере, выполняющие всю работу, запрошенную пользователями;
- Панель SGA представляет собой область памяти компьютера, используемую в качестве рабочей области базы данных. SGA расшифровывается как System Global Area;
- Панель Background Processes (фоновые процессы) представляет основной набор компьютерных процессов, которые не зависят от пользовательских сессий и выполняют специальные задачи, такие как хранение информации о транзакциях в файлах журнала повторов;
- Панель Disk Storage представляет файлы, в которых хранятся данные, и вспомогательные файлы, такие как файлы журнала повторов и архивные файлы журналов повторов.
База данных и экземпляр
В терминологии Oracle слово "база данных" используется для общего указания файлов данных и вспомогательных файлов на дисках хранения, подключенных к хост-компьютеру, а слово "экземпляр" используется для описания компьютерных процессов, находящихся в памяти компьютера и областях памяти, совместно используемых этими процессами. Отношения между экземплярами Oracle и базами данных могут быть: один к одному (один экземпляр на базу данных), много к одному (несколько экземпляров на базу данных) или один ко многим (только Oracle Database 12c и выше). Конфигурация «многие к одному» называется Real Application Clusters (RAC) – база данных находится на общих дисках, а экземпляры на нескольких компьютерах подключаются к базе данных. Конфигурация «один ко многим» называется опцией Oracle Multitenant и, как следует из названия, является дополнительной возможностью Oracle Database за дополнительную плату.
Программное обеспечение
Местоположение программного обеспечения базы данных называется Oracle home, а путь к этому местоположению обычно хранится в переменной среды ORACLE_HOME. Существует два вида программного обеспечения для баз данных: серверное программное обеспечение и клиентское программное обеспечение. Серверное программное обеспечение необходимо для создания и управления базой данных и требуется только на хосте базы данных. Клиентское программное обеспечение необходимо для использования базы данных и требуется на компьютере каждого пользователя – наиболее распространенным примером является средство командной строки SQL*Plus.
Файлы конфигурации
Самый важный файл конфигурации базы данных – это файл, содержащий настройки, используемые при запуске базы данных. Он поставляется в двух версиях: текстовая версия, называемая pfile, и двоичная версия, называемая spfile. В файлах pfile и spfile указываются такие данные, как объем памяти компьютера, который Oracle может использовать во время работы. Файл pfile традиционно называется файлом init.ora.
Другим важным файлом конфигурации на стороне сервера является файл listener.ora. Он контролирует работу listener – важный процесс, который вступает в игру, когда пользователи начинают сеанс базы данных.
Файлы данных
Самым большим компонентом базы данных обычно являются файлы, в которых хранятся данные. Файлы данных логически сгруппированы в табличные пространства и обычно имеют описательные имена, такие как DATA, INDEX, UNDO и TEMP, которые указывают их предполагаемое назначение. Используйте табличное пространство только для целей, указанных его именем – например, табличное пространство SYSTEM должно использоваться для хранения только словаря данных (таблиц, содержащих информацию об остальной части базы данных). За исключением табличных пространств SYSTEM и SYSAUX, которые создаются всегда и чьи имена являются обязательными для Oracle, число и имена других табличных пространств оставлены на ваше усмотрение.
Каждая таблица и индекс Oracle назначаются одному табличному пространству, и поэтому их рост ограничен доступностью пространства в этом назначенном табличном пространстве. Они разделяют пространство со всеми другими таблицами или индексами, также назначенными табличному пространству. Файлы данных могут расти автоматически по мере необходимости; но по причинам, связанным с управляемостью, вы должны ограничить их максимальный размер. Вы также можете создавать большие файлы данных фиксированного размера, а также создавать дополнительные файлы данных в течение срока службы базы данных.
Журналы событий
Oracle записывает все важные события в различные файлы журнала. Такие события, как запуск и завершение работы, важные операции языка определения данных (DDL), такие как ALTER TABLESPACE ADD DATAFILE, и нехватка места – все это лишь некоторые из событий, записываемых в журнале предупреждений. Запись вносится в listener log каждый раз, когда пользователь устанавливает соединение с базой данных. Подробный файл трассировки создается каждый раз, когда возникают серьезные ошибки; примером такой ошибки может стать ошибка ORA-600, которая обычно указывает на неисправность в Oracle.
Бэкапы базы данных
Вы должны защитить базу данных от сбоев хранилища, создав резервные копии файлов данных. Если на диске недостаточно места, резервные копии файлов данных можно хранить внешних носителях. Если на диске места достаточно, резервные копии можно хранить на системных дисках. Только не стоит этого делать на тех же дисках, где хранятся файлы данных. Местоположение резервных копий традиционно называется областью восстановления памяти (flashback recovery area). Резервные копии, хранящиеся на диске, обычно копируются на внешние носители для обеспечения дополнительной безопасности.
Важно: как и следовало ожидать, никто не может хранить данные в базе данных или извлекать данные из нее, если у них нет соответствующих прав. Существует пять команд, необходимых для управления пользователями: CREATE USER, ALTER USER, DROP USER, GRANT и REVOKE. Только пользователи с соответствующими правами могут выполнять эти команды. Например, только пользователь с привилегией Create User может выполнить команду CREATE USER (создать пользователя). Администраторы базы данных обычно выполняют задачи управления пользователями с использованием учетной записи SYSTEM.
Схемы
Каждый объект в базе данных явно принадлежит одному владельцу, и владелец этого объекта должен явно разрешить его использование кем-то другим. Коллекция объектов, принадлежащих пользователю, называется схемой. Чтобы проиллюстрировать это, в изображении ниже приведено краткое изложение содержимого схемы HR, одной из примеров схем, которые Oracle предоставляет в образовательных целях. Обратите внимание, что термины user, schema, schema owner и account используются взаимозаменяемо. Например, вы можете говорить о HR user или о HR schema.
Типы объектов, показанные в данном изображении, очень распространены. Таблицы являются контейнерами для ваших данных; индексы помогут вам найти данные; последовательности представляют собой непрерывно увеличивающиеся счетчики, которые генерируют уникальные идентификационные номера для записей данных; процедуры – это блоки прикладной логики, которые хранятся в базе данных; триггеры – это специализированные блоки логики приложения, которые запускаются конкретными событиями, такими как запись данных, добавляемая в таблицу; а представления – это "виртуальные таблицы", которые могут объединять данные из нескольких таблиц.
Некоторые из объектов в схеме, такие как таблицы и индексы, представляют блоки хранения; остальные – просто определения, которые хранятся в виде строк в таблицах. Например, представление DBA_OBJECTS – это просто определение, хранящееся в виде строк в таблице VIEW$ в схеме SYS. Объект, представляющий блоки хранения, называется сегментом. В изображении ниже показано, что только 11 типов объектов, фактически представляют блоки хранения; остальные являются только определениями, хранящимися в виде строк в таблицах.