Взято http://subscribe.ru/archive/comp.soft.db.oraclefromzero/200304/03160028.html
Несколько подредактировано.

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

Табличное пространство Oracle является самым нижним логическим слоем структуры данных. Оно состоит из одного или более файлов данных. В ранних версиях СУРБД Oracle размер файлов данных был фиксированным, но теперь файлы могут быть увеличены как автоматически, так и вручную.

Значимость табличных пространств заключена в том, что они предоставляют великолепную степень детализации расположения информации в файлах данных. После создания табличного пространства, процесс расположения и распределения таблиц в нем уходит из-под Вашего контроля. При аккуратном конфигурировании табличного пространства, у Вас будет несколько обобщенных опций, но основная масса работы по внутреннему расположению объектов будет выполнена автоматически.

Табличные пространства могут содержать любые из четырех видов сегментов:

- сегменты данных (Data segments) - основной тип, используется для хранения таблиц и кластеров.
- индексные сегменты (Index segments) - используются для хранения индексов.
- сегменты отката (Rollback segments) - специальные сегменты, хранящие информацию для отмены выполненных действий.
- временные сегменты (Temporary segments) - используются для хранения временных данных.

Табличные пространства по умолчанию являются доступными как для чтения, так и для записи, но могут быть изменены на состояние "только для чтения". Во многих ситуациях табличные пространства только для чтения могут оказаться незаменимыми.

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

Создание табличных пространств состоит из указания одного или более файлов данных, а также параметров хранения (storage parameters). Параметры хранения указывают то, как будут использоваться табличные пространства.

Как и большинство других операций, табличные пространства могут быть созданы либо с использованием Oracle Enterprise Manager (графически), либо с помощью команд консоли sqlplus.

Создание табличного пространства командой CREATE TABLESPACE

Вы можете создать табличное пространство в консоли sqlplus, используя команду CREATE TABLESPACE. Команда может быть введена интерактивно или выполнена из готового скрипт-файла. По-моему, предпочтительнее пользоваться SQL-скриптом, так как он может быть выполнен повторно. Кроме того, можно создать шаблон и по надобности вносить изменения. Сохраненный SQL-скрипт может оказаться весьма кстати после катастрофы. Итак, для создания табличного пространства применяется следующая команда:

