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

Обновлено: 03.07.2024

Вы создаете табличные пространства оператором 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.

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

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

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

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

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

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

Хотя по умолчанию управление экстентами локально для всех постоянных табличных пространств, вы указываете 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.
  • Вы можете иметь до четырех нестандартных размером блоков.
  • Вы специфицируете размер блока для табличных пространств в операторе CREATETABLESPACE,используя конструкцию BLOCKSIZE.
  • Нестандартные размеры блоков должны выбираться из ряда 2 Кбайт, 4 Кбайт. 8 Кбайт, 16 Кбайт или 32 Кбайт. Разумеется, один из этих размеров должен быть выбран в качестве стандартного и указан в параметре DB_BLOCK_SIZE файла init.ora.
  • Если вы переносите табличные пространства между базами данных, использование табличных пространств с различными размерами блоков облегчит такой перенос.

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

Теории было много, но теория не подкрепленная практикой сама по себе бесполезна! Попробуем создать свое табличное пространство и поэкспериментируем с ним. Начнем с простого (помните команду CREATE TABLESPACE?) Запускайте SQL*Plus и вперед:

Мы с вами создали наше первое табличное пространство! Давайте посмотрим как это отразилось на самой системе. Сначала можете посмотреть содержимое каталога C:\ORACLE\ORADATA\PROBA\TEMP - и соответственно видим:

Эти данные чисто гипотетические у вас может быть другое! У меня данные с моего рабочего сервера Win2003 и Oracle 9.0.1.0, так что принимайте как есть! Главное видно, что файл появился и звать его ONE.DAT! Такое расширение я дал не случайно для того, чтобы не путать с основными файлами системы. У них расширение как это не смешно DBF. И каталог, я сделал загодя отдельный для того, чтобы не вносить сумятицу рабочий каталог сервера. Теперь давайте сделаем еще одно табличное пространство с другим именем и другими опциями создания:

А теперь в каталоге уже два файла:

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

Теперь дадим вот такой запрос к этому представлению:

Все верно! У нас есть два табличных пространства, которые мы только что создали! Кстати я провожу все эти действия в схеме SYS и поэтому будьте внимательнее при удалении объектов! Или можете дать системные привилегии на создание и удаление табличных пространств MILLER-у, но какое из зол меньшее выбирать вам! :-) Теперь давайте переведем одно из табличных пространств в OFFLINE:

Попробуем дать предыдущий запрос снова:

Видите все вроде верно, но поле BYTES для табличного пространства TBLSPCMYONE пустое! Все верно оно в режиме OFFLINE! Убедимся в этом дав такой запрос к системному представлению DBA_TABLESPACES:

Вот теперь все понятно, к стати обратите внимания на поля CONTENTS, LOGGING помните предыдущий шаг? :) Вернем пространство TBLSPCMYONE в ONLINE:

Теперь дадим такую команду:

Теперь пространство TBLSPCMYTWO в отключке! Попробуем что-либо создать на нем в таком режиме! Например табличку:

Все привет! ORA-01542 настигло нас! Вернем его в нормальное состояние и создадим таблицу:

Прекрасно! А, вот теперь попробуйте удалить пространство из словаря данных БД:

Вот теперь нам заявляют с помощью ORA-01549, что раздел не пуст! Можно конечно дать команду типа:

Но, чтобы не раздражать пользователя SYS (все же он DBA!) удалим табличку, а потом файл пространства в каталоге:

Управление и обслуживание табличного пространства ORACLE

1: Концепция табличного пространства

В базе данных ORACLE все данные хранятся в табличном пространстве из логической структуры, конечно же, есть логические структуры, такие как сегменты, области, блоки под табличным пространством. Из физической структуры он помещается в файл данных. Табличное пространство может состоять из нескольких файлов данных.

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

clip_image002

clip_image002[4]

1.1 базовое табличное пространство

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

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

Ответ: SYSTEM, SYSAUX, TEMP, UNDO, как USERS, ПРИМЕР Ожидание табличного пространства необязательно.

1.2 Классификация табличных пространств

Постоянное табличное пространство Храните постоянные данные, такие как таблицы, индексы и т. Д.

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

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

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

