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

Вы создаете табличные пространства оператором CREATE TABLESPACE. Для создания временного табличного пространства должен использоваться оператор CREATE TEMPORARY TABLESPACE, а для создания табличного пространства отмены — оператор CREATE UNDO TABLESPACE. Первый шаг в создании табличного пространства состоит в создании структуры каталогов, в которой база данных размещает файлы данных. Поэтому в следующем разделе мы сначала поговорим о файлах данных.

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

Табличное пространство в базе Oracle Database может иметь один или более файлов данных, а файл данных может принадлежать только одному табличному пространству. Oracle создает файл данных для табличного пространства, когда во время создания табличного пространства указывается ключевое слово DATAFILE. Создаваемому файлу данных выделяется определенный объем физического дискового пространства на диске операционной системы. Когда Oracle впервые создает файл данных, он пуст, но выделен исключительно для использования Oracle, а свободное место, которое показывает команда df –k, отражает его как занятое место с точки зрения операционной системы.

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

В простейшем случае локально управляемые табличные пространства всегда необходимо создавать с опцией AUTOALLOCATE по умолчанию, если только не ожидается,что табличное пространство будет содержать объекты одинакового размера, требующие экстентов одинакового размера. Аналогично выбирайте автоматическое управление пространством сегмента (указав SEGMENT SPACE MANAGEMENT AUTO при создании табличного пространства), потому что это дает лучшую производительность и использование пространства, чем ручное управление пространством сегмента. Как упоминалось ранее, AUTOALLOCATE принято по умолчанию для управления экстентами, и автоматическое управление пространством сегментов — стандарт для управления пространством сегментов.

Давайте создадим постоянное табличное пространство, используя команду CREATE TABLESPACE. Обратите внимание на необходимость указания конструкции DATAFILE перед спецификацией файла, поскольку это постоянное табличное пространство. Для временного табличного пространства вместо этого нужно применять конструкцию TEMPFILE

SQL> CREATE TABLESPACE test01
2 DATAFILE '/pasx02/oradata/pasx/test01.dbf'
3* SIZE 500M;
Tablespace created.
SQL>

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


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

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

SQL> SELECT extent_management,
2 allocation_type,
3 segment_space_management
4 FROM dba_tablespaces
5* WHERE tablespace_name='TEST01';
EXTENT_MAN ALLOCATIO SEGMEN
---------- --------- -------
LOCAL      SYSTEM     AUTO
SQL>

Запомните правила по умолчанию, принятые в Oracle Database 11g Release 1:

  • управление экстентами: LOCAL
  • выделение размеров экстентов: AUTOALLOCATE (показано как SYSTEM в предыдущем выводе)
  • управление пространством сегмента: AUTO

Можно было бы создать идентичное табличное пространство, явно специфицируя все эти установки, как показано ниже:

SQL> CREATE TABLESPACE test02
2 DATAFILE '/pasx02/oradata/pasx/test02.dbf' size 500M
3 EXTENT MANAGEMENT local
4 AUTOALLOCATE 500M
5* SEGMENT SPACE MANAGEMENT auto;
Tablespace created.
SQL> 

Хотя по умолчанию управление экстентами локально для всех постоянных табличных пространств, вы указываете EXTENT MANAGEMENT LOCAL в операторе CREATE TABLESPACE, если хотите специфицировать конструкции AUTOALLOCATE или UNIFORM для расширения экстентов. Вы можете использовать тот же запрос, который применялся для табличного пространства test01, чтобы проверить, что два табличных пространства — test1 и test2 — имеют идентичное управление экстентами (LOCAL), тип расширения (AUTOALLOCATE) и управление пространством сегмента (AUTO).


На заметку! По умолчанию табличные пространства Oracle Database 11g являются локально управляемыми, с автоматическим управлением пространством сегмента. Когда вы создаете табличные пространства этого типа, можете специфицировать параметры хранения по умолчанию,такие как INITIAL, NEXT, PCTINCREASE, MINEXTENTS или MAXEXTENTS, но база данных проигнорирует эти установки.


 

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

Размер блока по умолчанию определяется параметром инициализации DB_BLOCK_SIZE вашей базы данных. Имеется возможность создавать табличные пространства с размерами блоков, которые отличаются от стандартного размера блока базы данных. Чтобы создать табличное пространство с нестандартным размером блока, необходимо иметь установленный инициализационный параметр DB_nK_CACHE_SIZE. Например, вы должны установить параметр DB_16K_CACHE_SIZE, если желаете создать табличное пространство с размером блока в 16 Кбайт.

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

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

  • Множественные буферные пулы позволяют конфигурировать до пяти различных пулов в буферном кэше, каждый со своим размером блока.
  • Табличное пространство System всегда должно создаваться со стандартным размером блока, указанным в параметре DB_BLOCK_SIZE файла init.ora.
  • Вы можете иметь до четырех нестандартных размером блоков.
  • Вы специфицируете размер блока для табличных пространств в операторе CREATE TABLESPACE,используя конструкцию BLOCKSIZE.
  • Нестандартные размеры блоков должны выбираться из ряда 2 Кбайт, 4 Кбайт. 8 Кбайт, 16 Кбайт или 32 Кбайт. Разумеется, один из этих размеров должен быть выбран в качестве стандартного и указан в параметре DB_BLOCK_SIZE файла init.ora.
  • Если вы переносите табличные пространства между базами данных, использование табличных пространств с различными размерами блоков облегчит такой перенос.

При создании табличного пространства ключевое слово BLOCKSIZE служит для спецификации нестандартного размера блока. Следующий оператор создает табличное пространство с нестандартным размером блока в 16 Кбайт (стандартный размер блока, определяемый значением инициализационного параметра DB_BLOCK_SIZE, составляет 8 Кбайт):

SQL> CREATE TABLESPACE test01 datafile '/u09/oradata/testdb/test01.dbf'
BLOCKSIZE 16K; 

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

Количество пользовательских та...
Количество пользовательских та... 990 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:46
Квоты табличных пространств
Квоты табличных пространств 2144 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:46
Как переименовать табличное пр...
Как переименовать табличное пр... 2042 просмотров Ольга Потемкина Tue, 21 Nov 2017, 13:18:46
Табличные пространства только ...
Табличные пространства только ... 936 просмотров Алексей Вятский Tue, 21 Nov 2017, 13:18:46
Войдите чтобы комментировать

OraCool аватар
OraCool ответил в теме #8771 23 окт 2017 10:21
Искал пример как создать табличное пространство в базе данных Oracle с нестандартным размером блока данных. И вот, вуаля! Большое спасибо, комарадес!)))