CREATE TABLESPACE
DATAFILE file_specification
[AUTOEXTEND OFF]
или [AUTOEXTEND ON [NEXT число K или M]
[MAXSIZE UNLIMITED или MAXSIZE число K или M]
[NOLOGGING или LOGGING]
[, file_specification
[AUTOEXTEND OFF]
или [AUTOEXTEND ON [NEXT число K или M]
[MAXSIZE UNLIMITED или MAXSIZE число K или M]
[NOLOGGING или LOGGING]]
[MINIMUM EXTENT число K или M]
[DEFAULT STORAGE storage_clause]
[ONLINE или OFFLINE]
[PERMANENT или TEMPORARY]

DATAFILE

- DATAFILE file_specification - определяет имена (или имя) файлов данных, составляющих табличное пространство. File_specification - это 'имя_файла' SIZE число (K или M) [REUSE]. Спецификация файла используется для указания имени и первоначального размера в (К)илобайтах или в (М)егабайтах файла данных. Параметр [REUSE] позволяет воспользоваться уже существующим в системе файлом.

Уточнения параметра DATAFILE:

- AUTOEXTEND OFF - параметр указывает, что средство автоувеличения размера файла использоваться не будет.

- AUTOEXTEND ON - автоувеличение размера файла будет использовано. Дополнительно можно указать:

- NEXT число K или M - когда файл данных самоувеличивается, он изменяется на указанный объем.

- MAXSIZE UNLIMITED - размер файла будет ограничен лишь физическим диском и особенностями операционной системы.

- MAXSIZE число K или M - файл данных не может быть больше указанного объема.

Вот остальные параметры команды CREATE TABLESPACE:

- LOGGING - указывает, что в журнал выполненных операций будет заноситься информация о таблицах, индексах и разделах. Параметр по умолчанию. Журналирование может быть отменено для этих операций опцией NOLOGGING.

- NOLOGGING - журналирование не будет выполняться для операций, поддерживающих эту опцию.

- MINIMUM EXTENT число K или M - указывает минимальный размер экстентов табличного пространства.

- DEFAULT STORAGE storage_clause - указывает параметры по умолчанию хранения табличного пространства.

- ONLINE - табличное пространство становится оперативным сразу после своего создания.

- OFFLINE - табличное пространство недоступно непосредственно после своего создания (до тех пора, пока не будет переведено в оперативное состояние).

- TEMPORARY - табличное пространство будет использовано для хранения временных объектов.

- PERMANENT - указывает табличному пространству хранить перманентные объекты. (Опция по умолчанию).

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

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

Довольно часто приходится менять уже созданное табличное пространство.

Изменение состояния табличного пространства на автономное

Имеем несколько вариантов выполнения такой операции. Это: нормальный, временный и немедленный перевод состояния на автономный.

Табличное пространство в нормальном автономном режиме

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

Табличное пространство во временном автономном режиме

Перевод табличного пространства в автономный режим с опцией Temporary (временно) возможен даже в том случае, если некоторые из файлов данных недоступны. Т.е. если у Вас есть какие-либо проблемы с файлом данных, Вы можете перевести табличное пространство в автономный режим с опцией "временно". Для всех доступных файлов данных будет произведена контрольная точка. Однако перевод обратно в оперативный режим может потребовать восстановления.

Немедленный перевод табличного пространства в автономный режим

Опция Immediate (немедленно, сразу) перевода табличного пространства в автономный режим делает именно то, что требуется: сразу переводит табличное пространство в автономный режим. Но контрольная точка не будет произведена, поэтому возврат в оперативный режим потребует процедуру восстановления.

Перевод табличного пространства в оперативный режим

Любое табличное пространство, которое было переведено в автономный режим по каким-либо причинам может быть переведено обратно в оперативный режим через Enterprise Manager или через Server Manager (с использованием SQL-команды). Перевод табличного пространства в оперативный режим изменяет его состояние таким образом, что табличное пространство становится доступным для пользователей. Возможно, потребуется процедура восстановления, в зависимости от того, как табличное пространство было переведено в автономный режим.

Дефрагментация табличного пространства

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

Дефрагментируя табличное пространство, Вы объединяете маленькие свободные экстенты в большие, тем самым, формируя больше места для назначения новых экстентов.
Фоновый серверный процесс SMON автоматически производит объединение мелких свободных экстентов, т.е. дефрагментацию. Естественно, дефрагментация происходит постоянно, за исключением тех моментов, когда процесс SMON отключен. Очень редко возникает необходимость произвести дефрагментацию вручную, однако надо знать, зачем и как это сделать.

Добавление файлов данных

Необходимость в новых файлах данных возникает достаточно часто. Новые файлы данных нужны либо для увеличения свободного пространства, либо для распределения нагрузки ввода-вывода между несколькими физическими дисковыми накопителями. Добавить файл в табличное пространство гораздо быстрее, чем сформировать его в процессе создания БД. Команда CREATE TABLESPACE работает последовательно, т.е. создает один файл данных за раз. Операция же добавления файлов данных может быть распараллелена (несколько файлов данных можно добавить за раз).

Изменение свойств табличного пространства

Табличное пространство может быть изменено в Storage Manager и с помощью команды ALTER TABLESPACE (которую можно выполнить в Server Manager).

Вы можете воспользоваться следующими возможными опциями:

- Online - переводит табличное пространство в оперативный режим
- Offline - переводит табличное пространство в автономный режим
- Read Only - переводит табличное пространство в режим "только для чтения"
- Permanent - переводит временное табличное пространство в перманентное
- Temporary - переводит перманентное табличное пространство во временное

Изменение табличного пространства командой ALTER TABLESPACE

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

Синтаксис команды ALTER TABLESPACE

ALTER TABLESPACE tablespace
[LOGGING или NOLOGGING]
[ADD DATAFILE file_specification
[AUTOEXTEND OFF]
или [AUTOEXTEND ON [NEXT число K или M]
[MAXSIZE UNLIMITED или MAXSIZE число K или M]]
[, file_specification
[AUTOEXTEND OFF]
или [AUTOEXTEND ON [NEXT число K или M]
[MAXSIZE UNLIMITED или MAXSIZE число K или M]]
[RENAME DATAFILE 'filename' [, 'filename']...
TO 'filename' [, 'filename']...]
[COALESCE]
[DEFAULT STORAGE storage_clause]
[MINIMUM EXTENT число [K или M]]
[ONLINE]
[OFFLINE NORMAL или OFFLINE TEMPORARY или OFFLINE IMMEDIATE]
[BEGIN BACKUP или END BACKUP]
[READ ONLY или READ WRITE]
[PERMANENT или TEMPORARY]

Многие из параметров этой команды нам уже знакомы. Например, LOGGING и NOLOGGING аналогичны соответствующим параметрам команды CREATE TABLESPACE. Также, думаю, не нуждаются в комментариях ключевые слова AUTOEXTEND, NEXT, MAXSIZE, MINIMUM EXTENT, PERMANENT и TEMPORARY.

- ADD DATAFILE file_specification - этим параметром указываются один или более файлов данных на добавление в табличное пространство. (Что такое file_specification, мы уже рассмотрели выше)

- RENAME DATAFILE 'filename' [, 'filename']... TO 'filename' [, 'filename'] - параметр команды используется для переименования одного или более файлов данных.

- COALESCE - параметр используется для принудительного выполнения дефрагментации табличного пространства, как было описано ранее.

- DEFAULT STORAGE storage_clause - указывает параметры по умолчанию хранения табличного пространства. Эти параметры используются в момент создания новых объектов схемы (если, конечно, они не указываются явно при создании конкретного объекта).

- ONLINE - параметр используется для перевода табличного пространства в оперативный режим.

- OFFLINE NORMAL - перевод табличного пространства в нормальный автономный режим.

- OFFLINE TEMPORARY - перевод табличного пространства во временный автономный режим.

- OFFLINE IMMEDIATE - немедленный перевод табличного пространства в автономный режим.

- BEGIN BACKUP - Переводит табличное пространство в автономный режим и приостанавливает любые изменения файлов данных на момент создания резервной копии.

- END BACKUP - Переводит табличное пространство обратно в оперативный режим и производит запись всех изменений файлов данных, имевших место в процессе создания резервной копии.

- READ ONLY - Переводит табличное пространство в режим "только для чтения".

- READ WRITE - Переводит табличное пространство из режима "только для чтения" в обычный, позволяющий как чтение, так и запись файлов данных.

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

Оператор STORAGE

В командах CREATE TABLESPACE и ALTER TABLESPACE присутствует параметр "DEFAULT STORAGE storage_clause". Здесь мы рассмотрим подробно параметры storage_clause. Это достаточно важные параметры, так как они определяют первоначальный размер и характеристики табличного пространства, а также дальнейший его рост.

Запомните, что оператор DEFAULT STORAGE используется для создания экстентов. А экстенты используются для хранения объектов схемы. Параметры хранения, указанные в DEFAULT STORAGE, применяются при создании и росте объектов схемы. К объектам схемы, которые создаются с указанием конкретных параметров хранения, параметры хранения по умолчанию не применяются.

Оператор STORAGE имеет следующий синтаксис:

STORAGE
(
[INITIAL число K или M]
[NEXT число K или M]
[MINEXTENTS число]
[MAXEXTENTS число или MAXEXTENTS UNLIMITED]
[PCTINCREASE число]
[FREELISTS число]
[FREELIST GROUPS число]
[OPTIMAL [число K или M] или [NULL]]
)

Вот что означают отдельные части оператора:

- INITIAL число K или M - указывает первоначальный размер экстентов, которые создаются для новых объектов схемы. По умолчанию равен размеру 5-ти блоков данных. При указании конкретного размера (в килобайтах или мегабайтах), он округляется до кратности 5 блокам данных.

- NEXT число K или M - указывает размер последующих экстентов. Также округляется до кратности 5 блокам данных.

- MINEXTENTS число - указывает минимальное число экстентов, выделяемых для объекта схемы в момент его создания. Каждый из этих экстентов по размеру равен числу INITIAL, а для последующих размер рассчитывается на основе параметров NEXT и PCTINCREASE. По умолчанию MINEXTENTS = 1, за исключением сегментов отката (по умолчанию для них MINEXTENTS = 2).

- MAXEXTENTS число - максимально число экстентов (включая первый) для объектов схемы.

- MAXEXTENTS UNLIMITED - максимальное количество экстентов не ограничено. Не рекомендуется использовать этот параметр для любых объектов (кроме сегментов отката).

- PCTINCREASE число - определяет размер экстентов после второго (т.е. начиная с третьего экстента). Размер первоначального экстента равен INITIAL. Размер второго экстента равен NEXT. Если PCTINCREASE не равен нулю, то все последующие экстенты будут определяться как предыдущий размер экстента, увеличенный на процент PCTINCREASE. Если PCTINCREASE равен нулю, то все последующие экстенты по размеру будут равны числу NEXT. По умолчанию PCTINCREASE = 50 (для сегментов отката по умолчанию он равен нулю).

- FREELISTS число - указывает число списков свободной памяти для каждой группы списков. Список свободной памяти - это связный список доступных блоков данных в экстенте, имеющем свободного пространства более чем PCTFREE. В сущности, это список блоков, готовых принять информацию. При использовании более одного списка, Вы снижаете конфликты вноса информации.

- FREELIST GROUPS число - указывает число групп списков свободной памяти в среде параллельного сервера. Использование нескольких групп позволяет каждому экземпляру иметь свой собственный набор списков свободной памяти. Параметр используется только в среде параллельного сервера.

- OPTIMAL число K или M - параметр применим только к сегментам отката. Он указывает идеальный размер сегмента. Как мы увидим в одном из следующих выпусков, сегмент отката постоянно растет в размерах. А этот параметр указывает тот размер, который Oracle должен пытаться сохранить.

- OPTIMAL NULL - этот параметр указывает сегменту отката никогда не пытаться уменьшить свой размер (и приблизить его к желаемому, как в предыдущем параметре).

Параметры хранения могут быть применены не только в процессе создания табличного пространства, но и во время создания различных объектов схемы. Размер и характеристики табличного пространства оказывают значительное влияние на производительность системы.

Примечание: для табличных пространств Вы указывает опции DEFAULT STORAGE (т.е. по умолчанию). Эти опции будут применятся при создании объектов схемы, если Вы их не перекроете новыми конкретными значениями.

Табличные пространства "только для чтения"

Как уже было сказано ранее, есть возможность перевести табличное пространство в режим "только для чтения". Табличное пространство "только для чтения" отличается от обычного лишь тем, что не сохраняются изменения объектов схемы. В этом случае отпадает необходимость в резервном копировании такого табличного пространства.

Так как табличные пространства "только для чтения" не изменяются Oracle-сервером, то есть возможность поместить их, например, на компакт-диск. Если данные являются архивными по своей природе, но в них периодически возникает необходимость, то использование CD-ROM может оказаться идеальным решением.

Создание табличных пространств "только для чтения"

Любое табличное пространство первоначально должно быть создано в режиме "чтение-запись" и заполнено необходимыми данными. После добавления данных и создания индексов, соответствующих Вашим спецификациям, табличное пространство может быть переведено в режим "только для чтения". Это может быть достигнуто несколькими способами.

Для Enterprise Manager-а или Storage Manager-а просто откройте форму редактирования табличного пространства и поставьте флажок напротив надписи Read Only.

Если Вы нажмете после этого кнопку SHOW SQL, то получите возможность лицезреть DDL-команду этой операции. Рекомендую пользоваться этой кнопкой при каждом удобном случае, так Вы поймете сущность выполняемых операций.

Также можно воспользоваться командой ALTER TABLESPACE вот так:

ALTER TABLESPACE CARS READONLY;

Существует множество причин использования табличных пространств "только для чтения", но они очень специфичны. Нужны они или нет - решать Вам.

Временные табличные пространства (Temporary Tablespaces)

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

Когда операция сортировки не умещается в памяти, она должна создать и воспользоваться временным сегментом. В этом временном сегменте выделяются экстенты под операцию до тех пор, пока не окажется достаточно места. При использовании больших DSS-запросов (Decision Support System - см. выпуск первый), эти временные сегменты могут стать по-настоящему гигантскими. С использование табличных пространств, специально предназначенных для таких операций, не только сортировка становиться более эффективной, но и меньше временных сегментов будет использовано в табличных пространствах с данными.

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

Табличное пространство может стать временным как во время создания (CREATE), так и во время изменения (ALTER). При использовании Enterprise Manager-а надо просто в окне диалога создания/изменения табличного пространства поставить галочку напротив Temporary. SQL-команда для выполнения этой операции такова:

ALTER TABLESPACE CARS TEMPORARY;

Маловероятно, что Вам когда-либо понадобится переводить перманентные табличные пространства во временные и обратно. Временное табличное пространство обычно создают таким сразу, и оно остается им на все время своего существования.

Locally vs. Dictionary Managed Tablespaces
http://www.orafaq.com/node/3


CREATE TABLESPACE ts2 DATAFILE '/u02/oradata/ora112/myts2.dbf' SIZE 50M
      EXTENT MANAGEMENT LOCAL
      SEGMENT SPACE MANAGEMENT AUTO;