文章目录
目录
前言
记录一次rman备份恢复测试。
测试环境:源库是Oracle 11g rac,备库也是Oracle 11g rac,rman备份因源库节点本地磁盘空间不足,也担心rman备份会影响主库性能,所以备份放在了备库上。测试库是单机。
一、备份恢复
控制文件恢复:
restore controlfile from'/bak/control_uc4plln7_1_1_20260602.bak';
其他恢复过程:和正常恢复一样,除了在恢复完控制文件后,因为主库是rac在恢复完控制文件就尝试重命名所有redo日志文件,但是有2个standbyredo始终不能重命名,因为查询后发现这两个redo文件是standbyredo就没管它,后面看应该是这两个文件是被控制文件标记正在用作备库的日志同步,所以删不掉。
SQL> alter database rename file'+DATA/dbserver/onlinelog/group_8.381.1207758165' to '/oradata/dbserver/group_8.381.1207758165';
alter database rename file'+DATA/dbserver/onlinelog/group_8.381.1207758165' to '/oradata/dbserver/group_8.381.1207758165'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01511: error in renaming log/data files
ORA-00312: online log 8 thread 1:
'+DATA/dbserver/onlinelog/group_8.381.1207758165'
不完全恢复:一开始我是按照主库备份的命令进行不完全恢复的,结果报错,提示控制文件是备库控制文件。可能这边使用recover standby database就行了,一开始不知道。我尝试将备库激活成主库,但是因为之前有两个redo没有rename成功,在激活的时候报错。
SQL> recover database until time'2026-06-03 08:30:00' using backup controlfile;
ORA-00283: recovery session canceled due to errors
ORA-01666: control file is for a standby database
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;
ALTER DATABASE ACTIVATE STANDBY DATABASE
*
ERROR at line 1:
ORA-00313: open failed for members of log group 8 of thread 1
ORA-00312: online log 8 thread 1:
'+DATA/dbserver/onlinelog/group_8.381.1207758165'
ORA-17503: ksfdopn:2 Failed to open file
+DATA/dbserver/onlinelog/group_8.381.1207758165
ORA-15001: diskgroup "DATA" does not exist or is not mounted
ORA-15077: could not locate ASM instance serving a required diskgroup
ORA-29701: unable to connect to Cluster Synchronization Service
处理两个未重命名的redo:按下面的方式操作就能删掉了,神奇。
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL> alter database drop standby logfile group 8;
alter database drop standby logfile group 8
*
ERROR at line 1:
ORA-01156: recovery or flashback in progress may need access to files
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database drop standby logfile group 8;
Database altered.
SQL> alter database drop standby logfile group 12;
Database altered.
继续不完全恢复:删掉这两个standby redo后,尝试激活成主库,提示数据库不一致不能激活,后面尝试recover standby database;居然可以,然后又把recover standby database;取消掉,加上until。
SQL> recover database until time'2026-06-03 08:30:00' using backup controlfile;
ORA-00283: recovery session canceled due to errors
ORA-01666: control file is for a standby database
SQL> alter database activate standby database;
alter database activate standby database
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/oradata/dbserver/system.259.1025138467'
SQL> recover standby database;
ORA-00279: change 17395548083646 generated at 06/02/2026 10:08:49 needed for
thread 1
ORA-00289: suggestion : /archivelog/1_124255_1025138462.dbf
ORA-00280: change 17395548083646 for thread 1 is in sequence #124255
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 17395548083646 generated at 06/02/2026 09:58:38 needed for
thread 2
ORA-00289: suggestion : /archivelog/2_105989_1025138462.dbf
ORA-00280: change 17395548083646 for thread 2 is in sequence #105989
SQL> RECOVER STANDBY DATABASE UNTIL TIME '2026-06-03 08:30:00' USING BACKUP CONTROLFILE;
ORA-00279: change 17395566881267 generated at 06/02/2026 17:33:44 needed for
thread 1
ORA-00289: suggestion : /archivelog/1_124264_1025138462.dbf
ORA-00280: change 17395566881267 for thread 1 is in sequence #124264
恢复成功,打开数据库:
ORA-00279: change 17395585619821 generated at 06/03/2026 08:26:23 needed for
thread 1
ORA-00289: suggestion : /archivelog/1_124270_1025138462.dbf
ORA-00280: change 17395585619821 for thread 1 is in sequence #124270
ORA-00278: log file '/archivelog/1_124269_1025138462.dbf' no longer needed for
this recovery
Log applied.
Media recovery complete.
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;
Database altered.
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
SQL> alter database open;
Database altered.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
其他可能原因:一开始用recover standby database;是报错的,但是换了之前的数据库化身就可以了,不知道是不是和这个有关系,下次做的时候可以试一下。
SQL> recover standby database;
ORA-00283: recovery session canceled due to errors
ORA-19909: datafile 1 belongs to an orphan incarnation
ORA-01110: data file 1: '/oradata/dbserver/system.259.1025138467'
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@hiscs dbserver]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Wed Jun 3 18:05:44 2026
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DBSERVER (DBID=252385054, not open)
RMAN> list incarnation of database;
using target database control file instead of recovery catalog
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 DBSERVER 252385054 PARENT 1 24-NOV-2019 00:41:02
2 2 DBSERVER 252385054 CURRENT 17392559819880 24-MAR-2026 21:07:39
RMAN> reset database to incarnation 2;
database reset to incarnation 2