Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 RMAN восстановление на момент сбоя  [new]
Roman Schepalov
Member

Откуда: Spb
Сообщений: 67
Есть бекап на ленте полной БД на два дня назад, есть бекап последнего архивного журнала на утро сегодня, есть бекап контрольного файла на утро сегодня.
Чтобы сделать восстановление на время падения базы - например в обед, необходимо восстановить все файлы данных и применить архивные журналы с момента полного бекапа.
При этом при эмуляции потери контрольных файлов на диске, например - восстанавливаю контрольный файл из бекапа, монтирую базу и восстанавливаю все файлы данных. Потом даю команду RECOVERY DATABASE - требует кляузу USING BACKUP CONTROLFILE, естественно, так как он восстановлен из бекапа.
Если сохранились оперативные редологи, то каким образом ему их подсунуть для восстановления, если после USING BACKUP CONTROLFILE обязательно делать ALTER DATABASE OPEN RESETLOGS? Таким образом мы сможем восстановиться только на момент утреннего бекапа последнего архивного журнала, ведь контрольный файл тоже был забекаплен утром?
А как же восстановиться на момент сбоя при потере только контрольных файлов и при живых редологах?
25 апр 06, 11:22    [2599321]     Ответить | Цитировать Сообщить модератору
 Re: RMAN восстановление на момент сбоя  [new]
Q u a d r o
Member

Откуда: Canada
Сообщений: 1987
Roman Schepalov
Таким образом мы сможем восстановиться только на момент утреннего бекапа последнего архивного журнала, ведь контрольный файл тоже был забекаплен утром?
А как же восстановиться на момент сбоя при потере только контрольных файлов и при живых редологах?


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

Сделал полный бэкап, потом пару раз попереключал логи, сделал базе abort и грохнул контрольный файл (recover catalog'а нет).

Начиная с момента abort:

SQL> show parameter control_files;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      E:\U01\ORADATA\ORA10GR2\CONTRO
                                                 LFILE\CONTROL01.CTL, E:\U01\OR
                                                 ADATA\ORA10GR2\CONTROLFILE\CON
                                                 TROL02.CTL
SQL> shutdown abort;
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Pr
oduction
With the Partitioning, OLAP and Data Mining options

C:\>del e:\u01\oradata\ora10gr2\controlfile\*.*
e:\u01\oradata\ora10gr2\controlfile\*.*, Are you sure (Y/N)? y

C:\>rman

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Apr 25 19:25:04 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

RMAN> connect target

connected to target database (not started)

RMAN> startup nomount

Oracle instance started

Total System Global Area     268435456 bytes

Fixed Size                     1248504 bytes
Variable Size                109052680 bytes
Database Buffers             155189248 bytes
Redo Buffers                   2945024 bytes

RMAN> set dbid 3883264809

executing command: SET DBID

RMAN> set controlfile autobackup format for device type disk to 'E:\u01\oraback\
ora10gr2\backupset\%F';

executing command: SET CONTROLFILE AUTOBACKUP FORMAT

RMAN> restore controlfile from autobackup;

Starting restore at 25-APR-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=102 devtype=DISK

channel ORA_DISK_1: looking for autobackup on day: 20060425
channel ORA_DISK_1: autobackup found: E:\u01\oraback\ora10gr2\backupset\c-388326
4809-20060425-03
channel ORA_DISK_1: control file restore from autobackup complete
output filename=E:\U01\ORADATA\ORA10GR2\CONTROLFILE\CONTROL01.CTL
output filename=E:\U01\ORADATA\ORA10GR2\CONTROLFILE\CONTROL02.CTL
Finished restore at 25-APR-06

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

RMAN> recover database;

Starting recover at 25-APR-06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=101 devtype=DISK

starting media recovery

archive log thread 1 sequence 5 is already on disk as file E:\U01\ORADATA\ORA10G
R2\ONLINELOG\REDO01.LOG
archive log thread 1 sequence 6 is already on disk as file E:\U01\ORADATA\ORA10G
R2\ONLINELOG\REDO03.LOG
archive log thread 1 sequence 7 is already on disk as file E:\U01\ORADATA\ORA10G
R2\ONLINELOG\REDO02.LOG
archive log filename=E:\U01\ORAARCH\ORA10GR2\ARC00003_0588711591.001 thread=1 se
quence=3
archive log filename=E:\U01\ORAARCH\ORA10GR2\ARC00004_0588711591.001 thread=1 se
quence=4
archive log filename=E:\U01\ORADATA\ORA10GR2\ONLINELOG\REDO01.LOG thread=1 seque
nce=5
archive log filename=E:\U01\ORADATA\ORA10GR2\ONLINELOG\REDO03.LOG thread=1 seque
nce=6
archive log filename=E:\U01\ORADATA\ORA10GR2\ONLINELOG\REDO02.LOG thread=1 seque
nce=7
media recovery complete, elapsed time: 00:00:01
Finished recover at 25-APR-06

RMAN> alter database open resetlogs;

database opened

обратите внимание - онлайн логи были применены во время recovery, так же как и все архивные логи, которые появились после бэкапа контрольного файла.
25 апр 06, 12:48    [2599975]     Ответить | Цитировать Сообщить модератору
 Re: RMAN восстановление на момент сбоя  [new]
Roman Schepalov
Member

Откуда: Spb
Сообщений: 67
Значит ли это, что если восстановление идет например на другой сервер, то достаточно с ленты восстановить контрольный файл, все файлы данных на момент полного бекапа, все архивные логи из последнего бекапа, а потом подсунуть ему редологи и появившиеся архивные журналы со старого сервера по соответствующим путям и при recovery database он их применит и восстановит базу на момент сбоя?
25 апр 06, 12:58    [2600056]     Ответить | Цитировать Сообщить модератору
 Re: RMAN восстановление на момент сбоя  [new]
Q u a d r o
Member

Откуда: Canada
Сообщений: 1987
в таком раскладе "другой сервер" ничем не будет отличаться для RMAN от "первичного".

да.
26 апр 06, 08:32    [2602930]     Ответить | Цитировать Сообщить модератору
 Re: RMAN восстановление на момент сбоя  [new]
Ааз
Member

Откуда: Москва/Протвино
Сообщений: 4274
Привет
Мои два копейка:

1. В данном случае все redo логи оказались живы и успешно применились. Т.е. хотя формально выполнялось неполное восстановление, фактически восстановилось все. В таких случаях бывает жалко "выбрасывать" накопившиеся бэкапы, но приходится, поскольку resetlogs сбрасывает номера журналов (log sequence number).

2. Избежать resetlogs можно путем пересоздания управляющего файла. Т.е. вместо заключительной команды "alter database open resetlogs" можно еще чуток пошаманить. В sqlplus:
conn / as sysdba
alter database backup controlfie to trace;
oradebug setmypid
oradebug tracefile_name
shutdown
Указанный файл трассировки - заготовка для пересоздания упр.файла. Лишнее (шапку и комментарии) почистить, оставить раздел NORESETLOGS, переименовать в xxx.sql и выполнить.

ПРИМЕЧАНИЕ: в принципе, RMAN уже умеет восстанавливать "сквозь" RESETLOGS, но там не все так просто. Поищите на форуме - когда-то достаточно давно обсуждалась эта проблема.

Всего
26 апр 06, 09:51    [2603146]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить