Классические и новые возможности Oracle - сервера для реализации корпоративных баз данных

Марк Ривкин, Корпорация ЛВС


Общая характеристика продуктов Oraсle

Все продукты Oracle (СУБД, средства разработки, средства для конечного пользователя, сетевые компоненты) являются открытыми, масштабируемыми и программируемыми. Они позволяют разрабатывать приложения как уровня небольшой рабочей группы, так и уровня огромного предприятия с тысячами пользователей, террабайтными базами, размещенными в различных зданиях и даже странах.
Средства Oracle позволяют надежно защитить эти данные, обеспечить их целостность и непротиворечивость. Продукты Oracle работают более чем на ста вычислительных платформах (компьютер + операционная система), поддерживают все основные промышленные сетевые протоколы и графические оконные среды. Это позволяет Вам с минимальными затратами переносить готовые приложения с одной платформы на другую. Например, разработав приложение на однопроцессорном персональном компьютере с MS Windows, Вы можете далее выполнять его на Unix - машинах, больших IBM машинах, SMP и MPP архитектурах, высоко надежных и кластерных архитектурах.
При повышении нагрузки на Ваше приложение, Вы можете заменить сервер на более мощный, добавить еще один сервер, вынести часть обработки в другой узел и т. д. Если Ваш клиент работал через терминал, а затем решил перейти к архитектуре клиент - сервер или даже переместился в другой город, он сможет продолжать работать с теми же БД Oracle. Все это не потребует модификации кода приложений.
С помощью средств Oracle Вы сможете реализовать оперативную обработку (OLTP - системы), системы поддержки принятия решений (DSS - системы) и системы накопления и анализа больших объемов данных (Data Warehouse и OLAP - системы). Oracle поддерживает все основные стандарты:

Классификация продуктов Oracle

Все многообразие продуктов фирмы Oracle можно разделить на следующие группы (смотри таблицу):

Oracle7 Server

