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]
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), но каждый экземпляр работает только с одним набором файлов.
Обрабатывает входящие запросы на соединение и перенаправляет клиентов к нужным инстанциям. Запускает серверные процессы по мере необходимости.
Распределяет ресурсы процессора и памяти. Состоит из ряда серверных (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 | ||
| 19c / 21c | 2019, 2021 | Долгосрочная поддержка 19c, усовершенствования функциональности, новые уровни безопасности | ||
| 23c / 23ai | 2023, 2025 | стабильная (23ai — наследник 19c) | Новые возможности AI, доработки Multitenant, оптимизации | [2][3] |
Критика
Практику лицензирования Oracle Database критикуют многие пользователи[14].
Факты
Одним из первых сотрудников Oracle в 1977 году был Брюс Скотт[15]; его дочь назвала кошку Тайгер. Так возник учётная запись «scott» с паролем «tiger» — до сих пор используемая для демонстраций.
Примечания
Ссылки
- Oracle Help Center (англ.)
- Документация по СУБД Oracle 7.3.4–11.x (англ.). sysdba.de. Дата обращения: 3 августа 2025. Архивировано 8 августа 2018 года.
- Oracle Technology Network (англ.)
- Немецкая группа пользователей Oracle
- SQL*Plus Tutorial (англ.)
- Oracle Licensing Knowledge Net (англ.)