Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

Глава 5. Субд Oracle

СУБД Oracle ‑ это современная универсальная полнофункци­ональ­ная сис­те­ма управления реляционной базой данных, работающая в различных операционных средах (Windows NT, Unix, Linux, Solaris, OS/2, SVM и др.) и на различных типах компьютеров.

Oracle представляет собой целый мир, вк­лю­ча­ющий все мето­ды и средства по проектированию (CASE‑технологии), созданию и исполь­зо­ва­нию распре­де­лен­ных баз дан­ных: языки запросов (SQL, SQL*PLUS PL/SQL), генераторы обработки и оперативного анализа данных (Oracle Express OLAP), конструкторы и мастера форм (Oracle Form Buider), запросов, отчетов (Report Builder) и приложений (Oracle Developer, Oracle Project Builder) и др. [10-14]. Если поль­зо­ва­тель имеет опыт работы с языками програм­ми­ро­вания и с другими СУБД, особенно с СУБД SQL Server, то ему можно дос­та­­точ­но быстро освоить основы работы с СУБД Oracle, так как мно­гие методы проектирования баз данных, приемы и средства работы с СУБД дос­таточно аналогичны (SQL, Transact SQL и PL/SQL, SQL Server Enter­pri­se Manager и Oracle Enterprise Manager, хра­ни­мые процедуры, триг­ге­ры, генераторы форм и отче­тов и др.).

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

5.1. Основные понятия

СУБД Oracle присущи следующие основные черты:

  • Наличие словаря данных

  • Наличие разнообразных инструментальных средств.

  • Наличие различных уровней безопасности (учет пользователей, назна­че­ние им привилегий, ролей и профилей) и изоляции данных.

  • Наличие средств администрирования и обслуживания баз данных.

  • Использование языков запросов SQL, SQL*PLUS, PL/SQL, внешних функ­ций из DLL-библиотек и реализация OCI-интерфейса и API-интер­фей­са для разработки приложений.

5.1.1. Файлы данных и табличные пространства

База данных физически состоит из файлов данных. Эти файлы объ­еди­няются в логические объекты - табличные пространства. Табли­цы, виды, индексы и другие объекты размещаются уже в табличных прост­ранствах. Информация обо всех фай­лах/таб­личных прост­ранствах, хранится в словаре данных DBA_DA­TA_FI­LES/DBA_TABLESPACE.

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

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

Табличное пространство может содержать любые из следующих сегментов: данные (data segments), индексы (index sedments), откаты (roll­back segments), временные (temporary segments).

5.1.2. Таблицы и индексы

Таблицы данных и индексы являются сегментами базы данных. При внесении изменений в таблицу Oracle каждый раз изменяет и ее индекс. Каждая таблица состоит из столбцов и строк. Столбец имеет имя и тип.

Для ссылки на строку таблицы (для самого быстрого способа доступа к строке) можно использовать псевдостолбец ROWID (форми­руемый Oracle) с уникальным адресом каждой строки. ROWID прис­ва­ива­ется каждой строке в момент ее создания и является ее не­из­мен­ным уни­кальным идентификатором. Это значение занимает 2 байта и является ад­ре­сом строки в базе данных в виде: ВВВВВВВВ (шест­надцатеричный но­мер блока файла), RRRR (шестнадцатеричный номер строки внутри бло­ка), FFFF (идентификатор файла, содержащего этот блок).

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

Oracle реализует несколько механизмов формирования индекса:

  • Двоичный индекс (B*-Tree индекс), выполняющий поиск по двоичному дереву, каждый узел которого содержит указатель на следующий и предыдущий.

  • Кластерный индекс.

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