Табличные пространства Oracle: типы, виды, назначение и управление

Что такое табличное пространство Oracle?Базы данных Oracle логически делятся на одно или более табличных пространств. Табличное пространство Oracle — это логическая сущность, содержащая физические базы данных. Табличные пространства хранят все доступные данные базы, и эти данные в табличных пространствах физически хранятся в одном или более файле данных. Файлы данных - это сформированные Oracle файлы операционной системы. Табличное пространство — просто логическая конструкция, являющаяся первичной логической структурой хранения в базе данных Oracle. Обычно вы должны хранить взаимосвязанные таблицы вместе в одном и том же табличном пространстве, поскольку табличное пространство также служит логическим контейнером для логических сегментов, таких как сегменты таблиц.

Размер ваших табличных пространств зависит от размера ваших таблиц и индексов, а также общего объема данных в баз — здесь не существует правил о минимальном и максимальном размере табличного пространства (максимально возможный размер слишком велик, чтобы принимать это ограничение во внимание). Обычным делом являются табличные пространства размером в 100 Гбайт, сосуществующие в одной и той же базе данных с табличными пространствами в 1 Гбайт и даже намного меньше.

Файлы данных, содержащие данные табличных пространств, все вместе составляют общий объем физического пространства, выделенного определенной базе данных. Размер табличного пространства складывается из размеров файлов, содержащих данные, и если вы сложите все размеры табличных пространств или размеры всех файлов данных, то получите размер самой базы данных. Если вы выйдете за пределы базы данных, добавляя новые данные, вам понадобится добавить новые табличные пространства с новыми файлами данных, добавить новые файлы данных к существующим табличным пространствам, или же увеличить существующие файлы данных табличных пространств. Как это делается будет показано в следующих моих статьях.

Не существует простого и общеприменимого правила, регламентирующего количество табличных пространств, которые вы можете иметь в одной базе данных Oracle.

Следующие пять табличных пространств обычно представляют собой табличные пространства по умолчанию, которые должны иметь все базы данных, даже несмотря на то, что в принципе можно создать базу данных включающую всего два из них:

Традиционно администраторы Oracle используют десятки, а иногда и сотни табличных пространств для хранения всех прикладных таблиц и индексов, и если вы уверены, что действительно потребуется большое количество табличных пространств для группирования всех взаимосвязанных прикладных таблиц и индексов, то это нормально. Однако вы не обязаны использовать большое количество табличных пространств. Сегодня большинство организаций применяют диспетчер Logical Volume Manager для разнесения логических томов и файлов данных на множество физических дисков. Таким образом, крупные табличные пространства могут занимать несколько физических дисков. Раньше приходилось создавать разные табличные пространства на разных физических дисках, чтобы избежать конкуренции ввода-вывода, но современные структуры организации дисков устранили эту проблему, и вы при желании можете обойтись меньшим числом табличных пространств. Вы можете использовать только одно табличное пространство для всех прикладных данных, по-скольку файлы данных, являющиеся частью табличного пространства, могут быть “размазаны” по нескольким дискам. Именно поэтому традиционное требование размещать таблицы и индексы в разных табличных пространствах отныне не так важно.


 Для чего нужны табличные пространства?


Табличные пространства выполняют ряд ключевых функций в базе данных Oracle, но концепция табличного пространства не является общей для всех реляционных баз данных. Так, например, в базе данных Microsoft SQL Server эта концепция не используется вообще. Ниже приведен краткий список преимуществ использования табличных пространств.


Табличные пространства теперь используются, прежде всего, для разделения определенных групп таблиц и индексов. Это может быть важно, если вы хотите перемещать табличные пространства между разными базами данных и платформами, используя утилиту Oracle Data Pump, или если вы применяете разные размеры блоков данных в разных табличных пространствах. Если вы полагаете, что вам не придется выполнять эти административные задачи с использованием табличных пространств, то можете применять всего пару табличных пространств для хранения всех данных базы.

 

Размеры блоков и табличные пространства

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

 

Настройка размера блока для табличного пространства обеспечивает несколько преимуществ

Оптимизация операций дискового ввода-вывода. Помните, что сервер базы данных Oracle должен читать табличные данные с физических дисков в область буфера кэширования для дальнейшей обработки. Одной из главных ваших целей,как администратора базы данных, является оптимизация дорогостоящего ввода-вывода при чтении и записи на диск. Если у вас есть таблицы с очень длинными строками, лучше выбрать большой размер блока — тогда каждое чтение извлечет больше данных, чем вы получите при меньшем размере блока, и в результате для получения того же объема данных понадобится меньше операций чтения. Таблицы с большими объектами (LOB) также выиграют от очень блоков очень большого размера. С другой стороны, таблицы с малой длиной строки могут использовать блоки малого размера в качестве строительных блоков табличного пространства. Если у вас в базе есть индексы огромного размера, вам понадобится большой размер блока для их табличного пространства, чтобы каждое чтение извлекало большее количество указателей индекса.

Обзор табличных пространств в базе данных Oracle

Оптимальное кэширование данных. Oracle выделяет отдельные пулы для блоков различного размера, что приводит к лучшему использованию памяти Oracle. Мы поговорим об этом в последующих разделах.

Облегчение переноса табличных пространств. Если есть табличные пространства с несколькими размерами блоков, легче будет использовать средство “переносных табличных пространств”. В дальнейшем я планирую опубликовать статью, в которой вы найдете примеры, демонстрирующие процесс переноса табличных пространств между базами данных Oracle (готово! читайте эту статью).


На заметку! Каждое табличное пространство Oracle состоит из одного или более файлов операционной системы с данными, и каждый такой файл может относиться только к одному табличному пространству. Во время создания базы данных только два табличных пространства должны присутствовать обязательно. Это табличное пространство System (ключевое табличное пространство Oracle, содержащее данные словаря Oracle) и табличное пространство Sysaux (которое является вспомогательным табличным пространством для System и содержит данные, используемые различными продуктами и средствами Oracle). При инсталляции Oracle сначала автоматически создает табличное пространство System, а за ним — Sysaux, но вы указываете файл данных для каждого из них. Позднее можно добавлять и удалять табличные пространства по своему желанию, однако нельзя удалить или переименовать табличные пространства System и Sysaux.


Конечно, вы должны также создать отдельные табличные пространства приложений, чтобы хранить данные и индексы. Именно эти табличные пространства будут составлять основную часть размера базы данных.

Локально управляемые табличные пространства Oracle сами хранят информацию для управления пространством в файлах данных и отслеживают состояние свободы или занятости блоков каждого файла данных. Информация о свободном и занятом пространстве в файлах данных хранится в виде битовых карт внутри заголовков файла данных. Битовые карты (bitmaps) — это структуры, использующие отдельные биты для описания места в блоке или группе блоков. Помните, что когда объекту нужно расти,Oracle выделяет ему новое пространство, измеряемое в экстентах, а не в индивидуальных блоках данных. Поэтому когда новый экстент должен быть выделен объекту, Oracle выбирает первый свободный файл данных и просматривает его битовую карту в поисках свободных непрерывных блоков данных. Если подходящий блок найден, то Oracle выделяет экстент и затем изменяет битовую карту в файле данных, чтобы изменить статус занятости блоков в экстенте.

Во время этого процесса словарь данных никак не используется, поэтому рекурсивные операции SQL значительно сокращены. Информация отката (rollback) не генерируется во время этого обновления битовых карт файлов данных. Это преимущество особенно существенно, если база данных относится к типу OLTP, с многочисленными вставками, удалениями и обновлениями, которые происходят непрерывно.

 

Типы табличных пространств

Помимо табличных пространств System и Sysaux, скорее всего, у вас будут табличные пространства Undo и Temporary. У вас также будет несколько других “постоянных” табличных пространств для хранения данных и индексов.

Ниже перечислены ключевые типы табличных пространств, с которыми вам, вероятно, придется встретиться.

Вас заинтересует / Intresting for you:

Поддерживаемые Oracle типы дан...
Поддерживаемые Oracle типы дан... 9536 просмотров Валерий Павлюков Wed, 24 Oct 2018, 08:00:37
Видеокурс по администрированию...
Видеокурс по администрированию... 10719 просмотров Илья Дергунов Mon, 14 May 2018, 05:08:47
Обновление до Oracle Database ...
Обновление до Oracle Database ... 7854 просмотров Илья Дергунов Tue, 21 Nov 2017, 13:18:05
Как удалить табличное простран...
Как удалить табличное простран... 7048 просмотров Александров Попков Tue, 21 Nov 2017, 13:18:46
Печать
Войдите чтобы комментировать

Vovan_ST аватар
Vovan_ST ответил в теме #9153 5 года 7 мес. назад

OraCool пишет: Сколько уже занимаюсь базами Oracle, а о табличном пространстве Smallfile не слыхал.

Иногда очень даже гождается! Использую его при программировании приложений под Oracle.
Pesok аватар
Pesok ответил в теме #9100 5 года 9 мес. назад
Не хватило подробного описания табличного пространства Bigfile и Smallfile, а так Норм!
OraCool аватар
OraCool ответил в теме #8777 6 года 5 мес. назад
Сколько уже занимаюсь базами Oracle, а о табличном пространстве Smallfile не слыхал.