Отправляет email-рассылки с помощью сервиса Sendsay

СУБД Oracle "с нуля"

  Все выпуски  

Выпуск 14


Информационный Канал Subscribe.Ru

Выпуск 14

Здравствуйте!

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

Тем, кто подключился к рассылке недавно, или желающим оценить мой труд, предлагаю посетить созданный мною ресурс с архивом предыдущих выпусков рассылки:
http://oraclefromzero.narod.ru/

Этот выпуск посвящается работе с табличными пространствами. Мы рассмотрим как основы работы, так и некоторые тонкости, известные лишь мастерам :)

Приятного чтения!

А теперь ответим на несколько несложных вопросов по предыдущему выпуску:

1. Как перевести БД в режим архивирования (ARCHIVELOG)?
2. Как создать резервную копию управляющего файла (CONTROL FILE)?
3. Как восстановить БД к состоянию на определенный момент времени?
4. Для чего нужно следить за ресурсами системы?
5. Как производить мониторинг файлов данных?

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

В предыдущих выпусках мы рассмотрели, как можно создать БД. Если Вы используете команду CREATE DATABASE, то автоматически будет создано и табличное пространство SYSTEM. Это табличное пространство создается в тех файлах данных, которые Вы указали в команде CREATE DATABASE. Табличное пространство SYSTEM предназначено для хранения важных внутренних информационных структур (словарь данных, системные хранимые процедуры и системные сегменты отката).

Если Вы не укажете иного, то табличное пространство SYSTEM будет использовано по умолчанию для всех пользователей базы данных. Это не желательно, поэтому надо создать дополнительные табличные пространства как можно раньше. Создание табличных пространств, в которых Вы будете размещать свои собственные таблицы, индексы и т.д., в сущности, являются второй стадией создания БД.

Предупреждение: Табличное пространство SYSTEM используется для хранения важных объектов системной схемы. Не стоит создавать пользовательские объекты в нем. Если табличное пространство SYSTEM будет переполнено, то оно подорвет работу СУРБД в целом.

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

Вкратце этот вопрос мы затронули в третьем выпуске рассылки, но теперь рассмотрим его гораздо глубже.

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

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

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

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

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

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

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

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

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

Замечание: Под ОС Windows размер блока файлов данных может быть 4Мб. Для блоков в 2Кб - это 8Гб, для блоков в 8Кб - это 32Гб. Табличное пространство может состоять максимум из 1022 файлов данных. Таким образом, получаем максимальный размер табличного пространства - 32Тб (терабайта).

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

Визуально Вы можете создать табличное пространство либо в Enterprise Manager либо в Storage Manager. В любом случае, Вы выполните поставленную задачу (в сущности, идентичны даже экранные формы).

Давайте закроем все окна, кроме Navigator. Для этого в меню View надо выбрать Hide Pane для всех окон, за исключением Navigator (или воспользоваться иконками в верхнем левом углу Enterprise Manager консоли). После этого можете следовать моему примеру по созданию табличного пространства.

Раскройте пункт Databases, а затем свою БД (которая должна быть предварительно создана!). После этого надо раскрыть Storage (т.е. хранилище).

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

Двигаясь далее (раскрыв, например, SYSTEM), Вы дойдете до возможностей администрирования файлов данных (Datafiles) и сегментов отката (Rollback Segments).

Все действия в Enterprise Manager производятся правым щелчком мыши по интересующему пункту. Если нажать правой кнопкой мыши по пункту Tablespaces, то появится выпадающий список возможный действий. Отсюда Вы можете создать (Create…) табличное пространство. Давайте так и сделаем.

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

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

- Offline - указывает, что табличное пространство останется автономным после создания. Если Вы хотите, чтобы табличное пространство было недоступным во время выполнения остальных действий над ним, то воспользуйтесь этой опцией.

- Read Only - указывает, что табличное пространство должно быть доступным только для чтения. Нет особого смысла делать табличное пространство доступным лишь для чтения во время его создания. Обычно создаются таблицы, делаются доступными для пользователей, и только потом применяется опция Read Only (по необходимости). Собственно, по этой причине Вы сразу и не сможете воспользоваться этой опцией :)

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

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

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

Откройте диалог редактирования файла данных. Здесь можете указать имя файла полный путь к нему, а также размер файла. Выберите M bytes, если хотите видеть размер файла в мегабайтах, или K bytes - в килобайтах соответственно. На вкладке Storage диалога можно указать еще и параметры автоувеличения файла. После заполнения всех полей, возвращайтесь в диалог создания табличного пространства, нажав OK.

Завершив колдование над файлами данных, жмите OK - и табличное пространство будет создано. Но не спешите сразу это делать. Заметьте, что внизу диалога присутствует кнопочка "Show SQL". Если на нее нажать, то Вы увидите SQL-команду, которая выполняет всю "грязную" работу. Если нажать "Hide SQL" - то SQL-команда скроется.

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

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

Вы можете создать табличное пространство в Server Manager-е, используя команду 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 - указывает табличному пространству хранить перманентные объекты. (Опция по умолчанию).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для выполнения оперативного резервного копирования надо следовать следующей процедуре:

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

