Предварительное замечание: если (вдруг) используется windows предварительно нужно создать новый экземпляр с помощью oradim.
Итак:
export ORACLE_SID=mysid
Создаём pfile с необходимыми параметрами
cat > initmysid.ora <<EOF
db_name=yourdbname
db_unique_name=instance
EOF
В большинстве случаев этого достаточно
startup nomount
Восстанавливаем controlfile из имеющейся резервной копии.
RMAN> restore controlfile from '/home/oracle/stage/o1_mf_s_819826669_8x7w7g70_.bkp';
shutdown immediate
startup mount;
Сообщаем базе, где лежат резервные копии:
RMAN> catalog start with '/home/oracle/stage';
Перед тем как восстанавливать БД неплохо было бы узнать последний хороший scn, дабы уберечься от ошибки на последней стадии (alter database open resetlogs).
Самый простой способ сделать это такой - после восстановления контрольного файла подключаемся as sysdba к mount базе и выполняем следующий запрос:
group by thread#;
Теперь можно использовать полученный scn в команде восстановления:
RMAN> run {
set until scn=23138974759;
restore database;
recover database;
}
За ходом процесса восстановления можно наблюдать с помощью запроса к v$session_longops:
select
SID, START_TIME "STARTED",
TOTALWORK "TOTAL BLOCKS",
sofar "BLOCKS DONE",
round((sofar/totalwork),4) * 100 "%",
sysdate + TIME_REMAINING/3600/24 ETA
from v$session_longops
where totalwork > sofar
AND opname NOT LIKE '%aggregate%'
AND opname like 'RMAN%'
По окончанию процесса выполняем:
alter database open resetlogs;
Если восстанавливаемой базе был включен flashback on, а соответствующие журналы не были скопированы, перед открытием базы следует это самый flashback выключить.
Итак:
export ORACLE_SID=mysid
Создаём pfile с необходимыми параметрами
cat > initmysid.ora <<EOF
db_name=yourdbname
db_unique_name=instance
EOF
В большинстве случаев этого достаточно
startup nomount
Восстанавливаем controlfile из имеющейся резервной копии.
RMAN> restore controlfile from '/home/oracle/stage/o1_mf_s_819826669_8x7w7g70_.bkp';
shutdown immediate
startup mount;
Сообщаем базе, где лежат резервные копии:
RMAN> catalog start with '/home/oracle/stage';
Перед тем как восстанавливать БД неплохо было бы узнать последний хороший scn, дабы уберечься от ошибки на последней стадии (alter database open resetlogs).
Самый простой способ сделать это такой - после восстановления контрольного файла подключаемся as sysdba к mount базе и выполняем следующий запрос:
SQL>
column scn format 999999999999999
select
max(next_change#) scn
from
v$archived_log
where
archived = 'YES'
group by thread#;
Хорошая статья на эту тему.
Теперь можно использовать полученный scn в команде восстановления:
RMAN> run {
set until scn=23138974759;
restore database;
recover database;
}
За ходом процесса восстановления можно наблюдать с помощью запроса к v$session_longops:
select
SID, START_TIME "STARTED",
TOTALWORK "TOTAL BLOCKS",
sofar "BLOCKS DONE",
round((sofar/totalwork),4) * 100 "%",
sysdate + TIME_REMAINING/3600/24 ETA
from v$session_longops
where totalwork > sofar
AND opname NOT LIKE '%aggregate%'
AND opname like 'RMAN%'
По окончанию процесса выполняем:
alter database open resetlogs;
Если восстанавливаемой базе был включен flashback on, а соответствующие журналы не были скопированы, перед открытием базы следует это самый flashback выключить.
Комментарии
Отправить комментарий