使用RMAN对数据文件进行恢复

(1)备份数据库

在使用RMAN进行数据库恢复之前,先用RMAN进行全库备份

复制代码
[oracle@redhat6 ~]$ rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Wed May 16 14:32:54 2018

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

connected to target database: ORCL (DBID=1486787650)

RMAN> backup database;

Starting backup at 16-MAY-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/orcl/mark.bdf
input datafile file number=00011 name=/u01/app/oracle/oradata/orcl/tbs01.bdf
input datafile file number=00012 name=/u01/app/oracle/oradata/orcl/tbs03.dbf
input datafile file number=00013 name=/u01/app/oracle/oradata/orcl/tbs04.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_DISK_1: starting piece 1 at 16-MAY-18
channel ORA_DISK_1: finished piece 1 at 16-MAY-18
piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/01t31soh_1_1 tag=TAG20180516T144121 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:33
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00008 name=/u01/app/oracle/oradata/orcl/tbs_32k.dbf
channel ORA_DISK_1: starting piece 1 at 16-MAY-18
channel ORA_DISK_1: finished piece 1 at 16-MAY-18
piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/02t31sta_1_1 tag=TAG20180516T144121 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 16-MAY-18
channel ORA_DISK_1: finished piece 1 at 16-MAY-18
piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/03t31stc_1_1 tag=TAG20180516T144121 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAY-18
复制代码

(2)删除数据文件

查看数据库的数据文件信息:

复制代码
select      t."NAME",
            d."NAME",
            d."FILE#"
from        v$tablespace  t,
            v$datafile d
where       t."TS#" = d."TS#"
order by t.ts#;

NAME                           NAME                                                                                  FILE#
------------------------------ -------------------------------------------------------------------------------- ----------
SYSTEM                         /u01/app/oracle/oradata/orcl/system01.dbf                                                 1
SYSAUX                         /u01/app/oracle/oradata/orcl/sysaux01.dbf                                                 2
UNDOTBS1                       /u01/app/oracle/oradata/orcl/undotbs01.dbf                                                3
USERS                          /u01/app/oracle/oradata/orcl/users01.dbf                                                  4
EXAMPLE                        /u01/app/oracle/oradata/orcl/example01.dbf                                                5
TBS_32K                        /u01/app/oracle/oradata/orcl/tbs_32k.dbf                                                  8
MARK                           /u01/app/oracle/oradata/orcl/mark.bdf                                                     9
TBS01                          /u01/app/oracle/oradata/orcl/tbs01.bdf                                                   11
TBS03                          /u01/app/oracle/oradata/orcl/tbs03.dbf                                                   12
TBS04                          /u01/app/oracle/oradata/orcl/tbs04.dbf                                                   13
10 rows selected
复制代码

删除一个数据文件,这里把文件编号为13的数据文件给删除:

[oracle@redhat6 ~]$ rm -f /u01/app/oracle/oradata/orcl/tbs04.dbf

 

(3)恢复数据文件

(3.1)使用list failure查看失败操作

复制代码
RMAN> list failure;

List of Database Failures
=========================

Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
8          HIGH     OPEN      16-MAY-18     One or more non-system datafiles need media recovery
42         HIGH     OPEN      13-DEC-17     One or more non-system datafiles are missing
复制代码

 

(3.2)使用RMAN建议来恢复丢失的文件

复制代码
RMAN> advise failure
2> ;

List of Database Failures
=========================

Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
8          HIGH     OPEN      16-MAY-18     One or more non-system datafiles need media recovery
42         HIGH     OPEN      13-DEC-17     One or more non-system datafiles are missing

analyzing automatic repair options; this may take some time
using channel ORA_DISK_1
analyzing automatic repair options complete

Mandatory Manual Actions
========================
no manual actions available

Optional Manual Actions
=======================
1. If you restored the wrong version of data file /u01/app/oracle/oradata/orcl/tbs04.dbf, then replace it with the correct one
2. If file /u01/app/oracle/oradata/orcl/tbs04.dbf was unintentionally renamed or moved, restore it

Automated Repair Options
========================
Option Repair Description
------ ------------------
1      Restore and recover datafile 13; Recover datafile 13 
  Strategy: The repair includes complete media recovery with no data loss
  Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1931299378.hm
复制代码

 

最后一行给出了恢复的脚本,查看脚本

复制代码
[oracle@redhat6 ~]$ more /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1931299378.hm
   # restore and recover datafile
   sql 'alter database datafile 13 offline';
   restore datafile 13;
   recover datafile 13;
   sql 'alter database datafile 13 online';
   # recover datafile
   sql 'alter database datafile 13 offline';
   recover datafile 13;
   sql 'alter database datafile 13 online';
复制代码

 

根据脚本,执行修复和恢复

复制代码
RMAN>  sql 'alter database datafile 13 offline';

sql statement: alter database datafile 13 offline

RMAN> restore datafile 13;

Starting restore at 16-MAY-18
using channel ORA_DISK_1

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 00013 to /u01/app/oracle/oradata/orcl/tbs04.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/product/11.2.0/db_1/dbs/01t31soh_1_1
channel ORA_DISK_1: piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/01t31soh_1_1 tag=TAG20180516T144121
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 16-MAY-18

RMAN> recover datafile 13;

Starting recover at 16-MAY-18
using channel ORA_DISK_1

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

Finished recover at 16-MAY-18

RMAN> sql 'alter database datafile 13 online';

sql statement: alter database datafile 13 online
复制代码

 

(4)重启数据库,确认无异常

复制代码
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  730714112 bytes
Fixed Size            2216944 bytes
Variable Size          314575888 bytes
Database Buffers      411041792 bytes
Redo Buffers            2879488 bytes
Database mounted.
Database opened.
复制代码

 

完结。

 

posted @   gegeman  阅读(5552)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示