Продолжаем изучать основные свойства СУБД Oracle.
Предлагаю вам мой перевод части документации Oracle Database Concepts 10g Release 2 (10.2) B14220-02.
Обзор методов доступа к базе данных.
В этой части рассматривается Oracle Net Services (сетевые службы Oracle) и процесс запуска базы данных.
Сетевые соединения.
Oracle Net Services (сетевые службы Oracle)- это механизм для взаимодействия с сетевыми коммуникационными протоколами, обеспечивающими распределенную
обработку данных.
Сетевые коммуникационные протоколы определяют способ получения и передачи данных по сети. Сетевые службы Oracle поддерживают все основные протоколы,
включая TCP/IP, HTTP, FTP и WebDAV.
Используя Oracle Net Services, разработчик приложения не должен беспокоиться о поддержке сетевых коммуникаций приложением. Если используется новый
протокол, администратор базы данных должен сделать некоторые минимальные настройки, при этом приложение не требует изменений.
Oracle Net - это компонент Oracle Net Services, обеспечивает сетевое подключение клиентского приложения к серверу Oracle. Как только сетевое
соединение установлено, Oracle Net выполняет двухстороннюю передачу данных между сервером и клиентом. Oracle Net может выполнять описанные выше
функции, поскольку устанавливается на каждый компьютер в сети.
Запуск базы данных
В любой системе запуск сервера базы данных Oracle происходи в три этапа:
Запуск инстанции.
Монтирование (присоединение) базы данных.
Открытие базы данных.
Администратор базы данных может выполнить эти три шага, используя инструкцию STARTUP SQL*Plus или Enterprice Manager. Во время запуска инстанции
Oracle считывает серверный конфигурационный файл (SPFILE) для определения значений инициализационных параметров. После этого выделяется память под
SGA и создаются фоновые процессы.
Как работает Oracle
Следующий пример очень упрощенно описывает события, протекающие в Oracle. Пример иллюстрирует конфигурацию Oracle, при которой пользователь и
серверные процессы работают на разных компьютерах (соединены по сети).
На компьютере с установленным Oracle (часто называется host или сервер базы данных) запускается инстанция.
На компьютере пользователя (локальном компьютере) запускается клиентское приложение и создается пользовательский процесс. Клиентское приложение
запрашивает соединение с сервером, используя средства Oracle Net Services.
На сервере также работает Oracle Net Services. Сервер обнаруживает запрос клиентского приложения и создает специальный серверный процесс от
имени пользовательского процесса.
Пользователь выполняет SQL-запрос и завершает трансакцию. Например, пользователь изменяет имя в записи таблицы.
Серверный процесс получает запрос и проверяет Share pool на наличие похожего SQL-запроса. Если запрос найден в пуле, серверный процесс
проверяет права пользователя на доступ к запрашиваемым данным и, используя информацию пула, выполняет пользовательский запрос.
Если запрос не найден, в пуле выделяется новая SQL область для запроса, запрос разбирается и выполняется.
Серверный процесс извлекает необходимые данные из datafile'а (таблицы) и помещает их в SGA.
Серверный процесс изменяет данные в SGA. Процесс DBWn записывает измененные блоки на диск. Т.к. трансакция уже завершена, процесс LGWR
немедленно заносит трансакцию в файл истории отката.
Сообщение о результатах трансакции (успешно закончилась или нет) отправляется клиентскому приложению.
Одновременно с описанными действиями, сервер базы данных управляет другими пользовательскими трансакциями и предупреждает коллизии, которые
могут возникнуть при обращении разных трансакций к одному набору данных.
Обзор особенностей Oracle
Concurrency (параллелизм)
Главная забота систем управления многопользовательскими базами данных - как управлять параллелизмом, т.е. одновременным доступом множества
пользователей к одним и тем же данным. Если механизм параллелизма работает некорректно, данные могут быть ошибочно изменены.
Один вариант организации это механизма заключается в следующем - обязать всех пользователей ждать свою очередь. При этом цель системы управления -
сократить время ожидания пользователя своей очереди. Все запросы языка манипуляции данными должны обрабатываться под пристальным наблюдением, все
деструктивные взаимодействия между параллельными трансакциями должны пресекаться. Деструктивными взаимодействиями называются взаимодействия, которые
неверно модифицируют данные. При этом сохраняется целостность данных без снижения производительности.
Oracle реализует этот метод, используя различные блокировки и многовариантную устойчивую модель. Эти возможности основываются на концепции трансакции.