База данных Oracle. Структура и основные понятия СУБД Oracle
Oracle Database — это объектно-реляционная СУБД (система управления базами данных), созданная компанией Oracle. В настоящее время она имеет множество разных версий и типов. Однако в этой статье мы поговорим не о видах баз данных Oracle, а о структуре и основных концепциях, которые относятся к СУБД Oracle Database. Поняв архитектуру СУБД Oracle, вы заложите фундамент, необходимый для понимания прочих средств (а они весьма обширны), предоставляемых базой данных Oracle.
Базы данных Oracle: экземпляры и сущности
СУБД Oracle Database включает в себя физические и логические компоненты. Особого упоминания заслуживает понятие экземпляра. Замечено, что некоторые используют термины «база данных» и «экземпляр» в качестве синонимов. Да, это взаимосвязанные, но всё же разные вещи. База данных в терминологии Oracle — это физическое хранилище информации, а экземпляр — это программное обеспечение, которое работает на сервере и предоставляет доступ к информации, содержащейся в базе данных Oracle. Экземпляр исполняется на конкретном сервере либо компьютере, в то самое время как база данных хранится на дисках, подключённых к этому серверу:
При этом база данных Oracle является физической сущностью, состоящей из файлов, которые хранятся на дисках. В то же самое время, экземпляр – это сущность логическая, состоящая из структур в оперативной памяти и процессов, которые работают на сервере. Экземпляр может являться частью только одной базы данных. При этом с одной базой данных бывает ассоциировано несколько экземпляров. Экземпляр ограничен по времени жизни, тогда как БД, условно говоря, может существовать вечно.
Также стоит заметить, что у пользователей нет прямого доступа к информации, которая хранится в базе данных Oracle — они должны запрашивать эту информацию у экземпляра Oracle.
Если упрощённо, то экземпляр — это мост к базе данных, а сама БД – это остров. Когда экземпляр запущен, мост работает, а данные способны попадать в базу данных Oracle и покидать её. Если мост перекрыт (экземпляр остановлен), пользователи не могут обращаться к базе данных, несмотря на то, что физически она никуда не исчезла.
Структура базы данных Oracle
База данных Oracle включает в себя: — табличные пространства; — управляющие файлы; — журналы; — архивные журналы; — файлы трассировки изменения блоков; — ретроспективные журналы; — файлы резервных копий (RMAN).
Табличные пространства Oracle
Любые данные, которые хранятся в базе данных Oracle, просто обязаны существовать в каком-либо табличном пространстве. Под табличным пространством (tablespace) понимают логическую структуру, то есть вы не сможете попросить ОС показать вам табличное пространство Oracle.
При этом каждое табличное пространство включает в себя физические структуры, называемые файлами данных (data files). Одно табличное пространство Oracle способно содержать один либо несколько файлов данных, в то время как каждый файл данных может принадлежать лишь одному tablespace. Создавая таблицу, мы можем указать, в какое именно табличное пространство мы её поместим — Oracle находит для неё место в каком-нибудь из файлов данных, которые составляют указанное табличное пространство.
На рисунке ниже вы можете посмотреть на соотношение между файлами данных и табличными пространствами в базе данных Oracle.
Создавая новую таблицу, мы можем поместить её в табличное пространство DATA1 либо DATA2. Таким образом, физически наша таблица окажется в одном из файлов данных, которые составляют указанное табличное пространство.
Файлы базы данных Oracle
База данных Oracle может включать в себя физические файлы 3-х основных типов: • control files — управляющие файлы; • data files — файлы данных; • redo log files — журнальные файлы либо журналы.
Посмотрим на отношения между ними:
В управляющих файлах содержится информация о местонахождении других физических файлов, которые составляют базу данных Oracle, — речь идёт о файлах данных и журналов. Также там хранится важная информация о содержимом и состоянии БД Oracle. Что это за информация: • имя базы данных Oracle; • время создания БД; • имена и местонахождение журнальных файлов и файлов данных; • информация о табличных пространствах; • информация об архивных журналах; • история журналов, порядковый номер текущего журнала; • информация о файлах данных в автономном режиме; • информация о резервных копиях, контрольных точках, копиях файлов данных.
При этом функция управляющих файлов не ограничивается хранением важной информации, нужной при запуске экземпляра, — полезны они и в процессе удалении БД Oracle. К примеру, уже с версии Oracle Database 10g можно посредством команды DROP DATABASE удалить все файлы, которые перечислены в управляющем файле БД, включая сам управляющий файл.
Инициализация СУБД Oracle
Когда вы запускаете экземпляр Oracle, происходит считывание параметров инициализации. Параметры определяют, каким образом базе данных Oracle следует использовать физическую инфраструктуру и прочую конфигурационную информацию об экземпляре.
Как правило, инициализационные параметры хранятся в файле параметров инициализации экземпляра (обычно это INIT.ORA) либо, начиная с Oracle9i, в репозитории, называемом файлом параметров сервера (SPFILE). С выходом каждой новой версии Oracle число обязательных параметров инициализации уменьшается.
Кстати, в дистрибутиве Oracle можно найти пример файла инициализации, который пригоден для запуска базы данных. Также можно воспользоваться специальной программой Database Configuration Assistant (DCA) — она подскажет обязательные значения.
Вот, к примеру, как выглядит список обязательных параметров инициализации для СУБД Oracle Database 11g: 1. Местонахождение управляющих файлов — CONTROLFILES . 2. Локальное имя БД — DB_NAME . 3. Имя домена БД Oracle — DBDOMAIN . 4. Местонахождение архивного журнала — LOGARCHIVEDEST . 5. Параметр, который включает архивирование журналов — LOG_ARCHIVE_DEST_STATE . 6. Местонахождение области быстрого восстановления — DBRECOVERYFILEDEST . 7. Наибольший размер области быстрого восстановления БД Oracle в байтах — DBRECOVERYFILEDESTSIZE . 8. Размер блока БД в байтах — DBBLOCKSIZE . 9. Наибольшее количество процессов ОС, которые обслуживают одновременный доступ к СУБД Oracle — PROCESSES . 10. Наибольшее число сеансов работы с БД — SESSIONS . 11. Наибольшее количество открытых курсоров в базе данных — OPEN_CURSORS . 12. Наименьшее количество разделяемых серверов базы данных Oracle — SHARED_SERVERS . 13. Имя удалённого прослушивателя — REM O TE_LI S TENER . 14. Версия СУБД Oracle, с которой должна поддерживаться совместимость — COMPATIBLE . 15. Размер области памяти, которая автоматически выделяется для PGA и SGA экземпляра — MEMORY_TARGET . 16. Время ожидания возможности установить монопольную блокировку до отправки сообщения об ошибке (для команд DDL) — DDLLOCKTIMEOUT . 17. Язык, который определён в подсистеме поддержки национальных языков для базы данных Oracle — NLS_LANGUAGE . 18. Территория, которая определена в подсистеме поддержки национальных языков для БД — NLS_TERRITORY .
Более подробную информацию смотрите в официальной документации для СУБД Oracle Database.
Что такое Oracle?
Oracle – это система управления базами данных (СУБД), которая была создана одноименной компанией. Её основал Ларри Эллисон, который родился в США 1994 года от девятнадцати летней еврейки, муж которой ее бросил еще до появления ребенка. В конце семидесятых этот человек создал первую версию системы, ее назвали Oracle версия 2. Именование продукта было взято из одного из проектов ЦРУ, остановка от работы над ним заставила Ларри подыскать работу получше. Стартовая версия сего продукта была написана на assembler, который вскоре заменили. Был выбран язык Си для написания последующих версий, ибо Паскаль был дороже по лицензии, а про Аду ничего не известно, хоть и была популярной в те времена.
Ларри очень был категоричным к СССР, писав в 1988 году, что в матушку-Россию эта СУБД попадет лишь с ядерными бомбами, ведь Oracle была на счету Министерства обороны США. Первая незаконная русификация СУБД очень огорчила дядю Ларри, который принял меры к наказанию этих ребят-энтузиастов. Но в настоящее время очень активно используются продукты этой компании как Java, Virtual Box и Oracle DataBase.
Смешной факт таков, что компания очень «эффективно» боролась с терроризмом, ведь любой пользователь кто бы ни качал с сайта версию программы, обязан был поставить галочку под соглашением, что он не террорист и не будет использовать программу для незаконных действий.
Основное что известно об этой компании, что она в 2009 году поглотила Sun Microsystems вместе с правами на язык программирования Java и другими пирожками. Уволили с Ларри-несогласных людей, позакрывав кучу проектов, например OpenSolaris. Хотел придушить еще OpenOffice, но это у него, к счастью, не получилось. Довольствовался лишь сменой названия на LibreOffice.
Спустя 10 лет со времени создания корпорации Ларри все еще проводил собеседования абсолютно с каждым новым сотрудником, пришедшем в эту компанию.
На сегодняшний день компания Oracle является лидером на рынке разработки ПО для управления данными и вторым по масштабу независимым производителем различного полезного софта. Трудно представить программиста на Java, который ничего не знает об этой корпорации. Но их главный продукт Oracle DataBase занимает достойное место среди различных систем управления базами данных, которые используются чуть ли не на каждом предприятии. А основатель компании Ларри Элиссон в 2010 году был на шестой позиции в мировом рейтинге миллиардеров. Его состояние измерялось в двадцать семь миллиардов долларов США, и, судя по темпам развития компании, его достаток будет лишь расти.
При подготовке материала использовались источники:
https://otus.ru/nest/post/1577/
http://support-rb.ru/materials/chto_takoe_oracle/