A mandatory tablespace that consists of the data dictionary, including definitions of tables, views, and stored procedures needed by the database. Oracle Database automatically maintains information in this tablespace.
An user-created tablespace that consists of application data. As you create and enter data into tables, Oracle Database fills this space with your data.
System-managed tablespaces that contain undo data for each instance. Each Oracle RAC instance uses a different value for n in the tablespace name. These tablespaces are used for automatic undo management.
A system tablespace that contains rollback segments. If you do not use automatic undo management, then you must configure the RBS tablespace. The RBS tablespace should only be used when needed for compatibility with earlier versions of Oracle Database.
Посмотреть, какие табличные пространства имеются в базе данных можно следующим запросом.
В каких файлах хранятся табличные пространства.
Табличное пространство system
В табличном пространстве system хранится «Словарь данных Oracle»
Каждая база данных Oracle содержит набор таблиц, доступных только для чтения и известных как словарь данных (data dictionary), который содержит метаданные (информацию о различных компонентах базы данных). Словарь данных Oracle – сердце системы управления базой данных.
Oracle не позволяет обращаться к таблицам словаря данных напрямую. Он создает представления на базе этих таблиц и общедоступные синонины для тих представлений, к которым могут обращаться пользователи. Существует три набора представлений словаря данных: USER, ALL и DBA – каждый из которых содержит сходный набор представлений со сходным набором столбцов.
Посмотреть содержимое табличного пространства system
Табличное пространство sysaux
Табличное пространство sysaux служит вспомогательным табличным пространством по отношению к табличному пространству system.
Представления словаря данных для управления табличными пространствами
Для управления табличными пространствами в базе данных Oracle Database нужно познакомиться с несколькими ключевыми табличными пространствами:
DBA_TABLESPACES
Представление DBA_TABLESPACES — очень важное представление словаря для управления табличными пространствами. С помощью этого представления можно много узнать о табличных пространствах, например, отключены или подключены ли они в данный момент (offline/online); являются ли они undo, постоянными или временными; тип управления экстентами, тип расширения, тип управления пространством сегментов;состоят они из bigfile или smallfile. В статье наших блогов “Создание табличных пространств” уже были даны примеры применения этого представления. Представление словаря DBA_TABLESPACES служит для поиска важной информации о табличном пространстве, в том числе:
DBA_FREE_SPACE
DBA_SEGMENTS
DBA_DATA_FILES
Представление словаря данных DBA_DATA_FILES — еще одно исключительно полезное представление, к которому вы будете часто обращаться при управлении пространством хранилища базы данных. Это представление запрашивается для нахождения имен всех файлов данных, табличных пространств, к которым они относятся, и информации об этих файлах, такой как количество байтов и блоков, а также относительный номер файла. Простой запрос к представлению DBA_DATA_FILES отображает все файлы данных, как показано в листинге 3.
Представление DBA_DATA_FILES особенно полезно, когда вы соединяете его с другим представлением словаря данных, как в примере, который иллюстрирует листинг ниже. Этот запрос производит отчет, показывающий размеры табличных пространств, свободное и занятое место, а также процент занятого места в каждом табличном пространстве. В конце вы также получаете сумму всего пространства хранилища, выделенного всем табличным пространствам, а также распределение свободного и занятого пространства в базе данных.
DBA_TABLESPACE_GROUPS
Вы можете собирать набор временных табличных пространств в группы временных табличных пространств. Представление DBA_TABLESPACE_GROUPS показывает все группы табличных пространств, имеющиеся в базе данных. В этом представлении можно также увидеть индивидуальное имя каждого табличного пространства в каждой такой группе.
V$DATAFILE
V$FILESTAT
Представление V$FILESTAT снабжает детальной информацией о статистике чтения/записи файла, включая количество физических операций чтения и записи, время,потребовавшееся на эти операции, а также среднее время одной операции чтения и записи в миллисекундах. Представление V$TABLESPACE содержит информацию о табличных пространствах. Листинг 5 демонстрирует, как можно соединить представления V$DATAFILE, V$TABLESPACE и V$FILESTAT для получения полезной информации о дисковых операциях ввода-вывода.
Табличное пространство Oracle является самым нижним логическим слоем структуры данных. Оно состоит из одного или более файлов данных. В ранних версиях СУРБД Oracle размер файлов данных был фиксированным, но теперь файлы могут быть увеличены как автоматически, так и вручную.
Значимость табличных пространств заключена в том, что они предоставляют великолепную степень детализации расположения информации в файлах данных. После создания табличного пространства, процесс расположения и распределения таблиц в нем уходит из-под Вашего контроля. При аккуратном конфигурировании табличного пространства, у Вас будет несколько обобщенных опций, но основная масса работы по внутреннему расположению объектов будет выполнена автоматически.
Табличные пространства могут содержать любые из четырех видов сегментов:
Табличные пространства по умолчанию являются доступными как для чтения, так и для записи, но могут быть изменены на состояние «только для чтения». Во многих ситуациях табличные пространства только для чтения могут оказаться незаменимыми.
Создание табличных пространств
Создание табличных пространств состоит из указания одного или более файлов данных, а также параметров хранения (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:
Вот остальные параметры команды CREATE TABLESPACE:
Как видите при создании табличного пространства можно указать много различных параметров и опций. Среди них есть параметры хранения, которые мы рассмотрим чуть ниже в этом же выпуске. Параметры хранения определяют характеристики табличного пространства и общие параметры его «роста».
Изменение табличных пространств
Довольно часто приходится менять уже созданное табличное пространство.
Изменение состояния табличного пространства на автономное
Имеем несколько вариантов выполнения такой операции. Это: нормальный, временный и немедленный перевод состояния на автономный.
Табличное пространство в нормальном автономном режиме
Перевод состояния табличного пространства на автономное включает выполнение контрольной точки для всех файлов данных (принадлежащих данному табличному пространству), а затем, собственно, отключение доступа. Нормальный перевод в автономный режим требует присутствия и нормального функционирования всех включенных табличных пространств. Переход из нормального автономного состояния в оперативный может быть произведен без операции восстановления.
Табличное пространство во временном автономном режиме
Перевод табличного пространства в автономный режим с опцией Temporary (временно) возможен даже в том случае, если некоторые из файлов данных недоступны. Т.е. если у Вас есть какие-либо проблемы с файлом данных, Вы можете перевести табличное пространство в автономный режим с опцией «временно». Для всех доступных файлов данных будет произведена контрольная точка. Однако перевод обратно в оперативный режим может потребовать восстановления.
Немедленный перевод табличного пространства в автономный режим
Опция Immediate (немедленно, сразу) перевода табличного пространства в автономный режим делает именно то, что требуется: сразу переводит табличное пространство в автономный режим. Но контрольная точка не будет произведена, поэтому возврат в оперативный режим потребует процедуру восстановления.
Перевод табличного пространства в оперативный режим
Любое табличное пространство, которое было переведено в автономный режим по каким-либо причинам может быть переведено обратно в оперативный режим через Enterprise Manager или через Server Manager (с использованием SQL-команды). Перевод табличного пространства в оперативный режим изменяет его состояние таким образом, что табличное пространство становится доступным для пользователей. Возможно, потребуется процедура восстановления, в зависимости от того, как табличное пространство было переведено в автономный режим.
Дефрагментация табличного пространства
Поскольку в табличном пространстве выделяется место для объектов схемы экстентами различных размеров, становится возможной такая ситуация, когда дисковое пространство фрагментируется. После назначения экстентов Oracle ищет свободный кусок памяти, близкий по размеру к требующемуся для нового экстента. Время от времени в табличном пространстве экстенты добавляются и освобождаются, поэтому можно обнаружить множество маленьких свободных экстентов сбитых в кучу (процесс напоминает фрагментацию файлов на жестком диске).
Дефрагментируя табличное пространство, Вы объединяете маленькие свободные экстенты в большие, тем самым, формируя больше места для назначения новых экстентов. Фоновый серверный процесс SMON автоматически производит объединение мелких свободных экстентов, т.е. дефрагментацию. Естественно, дефрагментация происходит постоянно, за исключением тех моментов, когда процесс SMON отключен. Очень редко возникает необходимость произвести дефрагментацию вручную, однако надо знать, зачем и как это сделать.
Добавление файлов данных
Необходимость в новых файлах данных возникает достаточно часто. Новые файлы данных нужны либо для увеличения свободного пространства, либо для распределения нагрузки ввода-вывода между несколькими физическими дисковыми накопителями. Добавить файл в табличное пространство гораздо быстрее, чем сформировать его в процессе создания БД. Команда CREATE TABLESPACE работает последовательно, т.е. создает один файл данных за раз. Операция же добавления файлов данных может быть распараллелена (несколько файлов данных можно добавить за раз).
Изменение свойств табличного пространства
Табличное пространство может быть изменено в Storage Manager и с помощью команды ALTER TABLESPACE (которую можно выполнить в Server Manager).
Вы можете воспользоваться следующими возможными опциями:
Изменение табличного пространства командой 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.
Как видно, командой 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]] )
Вот что означают отдельные части оператора:
Параметры хранения могут быть применены не только в процессе создания табличного пространства, но и во время создания различных объектов схемы. Размер и характеристики табличного пространства оказывают значительное влияние на производительность системы.
Примечание: для табличных пространств Вы указывает опции DEFAULT STORAGE (т.е. по умолчанию). Эти опции будут применятся при создании объектов схемы, если Вы их не перекроете новыми конкретными значениями.
Табличные пространства «только для чтения»
Как уже было сказано ранее, есть возможность перевести табличное пространство в режим «только для чтения». Табличное пространство «только для чтения» отличается от обычного лишь тем, что не сохраняются изменения объектов схемы. В этом случае отпадает необходимость в резервном копировании такого табличного пространства.
Так как табличные пространства «только для чтения» не изменяются Oracle-сервером, то есть возможность поместить их, например, на компакт-диск. Если данные являются архивными по своей природе, но в них периодически возникает необходимость, то использование CD-ROM может оказаться идеальным решением.
Создание табличных пространств «только для чтения»
Любое табличное пространство первоначально должно быть создано в режиме «чтение-запись» и заполнено необходимыми данными. После добавления данных и создания индексов, соответствующих Вашим спецификациям, табличное пространство может быть переведено в режим «только для чтения». Это может быть достигнуто несколькими способами.
Для Enterprise Manager-а или Storage Manager-а просто откройте форму редактирования табличного пространства и поставьте флажок напротив надписи Read Only.
Если Вы нажмете после этого кнопку SHOW SQL, то получите возможность лицезреть DDL-команду этой операции. Рекомендую пользоваться этой кнопкой при каждом удобном случае, так Вы поймете сущность выполняемых операций.
Также можно воспользоваться командой ALTER TABLESPACE вот так:
ALTER TABLESPACE CARS READONLY;
Временные табличные пространства (Temporary Tablespaces)
Временные табличные пространства используются для выполнения таких операций сортировки, которые не вмещаются в оперативную память. Если Вы выделите табличное пространство специально для сортировок, то отпадет необходимость выделения памяти в других табличных пространствах (что приводит к фрагментации).
Создание временных табличных пространств
Табличное пространство может стать временным как во время создания (CREATE), так и во время изменения (ALTER). При использовании Enterprise Manager-а надо просто в окне диалога создания/изменения табличного пространства поставить галочку напротив Temporary. SQL-команда для выполнения этой операции такова:
ALTER TABLESPACE CARS TEMPORARY;
Маловероятно, что Вам когда-либо понадобится переводить перманентные табличные пространства во временные и обратно. Временное табличное пространство обычно создают таким сразу, и оно остается им на все время своего существования.
Табличные пространства это хранилище для данных схемы, включая словарь данных (который находится в схеме SYS). У всех баз данных обязаны быть табличные пространства SYSTEM и SYSAUX и (для работы с БД) временное табличное пространство и пространство undo. Обычно эти четыре табличных пространства создаются на этапе создания БД. В дальнейшем DBA может создавать много других табличных пространств для пользовательских данных, и возможно дополнительные пространства для undo и временных данных.
Создание табличного пространства
Для создания табличного пространства с помощью Enterpise Manager Database Control с домашней страницы базы данных перейдите на вкладку Server и нажмите на ссылку Tablespaces в разделе Storage. На рисунке 5-3 отображается результат для БД по умолчанию.
Рисунок 5-3 – Табличные пространства в БД ocp11g
Для каждого табличного пространства отображаются:
Эту же информацию можно получить написав запрос к предсатвлениям словаря данных DBA_TABLESPACES, DBA_DATA_FILES, DBA_SEGMENTS и DB_FREE_SPACE. К примеру результатом выполнения запроса
(select sum(bytes) allocated, count(file_id) cnt from dba_data_files
where tablespace_name=’EXAMPLE’) d,
(select sum(bytes) free from dba_free_space
where tablespace_name=’EXAMPLE’) f,
(select sum(bytes) used from dba_segments
where tablespace_name=’EXAMPLE’) u
На этой же странице нажмите кнопку 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 отобразит сгенерированный запрос
Рассмотрим эту команду построчно
1 CREATE SMALLFILE TABLESPACE «NEWTS» – табличное пространство будет пространством типа SMALLFILE. Это значит что оно может состоять из множества файла данных. Альтернативой является BIGFILE, в этом случае невозможно добавить новый файл данных (но всё так же можно изменить размер). Флаг Use Bigfile Tablespace на рисунке 5-4 определяет это значение
2 DATAFILE – ‘/u02/oradata/ocp11g/newts01.dbf’ Имя и расположение файла данных
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 Дополнительные параметры создания табличного пространства
Когда используется локальное управление экстентами, возможно включить функционал согласно которому все экстенты в табличном пространстве будут одного размера. Также доступны опции сжатия, логирования.
Пример команды создания табличного пространства выполненной в SQL* Plus показан на рисунке 5-7.
Табличное пространство 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 представлениях). Остальная информация дублируется.
Изменение табличных пространств
Изменения происходящие над табличным пространством после создания обычно
Переименование табличного пространтсва и его файлов
ALTER TABLESPACE tablespaceoldname RENAME TO tablespacenewname;
Синтаксис очень прост но выполнение команды может доставить проблемы в будущем. Множество установок полагаются на название файлов чтобы соотносить файлы данных с табличными пространствами. На наших примерах видно что просто доавляется имя табличного пространства в имя файла и доабвляется номер. Oracle всё равно: взаимосвязь определяется нормерами табличных пространств и файлов. Эти номера доступны в столбцах TS# представления V$TABLESPACE и FILE# представления V$DATAFILE. Если вы зависите от названий, тогда вам нужно так переименовать файлы. Табличное пространство может быть переименовано в любое время, в том время как файлы можно переименовать только когда они не используются (offline). Это необходимо так как файлы переименовываются и на уровне операционной системы и все дескрипторы станут невалидными. Рисунок 5-8 показывает пример такого процесса над табличным пространством созданным на рисунке 5-7.
Первая команда изменяет имя табличного пространства. Это самая легкая часть. Затем табличное пространство выключается, и выполняются команды операционной среды переименовать файлы. Затем две команды 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. Если включен то место не будет выделяться и запрос выполниться успешно, однако при попытке добавить строки в созданную таблицу будет ошибка).
Изменение размера табличного пространста
Размер табличного пространства может быть изменён как добавлением файлов данных в него так и изменением размера существующих файлов. Файлы данных могут быть увеличены автоматически при необходимости если была указана опция AUTOEXTEND при создании. Иначе вам придётся делать это вручную используя команду ALTER DATABASE
ALTER DATABASE DATAFILE filename RESIZE n [M|G|T]
M G и T это мегабайт, гигабайт и терабайт соответсвенно.
alter dtabase datafile ‘/oradata/users_02.dbf’resize 10m;
Из команды вы не знаете станет ли файл больше или меньше. Размер может быть увеличен только если в файловой системе достаточно свободного места. Уменьшение размера возможно только если внутри файла сущесвует достаточно места не выделенного под сегменты.
Для того чтобы добавить новый файл в табличному пространству выполняется команда ALTER TABLESPACE tablespacename ADD DATAFILE ‘filename’ SIZE 50m; Параметр AUTOEXTEND можно указать при создании или включить позже выполнив команду alter database datafile ‘filename’ autoextend on next 50m maxsize 2g; Результатом выполнения команды будет автоматическое увеличение файла на 50 МБ до достижения максимального размера в 2 ГБ.
Изменение уровня предупреждений
Процесс MMON экземпляра практически в режиме реального времени наблюдает за свободным местом в табличных пространствах. Если табличное пространтсво заполняется до определённого уровня MMON создаёт предупреждение. Уровень по умолчанию для создания предупреждения – 85%, для создания критического предупреждения – 97%. Увидить эти предупреждения можно по разному, самый лёгкий способ — посмотреть на домашнуюю страницу Database Control.
Чтобы посмотреть или изменить эти значения в Database Control можно выбрать Tablespace на вкладкe Server и нажать EDIT. Затем в окне управления пространством перейти на вкладку Thresholds. На рисунке 5-10 показан пример для пространства EXAMPLE.
Рисунок 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 всё равно можно указать имя вручную при создании табличного пространства.