0defb3aa

Восстановление базы данных


Если база данных работала в режиме ARCHIVELOG, после сбоя носителя ее можно полностью или частично восстановить. Для этого в SQL*Plus предлагается команда RECOVER, имеющая следующий, весьма объемный, синтаксис:

<команда RECOVER> ::=

RECOVER <режим восстановления> [<степень параллелизма>]

<режим восстановления> ::=

<общее восстановление> | <управляемое восстановление> | END BACKUP

<общее восстановление> ::=

[AUTOMATIC] [FROM <местонахождение>] <команда восстановления>

<команда восстановления> ::=

<вид восстановления> [TEST ALLOW <целое число> CORRUPTION]
| CONTINUE [DEFAULT]
  | CANCEL

<вид восстановления> ::=

<полное восстановление>

  | <частичное восстановление>

  | LOGFILE <имя файла>

<полное восстановление> ::=

[STANDBY] DATABASE { <уровень восстановления >} <уровень восстановления> UNTIL <точка восстановления>

  | USING BACKUP CONTROLFILE

<точка восстановления> ::=

CANCEL | TIME <дата> | CHANGE <целое число>

<частичное восстановление> ::=



<табличные пространства или файлы данных>

  | STANDBY <табличные пространства или файлы данных>

    UNTIL [CONSISTENT] [WITH] CONTROLFILE

<табличные пространства или файлы данных> ::=

TABLESPACE <табличное пространство>{, <табличное пространство>}

  | DATAFILE <файл данных>{, <файл данных>}

<управляемое восстановление> ::=

MANAGED STANDBY DATABASE <опция управляемого восстановления>

<опция управляемого восстановления> ::=

NODELAY
  | [TIMEOUT] <целое число>

  | CANCEL [IMMEDIATE] [NOWAIT]

  | DISCONNECT [FROM SESSION] [FINISH [NOWAIT]]

<степень параллелизма> ::=

PARALLEL [<целое число>] | NOPARALLEL

Опции команды RECOVER кратко описаны в .

Таблица 20. Опции команды RECOVER.