Универсальный сервер Oracle позволяет Вам хранить и обрабатывать самые разные типы данных. Кроме привычных структурированных данных (числа, строки, дата, время) Вы теперь можете работать с неструктурированными данными, такими как тексты, многомерные пространственные данные, изображения, видео, аудио. При этом Oracle обеспечит Вам надежность хранения и быстроту доступа к этим данным, а так же возможность создания приложений, работающих со всеми этими данными в комплексе.
Сегодня Oracle - это реляционная СУБД, поддерживающая язык SQL и его расширения для работы с различными типами данных, а так же механизм транзакций. Особенности архитектуры Oracle Server обеспечивают очень высокое быстродействие системы в многопользовательском режиме. По результатам независимых тестов TPC Oracle всегда показывает лучшие результаты по производительности. Оригинальный механизм многоверсионной записи позволяет получать согласованные результаты при выполнении запросов без блокировки данных. Автоматически выполняется блокировка данных на уровне записи при модификации данных. Это позволяет увеличивать число пользователей системы без снижения ее производительности.
Встроенные оптимизаторы запросов, использование алгоритмов хеширования, битовых индексов и B-деревьев, возможность тонкой настройки СУБД на возможности среды эксплуатации также позволяют обеспечить очень высокое быстродействие. Дополнительная компонента ядра Parallel Query Option позволяет ускорить работу существующих приложений за счет использования возможностей многопроцессорных машин. Эта компонента резко снижает время выполнения отдельного запроса, загрузки данных, построения индекса и т. д. за счет разбиения операций (например оператора Select) на части и выполнения этих частей параллельно на разных процессорах. Увеличение числа процессоров с 1 до 10 позволяет ускорить выполнение запроса в 8 раз, что очень важно для работы с очень большими БД.
Компоненты Oracle Parallel Server позволяет СУБД Oracle и Вашим приложениям работать на МРР и кластерных архитектурах. Наиболее часто кластер реализуется на базе компьютеров фирм DЕC, Sequent, HP, Sun, IBM (RS 6000). При этом все машины кластера могут работать с одной и той же БД (что ускоряет и распараллеливает работу), а при выходе из строя одного из узлов кластера, другие узлы аккуратно отработают отказ и возьмут на себя дальнейшую обработку данных. Использование Oracle на кластере компьютеров позволяет относительно недорого обеспечить высоконадежное и быстрое решение Ваших задач.
Oracle Server позволяет реализовать как односерверную, так и многосерверную архитектуру БД. В случае многосерверной архитектуры узлы могут отстоять на большое расстояние, размещаться на разных ОС и компьютерах, связываться по разным сетевым протоколам. На основе многосерверной архитектуры Oracle позволяет реализовать как распределенную базу данных, так и репликацию.
Компонента Distributed Option позволяет приложению работать с распределенной БД так же, как с локальной. Автоматически реализуемый протокол 2х-фазной фиксации позволяет одновременно модифицировать данные в разных узлах БД. Узлы всегда находятся в согласованном состоянии, однако для этого требуется постоянное наличие связи между узлами. Механизм репликации не требует постоянного наличия связи между узлами. Через заданные промежутки времени или при восстановлении связи, изменения, сделанные в данном узле, будут отрабатываться в копиях таблиц в других узлах. Можно реализовать не только простую репликацию (изменения распространяются от таблицы - мастер к копиям), но и сложную репликацию (когда в узлах хранятся копии одной и той же таблицы и их можно одновременно обновлять).
Сложную репликацию реализует компонента Advance Replcation Option, она же помогает задать механизм разрешения возникающих коллизий. Oracle Server имеет средства для реализации Backup копии Вашей базы, готовой быстро вступить в действие при уничтожении основной базы.
Вообще же Oracle обеспечивает надежную защиту Ваших данных как от несанкционированного доступа (роли, привилегии, ограничения на использование ресурсов компьютера), так и от всевозможных сбоев. Какой бы сбой не произошел (вплоть до уничтожения дисков), Вы всегда имеете возможность восстановить свою систему либо к моменту, предшествовавшему сбою, либо к заданному Вами моменту времени. При большинстве сбоев восстановление БД выполняется автоматически.
Oracle позволяет реализовать системы, работающие непрерывно (24 часа, 7 дней в неделю). При этом операции копирования и восстановления БД не снижают производительность работы пользователей.
При создании приложений Вы можете часть обработки и контроля данных вынести на сервер. Oracle реализует мощный механизм декларативных и процедурных ограничений целостности (вплоть до каскадных операций), позволяет создавать хранимые процедуры, триггеры БД, функции, алерты, пакеты процедур и функций, задавать расписание для автоматического выполнения работ. Причем для создания процедурных объектов ненужно изучать новый язык. В качестве процедурного языка 4GL используется расширение языка SQL, называемое PL/SQL.
Oracle Server - открытая система. Он поддерживает стандарт ODBC и может работать в среде мониторов транзакций. В качестве узла распределенной БД Oracle можно использовать чужие СУБД, например, DB2. Это реализуется за счет использования шлюзов Oracle к "чужой" СУБД. Сегодня существуют шлюзы Oracle к десяткам промышленных СУБД.
Oracle позволяет создавать и поддерживать очень большие БД. Имеются средства для быстрого копирования, восстановления, обработки таких баз. Летом 1995г. Oracle демонстрировал базу размером 4 террабайта. На основе СУБД Oracle реализованы огромные хранилища разнородных данных Data Warehouse, используемые для выполнения сложных задач анализа. В составе Oracle Server появляются инструменты, позволяющие выполнять администрирование и настройку как отдельных серверных узлов, так и распределенной БД. Имеется и NLS поддержка, так что Вы можете, например, получать сообщения сервера БД на русском языке, использовать правила языка при сортировке, работе с датой, строками символов и т. д.

Новые возможности сервера Oracle 7.3

В первом квартале 1996 г. фирма Oracle выпустила новую версию своего сервера - Oracle 7.3. Эта версия интересна тем, что по многочисленным заявкам пользователей фирма Oracle включила в нее почти все улучшения, планировавшиеся для Oracle 8. Практически Oracle 7.3 - это Oracle 8 без поддержки объектно-ориентированной модели данных. Большинство улучшений было направлено на повышение быстродействия многопользовательской работы, улучшения работы как OLTP так и DSS приложений, повышение надежности реализуемых прикладных систем. Эти улучшения позволили серверу Oracle резко поднять производительность ( более 11 тыс. транзакций в минуту по тесту ТРС C) и достичь на персональных платформах не только лучших показателей по производительности, но и минимальной стоимости транзакций.
Все улучшения в Oracle 7.3 можно разделить на следующие группы:

Улучшение работы с Data Warehouse

В этой области все улучшения можно разбить на 2 группы:

Задачи, связанные с использованием Data Warehouse породили группу специфических запросов, для которых не годятся стандартные методы оптимизации. Кроме того, успешное выполнение запросов к большим таблицам невозможно без распараллеливания работы. И оптимизатор должен учитывать при выборе плана выполнения запроса такие факторы, как степень распараллеливания, количество процессоров, распределение данных таблицы по дискам, распределение таблиц по узлам распределенной БД, близость тех или иных процессоров и дисков в МРР архитектурах. Не учитывание этих факторов может значительно замедлить выполнение SQL операций. Например, в некоторых случаях параллельное сканирование таблицы выгоднее, чем выборка из нее по индексу. Cost based оптимизатор Oracle 7.3 учитывает все эти факторы. Кроме того, для правильного построения плана выполнения SQL оператора желательно учитывать распределение данных в столбцах таблицы. Поэтому Oracle 7.3 позволяет собирать такую информацию и строит на ее основе гистограммы распределения данных в столбце, а оптимизатор использует эти гистограммы при принятии решения.
Для Data Warehouse часто используются звездные запросы (star query). В них извлекается информация из одной огромной центральной таблицы и множества мелких таблиц - справочников. Oracle 7.3 выделяет и оптимизирует такие запросы. При этом сначала соединяются справочники, а затем эта небольшая сводная справочная таблица соединяется с центральной таблицей. При работе с центральной таблицей используются индексы.
В задачах Data Warehouse часто используются представления (View ), полученные за счет объединения (Union) множества мелких таблиц однотипной структуры. Например, продажи за год - объединение продаж за месяц. Операции выборки из таких больших VIEW будут ускорены, если быстро будут исключены из рассмотрения те мелкие таблицы, которые не удовлетворяют условиям запроса. Например, если нас интересуют продажи за первые 10 месяцев, то не следует учитывать продажи за ноябрь и декабрь. Оптимизатор Oracle 7.3 учитывает это при работе. Ускоряется и выполнение запросов с условием NOT IN (анти JOIN ). Оптимизатор также учитывает новые алгоритмы Oracle, ускоряющие выполнение SQL операторов. Среди них следует отметить следующие:
Новый алгоритм соединения таблиц с использованием хэширования (hash join). Этот алгоритм исключает необходимость сортировки и слияния участвующих в соединении таблиц. Он дает ускорение в 10 - 100 раз. Он очень удобен и для параллельной обработки. Основная идея заключается в том, что меньшая из таблиц (или меньшая часть двух соединяемых фрагментов таблиц) хэшируются в оперативной памяти. А вторая таблица (фрагмент) сканируется и для каждой ее строки по хэш функции находится в оперативной памяти соответствующая запись первой таблицы. Разделение таблиц на фрагменты также выполняется с учетом хэш функций.
Битовые индексы. Для индексирования столбцов с низкой кардинальностью ( т. е. содержащих небольшое число значений, например: пол - М или Ж, цвет - красный, желтый, синий) удобно использовать битовые (bit map) индексы. Для каждого значения столбца строится битовая линейка, в которой число битов равно числу значений в столбце и биты, соответствующие позиции данного значения в столбце, установлены в 1. Например, для столбца "пол" будет построено 2 битовых линейки. Операции поиска по этому столбцу сведутся для Oracle к выполнению логического И/ИЛИ над этими линейками. Кроме того, битовые линейки хранятся в упакованном виде. Oracle умеет одновременно работать как с битовыми (т.е. более компактными, чем обычные индексы) так и с обычными индексами. Тип индекса прозрачен для приложения, но скорость выборок из больших таблиц с битовыми индексами возрастает значительно. Ранее битовые индексы использовались в SQL*Textretrieval для работы с текстовыми БД.
Усиление распараллеливания выполнения операций. В Oracle 7.3 распараллеливаются такие подэтапы выполнения SQL запроса, как SCAN, JOIN, AGREGATE, DUBLICATE ELIMINATION, UNION, UNION ALL, HASH JOIN. Поэтому выборки, построения и перестройки индекса, копирования таблиц реализуются быстрее.
Асинхронное оптимистичное чтение. При сканировании таблиц Oracle может не ограничиваться считыванием с диска необходимой в данный момент информации, а совместить обработку этой информации со считыванием последующих блоков. Считывание выполняется в параллельном режиме и время выполнения запроса снижается за счет уменьшения влияния ввода/вывода.
Выделенные временные табличные пространства. В предыдущих версиях Oracle оператор SQL, выполняющий сортировку, создавал, использовал, а затем удалял временные области в БД. Это требовало времени на управление выделением пространства. Кроме того, в том же Tablespace могли находиться и другие объекты БД. Создание выделенных tablespace только для сортировки позволит избежать этих накладных расходов.
Перестройка индекса на базе существующего индекса. Использование при перестройки индекса информации о старом индексе ускоряет выполнение этой операции. В больших БД перестройка индекса позволяет освободить неиспользуемое индексом пространство БД.

Улучшение работы с очень большими БД

В этой области все улучшения можно разбить на три группы: ускоренная подготовка БД к работе; улучшение управления пространством в БД, повышение производительности при работе с большой БД.
До сих пор для повышения надежности работы прикладной системы на базе Oracle использовались два варианта: кластерная архитектура (Oracle Parallel Server) и репликация. В версии Oracle 7.3 добавляется новая возможность - STAND BY (резервная) база. Это очень удобно, например, на случай возможности взрыва центрального офиса с основной БД. Stand by база создается на другом компьютере (возможно в другом районе) и является копией основной базы. Она находится в режиме постоянного восстановления и не доступна для работы. Восстановление резервной базы ведется автоматически на основе передаваемых ей от основной базы журнальных файлов. В случае уничтожения основной базы, резервная очень быстро переводится в рабочий режим и становится основной. В последующее время на месте старой основной БД можно организовать новую резервную БД. Основная и резервная БД должны работать на одинаковых компьютерах, одинаковых версиях операционной системы и Oracle.
До сих пор в случае сбоя БД Oracle выполнял ее восстановление в два этапа: rollout - откат вперед с восстановлением всех потерянных при сбое изменений и rollback - откат назад транзакций, не законченных к моменту сбоя. До окончания этих двух последовательных этапов БД была недоступна для работы. Процесс открытия большой БД после сбоя мог затянуться надолго. Поэтому в Oracle 7.3 Вы можете выполнить быстрое восстановление и получить доступ к БД после первого этапа, а rollback будет выполняться позднее в фоновом режиме. Это снизит время простоя БД.
Новая утилита DB_VERIFY позволит Вам выполнить контроль целостности БД, ее блоков, backup копий БД. В версии Oracle 7.3 значительно улучшено управление пространством в БД. Объекты БД ( таблицы, индексы, сегменты отката и т.д. ) могут состоять из частей (экстентов), разбросанных по tablespace. Их число было ограничено. Сейчас это ограничение снято и очень большие объекты БД могут занимать неограниченное число экстентов. Кроме того, если в результате модификации данных область, занимаемая таблицей, индексом и т.д. заполнена лишь частично, то можно освободить неиспользованное пространство, передав его в общий пул свободного пространства tablespace (команда ALTER TABLE ... DEALLOCATE UNUSED). Это позволит разместить в БД больше объектов. Если в БД образуется несколько смежных участков свободного пространства, то процесс SMON умеет склеивать их в единый кусок. Однако теперь это может сделать и администратор БД с помощью команды ALTER TABLESPACE ... COALESCE.
Ну и наконец для больших БД логический экспорт БД и ее больших объектов всегда занимал много времени. Утилита экспорта EXP работала с БД как обычное приложение, использующее команды языка SQL и стандартный вариант их обработки. Новый (прямой) режим экспорта работает в несколько раз быстрее, поскольку он "обходит" многие фазы стандартной обработки SQL и выбирает данные из БД в обход Oracle Server.

Улучшение работы OLTP приложений

В Oracle 7.3 модифицированы многие алгоритмы, связанные с обработкой OLTP приложений. Увеличена скорость выполнения таких приложений, улучшено использование буферов памяти, более компактным стал программный код, SQL-операторы и процедуры занимают меньше места в оперативной памяти. Триггеры БД теперь хранятся в откомпилированном виде, что ускоряет их выполнение. Улучшена работа Parallel Server Option. Обмен данными между узлами кластера сведен к минимуму, уменьшена вероятность возникновения коллизий. SQL*Net может при открытии нового сеанса связи с кластером учитывать загрузку узлов кластера. Улучшены алгоритмы работы Oracle в среде мониторов транзакций.
Следует также упомянуть о появлении механизма сериализованных транзакций. Ранее Oracle обеспечивал согласованный результат выполнения запроса без выполнения блокировки. Однако для того, чтобы обеспечить эту согласованность в рамках транзакции приходилось объявлять эту транзакцию read only (т.е. она не содержала операторов, модифицирующих данные). Это снижало результаты Oracle при тестировании по тесту ТРС С, т.к. запросы и модификации приходилось выносить в отдельные транзакции. Новый вид сериализованных транзакций позволяет смешивать в общей транзакции и DML операторы и операторы запроса. При этом такая транзакция работает на согласованном представлении БД, т.е. не замечает всех изменений, производимых во время ее работы другими транзакциями. Таким образом механизм согласованности без блокировки расширен на всю транзакцию.

Расширение возможностей языка сервера

В языке PL/SQL появились объекты типа таблица (группа однотипных полей или структур (таблица записей)). Программист может использовать функции FIRST, LAST, NEXT, PRIOR, COUNT, EXISTS, DELETE при работе с таблицей PL/SQL. Новый пакет ULT_FILE расширяет язык PL/SQL функциями для работы с файлами операционной системы сервера. Файлы можно создавать, читать, писать. Появилась возможность работать с частями полей типа LONG. Теперь можно формировать это поле по частям с помощью нескольких операторов SQL. Например, ограничения операционной системы на размер буфера не более 64К не будет теперь ограничивать размер информации в LONG поле. Возможно и чтение этого поля по частям.
В версии 7.3 появилась еще одна модель деактуализации зависимых удаленных процедур (RPC). В старой модели (она тоже поддерживается) любое изменение хода хранимой процедуры или функции вызывало деактуализацию и дальнейшую перекомпиляцию всех зависимых от нее хранимых процедур. Это вело к большому числу ненужных компиляций и снижало производительность. Дополнительная модель позволяет деактуализировать зависимые процедуры только в том случае, если у изменяемой процедуры изменилось имя или число и тип параметров.

Прочие возможности

До сих пор объекты типа VIEW (представление) могли быть модифицированы только в том случае, если они строились на основе одной таблицы и не содержали вычисляемых столбцов. В версии 7.3 можно модифицировать VIEW, полученные в результате соединения нескольких таблиц.
Некоторые улучшения внесены в механизм сложной репликации (advanced replication option). Теперь она позволяет выполнять не только асинхронную (через определенные интервалы времени), но и синхронную репликацию данных. Возможно объединение таблиц БД в группы (подсхемы) и задание репликации для всей подсхемы.

Новые средства администрирования

Для управления из единой точки многосерверной распределенной средой нужны новые средства администрирования. Поэтому вместе с Oracle 7.3 будет поставляться такое средство - ENTERPRISE MANAGER. Он придет на смену утилите Server Manager. Enterprise Manager имеет GUI интерфейс. Он позволяет анализировать состояние и управлять сетью, администрировать все узлы многосерверной архитектуры Oracle, управлять запуском и выполнением работ в различных узлах (в том числе и по заранее заданному расписанию), описывать события на серверах, которые интересуют администратора, контролировать возникновение этих событий, а также описывать действия, которые будут выполняться при возникновении событий. Например, при переполнении tablespace на сервере А, там будет автоматически выполняться команда расширение tablespace.
Enterprise Manager позволяет также выполнять тиражирование нового программного обеспечения в различные узлы сети и вести учет того, какие версии программ работают в разных узлах. Открытый интерфейс Enterprise Manager позволяет подключать к нему как Ваши полезные программы для администрирования, так и средства других фирм.
Enterprise Manager состоит из базовой части - консоли и группы дополнительных компонент (applications). Консоль реализует стандартные функции Server Manager по управлению instance, объектами и схемами, безопасностью (привилегии, роли, профили), хранением данных (tablespace, rolsback, ...), репликацией, распределением новых версий программ, сетью. Консоль также позволяет запускать копирование/восстановление БД, экспорт/импорт и загрузчик. Можно выполнять и команды SQL или скрипты.
Дополнительные компоненты позволяют выполнять мониторинг и настройку БД, собирать статистику, просматривать и реорганизовывать пространство в tablespace. Особенно интересна компонента Performance Monitor, идущая на смену режиму Monitor в SQL DBA. Она не только позволяет динамически отслеживать состояние баз данных, но и представит его в виде диаграмм, а также соберет статистику, на основе которой еще одна компонента Oracle Expert выдаст Вам рекомендации по настройке БД и подготовит скрипты, выполняющие эту настройку.
Так что Enterprise Manager возьмет на себя выполнение многих задач по администрированию БД, которые сегодня приходится выполнять вручную. Он сильно упростит и изменит управление сложной распределенной БД.


ядро СУБД и дополнительные компоненты ядра (опции)
Oracle7 ServerTrusted Oracle7Parallel Server Option
Parallel query OptionAdvanced Replication OptionDistributed Option
Text Server OptionVideo OptionWebServer Option
Spatial Data Option

инструментальные средства разработки приложений
Developer/2000Oracle CALL interface
Oracle FormsTranslation Manager
Oracle ReportsSQL*Module
Oracle GraphicsOracle Precompiler (C, Cobol, PL/I,Ada, Pascal)
Oracle Book
Oracle Browser
Procedural Builder
SQL*Plus

средства для конечных пользователей
Descoverer/2000Oracle Office
Oracle BrowserOracle Office MHS Gateway
Oracle DataQuery

TextServer with Context

CASE средства
Designer/2000Oracle CASE Exchange
Process Modeller
System Modeller
System Designer
Wizards
Server Generator
Forms Generator
Reports Generator

средства для анализа данных и создания OLAP (Express)
Oracle Express ServerOracle Financial Analyzer
Oracle Sales AnalyzerOracle Analyzer

средства для обеспечения работы продуктов Oracle в компьютерной сети
Oracle MultiProtocol InterchangeOracle Network Manager
Sequre Network ServicesOracle Names Server
Protocol Adapters (TCP/IP, SPX/IPX, DecNet, Async, NetBios, Named Pipes, LU6.2, APPC, Banyan Vines, X25, AppleTalk, DCE)

средства для взаимодействия с пакетами других фирм
ODBC DriverTransparent Gateways
Oracle GlueProcedural Gateway
Oracle Objects for OLE

продукты для рабочих групп - Workgroup/2000
Personal Oracle7Workgroup Server7
Oracle Power Objects

готовые прикладные системы - Oracle Applications
Oracle ManufacturingOracle Human Resources
Oracle Financial

новые направления
Oracle Media ObjectsOracle Mobile Agents
Oracle Power Viewer

[Назад] [Содержание] [Вперед]