• Базы данных
  • Oracle
  • Использование Oracle Berkeley DB Java Edition как менеджера хранения объектов для Google Web Toolkit

Управление табличными пространствами в Oracle Database

  • Default Permanent Tablespace
  • Переименование табличного пространства
  • Табличное пространство SYSAUX
  • Составное табличное пространство Temp

Default Permanent Tablespace

Oracle 9i ввел понятие временного табличного пространства по умолчанию (default temporary tablespace), что позволило предотвратить случайное использование табличного пространства SYSTEM для временных сегментов. Oracle 10g предоставляет такую возможность включением постоянного табличного пространства по умолчанию (default permanent tablespace) для предотвращения установки табличного пространства SYSTEM по умолчанию для пользователей. Предложение DEFAULT TABLESPACE в предложении CREATE DATABASE позволяет создать и назвать табличное пространство по умолчанию. Если этот параметр во время создания не указан, или в дальнейшем будет нуждаться в изменении, он может быть установлен следующей командой:

ALTER DATABASE DEFAULT TABLESPACE users;

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

COLUMN property_name FORMAT A30
COLUMN property_value FORMAT A30
COLUMN description FORMAT A50
SET LINESIZE 200
SELECT *
FROM database_properties
WHERE property_name like '%TABLESPACE';

PROPERTY_NAME PROPERTY_VALUE DESCRIPTION DEFAULT_TEMP_TABLESPACE
------------- --------------- ---------- ----------------------- 
TEMP Name of default temporary tablespace USERS 
DEFAULT_PERMANENT_TABLESPACE
----------------------------
Name of default permanent tablespace 

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

Переименование постоянного и временного (permanent и temporary) табличных пространств в Oracle 10g выполняется командой:

ALTER TABLESPACE ts_current_name RENAME TO ts_new_name;

Разрешено переименовывать все табличные пространства за исключением SYSTEM и SYSAUX. Во время переименования все табличные пространства и их файлы должны быть online и параметр совместимости должен быть выставлен в 10.0.0 или выше.

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

Если переименовано табличное пространство UNDO, в экземпляре использующем предпочтительно pfile, чем spfile, сообщение в alert log напомнит о необходимости изменить значение параметра UNDO_TABLESPACE.

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

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

Содержимое табличного пространства SYSAUX представлено в представлении V$SYSAUX_OCCUPANTS. Представление содержит колонку MOVE_PROCEDUR, которая содержит имя процедуры которое может использоваться для перемещения компонент для этой компоненты в другое табличное пространство. Это используется, если схема ассоциированная с одной компонентой вырастает настолько, что требует отдельного табличного пространства.

Компоненты занимающие основную часть пространства в SYSAUX, это репозиторий Automatic Workload Repository (AWR) и Enterprise Manager (EM). Другие компоненты, такие как Oracle UltraSearch, Oracle Text и Oracle Streams не занимают существенного пространства.

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

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

-- Создаем группу табличных пространств
-- добавлением в группу существующего табличного пространства. 
ALTER TABLESPACE temp TABLESPACE GROUP temp_ts_group;

-- Добавление.табличного пространства в группу
CREATE TEMPORARY TABLESPACE temp2
  TEMPFILE '/u01/app/oracle/oradata/DB10G/temp201.dbf' SIZE 20M
  TABLESPACE GROUP temp_ts_group;

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

SELECT * FROM dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------ -----------------
TEMP_TS_GROUP TEMP
TEMP_TS_GROUP TEMP2
2 rows selected. 

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

-- Связываем группу как временное табличное пространство 
-- для пользователя.  
ALTER USER scott TEMPORARY TABLESPACE temp_ts_group;

-- Связываем группу как временное табличное пространство
-- по умолчанию.  
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_ts_group;

-- Табличное пространство может быть исключено из группы
ALTER TABLESPACE temp2 TABLESPACE GROUP '';

SELECT * FROM dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
----------------- -----------------
TEMP_TS_GROUP TEMP
1 row selected. 

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

-- Перехрдим с группы на указанное табличное пространство.
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

-- Удаляем табличное пространство из группы.
ALTER TABLESPACE temp TABLESPACE GROUP '';

-- Проверяем что группа удалена.
SELECT * FROM dba_tablespace_groups;
no rows selected

На этом пожалуй все. 

Читайте также:
  • Фрагментация таблиц в Oracle
    Следует понимать, что фрагментация таблиц отлична от файловой фрагментации. Когда выполняется серия операций DML над таблицей, таблица фрагментируется, потому что DML не освобождает свободное пространство до HWM.HWM - это индикатор использования блоков (USED BLOCKS) в базе данных. Блоки идущие до ли...
  • Таблицы только для чтения в Oracle 11g Release 1
    ALTER TABLE table_name READ ONLY;ALTER TABLE table_name READ WRITE;Следующий скрипт создает таблицу, добавляет в нее несколько строк, затем устанавиливает таблицу в режим "только для чтения".CREATE TABLE ro_tab (  id NUMBER);INSERT INTO ro_tab VALUES (1);INSERT INTO ro_tab VALUES (2)...
  • Ручное создание базы данных в Oracle 11g
    Процедура создания практически не отличается от предыдущих версий - 9i и 10g. В создаваемой базе данных будем использовать следующие опции:OMF (Oracle Managed File) для файлов данных, файлов журналов повторного выполнения и управляющих файлов. FRA (Flash Recovery Area) для архивных журналов или резе...
  • Управление SQL-планами в Oracle Database 11g
    Невозможность гарантировать, что все изменения плана всегда будут в лучшую сторону, привела некоторых заказчиков к тому, чтобы закрепить свои планы выполнения (хранимые планы) или блокировать статистику оптимизатора. Однако, если поступать подобным образом, мы лишаем себя возможности когда-либо испо...
  • Производительность PL/SQL
    Native compilation – это не совсем новая возможность, однако теперь нет «узких» мест её использования, например, установка компилятора C (Oracle назвал эту замечательную возможность "Real Native Compilation"). Кроме того, новый тип данных simple_integer делает выполнен...