第一步创建数据备份目录并赋权
mkdir /u01/backup
chown oracle:oinstall /u01/backup
第二步执行打开rman
rman target /
输入指令集(大型数据库也可写入.sh脚本、后台执行)
run {
allocate channel ch1 type disk;
allocate channel ch2 type disk;
# 全库备份(压缩格式)
backup as compressed backupset database
format '/u01/backup/full_%d_full_%T_%U.bak';
# 备份控制文件
backup current controlfile
format '/u01/backup/ctl_%d_full_%T_%U.bak';
# 备份所有归档日志并删除已备份的日志
backup archivelog all delete input
format '/u01/backup/arch_%d_full_%T_%U.bak';
release channel ch1;
release channel ch2;
}
第三步将源库文件scp -r 到新服务器
例如scp -r /u01/backup/ root@192.168.1.1:/u01/
第四步恢复参数文件后启动到nomount;
第五步恢复控制文件
restore controlfile from '/u01/backup/ctl_ORCL_full_20260717_da4tf19k_1_1.bak';
第六步恢复数据文件
6.1数据路径没变化
CATALOG START WITH '/u01/backup/';
RUN {
RESTORE DATABASE;
SWITCH DATAFILE ALL;
}
6.2需要改变数据路径
例如:
RUN {
SET NEWNAME FOR DATAFILE 1 TO '/u01/app/oracle/oradata/orcl/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/u01/app/oracle/oradata/orcl/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '/u01/app/oracle/oradata/orcl/undotbs1.dbf';
RESTORE DATABASE;
SWITCH DATAFILE ALL;
}
第六步应用日志(异机)允许丢失恢复
例如:
recover database until sequence 142 thread 1;(thread 1可以不加)
RECOVER DATABASE UNTIL SCN 2128296;
第七步启动至Open
ALTER DATABASE OPEN RESETLOGS; -- 因为是异机恢复,通常需要RESETLOGS
第八步验证
sql命令:
alter system switch logfile;
rman命令:
crosscheck archivelog all;
delete expired archivelog all;
第九步数据备份一次