Метод управления табличным пространством:

Управление словарем: все пространство, выделенное для всей библиотеки, помещается в словарь данных. Легко вызвать конфликт по словарю и вызвать проблемы с производительностью.

2: создать табличное пространство

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

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

Как проверить, какие табличные пространства находятся в базе данных? Как просмотреть файл данных, соответствующий табличному пространству?

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

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

-Содержит описательную информацию для всех табличных пространств в базе данных

SELECT * FROM DBA_TABLESPACES

-Содержит информацию описания табличного пространства текущего пользователя

SELECT * FROM USER_TABLESPACES

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

SELECT * FROM V$TABLESPACE;

Просмотр файлов данных

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

SELECT * FROM DBA_DATA_FILES

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

SELECT * FROM DBA_TEMP_FILES

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

SELECT * FROM V$DATAFILE

- Содержит основную информацию обо всех временных файлах данных

SELECT * FROM V$TEMPFILE

3.1.1. Просмотр табличного пространства TEMP по умолчанию

Уровень базы данных

уровень пользователя

3.1.2. Просмотр постоянного табличного пространства по умолчанию

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

3.1.3. Просмотр табличного типа по умолчанию

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

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

SELECT * FROM DBA_TABLESPACES

3.1.5. Просмотр файла данных табличного пространства

Постоянное табличное пространство / UNDO табличное пространство

SELECT * FROM DBA_DATA_FILES;

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

SELECT * FROM V$TEMPFILE;

3.1.6. Просмотр использования табличного пространства

Рассчитать использование табличного пространства (с учетом автоматического роста файлов данных)

3.2 табличное пространство по умолчанию

В базе данных ORACLE 9i, когда создается пользователь базы данных, если не указано постоянное табличное пространство по умолчанию, система использует табличные пространства SYSTME в качестве постоянного табличного пространства пользователя по умолчанию, а временное табличное пространство по умолчанию - TEMP. В ORACLE 10 / 11g, если вы не укажете постоянное табличное пространство по умолчанию, это ПОЛЬЗОВАТЕЛИ. Временное табличное пространство по умолчанию - TEMP, конечно, при условии, что вы не изменили значение постоянного табличного пространства по умолчанию или не указали постоянное табличное пространство пользователя по умолчанию. ORACLE позволяет использовать настраиваемые табличные пространства в качестве постоянного табличного пространства по умолчанию, вы можете использовать следующий SQL для просмотра постоянного табличного пространства по умолчанию и временного табличного пространства по умолчанию в базе данных.

SQL>SELECT * FROM database_properties
WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';

SQL>SELECT * FROM database_properties
WHERE PROPERTY_NAME ='DEFAULT_PERMANENT_TABLESPACE'

Вы можете использовать инструкцию ALTER DATABASE DEFAULT TABLESPACE, чтобы установить постоянное табличное пространство по умолчанию для базы данных, чтобы при создании пользователя указанное табличное пространство использовалось по умолчанию.

Уровень базы данных:

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

SQL>ALTER DATABASE DEFAULT TABLESPACE USER;

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

SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

SQL>ALTER USER USERNAM DEFAULT TABLESPACE NEW_TABLESPACE_NAME

Просмотр табличного пространства по умолчанию, соответствующего пользователю

SELECTUSERNAME, DEFAULT_TABLESPACEFROMDBA_USERS

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

2: Если мы не указали табличное пространство пользователя при создании пользователя, то табличное пространство по умолчанию БД также будет использоваться по умолчанию. В это время, если мы изменим табличное пространство по умолчанию БД, табличное пространство пользователя также изменится.

Переключите табличное пространство по умолчанию для базы данных на USERS

3: Если мы создаем пользовательское табличное пространство пользователя, являющееся другим табличным пространством, то мы изменяем табличное пространство БД по умолчанию, которое не повлияет на табличное пространство пользователя.

4: табличное пространство по умолчанию БД не может быть удалено, если табличное пространство по умолчанию не указано на другие табличные пространства, прежде чем его можно будет удалить.

SQL> DROP TABLESPACE USERS;

DROP TABLESPACE USERS

ORA-12919: невозможно удалить постоянное табличное пространство по умолчанию

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

SQL> DROP TABLESPACE TEST2;

3.3 удалить табличное пространство

В дополнение к табличному пространству SYSTEM любое табличное пространство в базе данных может быть удалено. При удалении табличного пространства ORACLE просто удаляет информацию, связанную с табличным пространством и файлом данных, в управляющем файле и словаре данных. По умолчанию ORACLE не удаляет соответствующий файл данных в операционной системе, поэтому после успешного выполнения операции удаления табличного пространства необходимо вручную удалить соответствующий файл данных табличного пространства в операционной системе. Если вы удаляете соответствующий файл данных при удалении табличного пространства, вы должны отобразить указанное предложение INCLUDING CONTENTS AND DATAFILES. Примечание: Текущее табличное пространство по умолчанию на уровне базы данных не может быть удалено, а пользовательское табличное пространство может быть удалено. В противном случае будет сообщено об ошибке: ORA-12919: Невозможно удалить постоянное табличное пространство по умолчанию.

DROP TABLESPACE имя табличного пространства [ВКЛЮЧАЯ СОДЕРЖАНИЕ [И ДАННЫЕ ФАЙЛЫ] [КАСКАДНЫЕ СООТВЕТСТВИЯ]]

SQL> DROP TABLESPACE URER01 INCLUDING CONTENTS;

Если объект базы данных включен в табличное пространство, указанный оператор INCLUDING CONTENTS должен отображаться в операторе DROP TABLESPACE. Если вы хотите удалить табличное пространство USER при удалении соответствующего файла данных, вы можете использовать следующий оператор

SQL>DROP TABLESPACE USER01 INCLUDING CONTENTS AND DATAFILES;

Примечание. При удалении табличного пространства параметры CONTENTS и DATAFILES не выровнены, и будет показана следующая ошибка:

SQL>DROP TABLESPACE TBS_STAGE_DAT INCLUDING DATAFILES AND CONTENTS

ORA-01911:contents keyword expected

SQL>DROP TABLESPACE TBS_STAGE_DAT INCLUDING CONTENTS AND DATAFILES

3.4 Настройте табличное пространство

3.4.1 Добавить файл данных

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

При добавлении нового файла данных, если операционная система с таким именем уже существует, инструкция ALTER TABLESPACE завершится ошибкой. Если вы хотите перезаписать файл операционной системы с тем же именем, вы должны указать предложение REUSE, показанное ниже.

SQL> ALTER TABLESPACE TBS_EDS_DAT

2 ADD DATAFILE 'G:\datafile\TBS_EDS_DAT01.DBF'

4 AUTOEXTEND ON

6 MAXSIZE 51200M;

ALTER TABLESPACE TBS_EDS_DAT

Произошла ошибка в строке 1:

ORA-03206: максимальный размер файла (6553600) блока в предложении AUTOEXTEND вне диапазона

Размер файла данных, поддерживаемый ORACLE, определяется числом db_block_size и db_block. Число db_block (блок ORACLE) является фиксированным значением 2 ** 22-1 (4194303). Емкость файла данных = количество блоков * размер блока. В следующем списке показан максимальный размер физического файла, который могут поддерживать разные базы данных блоков данных:

Размер блока данных Максимальный физический файлMМаксимальный физический файл G

16KB 65535M 64G

32KB 131072M 128G

64KB 262144M 256G

3.4.2 Настройка размера файла данных

Сбросить размер файла данных

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf'

3.4.3 Удалить файлы данных

ALTER TABLESPACE TEST

DROP DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf'

3.4.4 Мобильные файлы данных

Теперь есть такой случай: в прошлом на сервере базы данных был только один диск с относительно небольшой емкостью, и все файлы данных были помещены на диск D. Позже я подал заявку на диск 1T и мне нужно было освободить место для диска D (диск D заполнен). Переместите несколько больших файлов данных на диск 1T:

Под Linux / Unix

3.4.5 Файлы автономных данных

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' OFFLINE;

3.4.6 Файл данных онлайн

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' ONLINE;

4: поддерживать табличное пространство

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

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

Чтобы просмотреть состояние табличного пространства, вы можете просмотреть его с помощью следующего оператора SQL.

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

