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

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

  Все выпуски  

Выпуск 13


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

Выпуск 13

Доброго времени суток!

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

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

1. Что необходимо сделать перед созданием базы данных?
2. Какие способы создания БД вы уже знаете?
3. Почему SQL-скрипты иногда предпочтительнее визуальных сред выполнения задач?
4. Что дает использование режима архивирования (ARCHIVELOG)?
5. Для чего нужны файлы CATALOG.SQL и CATPROC.SQL?

Изменение базы данных

Большинство задач по изменению БД Oracle, табличных пространств и файлов данных можно выполнить либо с помощью утилит Oracle Enterprise Manager, либо с помощью DDL-команд в Server Manager. Мы рассмотрим оба способа. Как Вы увидите далее, Oracle Enterprise Manager упрощает задачу, предлагая различные опции, однако, имеет некоторые ограничения в функциональности.

Изменение БД с помощью Enterprise Manager

В настоящей версии Enterprise Manager такая операция невозможна. К счастью, команда ALTER DATABASE достаточно гибка и предлагает несколько таких опций, которые не дает графическая утилита. Вот почему Server Manager все еще является ценным и мощным инструментом.

Изменение БД с помощью команды ALTER DATABASE

Изменение БД в Server Manager достигается командой ALTER DATABASE. Эта команда используется для изменения различных параметров и спецификаций БД, может, как быть набрана прямо с клавиатуры, так и выполниться в виде SQL-скрипта. Рассмотрим синтаксис команды:

ALTER DATABASE [database]
[MOUNT [STANDBY DATABASE] [EXCLUSIVE | PARALLEL]]
[CONVERT]
[OPEN [RESETLOGS | NORESETLOGS]]
[ACTIVATE STANDBY DATABASE]
[ARCHIVELOG | NOARCHIVELOG]
[RECOVER параметры_восстановления]
[ADD LOGFILE [THREAD номер] [GROUP номер] logfile
[, [GROUP номер] logfile] ...]
[ADD LOGFILE MEMBER "имя_файла" [REUSE]
[, "имя_файла" [REUSE] ...][TO GROUP номер] или
["имя_фала" [, "имя_файла"] ...]
[, "имя_файла" [REUSE] [, "имя_файла" [REUSE] ...
[TO GROUP номер] или ["имя_файла" [, "имя_файла"] ...]]
[DROP LOGFILE [GROUP номер] или ["имя_файла" [, "имя_файла"] ...]
[, GROUP номер] или ["имя_файла" [, "имя_файла"] ...]]
[DROP LOGFILE MEMBER "имя_файла" [, "имя_файла"] ...]
[CLEAR [UNARCHIVED] LOGFILE
[GROUP номер] или ["имя_файла" [, "имя_файла"] ...]
[, GROUP номер] или ["имя_файла" [, "имя_файла"] ...]
[UNRECOVERABLE DATAFILE]]
[RENAME FILE "имя_файла" [, "имя_файла"] ... TO "имя_файла" [, "имя_файла"] ...
[CREATE STANDBY CONTROLFILE AS "имя_управляющего_файла" [REUSE]]
[BACKUP CONTROLFILE
[TO "имя_файла" [REUSE]] или [TO TRACE [RESETLOGS или NORESETLOGS]]
[RENAME GLOBAL NAME TO database [.domain] ...]
[RESET COMPATABILITY]
[SET [DBLOW = значение] или [DBHIGH = значение] или [DBMAC ON или OFF]]
[ENABLE [PUBLIC] THREAD номер]
[DISABLE THREAD номер]
[CREATE DATAFILE "имя_файла" [, "имя_файла"] ...
AS filespec [,filespec] ...]
DATAFILE "имя_файла" [, "имя_файла"] ...
ONLINE или OFFLINE [DROP] или RESIZE число (K или M)
или AUTOEXTEND OFF или ON [NEXT число (K или M)] [MAXSIZE UNLIMITED или число (K или M)]
или END BACKUP]

Вот, что означают разнообразные параметры и переменные этой команды:

- database - определяет имя БД (не более 8 символов).

- MOUNT - параметр используется для монтирования БД.

Параметры MOUNT:

- MOUNT STANDBY DATABASE - используется для монтирования аварийной (запасной) БД.

- MOUNT EXCLUSIVE - используется для монтирования БД в режиме EXCLUSIVE. В этом режиме только один из экземпляров может смонтировать БД. Это режим по умолчанию (если указать просто MOUNT, без параметров).

- MOUNT PARALLEL - монтирование БД в параллельном режиме. В параллельном режиме БД может быть смонтирована несколькими экземплярами (в среде параллельного сервера).

Другие необязательные параметры команды:

- CONVERT - опция используется для преобразования словаря данных от предыдущей версии Oracle-сервера к текущей.

- OPEN - этот параметр открывает БД для обслуживания. Выборочно Вы можете указать дополнительно RESETLOGS или NORESETLOGS.

- OPEN RESETLOGS - происходит сброс счетчика файлов журналирования операций. Этим Вы в основном отмените всю хранившуюся ранее информацию файлов журналирования операций, т.е. эти файлы будут вестись заново. Обычно эта команда требуется после выполнения неполного восстановления (опция RECOVER UNTIL) или после резервного копирования управляющего файла, который должен быть принят сразу после выполнения команды ALTER DATABASE RESETLOGS.

- OPEN NORESETLOGS - это параметр по умолчанию, указывающий, что сброса файлов журналирования операций произведено не будет.

Есть еще несколько необязательных параметров команды:

- ACTIVATE STANDBY DATABASE - параметр используется, чтобы сделать аварийную (запасную) БД доступной.

- ARCHIVELOG - определяет, что БД будет работать в режиме ARCHIVELOG (аналогичен параметру ARCHIVELOG команды CREATE DATABASE - см. выпуск №12).

- NOARCHIVELOG - БД не будет работать в режиме ARCHIVELOG.

- RECOVER - параметры восстановления БД рассмотрим далее в этом же выпуске.

- ADD LOGFILE logfile - параметр используется для определения дополнительных файлов журналирования операций в существующие группы. При указании опции THREAD Вы можете присоединить этот файл к указанной нити (процессу) параллельного сервера. Если опция THREAD опущена, то файл будет добавлен к Вашему текущему экземпляру. Также Вы можете указать значение параметра GROUP (если не укажите, то он будет подставлен автоматически). Можно указать одно или несколько значений.

- ADD LOGFILE MEMBER "имя_файла" - добавляет новых членов (с именем "имя_файла") в существующие группы файлов журналирования операций. Если файл "имя_файла" существует, то обязательно надо использовать параметр REUSE. Группу Вы можете указать несколькими способами:

- TO GROUP номер_группы - если Вы знаете идентификационный номер группы.

- TO GROUP "имя_файла" - в группу можно также добавить, указав один или все члены существующей группы.

- DROP LOGFILE - этим параметром удаляются все члены группы файлов журналирования операций. Вы можете указать группу для удаления членов двумя способами:

- TO GROUP номер_группы - если Вы знаете идентификатор, то можете удалить группу указав его.

- TO GROUP "имя_файла" - удалить группу можно также, указав один или все члены существующей группы.

- DROP LOGFILE MEMBER "имя_файла" - используется для удаления одного или нескольких членов существующей группы файлов журналирования операций. Член группы определяется по имени файла.

- CLEAR LOGFILE - команда используется для удаления и пересоздания файла журналирования операций. Может использоваться при возникновении проблем с существующими файлами журналирования операций. Дополнительные параметры:

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

- "имя_файла" - можно сбросить группу, в которой есть один или более указанных файлов.

- UNRECOVERABLE DATAFILE - параметр используется, если табличное пространство имеет неподключенный файл данных. После выполнения операции CLEAR LOGFILES необходимо удалить это табличное пространство и файл данных.

- RENAME FILE "имя_файла" TO "имя_файла" - используется для переименования файла данных или файла журналирования операций. Заметьте, что имя файла меняется не фактически на диске, а лишь в управляющем файле.

- CREATE STANDBY CONTROLFILE AS "имя_управляющего_файла" - создание аварийного управляющего файла. Можно использовать опцию REUSE для использования уже существующего файла.

- BACKUP CONTROLFILE - команда используется для создания резервной копии управляющего файла. Может быть выполнена двумя способами:

- TO "имя_файла" - определяет имя файла под которым будет сделана резервная копия. Если файл с таким именем уже существует, необходимо использовать REUSE.

- TO TRACE - необязательный параметр, который делает SQL-запись в файле трассировки, который может быть использован для пересоздания управляющих файлов. Также можно использовать RESETLOGS или NORESETLOGS, которые добавят SQL к открытию БД с этими опциями. Полученных команд SQL достаточно для запуска БД, пересоздания управляющих файлов, для успешно восстановления и открытия БД.

Совет: Выполняя команду ALTER DATABASE database BACKUP CONTROLFILE TO TRACE после любых изменений БД, Вы получите способ воссоздания управляющих файлов при необходимости. Это может стать частью хорошего плана восстановления БД.

- RENAME GLOBAL NAME TO - эта команда позволяет переименовать БД, имя домена или все вместе.

- RESET COMPATABILITY - эта команда выполняет сброс уровня совместимости БД к предыдущей версии Oracle после перезапуска экземпляра.

- SET - команда смены доверительных параметров Oracle (рассматривать не будем - см. официальную документацию Oracle).

- ENABLE [PUBLIC] THREAD номер - эта команда параллельного сервера применяется для использования нити групп файлов журналирования операций по номеру. Параметр PUBLIC дает возможность этой нити быть использованной любым экземпляром.

- DISABLE THREAD номер - эта команда делает нить групп файлов журналирования операций недоступной для любого экземпляра.

- CREATE DATAFILE имя_файла - команда используется для создания такого файла данных, который был утерян в результате сбоя и не был восстановлен по причине отсутствия резервной копии.

- AS filespec - опция используется для указания файла спецификаций.

- DATAFILE имя_файла - для изменения состояния файлов данных имеет следующие функции:

- ONLINE - сделать файл данных оперативным.

- OFFLINE [DROP] - сделать файл данных автономным. Когда БД запущена в режиме NOARCHIVELOG, команда DROP делает его автономным.

- RESIZE число (K или M) - изменяет размер БД до число Кб или Мб.

- AUTOEXTEND OFF или ON - команда включает или выключает режим автоувеличения размера БД.

- NEXT число (K или M) - эта опция указывает, что БД должна расти инкрементом в число Кб или Мб каждый раз, когда необходимо увеличить размер.

- MAXSIZE UNLIMITED - этот параметр говорит, что размер файла данных связан лишь дисковым пространством и ограничениями операционной системы.

- MAXSIZE число (K или M) - указывает максимальный размер файла данных в Мб или Кб.

- END BACKUP - указывает, что процедура восстановления не должна выполняться в случае, если оперативное резервное копирование прервано сбоем экземпляра.

А теперь рассмотрим опции параметра RECOVER:

RECOVER [AUTOMATIC] [FROM "путь"]
[[STANDBY] DATABASE]
[UNTIL CANCEL] или [UNTIL TIME "время"]
или [UNTIL CHANGE номер] или [USING BACKUP CONTROLFILE] ...]
[TABLESPACE tablespace [,tablespace] ....]
[DATAFILE "имя_файла" [,"имя_файла"] ....]
[LOGFILE "имя_файла"]
[CONTINUE [DEFAULT]]
[CANCEL]
[PARALLEL parallel_definition]

- AUTOMATIC - Процесс восстановления самостоятельно определит необходимые имена файлов журналирования операций.

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

- STANDBY - восстановить аварийную БД.

- DATABASE - опция по умолчанию. Указывает, что восстанавливать надо БД.

- UNTIL ?? - Эти параметры очень важны для восстановления БД в случае программной или операторской ошибки. Они позволяют восстановить БД до определенной точки.

- UNTIL CANCEL - Процесс восстановления БД будет выполняться до тех пор, пока Вы не выполните команду ALTER DATABASE database RECOVER CANCEL.

- UNTIL TIME "время" - команда выполняет восстановление, основанное на параметрах времени. Процесс восстановления накатывает (перевыполняет) все транзакции, которые были успешно выполнены до указанного времени. Время указывается в формате "ГГГГ-ММ-ДД:ЧЧ24:ММ:СС". Эта опция может оказаться полезной, если Вы знаете момент времени, когда SQL-команда вызвала сбой.

- UNTIL CHANGE номер - выполняет восстановление до последней транзакции перед номером смены системы.

- USING BACKUP CONTROLFILE - указывает, что восстановление должно выполняться с использованием резервной копии управляющего файла.

- TABLESPACE tablespace - выполнить восстановление только указанного табличного пространства.

- DATAFILE "имя_файла" - выполнить восстановление только указанного файла данных.

- LOGFILE "имя_файла" - выполнить восстановление, используя указанный файл журналирования операций.

- CONTINUE [DEFAULT] - продолжить прерванную процедуру восстановления. CONTINUE DEFAULT - тоже самое, только используя сгенерированные Oracle-сервером значения по умолчанию.

- CANCEL - отменяет процедуру восстановления, запущенную с параметром UNTIL CANCEL.

- PARALLEL (DEGREE число) - указывает степень параллельности в процессе восстановления.

Процесс восстановления является основой стабильности Oracle и Вашей БД.

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

Смена режима на ARCHIVELOG

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

ALTER DATABASE cars ARCHIVELOG

Примечание: cars - имя БД.

Выполнение основанного на времени восстановления

Иногда возникает необходимость выполнить восстановление, основанное на времени. Если некая SQL-команда привела к сбою системы, Вы должны выполнить восстановление до момента вызова этой команды. Или если неумышленная SQL-команда привела к потере данных, то Вы можете восстановить БД к моменту, предшествующему этой команде. Ниже приведен пример такого восстановления:

ALTER DATABASE cars RECOVER UNTIL TIME "2003-02-17:15:03:00"

Эта команда восстанавливает БД к состоянию на момент до 3:03 после полудня 17 февраля 2003 года.

Открыть закрытую БД

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

ALTER DATABASE cars OPEN

Резервное копирование управляющего файла

Резервное копирование управляющего файла - достаточно важная операция. Рассмотрим пример использования команды ALTER DATABASE для резервного копирования управляющего файла:

ALTER DATABASE cars BACKUP CONTROLFILE TO "C:\backup\cntrlDOGS.dbf"

Подведем итоги

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

Мониторинг файлов данных

Чтобы удостовериться, что под файлы данных выделено достаточно дискового пространства, Вы можете использовать утилиту Storage Manager (входит в состав Enterprise Manager). Если Вы кликните иконку Datafiles слева, то увидите список файлов данных, размер каждого из них и насколько они заполнены. Это очень быстрый и простой способ определения степени использования файлов данных. Также можно проверить это с помощью нескольких системных представлений, но Oracle Storage Manager упрощает задачу.

Что дальше?

В следующем выпуске мы рассмотрим вопросы работы с табличными пространствами. Табличное пространство - это тот фундамент, на который опираются таблицы, кластеры и индексы.

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

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

Вопрос: Можем ли мы иметь более одного экземпляра Oracle в системе?
Ответ: Да.

Вопрос: Сколько БД можно создать с одним SID?
Ответ: Одну. SID однозначно определяет БД. В режиме параллельного сервера можно иметь несколько экземпляров Oracle для работы с одной и той же БД, но между БД и SID связь один-к-одному.

Вопрос: Сколько БД можно создать на одной системе?
Ответ: Официального ограничения нет. Однако существенным лимитирующим фактором являются системные ресурсы.

Упражнения

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

1. Создайте базу данных, используя команду CREATE DATABASE.
2. Повторите первое упражнение, но теперь используйте три различных файла данных.
3. Испытайте приведенные в данном выпуске примеры команды ALTER DATABASE.

На этом выпуск завершен. Желаю интересно провести время, экспериментируя с рассмотренными в выпуске командами. Только не играйте с производственными базами данных!!!

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


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



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

В избранное