使用Oracle备库的rman备份文件进行数据库恢复

文章目录

目录

文章目录

前言

一、备份恢复



前言

记录一次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
相关推荐
周杰伦fans2 小时前
AutoCAD .NET 二次开发:深入理解 ObjectId = 0 与 ObjectId.Null
数据库·oracle·.net
Leon-Ning Liu3 小时前
【真实经验分享】Oracle 索引并行度引发的进程风暴分析与处理
数据库·oracle
韦胖漫谈IT3 小时前
B+ 树:为什么数据库索引偏爱它
数据库·oracle
消失在人海中15 小时前
oracle 数据库多表关联查询
服务器·数据库·oracle
ZC跨境爬虫20 小时前
SQL学习日志 Day_3 :(SELECT查询语句入门)
数据库·sql·学习·oracle
文盲青年1 天前
数据库移除0宽字符
数据库·oracle
晴天¥1 天前
Oracle 19c RAC修改监听默认端口
数据库·oracle
程思扬1 天前
Android Room 数据库跨版本升级闪退问题根治方案
android·数据库·oracle
mN9B2uk171 天前
SQL Server 数据库设计
数据库·oracle