巡检发现客户备库的磁盘满了,且DG出现多处GAP,主库每天备份一次,直接考虑重新恢复备库,库不大,也就58G。
DB:11.2.0.1.0
OS:Microsoft Windows [版本 6.0.6002]
#主库生成新的备库控制文件并传至备库
RMAN> backup device type disk format 'D:\standby_control.bak' current controlfile for standby;
#关闭备库,重建控制文件
SQL> shutdown immediate;
SQL> startup nomount;
RMAN> restore standby controlfile from 'D:\backup\standby_control.bak';
RMAN> alter database mount;
#注册相关备份信息并删除过期备份
RMAN> CATALOG START WITH 'D:\backup';
RMAN> CROSSCHECK BACKUP;
RMAN> DELETE EXPIRED BACKUP;
#恢复数据文件
run
{
allocate channel d1 device type disk;
set newname for database to 'D:\app\Administrator\oradata\msk_stby\%b';
restore database;
switch datafile all;
release channel d1;
}
------------------------------------>
set newname for database to 'D:\app\Administrator\oradata\msk_stby\%b';会将所有的数据文件还有在线日志文件放到D:\app\Administrator\oradata\目录下
或者select 'set newname for datafile '||file#||' to '''||name||''';' from v$datafile;设置各个数据文件的路径
#追归档
SQL> recover managed standby database disconnect from session;
Media recovery complete.
SQL> recover managed standby database cancel;
Media recovery complete.
#开启MRP进程
SQL> alter database open;
SQL> alter database recover managed standby database using current logfile disconnect from session;