使用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
相关推荐
ClouGence6 小时前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
ClouGence6 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
曹牧7 天前
Oracle EXPLAIN PLAN
数据库·oracle
贤时间7 天前
codex 助力oracle ebs 开发
数据库·oracle
秉承初心7 天前
PostgreSQL 数据性能瓶颈突破实战
数据库·postgresql·oracle
Curvatureflight7 天前
MySQL 深分页越来越慢?从 LIMIT OFFSET 改成游标分页
数据库·oracle
XZ-0700017 天前
MySQL事务
数据库·mysql·oracle
tiancaijiben7 天前
阿里云函数计算FC如何实现网站的定时任务与自动化
数据库·oracle·dba
xfhuangfu7 天前
Oracle 19c 多租户体系架构介绍
数据库·oracle·架构
杨云龙UP7 天前
Spotlight 接入 Oracle 数据库监控操作指南 2026-06-16
数据库·oracle·性能监控·预警·阈值·spotlight·瓶颈分析