- Oracle之rman异机恢复方案
(1) 检查备份信息
su - oracle
ls -lrt /backup/crmdb-bak/*
(2) 恢复控制文件
rman target /
startup nomount;
restore controlfile from '/backup/crmdb-bak/fulldb_CRMDB_20230820_27172_1';
alter database mount;
(3) 修改redo 日志文件和临时表空间文件的路径
sqlplus / as sysdba
set line 160
set pagesize 200
select 'alter database rename file '''||member||''' to ''/u01/oradata'||substr(member,instr(member,'/',-1))||''';'
from v$logfile;
set line 160
set pagesize 200
select 'alter database rename file '''||name||''' to ''/u01/oradata'||substr(name,instr(name,'/',-1))||''';'
from v$tempfile;
(4) 重新注册备份路径
rman target /
catalog start with '/backup/crmdb-bak';
(5) 删除过期归档
crosscheck backupset;
delete noprompt expired backup;
crosscheck archivelog all;
list backup of archivelog all;
list backup of database;
list backup of controlfile;
(6) 恢复数据库
run{
allocate channel dsk1 device type disk;
allocate channel dsk2 device type disk;
allocate channel dsk3 device type disk;
allocate channel dsk4 device type disk;
set newname for database to '/u01/oradata/%b';
restore database;
switch datafile all;
recover database ;
release channel dsk1;
release channel dsk2;
release channel dsk3;
release channel dsk4;
}
# 根据scn恢复
-- set until scn 12990120948077;
(7)关闭数据库
sqlplus / as sysdba
alter database open resetlogs;
select open_mode from v$database;