Oracle Database

Oracle Database — семейство программного обеспечения для управления базами данных, разрабатываемое компанией Oracle. Также известно как Oracle Database Server или Oracle RDBMS.

Oracle Database поддерживает хранение как реляционных, так и объектно-реляционных данных.

Общие сведения
Oracle Database
Тип СУБД
Разработчик Oracle
Написана на Assembler, C, C++, Java[1]
Операционные системы Linux, Windows, Solaris, HP-UX, AIX
Языки интерфейса многоязычный (включая русский)
Первый выпуск 1979
Последняя версия 23ai (наследник LTS-версии 19c (19.11))[2][3] (январь 2025)
Лицензия проприетарная
Сайт oracle.com/index.html

Возможности

Oracle Database является одним из лидеров рынка СУБД наряду с Microsoft SQL Server и IBM Db2. Среди крупных серверов часто используются машины Sun Fire под управлением Solaris, а также железо IBM. В средних вычислительных системах поддерживаются почти все варианты Unix, а также OpenVMS. Linux давно рассматривается компанией как стратегическая платформа, и занимает значительную долю инсталляций. Windows благодаря широкой распространённости также полноценно поддерживается. Согласно DB-Engines Ranking, Oracle Database — самая популярная СУБД[4].

СУБД Oracle доступна бесплатно в редакции Express Edition (XE), однако ограничения в ней жёстче, чем у аналогичных бесплатных версий, например IBM Db2: отсутствует загрузка Java-классов в базу (доступ разрешён только через JDBC, но не напрямую), лимит оперативной памяти 1 ГиБ, ограничение на 1 ядро процессора и максимальный объём пользовательских данных 11 ГиБ.

Для учебных целей Oracle Database можно свободно загрузить с официального сайта. Технических ограничителей в виде лицензионных серверов или ключей не применяется; доступны и другие продукты компании.

С версии 10g реализована концепция Oracle Grid — архитектуры, ориентированной на распределённые ресурсы (буква «g» — сокращение от Grid), основой которой является активный кластер (Real Application Cluster, RAC). С версии 10g доступен встроенный менеджер кластера Oracle Cluster Ready Services (впервые появился с версии 9i для Linux, позднее для Windows и других платформ). Буква «c» в названии версии 12c указывает на акцент на облачные решения[5].

Поскольку SQL — описательный язык, в Oracle была реализована собственная процедурная надстройка PL/SQL (Procedural Language/SQL). Команды PL/SQL могут выполняться как анонимные блоки или сохраняться в базе как хранимые процедуры.

Oracle Database поддерживает хранение XML-структур (XMLDB, XDK), хранение нереляционных данных (видео, музыка, документы и др.) посредством типов BLOB и CLOB, индексирование множества форматов (с возможностью расширения пользовательскими обработчиками), хранение пространственных данных и их индексация (дополнение Spatial).

В системе по умолчанию используется уровень изоляции транзакций «Read committed» — запросы получают данные в том виде, в котором они были зафиксированы на начало выполнения запроса. Можно выбирать и иные режимы (Serialize, Read only). Два оставшихся уровня SQL-стандарта («Read uncommitted», «Repeatable read») не поддерживаются. Благодаря хранению информации для откатов чтение и запись не блокируют друг друга.

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

  • Соответствие ACID
  • Кроссплатформенная поддержка распределённых баз данных
  • Data Warehouse-функциональность
  • Месседжинг, включая JMS
  • OLAP и Data Mining
  • Гибкое резервное копирование (блочное/строчное)
  • Исполнение кода Java в СУБД
  • Поддержка хранимых процедур (PL/SQL, Java — в XE только PL/SQL)
  • Регулярные выражения в запросах
  • Версионирование таблиц (долгосрочные транзакции)
  • Технология Virtual Private Database[6]
  • Механизмы отказоустойчивости (кластеризация Oracle RAC, резервные БД (Data Guard), откат изменений)
  • Data Warehouse: поддержка CLOB/BLOB, партицирование, переносимые табличные пространства, большие пространства (до 128 ПиБ), битовые индексы, star-трансформация, поддержка распределённых БД
  • Богатая библиотека SQL-функций и возможность расширения (UDF)
  • Стоимостный оптимизатор запросов
  • Развёрнутая система безопасности, контроль доступа по строкам и столбцам, роли и политики
  • Аудит действий пользователей
  • Ресурсный менеджер (CPU, память, ввод-вывод)
  • Автоматические советы по тюнингу с версии 10g (ADDM, Advisors)
  • Индексированные таблицы (таблицы реализованы как индекс)
  • Собственный расширяемый язык PL/SQL (в т. ч. с JIT-компиляцией)
  • Глубокая интеграция с Java с версии 8i
  • Расширения: Oracle Spatial and Graph (пространственные БД)
  • Встроенный полнотекстовый поиск (Oracle Text)
  • Коннекторы к Big Data/Hadoop[7]

Отличия от ANSI SQL

Oracle Database, как и большинство СУБД, не полностью совместима с действующим SQL-стандартом — частично из-за того, что ранние версии появились до утверждения ANSI SQL. Тем не менее, поддерживается современный синтаксис JOIN, а также ряд других стандартов ANSI.

К ключевым отличиям относятся:

  • Тип date хранит не только дату, но и время.
  • Нет типа данных boolean.
  • Тип number включает несколько нарезок: dec, decimal, numeric, double precision, float, int, integer, smallint, real[8].
  • Пустые строки не различаются с NULL.
  • В UNION значение NULL работает только со строками.
  • Тип для строк переменной длины называется VARCHAR2 и ограничен 4 000 байт (с версии 12 — до 32 767 байт). ANSI-тип VARCHAR поддерживается, но хранится как VARCHAR2. В ранних версиях VARCHAR хранил до 2 000 знаков, а последовательности пробелов трактовались как NULL.

Архитектура

Экземпляр Oracle Database состоит из:

  • одного или нескольких слушателей (listener),
  • одной или нескольких инстанций (instance) — непосредственно СУБД,
  • набора файлов БД (database) — собственно базы данных.

Файлы базы могут одновременно обслуживаться несколькими инстанциями (режим Oracle RAC), но каждый экземпляр работает только с одним набором файлов.

Listener (слушатель)

Обрабатывает входящие запросы на соединение и перенаправляет клиентов к нужным инстанциям. Запускает серверные процессы по мере необходимости.

Экземпляр (instance)

Распределяет ресурсы процессора и памяти. Состоит из ряда серверных (foreground, background) процессов и общего разделяемого блока памяти. Основные процессы:

  • Database Writer (DBWR) — записывает изменения на диск;
  • Log Writer (LGWR) — сохраняет redo-логи;
  • Archiver (ARCH) — архивирует журналы redo при архивном режиме;
  • System Monitor (SMON) — поддерживает целостность и при сбоях инициирует recovery;
  • Process Monitor (PMON) — следит за процессами Oracle.

Инстанция идентифицируется по ограничителю SID, указываемому при подключении; конфигурация хранится в tnsnames.ora.

Инстанция использует несколько типов служебных файлов:

  • Параметрические — настройки и контрольные данные;
  • Трассировочные — для диагностики;
  • Alert-файлы — для сообщений об ошибках.

Файлы базы данных

Данные хранятся на файловой системе, raw-устройствах или в дисковых группах ASM. Ключевые типы файлов:

  • Data-files — содержат собственно данные;
  • Redo-log — журналы для отката/повтора транзакций;
  • Control-files — структурная и состояниивая информация (номера изменений, карта файлов и журналов).

Инструменты

Для работы с Oracle Database существуют как фирменные, так и сторонние инструменты.

  • Собственные средства Oracle:
    • SQL*Plus — консольная утилита для администрирования и работы с базами Oracle[9].
    • SQL Developer — бесплатная графическая IDE на Java для работы с объектами СУБД, написания и отладки SQL/PLSQL, анализа БД; может работать с другими СУБД.
    • Oracle Enterprise Manager (Java-консоль; поддержка прекращена), а также Database Control и Grid Control — веб-интерфейсы для администрирования БД и кластеров.
    • Data Guard Control, Server Control — консольные инструменты для управления резервными БД, сервисами, кластерами.
    • JDeveloper — интегрированная среда разработки для Java и Oracle.
  • Инструменты сторонних производителей:
    • TOAD (Quest Software) — графическая работа с Oracle.
    • TOra — open source среда для Oracle и PostgreSQL.
    • SQL Navigator (Quest Software) — ранее поддерживался, теперь преимущество у TOAD[10].[11]
    • PL/SQL Developer (Allround Automations), Omega9, SQL Workbench/J, QueryAdvisor, DBShadow, Aqua Data Studio, SQuirreL SQL Client (графические клиенты для разных СУБД и сценариев).

Лицензирование

В течение многих лет Oracle лицензировала продукты по числу ядер процессора (а не сокетов, как Microsoft) или по числу «именованных» пользователей. В Enterprise Edition эта практика сохраняется: на Intel нужна лицензия на каждые 2 ядра, на SPARC — на 4.

Для Standard Edition и Standard Edition One лицензирование также возможно по числу сокетов. Изменения политики в Standard Edition с 12c, а также общая политика лицензирования для виртуализированных сред вызывали критику пользователей[12].

Express Edition можно бесплатно использовать и распространять в составе собственных решений без необходимости получения лицензии.

История

История Oracle Database связана с работами Эдгара Кодда (IBM, 1970-е), чьи исследования вдохновили Ларри Эллисона на разработку собственной базы данных — Oracle. Первая коммерческая версия вышла сразу как V2 (опасаясь, что продукт с номером 1 будет восприниматься как незрелый).

Версии

История версий
Версия Дата Ветка/статус Ключевые изменения Источник
V2 1979 первая версия Запросы/джоины, нет транзакций
3 1983 Появление транзакций (COMMIT/ROLLBACK)
4 1984 Consistent read/Multiversion Concurrency Control
5 1985 Переход к архитектуре клиент—сервер
6 1988 PL/SQL, row-level locking, Oracle Forms 3
7 1992 Внешние ключи, триггеры, stored procedures, LONG-тип, пакет UTL_FILE
8, 8i 1997, 1999 Объекты, встроенная JVM, поддержка Unicode, BLOB/CLOB, добавлены rollup/cube; bulk-операции в PL/SQL
9i 2001 Flashback, новый Case/Interval вид типов, partition split, онлайн-реорганизация, iSQL*Plus
10g 2003 Grid, ASM, recycle bin, регулярные выражения, Data Pump, автоматизированный тюнинг (ADDM/SQL Tuning Advisor)
11g R1/R2 2007, 2009 SecureFiles, виртуальные колонки, Real Application Testing, RAC One Node
12c / 12c R2 2013, 2016/2017 Multitenant-архитектура (pluggable DB), поддержка JSON, In-Memory DB, расширение VARCHAR2 до 32 КБ, новые уровни сжатия, идентификаторы до 128 байт
18c июль 2018 Новая политика версий (по году); обновления по безопасности, производительности, DW, Multitenant, RMAN

[13]

19c / 21c 2019, 2021 Долгосрочная поддержка 19c, усовершенствования функциональности, новые уровни безопасности
23c / 23ai 2023, 2025 стабильная (23ai — наследник 19c) Новые возможности AI, доработки Multitenant, оптимизации [2][3]

Критика

Практику лицензирования Oracle Database критикуют многие пользователи[14].

Факты

Одним из первых сотрудников Oracle в 1977 году был Брюс Скотт[15]; его дочь назвала кошку Тайгер. Так возник учётная запись «scott» с паролем «tiger» — до сих пор используемая для демонстраций.

Примечания

Ссылки