2. Произвести резервное копирование файлов данных средствами операционной системы, либо используя утилиты сторонних производителей.

3. Перевести табличное пространство обратно в оперативный режим. Этим в файлы данных будут записаны все произведенные изменения.

Примечание: это традиционный способ резервного копирования. Более подробно вопросы резервного копирования и восстановления БД мы рассмотрим позднее.

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

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

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

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

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

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

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

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

При изменении табличных пространств, используя Enterprise Manger, существуют некоторые ограничения. Для того чтобы воспользоваться возможностями Enterprise Manger раскройте табличные пространства (Tablespaces), как мы делали ранее в этом выпуске. Щелкните правой кнопкой мыши по названию интересующего табличного пространства для открытия контекстного меню. А в нем выберите пункт "Edit…". Раскроется диалог редактирования табличного пространства.

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

- 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. Это достаточно важные параметры, так как они определяют первоначальный размер и характеристики табличного пространства, а также дальнейший его рост.

Оператор 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 (т.е. по умолчанию). Эти опции будут применятся при создании объектов схемы, если Вы их не перекроете новыми конкретными значениями.

Использование оператора STORAGE

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

CREATE TABLESPACE ts_1
DATAFILE D:\database\ts_1_a.dbf' SIZE 20M,
E:\database\ts_1_b.dbf SIZE 20M
DEFAULT STORAGE
(
INITIAL 2M NEXT 2M PCTINCREASE 0 MINEXTENTS 2
);

Этим будут созданы табличное пространство ts_1, два файла данных и два начальных экстента. Чтобы создать такое же табличное пространство, но со способностью для второго файла данных к саморасширению, Вы можете указать дополнительные параметры вот так:

CREATE TABLESPACE ts_1
DATAFILE D:\database\ts_1_a.dbf' SIZE 20M,
E:\database\ts_1_b.dbf SIZE 20M AUTOEXTEND ON NEXT 1M MAXSIZE 30M
DEFAULT STORAGE
(
INITIAL 2M NEXT 2M PCTINCREASE 0 MINEXTENTS 2
);

Запомните, что оператор DEFAULT STORAGE используется для создания экстентов. А экстенты используются для хранения объектов схемы. Параметры хранения, указанные в 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;

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

Советы и подсказки

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

При создании объектов схемы в табличном пространстве размещаются экстенты. Экстенты размещаются на основе указанных параметров хранения (или на основе параметров хранения по умолчанию).

Свободное пространство для объектов извлекается последовательно из табличного пространства. С появлением новых объектов место выделяется дальше и дальше… пока не будет создан последний объект. С этого могут начаться некоторые проблемы.

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

Другими способами балансирования нагрузки может оказаться использование аппаратных возможностей (RAID-массивы) или особенностями ОС (например, составные диски).

Конфигурирование и менеджмент табличных пространств требует достаточно много времени и тщательного планирования. Но это планирование, несомненно, окупит себя. Чем больше Вы потратите времени на планирование, тем меньше Вы его потратите на решение проблем в будущем.

Заключение

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

Можно воспользоваться Enterprise Manager-ом для просмотра степени использования файлов данных табличного пространства. Для этого надо просто зайти в диалог редактирования табличного пространства и посмотреть цифры в таблице файлов данных.

В прошлом выпуске мы рассмотрели процедуру создания БД, файлов журналирования операций, управляющих файлов и табличного пространства SYSTEM. В этом табличном пространстве содержатся хранимые процедуры и различные структуры, необходимые для поддержания работоспособности СУРБД Oracle. Но в нем нет места для хранения Ваших данных.

Сегодня мы прошли через вторую стадию создания БД - создание табличных пространств. Сразу после создания БД Вам необходимо создать дополнительные табличные пространства для хранения пользовательских данных. Эти табличные пространства станут местом, где хранятся Ваши объекты схемы и данные.

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

Что дальше?

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

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

Вопросы-ответы

Вопрос: Какие инструменты могут быть использованы для создания табличного пространства?
Ответ: Вы можете использовать Enterprise Manager, Storage Manager или команду CREATE TABLESPACE.

Вопрос: Для чего нужно табличное пространство?
Ответ: Табличное пространство используется для создания и хранения объектов схемы. Этими объектами являются: таблицы, индексы, представления и кластеры.

Вопрос: Работа с Enterprise Manager-ом лучше, чем ввод SQL-команд?
Ответ: Не лучше и не хуже. Вы должны научиться работать и с тем и с другим. Использование Enterprise Manager-а может показаться удобнее, но SQL-команда позволяет воспользоваться некоторыми "тонкими" настройками.

Упражнения

1. Создайте табличное пространство, используя Enterprise Manager.
2. Создайте табличное пространство командой CREATE TABLESPACE.
3. Переведите табличное пространство в автономный режим.
4. Переведите табличное пространство в режим "только для чтения".

Этот выпуск получился довольно объемным, зато Вы получили информацию о табличных пространствах "в одном стакане" :)

Надеюсь, Вы получили такое же удовольствие от чтения, как и я от написания.

Всего наилучшего!

Всегда Ваш, Lemon.
lemon@donmetal.ru



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное