powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Восстановление БД на дату (откат к дате)/Point-in-Time Recovery
7 сообщений из 7, страница 1 из 1
Восстановление БД на дату (откат к дате)/Point-in-Time Recovery
    #39663861
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Работаем с
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production

БД в режиме с ARCHIVELOG. То есть вроде как можно откатить БД во времени назад на какую-то дату/время, верно (это вопрос 1) ?

Итак, я знаю, что в конкретный момент пользователь начнёт работу с БД. Результат работы может быть ошибочным и мне надо будет откатить БД в состояние до начала его работы.
Я делаю бэкап. Делаю я его bat-ником Backup.bat в Oracle Database 11g Express Edition ( в меню или на рабочем столе этот файл имеет ссылку с именем - Backup Database ).
Это тема нормальная, всё просто кликнул, подождал и всё сохранилось. Но если делать потом restore через bat-ник по ссылке Restore Database то БД восстанавливается не на момент создания бэкапа, а на последний момент, когда она была рабочей. Верно я понимаю (это вопрос 2)?
Мне такая лажа, как и всем я думаю на планет Земля не нужна. Я хочу пимпу с надписью "восстановить на момент тогда-то тогда-то". Но в ORACLE такой пимпы нет, а есть консоль.
Далее я иду в папку bin (у меня она хранится C:\oraclexe\app\oracle\product\11.2.0\server\bin\ ) и оттуда запускаю консоль.
Параллельно через SQLDeveloper выполняю запросы:
Код: plsql
1.
select * from v$database_incarnation;


оттуда я узнаю нужный мне (соотв время на которое откатываюсь) incarnation и RESETLOGS_CHANGE .
потом ещё:
Код: plsql
1.
select * from  V$LOG_HISTORY order by first_time desc;


оттуда выбираю интересующий меня SEQUENCE .
Возвращаемся в консоль, пишем:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
set ORACLE_SID=XE
echo %ORACLE_SID%
rman target / nocatalog
shutdown immediate;
startup mount;
RESET DATABASE TO INCARNATION 11;
RUN{ 
    SET UNTIL SCN 14238711322787;    
    SET UNTIL SEQUENCE 2;  
  RESTORE DATABASE;
  RECOVER DATABASE;
}
alter database open resetlogs;



После этих манипуляция я получаю БД восстановленную на нужный мне момент времени.
К той паре вопросов выше, у меня ещё пара.
3. Есть более простой способ?
4. Как восстановить сделанный мной бэкап на другом ПК?
Спасибо!
...
Рейтинг: 0 / 0
Восстановление БД на дату (откат к дате)/Point-in-Time Recovery
    #39663927
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТо есть вроде как можно откатить БД во времени назад на какую-то дату/время
Не откатить, а достать файлы из РАНЕЕ сделанного backup и накатить на них логи (arch log, а возможно и redo log).
...
Рейтинг: 0 / 0
Восстановление БД на дату (откат к дате)/Point-in-Time Recovery
    #39665239
rtyts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tru55, это я понял. Ответ на вопрос 1 выходит - да.
По остальным вопросам не подскажите?
...
Рейтинг: 0 / 0
Восстановление БД на дату (откат к дате)/Point-in-Time Recovery
    #39665248
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай про полное и неполное восстановление. Полное - это восстановление на момент сбоя (к ошибке пользователя отношения не имеет). Неполное восстановление - это восстановление на момент времени в прошлом (в том числе на момент ДО ошибки пользователя). Соответственно, какие опции укажешь при recover, такое восстановление и будет выполняться. Поэтому забудь про восстановление через bat-файл, поскольку в общем случае процесс неформальный.

По поводу восстановления на другой машине - есть масса топиков на эту тему, ищи хотя бы по слову клон .
...
Рейтинг: 0 / 0
Восстановление БД на дату (откат к дате)/Point-in-Time Recovery
    #39665263
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из закромов. Немного путано, и кажется в одном месте переписывала по-другому и забыла тут поменять, но общий смысл понятен.

Восстановление данных RMAN на другом сервере

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

cmd
>rman target sys/pwd
rman>startup force nomount;
rman>set DBID=X; -меняем ID базы данных на старый, когда попытаетесь восстановить CF он вам его выдаст
rman>startup force nomount;

rman>restore spfile from ‘X’; - этот блок не обязателен, если база и расположение CF вас устраивает.
rman>shutdown immediate;
rman>startup nomount;

rman>restore controlfile from ‘X’; - восстанавливаем контрольный файл из файла бэкапа
rman>alter database mount;
rman>catalog START WITH ‘X’; - добавляет в CF список файлов на диске все подпапки
rman>LIST BACKUP; -смотрим список файлов данных
rman>run -меняем расположение файлов если надо
{
set newname for datafile 1 to ‘A’;
set newname for datafile 2 to ‘B’;
set newname for datafile 3 to ‘C’;
set newname for datafile 4 to ‘D’;

set newname for tempfile <старый путь> to <новый путь>

RESTORE DATABASE;

switch datafile all; -переключаем файлы данных
switch tempfile all

RECOVER DATABASE;
}
rman>switch datafile all;
rman>
rman>alter DATABASE rename file ‘Y:\redo_log’ to ‘X:\redo_log’; - меняем расположение REDO_LOG
rman>alter DATABASE rename file ‘Y:\TEMP’ to ‘X:\TEMP’; - меняем расположение TEMP
rman>alter database open resetlogs;

Смысл такой:
Базу выключаем, меняем у нее ID, он выйдет, если вы попробуете восстановить CF, не меняя ID. Потом восстанавливаем CF. По идее в CF уже записаны данные о том, где у вас лежат бэкапы, архивы и прочее, но если пути поменялись можно вписать их туда заново, потом вы меняете пути файлов данных (если нужно), если пути те же ничего не делайте. Восстанавливаем базу данных, меняем пути у REDO_LOGS и TEMP. Открываем базу данных, сбросив журналы. TEMP файлы и REDO_LOGS пересоздадутся сами.
...
Рейтинг: 0 / 0
Восстановление БД на дату (откат к дате)/Point-in-Time Recovery
    #39665267
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Восстановление базы данных на определенный момент времени

cmd
set nls_lang=russian_cis.ru8pc866

RMAN TARGET sys/ПАРОЛЬ (подключился)

RESTORE DATABASE UNTIL TIME "TO_DATE('19/07/2016 11:30:00','DD/MM/YYYY HH24:MI:SS')"; - восстанавливаешь полную копию на 11-30, ждем минут 20

RECOVER DATABASE UNTIL TIME "TO_DATE('19/07/2016 11:30:00','DD/MM/YYYY HH24:MI:SS')"; - накатываем инкрементальную копию и журналы

alter database open resetlogs; - открываем со сбросом журналов

Пишет база данных открыта - значит все хорошо

После этого ОБЯЗАТЕЛЬНО надо сделать полную копию (в заданиях), потому что предыдущая полная копия через сброс журналов уже не перепрыгнет, и данные после момента восстановления будут потеряны при следующем сбое
...
Рейтинг: 0 / 0
Восстановление БД на дату (откат к дате)/Point-in-Time Recovery
    #39665374
Фотография kinky cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata44845После этого ОБЯЗАТЕЛЬНО надо сделать полную копию (в заданиях), потому что предыдущая полная копия через сброс журналов уже не перепрыгнет, и данные после момента восстановления будут потеряны при следующем сбое
Это не верно, можно восстанавливаться с через resetlogs еще с 10ки. Читайте доку, там этот случай рассмотрен
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Восстановление БД на дату (откат к дате)/Point-in-Time Recovery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]