SQL>ALTER TABLESPACE TBS_DM_DAT OFFLINE IMMEDIATE;

Чтобы установить автономный статус, вы можете использовать следующие 4 параметра для управления автономным режимом

НОРМАЛЬНЫЙ Этот параметр указывает, что табличное пространство переключается в автономное состояние обычным способом. Затем закройте все файлы данных табличного пространства. Если во время этого процесса не возникает ошибок, вы можете использовать параметр NORMAL, который также используется по умолчанию.

TEMPORARY Этот параметр временно переводит табличное пространство в автономный режим. В настоящее время ORACLE не будет проверять состояние каждого файла данных при выполнении контрольной точки. Даже если некоторые файлы данных недоступны, ORACLE будет игнорировать эти ошибки. Таким образом, когда табличное пространство установлено в оперативное состояние, может потребоваться восстановление данных.

IMMEDIATE Этот параметр немедленно переводит табличное пространство в автономный режим, при котором ORACLE не будет выполнять контрольную точку или проверять, доступен ли файл данных. Вместо этого файлы данных, принадлежащие табличному пространству, переводятся в автономный режим. База данных должна быть восстановлена ​​при следующем включении табличного пространства в оперативный режим.

FOR RECOVER Этот параметр переводит табличное пространство в автономное состояние для восстановления. Если вы хотите выполнить восстановление табличного пространства на основе времени, вы можете использовать этот параметр, чтобы переключить табличное пространство в автономное состояние.

Если база данных работает в неархивном режиме (NOARCHIVELOG), поскольку данные для восстановления, необходимые для восстановления табличного пространства, не могут быть сохранены, табличное пространство нельзя немедленно переключить в автономное состояние. Если табличное пространство находится в автономном режиме, запросите таблицы в табличном пространстве и сообщите об ошибке: в данный момент ORA-00376 не может прочитать файл, а ORA-01110: файл данных x .

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

1. SYTEM не может быть в автономном режиме или только для чтения

2. Пустое пространство текущей таблицы UNDO не может быть отключено или доступно только для чтения.

3. Текущее временное табличное пространство не может быть отключено или доступно только для чтения.

4. SYSAUX может быть в автономном режиме, но не только для чтения

SQL> ALTER TABLESPACE SYSTEM OFFLINE;

ALTER TABLESPACE SYSTEM OFFLINE

ORA-01541: system tablespace cannot be brought offline; shut down if necessary

SQL> ALTER TABLESPACE SYSTEM OFFLINE;

ALTER TABLESPACE SYSTEM OFFLINE

ORA-01541: system tablespace cannot be brought offline; shut down if necessary

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

SQL> ALTER TABLESPACE TBS_DM_DAT ONLINE;

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

SQL>ALTER TABLESPACE TBS_DM_DAT READY ONLY;

Когда табличное пространство доступно только для чтения, никакие операции DML не могут быть выполнены с таблицами в нем, в противном случае будет сообщено об ошибке: ORA-00372: файл xxx не может быть изменен в данный момент

ORA-01110: файл данных xx: ********. Но таблицу можно удалить.

4.1.4 Табличное пространство для чтения и записи

SQL>ALTER TABLESPACE TBS_DM_DAT READ WRITE;

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

До ORACLE 10g имя табличного пространства нельзя изменить. В ORACLE 11G, используя предложение RENAME в операторе ALTER TABLESPACE, администратор базы данных может изменить имя табличного пространства.

4.1.6 Включить автоматическое расширение

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND ON;

4.1.7 Отключить автоматическое расширение

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND OFF;

5 Квота табличного пространства

Недостаточное табличное пространство и недостаточная квота пользователя - это две разные концепции. Размер табличного пространства относится к размеру фактического пользовательского табличного пространства, а размер квоты относится к размеру табличного пространства, указанного пользователем. Два решения не совпадают

3.5.1 Просмотр квоты табличного пространства пользователя

MAX_BYTES = -1 означает, что квота не установлена,

3.5.2 Управление квотой табличного пространства пользователя

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

1. При создании пользователя укажите лимит

CREATE USER TEST IDENTIFIED BY TEST

DEFAULT TABLESPACE TS_TEST

TEMPORARY TABLESPACE TEMP

QUOTA 3M ON TS_TEST

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

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

Проверьте, нет ли ограничения табличного пространства

B: отменить квоту

Этот подход является глобальным.

SQL> GRANT UNLIMITED TABLESPACE TO SCOTT;

Или для конкретного табличного пространства.

SQL>ALTER USER SCOTT QUOTA UNIMITED ON TBS_EDS_DAT;

SELECT * FROM SESSION_PRIVS WHERE PRIVILEGE='UNLIMITED TABLESPACE'

SQL> REVOKE UNLIMITED TABLESPACE FROM SCOTT;

C: установить квоты

3. Может распространяться естественным путем или переработано:

revoke unlimited tablespace from TEST;

alter user skate quota 0 on TB;

Чтобы решить проблему недостаточного размера табличного пространства: используйте команду «ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file», чтобы увеличить табличное пространство до указанных данных, в зависимости от конкретной ситуации можно увеличить одно или несколько табличных пространств.

Интеллектуальная рекомендация

совместный запрос mysql с тремя таблицами (таблица сотрудников, таблица отделов, таблица зарплат)

1. Краткое изложение проблемы: (внизу есть инструкция по созданию таблицы, копирование можно непосредственно практиковать с помощью (mysql)) Найдите отделы, в которых есть хотя бы один сотрудник. Отоб.


[Загрузчик классов обучения JVM] Третий день пользовательского контента, связанного с загрузчиком классов


IP, сеанс и cookie

Табличные пространства это хранилище для данных схемы, включая словарь данных (который находится в схеме SYS). У всех баз данных обязаны быть табличные пространства SYSTEM и SYSAUX и (для работы с БД) временное табличное пространство и пространство undo. Обычно эти четыре табличных пространства создаются на этапе создания БД. В дальнейшем DBA может создавать много других табличных пространств для пользовательских данных, и возможно дополнительные пространства для undo и временных данных.

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

Для создания табличного пространства с помощью Enterpise Manager Database Control с домашней страницы базы данных перейдите на вкладку Server и нажмите на ссылку Tablespaces в разделе Storage. На рисунке 5-3 отображается результат для БД по умолчанию.

Рисунок 5-3 – Табличные пространства в БД ocp11g

Рисунок 5-3 – Табличные пространства в БД ocp11g

Для каждого табличного пространства отображаются:

  • Allocatedsize –размер файла/ов данных табличного пространства. Это текущее значение, а не максимальное до которого может быть расширено
  • Spaceused – это пространство использованное сегментами
  • Allocatedspaceused (%) – графическое представление предыдущих значений
  • Allocatedfreespace – пространство доступное на данный момент в табличном пространстве
  • Status – зелёная галочка отображает что табличное пространтсво в рабочем состоянии и объекты этого пространства доступны для использования. Выключенное табличное пространство (offline) будут отображаться как красный крестик
  • Datafiles – колчиество файлов данных (или временных файлов для временного табличного пространства) которые входят в табличное пространство
  • Type – типы объектов, которые могут храниться в этом табличном пространстве. Постоянные пространства (permanent) могут хранить обычные объекты схемы, такие как таблицы и индексы. Временные табличные пространства могут хранить управляемые системой временные а сегменты, а пространства undo только системно управляемые сегменты undo
  • Extentmanagement – метод выделения экстентов для сегмента. LOCAL значение по умолчанию и всегда должно использоваться
  • Segmentmanagement – метод выделения блоков доступных для вставки данных. AUTO значение по умолчанию и рекомендуется для всех табличных пространств содержащих пользовательские данные.

Эту же информацию можно получить написав запрос к предсатвлениям словаря данных DBA_TABLESPACES, DBA_DATA_FILES, DBA_SEGMENTS и DB_FREE_SPACE. К примеру результатом выполнения запроса

t.status, d.cnt, contents, t.extent_management extman,

from dba_tablespaces t,