Опция Назначение
AUTOMATICАвтоматически генерирует имя архивного файла журнала повторного выполнения, необходимого для продолжения операции восстановления. Для этого используются значения параметров конфигурации LOG_ARCHIVE_DEST и LOG_ARCHIVE_FORMAT (или соответствующие стандартные значения). Если файл с таким именем не найден, SQL*Plus запрашивает имя файла, выводя автоматически сгенерированное в качестве подсказки. Имя запрашивается также, если не указана ни опция AUTOMATIC, ни опция . Если заранее известно, что архивирование выполнялось в файл с нестандартным именем, имеет смысл сразу указать опцию LOGFILE.
FROM <местонахождение>Задает местонахождение архивных файлов журнала повторного выполнения. По умолчанию используется значение параметра инициализации LOG_ARCHIVE_DEST. Можно также задать местонахождение архивных файлов с помощью команды SQL*Plus .
LOGFILEПродолжает восстановление носителей, применяя указанный файл журнала повторного выполнения. При восстановлении в интерактивном режиме (AUTORECOVERY OFF), запрашивает новое имя файла, если указанный файл журнала не найден.
TEST ALLOW <целое число> CORRUPTIONВ случае повреждения файла журнала указывает, при скольких поврежденных блоках еще можно продолжать восстановление. В ходе обычного восстановления это значение не должно быть более 1.
CONTINUEПродолжает восстановление нескольких экземпляров после прерывания для отключения восстановления одного из них.
CONTINUE DEFAULTПродолжает восстановление, используя автоматически сгенерированное имя архивного файла журнала повторного выполнения, если оно не указано явно. Аналогично опции , но не запрашивает альтернативное имя файла, если файл не найден.
CANCELПрерывает восстановление, ведущееся до CANCEL (см. опцию ).
STANDBY DATABASEВосстанавливает резервную базу данных, используя управляющий файл и архивные файлы журнала повторного выполнения основной базы данных. Резервная база данных должна быть смонтирована, но не открыта.
DATABASEВосстанавливает всю базу данных в целом.
UNTIL CANCELЗадает неполное восстановление, до прерывания администратором. Необходимо указать или подтвердить автоматически сгенерированные имена файлов журналов повторного выполнения. Восстановление завершится, если указать CANCEL вместо очередного имени файла.
UNTIL TIMEЗадает неполное восстановление до момента времени. Момент времени указывается в одиночных кавычках по формату 'YYYY-MM-DD:HH24:MI:SS'.
UNTIL CHANGEЗадает неполное восстановление до указанного по номеру изменения (SCN), не включая его.
USING BACKUP CONTROLFILEУказывает, что вместо текущего управляющего файла должна использоваться его резервная копия.
TABLESPACEВосстанавливает указанные табличные пространства текущей базы данных (до 16).
DATAFILEВосстанавливает любое количество указанных файлов данных.
STANDBY TABLESPACEРеконструирует потерянное или поврежденное табличное пространство на резервной базе данных, используя архивные файлы журнала повторного выполнения и управляющий файл основной базы данных.
STANDBY DATAFILEРеконструирует потерянный или поврежденный файл данных на резервной базе данных, используя архивные файлы журнала повторного выполнения и управляющий файл основной базы данных.
UNTIL CONSISTENT WITH CONTROLFILEУказывает, что восстановление старого табличного пространства или файла данных использует текущий управляющий файл резервной базы данных.
MANAGED STANDBY DATABASEЗадает режим устойчивого восстановления резервной базы данных. В этом режиме предполагается, что резервная база данных является активным компонентом. В таком режиме можно восстанавливать только носители.
NODELAYНемедленно применяет отложенный архивный журнал к резервной базе данных, независимо от установки параметра DELAY в параметре инициализации LOG_ARCHIVE_DEST_n в основной базе данных.
TIMEOUTЗадает период ожидания (в минутах) для операции устойчивого восстановления. Если за это время не станет доступным архивный журнал повторного выполнения, процесс восстановления завершается с ошибкой. Если эта конструкция не указана, резервная база данных остается в состоянии ожидания восстановления, пока не будет повторно выполнена команда RECOVER с конструкцией CANCEL или пока не произойдет остановка или сбой экземпляра.
CANCELПри управляемом восстановлении конструкция CANCEL прерывает восстановление резервной базы данных после применения текущего архивного файла повторного выполнения. Приглашение SQL*Plus снова появится после остановки процесса восстановления.
CANCEL IMMEDIATEПрерывает управляемое восстановление резервной базы данных после применения текущего архивного файла повторного выполнения или после прочтения следующего, в зависимости от того, какое событие произойдет раньше. Приглашение SQL*Plus снова появится после остановки процесса восстановления. Команду RECOVER CANCEL IMMEDIATE нельзя выполнять из того же сеанса, из которого была выполнена команда .
CANCEL NOWAITПрерывает управляемое восстановление резервной базы данных после прочтения следующего файла журнала повторного выполнения и выдает приглашение SQL*Plus.
DISCONNECT FROM SESSIONУказывает, что в ходе управляемого восстановления архивные файлы повторного выполнения должны применяться отдельным фоновым процессом, не блокирующим текущий сеанс.
FINISHНемедленно восстанавливает резервные файлы текущего журнала повторного выполнения резервной базы данных. Используется при сбое основной базы данных.
NOWAITВозвращает управление немедленно, не дожидаясь завершения процесса восстановления.
<
Для выполнения команды RECOVER необходимо обладать ролью SYSDBA и подключиться через выделенный серверный процесс.

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

Рассмотрим простой пример остановки, запуска и восстановления носителя из SQL*Plus:

SQL> connect system/manager as sysdba

Соединено. SQL> shutdown

База данных закрыта. База данных размонтирована. Экземпляр ORACLE завершен. SQL> startup mount

Экземпляр ORACLE запущен. Total System Global Area 152581388 bytes Fixed Size 70924 bytes Variable Size 78741504 bytes Database Buffers 73691136 bytes Redo Buffers 77824 bytes База данных смонтирована. SQL> recover database until time '2001-12-09:00:00:00'

Восстановление носителя завершено. SQL> alter database open;


Содержание раздела