您的当前位置:首页RMAN恢复-丢失单个数据文件如何恢复

RMAN恢复-丢失单个数据文件如何恢复

来源:锐游网

1. 准备环境

1.1. 业务数据

create tablespace hfedu001 datafile '/oradata/hfzcdb/hfedu001.dbf' size 50m; 
create tablespace hfedu002 datafile '/oradata/hfzcdb/hfedu002.dbf' size 50m; 
create user hfedu01 identified by hfedu01 default tablespace hfedu001; 
create user hfedu02 identified by hfedu02 default tablespace hfedu002; 
grant dba to hfedu01; 
grant dba to hfedu02; 
conn hfedu01/hfedu01; 
create table hfedu01 (id number(10),name varchar2(10)); 
insert into hfedu01 values(1,'hfedu01'); 
insert into hfedu01 values(2,'hfedu02'); 
insert into hfedu01 values(3,'hfedu03'); 
insert into hfedu01 values(4,'hfedu04'); 
insert into hfedu01 values(5,'hfedu05'); 
commit; 
create table hfedu02 as select * from hfedu01; 
select * from hfedu01; 
select * from hfedu02;
conn /as sysdba; 
alter system switch logfile; 
alter system checkpoint; 

1.2. 执行全库备份

-- 打开控制文件备份
CONFIGURE CONTROLFILE AUTOBACKUP ON;     
backup tag hfedu3full format '/backup/full/hfedu3_full_hfzcdb_%s_%p_%t' (database); 

1.3. 模拟数据丢失,手动删除数据文件 hfedu001.dbf

[oracle@hfedudb hfzcdb]$ rm -rf hfedu001.dbf 

1.4. 再次启动数据库,无法启动并报错不能锁定数据文件 6,查看 dbwr 的跟踪文件。

SQL>startup force; 
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file 
ORA-01110: data file 6: '/oradata/hfzcdb/hfedu001.dbf' 

1.5. 检查跟踪文件,报如下错误,非常的清楚的告诉了找不到的文件:

Errors in file /oracle/app/oracle/diag/rdbms/hfzcdb/hfzcdb/trace/hfzcdb_mz00_11969.trc: 
ORA-01110: data file 6: '/oradata/hfzcdb/hfedu001.dbf' 
ORA-01565: error in identifying file '/oradata/hfzcdb/hfedu001.dbf' 
ORA-27037: unable to obtain file status 
Linux-x86_64 Error: 2: No such file or directory 
Additional information: 7 

2. 数据恢复

2.1. 恢复方法一

零停机,在线恢复 【启动数据库报7号文件丢失,恢复前提:数据库归档模式下,rman全备份数据库

,更改丢失的文件offlie ,启动数据,进入rman, restore datafile 7;再recover datafile 7;在进入数据库把7号丢失文件online,启动数据库】

SYS@hfzcdb> startup force;
ORACLE instance started.

Total System Global Area 2466249672 bytes
Fixed Size                  8899528 bytes
Variable Size             671088640 bytes
Database Buffers         1778384896 bytes
Redo Buffers                7876608 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01110: data file 7: '/oradata/hfzcdb/hfedu001.dbf'
SYS@hfzcdb> alter database datafile '/oradata/hfzcdb/hfedu001.dbf' offline;

Database altered.

SYS@hfzcdb> alter database open;

Database altered.

SYS@hfzcdb> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@hfzcdb91:/oradata/hfzcdb]$rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Sat Apr 1 10:04:26 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: HFZCDB (DBID=797496974)

RMAN> restore datafile 7;

Starting restore at 2023-04-01 10:04:48
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2283 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00007 to /oradata/hfzcdb/hfedu001.dbf
channel ORA_DISK_1: reading from backup piece /backup/full/hfedu3_full_hfzcdb_12_1_1132999239
channel ORA_DISK_1: piece handle=/backup/full/hfedu3_full_hfzcdb_12_1_1132999239 tag=hfedu3FULL
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2023-04-01 10:04:52

RMAN> recover datafile 7;

Starting recover at 2023-04-01 10:05:18
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 2023-04-01 10:05:19

RMAN> exit


Recovery Manager complete.
[oracle@hfzcdb91:/oradata/hfzcdb]$sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Apr 1 10:05:35 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SYS@hfzcdb> alter database datafile 7 online;

Database altered.

SYS@hfzcdb> select * from hfedu01.hfedu01;

ID NAME
---------- ----------------------------------------
1 hfedu01
2 hfedu02
3 hfedu03
4 hfedu04
5 hfedu05

SYS@hfzcdb> select * from hfedu01.hfedu02;

ID NAME
---------- ----------------------------------------
1 hfedu01
2 hfedu02
3 hfedu03
4 hfedu04
5 hfedu05

SYS@hfzcdb>

2.2. 恢复方法二

离线恢复 【离线恢复就是没有把丢失文件offline,直接进入rman, restore datafile 7;再recover datafile 7,启动数据库】

-- 数据库打开的时候删除表空间文件,表空间丢失,使用
alter tablespace hfedu001 offline for recover;
-- 将文件至于恢复状态,再进rman恢复, 
restore tablespace hfedu001; 
recover tablespace hfedu001;
-- 再进数据库online丢失的文件

-- 如果是丢失system 表空间,是不可以采用脱机的方式实现在线的的恢复。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top