(select sum(bytes) allocated, count(file_id) cnt from dba_data_files

(select sum(bytes) free from dba_free_space

(select sum(bytes) used from dba_segments

42

На этой же странице нажмите кнопку CREATE для создания нового табличного пространства. Новое окно создания запросит название нового табличного пространства, значения для Extent Management, Type и Status. В большинстве случаев значения по умолчанию валидны: Local, Permanent и Read Write. Затем кнопка ADD позволяет указать один или более файлов данных для нового табличного пространства. Для каждого файла необходимо указать имя файла и размер, также опционально можно включить autoextend до максимального допустимого размера файла. Возможность autoxtend позволяет Oracle серверу самому увеличиваться размер файлов данных при необходимости, что позволит избежать ошибок из-за нехватки места. На рисунках 5-4 и 5-5 отображены окна Database Control для создания табличного пространства NEWTS с одним файлом данных.

Рисунок 5-4 Окно создания табличного пространства Рисунок 5-5 Окно добавления файла данных

Нажав кнопку CONTINUE вы вернётесь к окну создания табличного пространства. Нажатие кнопки SHOW SQL отобразит сгенерированный запрос

45

Рассмотрим эту команду построчно

3 SIZE 100M AUTOEXTEND ON NEXT 100K MAXSIZE 200M – Файл данных будет создан размеров 100 Мб, при заполнении будет автоматически выделяться 100Кб до максимально допустимого значения в 200 Мб. По умолчанию автоматическое выделения места не включено.

4 LOGGING – Все операции над сегментами в табличном пространстве будут генерировать данные для повтора изменений (redo): это значение по умолчанию. Возможно отключить генерацию redo только для нескольких операция (таких как создание индекса)

5 EXTENT MANAGEMENT LOCAL – табличное пространство будет использовать битовые карты для выделения экстентов; значение по умолчанию

6 SEGMENT SPACE MANAGEMENT AUTO – Сегменты в табличном пространстве будут использовать битовые карты для отслеживания использования блоков; значение по умолчанию

Если выбрать вкладку Storage в окне создания табличного пространства то можно управлять параметрами управления экстентами и сжатия – Рисунок 5-6.

Рисунок 5-6 Дополнительные параметры создания табличного пространства

Рисунок 5-6 Дополнительные параметры создания табличного пространства

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

Пример команды создания табличного пространства выполненной в SQL* Plus показан на рисунке 5-7.

47

Табличное пространство STORETABS состоит из двух файлов данных, оба без автоинкремента. Единственное различие от команды по умолчанию это указание размера extent-а в 5 МБ. Первый запрос на рисунке показывает что файлы не большие иначе нельзя было бы создать два файла данных. Второй запрос на рисунке отображает информацию о табличном пространстве TEMP, используемом для хранения временных объектов. Важно понимать что временное табличное пространство использует временные файлы, а не файлы данных. Временные файлы перечислены в пресдатвлении V$TEMPFILE и DBA_TEMP_FILES, когда файлы данных перечислены в V$DATAFILE и DBA_DATA_FILES. Также важно отметить что V$ и DBA показывают разную информацию. В V$TABLESPACE находится информация является ли табличное пространтсво «большим» и в V$TEMPFILE (или V$DATAFILE) размер файлов. Этой информации нет в представлениях DBA. Но представления DBA содержат детальную информацию о экстентах и сегментах. Разная информация доступна либо там либо там, так как некоторая информация хранится в файле контроле (и доступна только в V$ представлениях), а другая хранится в словаре данных (и видима в DBA представлениях). Остальная информация дублируется.

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

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

  • Переименование
  • Включение выключение (online/offline)
  • Переключение в режим только-чтение и обратно
  • Изменение размера
  • Изменение уровня препупреждений

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

ALTER TABLESPACE tablespaceoldname RENAME TO tablespacenewname;

Первая команда изменяет имя табличного пространства. Это самая легкая часть. Затем табличное пространство выключается, и выполняются команды операционной среды переименовать файлы. Затем две команды ALTER DATABASE изменяют имена файлов в файле контроля, и Oracle сможет их найти. И наконец табличное пространство включается.

Включение и выключение табличного пространтсва (Online/Offline)

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

Синтаксис для выключения табличного пространства

ALTER TABLESPACE tablespacename OFFLINE [NORMAL|IMMEDIATE|TEMPORARY]

Обычное выключение (NORMAL – значение по умолчанию) запустит создание контрольной точки для всех файлов данных этого пространства. Все грязные буфферы в кэше которые содержат блоки из табличного пространтсва будут записаны в файлы данных и табличное пространство и файлы данных будут выключены.

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

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

Режим только-чтения (Read only)

Чтобы понять эффект режима только чтения изучите рисунок 5-9. Синтаксис команды говорит сам за себя

ALTER TABLESPACE tablespacename [READONLY|READ WRITE];

После перевода в режим только-чтения, объекты не могут быть созданы используя DML команды. Но они могут быть удалены. Выглядит нелогично но давайте подумаем. Удаление таблицы на самом деле не выполняет каких-либо действий над таблицей. Это транзакция над словарём данных, которая удаляет строки описывающие таблицу и её столбцы; словарь данных находится в табличном пространстве SYSTEM и оно не только для чтения. Создание таблицы в пространстве находящемся в режиме только для чтения также будет неуспешно, так как кроме DDL запроса должно выделиться физическое место для первого экстента таблицы (если не включен deferred segment creation. Если включен то место не будет выделяться и запрос выполниться успешно, однако при попытке добавить строки в созданную таблицу будет ошибка).

49

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

Размер табличного пространства может быть изменён как добавлением файлов данных в него так и изменением размера существующих файлов. Файлы данных могут быть увеличены автоматически при необходимости если была указана опция AUTOEXTEND при создании. Иначе вам придётся делать это вручную используя команду ALTER DATABASE

ALTER DATABASE DATAFILE filename RESIZE n [M|G|T]

M G и T это мегабайт, гигабайт и терабайт соответсвенно.

alter dtabase datafile ‘/oradata/users_02.dbf’resize 10m;

Из команды вы не знаете станет ли файл больше или меньше. Размер может быть увеличен только если в файловой системе достаточно свободного места. Уменьшение размера возможно только если внутри файла сущесвует достаточно места не выделенного под сегменты.

Изменение уровня предупреждений

Чтобы посмотреть или изменить эти значения в Database Control можно выбрать Tablespace на вкладкe Server и нажать EDIT. Затем в окне управления пространством перейти на вкладку Thresholds. На рисунке 5-10 показан пример для пространства EXAMPLE.

Рисунок 5-10 Окно управления предупреждениями

Рисунок 5-10 Окно управления предупреждениями

На этом рисунке “Available Space” указано как 32Гб. Что полностью неверно, так как выделенное место как видно на рисунке 5-3 всего 100МБ. Это происходит так как включен AUTOEXTENSION. Если AUTOEXTEND указан для файла и не установленм MAXSIZE, тогда файл может увеличиваться до платформо-зависимого ограничения, в нашем случае 32 ГБ. Конечно это не значит что у системы есть место для таких файлов. Система предупреждения рассчитыает лимиты и использует максимально допустимый размер файла как основу для вычисления, и это абсолютно быссмесленно если у вас включен AUTOEXTEND и не указан MAXSIZE.

Становится понятно что при использовании автоматического управления размером желательно указывать максимальное значение. Это можно сделать и Database Control или командой ALTER DATABASE.

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

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

DROP TABLESPACE tablespacename [INCLUDING CONTENTS [AND DATAFILES]];

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

Если не указано AND DATAFILES тогда табличное пространство и его содержимое будет удалено однако файлы данных не будут удалены с диска. Oracle не будет знать ничего об этих файлах после удаления табличного пространства и файлы можно будет удалить только командами операционной системы.

Oracle Managed Files (OMF)

Использование OMF должно избавить DBA от необходимости знать что-либо о файловой системе. Создание файлов БД может быть полностью автоматическим. Для включения OMF необходимо установить параметры экземпляра

Параметр DB_CREATE_FILE_DEST определяет путь по умолчанию дял файлов данных. Параметры DB_CREATE_ONLINE_LOG_DEST_n указывают путь файла текщих логов. Параметр DB_RECOVERY_FILE_DEST определяет путь к файлам архивных логовов и резервных копий. OMF будет использовать эти пути и создавать файлы со сгенерированными именами и (по умолчанию) устанавливать размер файлов. При включенном OMF всё равно можно указать имя вручную при создании табличного пространства.

Читайте также: