Oracle RMAN高级恢复概述(二) 基于RMAN 的恢复主题

1、只读表空间的恢复

在默认情况下,即使丢失了只读的数据文件,RMAN也不会在执行完全恢复数据库还原操作时还原只读的数据文件。 要在完全恢复期间还原只读的数据文件,就必须在restore 命令中使用check readonly 参数,如:

Restore database check readonly;

注意,执行recover tablespace或recover datafile命令时,RMAN的工作情况是不一样的。 使用这两个命令时,不管表空间是否为只读状态都会执行恢复操作。

2、归档重做日志的还原

在使用RMAN的普通恢复过程中,不必恢复归档的重做日志。 不过,偶尔也会要求还原一个或多个归档的重做日志。 例如,我们可能需要使用LogMiner 在备份中存储的归档重做日志文件里查找一些信息。

Restore archivelog all;

Restore archivelog from logseq=20 thread=1;

Restore archivelog from logseq=20 until logseq=30 thread=1;

还可以将归档的重做日志还原到默认位置以外的位置上:

Run

{

Set archivelog destination to "d:/arch";

Restore archivelog all;

}

注意:1. 上例中的set 命令没有替代方法,必须要求使用set。

2. 如果RMAN 认为一个归档的重做日志已存在,就不会在磁盘上还原这个归档的重做日志,即使设置的还原位置不同与默认的归档日志位置,Oracle 也不会在这个新的位置上恢复归档的重做日志。

3、数据文件副本的还原

可以从数据文件副本(不是备份集)中还原数据库的数据文件。 要实现这个功能,需要先使用restore from datafilecopy命令,然后再使用恢复数据库(或表空间,数据文件)的recover。

RMAN>Restore (datafile 5) from datafilecopy;  -- 此处的圆括号是必须的,如果没有就报错

RMAN>Recover datafile 5;

SQL>Alter database datafile 5 online;

执行restore 时,该命令会识别需要还原的数据文件的最新副本,然后从这个副本中还原这些数据文件。 数据文件的最新副本可能是在一个数据文件副本中,而不是在一个副本中。 在这种情况下,Oracle 会恢复这个数据文件副本。

4、恢复讹误的数据块

即使与讹误数据块关联的数据文件一直联机,也可以通过用块介质恢复(block Media recover: BMR)执行块级别恢复操作来修复Oracle 数据库中的这些逻辑上或者物理上的讹误数据块。

一般出现数据块错误时,都会有错误消息:

ORA-01578: ORACLE data block corrupted (file #18,block #88)

如果没有BMR时,我们必须从一个备份中恢复这个数据文件,在恢复过程中,用户不能使用该数据块文件中的所有数据。

用BMR恢复就很简单,只需要执行blockrecover命令即可:

Blockrecover datafile 18 block 88;

如果有必要,可以同时恢复多个数据文件的多个数据块。如:

Blockrecover datafile 18 block 16,17,88,108;

Blcokrecover datafile 18 block 88 datafile 19 blcok 188;

Oracle 会跟踪在备份和恢复期间发生的数据块讹误。如果检测到备份或复制操作出现讹误,由于Oracle 不允许在备份中出现讹误,所有这个备份就会失败。 当然,可以配置RMAN允许一定数量的讹误,但是不推荐这种用法。

可以使用backup validate database 命令查看RMAN 检测到的所有数据库讹误。这条命令会在v$backup_corruption 和v$database_block_corruption视图中填充检测到的所有讹误数据块。 如果讹误发生在复制操作期间,v$copy_corruption视图就会指明包含讹误的备份集。

注意的是:v$backup_corruption 是一个显示历史讹误的视图,v$database_block_corruption 则是一个显示当前数据块讹误的视图。 一旦修正了数据库的块讹误,就需要重新运行backup validate database命令,然后查询v$database_block_corruption 视图以确保不存在其他讹误。

查询v$database_block_corruption视图可以查看讹误数据块的详细信息。 如下所示,使用具有corruption list restore 参数的blockrecover命令可以方便地修正v$database_block_corruption 视图中的讹误数据块。

Blockrecover corruption list restore until time 'SYSDATE-5';

这条命令将还原讹误列表中最近5天的所有讹误数据块。 在上面的命令中,还可以使用until time 和 until sequence.

5、恢复前一个对应物

一个数据库的对应物(incarnation)对应这个数据库的特定逻辑生存期。 有时我们需要使用上次执行resetlogs命令打开数据库前生成的一个备份来还原数据库,或者可能需要还原到执行上一个resetlogs命令之前的时间点。 这就需要用到incarnation.

5.1 使用恢复目录恢复前一个对应物

先假设使用恢复目录执行了备份操作,并且最近使用了resetlogs命令执行过时间点恢复,现在需要使用执行resetlogs命令之前的一个备份来恢复数据库。

操作步骤:

(1)启动但不加载实例,这是因为我们要先得到一个与恢复数据库对应物关联的控制文件

(2)使用reset database to incarnation 命令为RMAN 指示对应物的备份集。

(3)Restore controlfile,使rman还原最新的控制文件

(4)加载数据库

(5)Restore 数据库

(6)Recover 数据库

(7)使用resetlogs 打开数据库

示例如下:

C:/Users/Administrator.DavidDai>rman target / catalog rman/rman@orcl;

恢复管理器: Release 11.2.0.1.0 - Production on 星期二 7月 6 10:31:40 2010

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

连接到目标数据库: ORCL (DBID=1247395743)

时间: 2024-11-03 15:42:40

Oracle RMAN高级恢复概述(二) 基于RMAN 的恢复主题的相关文章

Oracle RMAN高级恢复概述(三) 如何恢复表空间时间点

使用表空间时间点恢复(TSPITR)可以将一个或多个非SYSTEM表空间恢复到与数据库其他部分不同的某个时间点上.这点和Flashback 有点类似. 比如用户误删了3张表,我们就可以用TSPITR恢复. 先看TSPITR 的工作流程,如下图所示: (1) 在辅助实例上用target的备份集restore 数据文件 (2) 在辅助库上用target的归档文件recover 数据文件 (3) 在辅助库上导出相关数据 (4) 修改主库的控制文件 (5) 用辅助库上导出文件导入辅助库上. 几个相关相关

基于RMAN从活动数据库异机克隆(rman duplicate from active DB)

      Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的所有数据结构,无须人为的干预(不同的磁盘系统,文件路径与文件名要指定转换方式).尽管如此,对于生产环境数据库在整个克隆期间性能会下降,其次在Target Server与Auxiliary Server中会产生较大的网络流量.如果这些可以接受的话,从活动数据库进行异机克隆是一个不错的选择.

Oracle RMAN高级恢复概述(一)Oracle不完全恢复简介

不完全恢复是指不完全的数据恢复,不完全恢复与完全恢复在许多方面是相同的,他们基本的命令集相同,但不完全恢复添加了一些其他命令. 引起不完全恢复的原因有很多,如丢失了联机重做日志或归档的重做日志,或者出现重大的用户错误. 不完全恢复会影响整个数据库,换句话,不能只对数据库的一部分执行不完全恢复操作,因为这个会使数据库的一部分具有与这个数据库其余部分不同的SCN和时间点. 要将数据库数据还原到与数据库剩余部分不同的时间点,可以用基于 表空间时间恢复 或者用 闪回技术. 不完全恢复方法包括:基于时间,

Oracle RMAN高级恢复概述(六)跨平台的数据库移动和RMAN

Oracle 10g R2支持手工跨平台移动数据库,即使这些平台具有不同的尾数格式(endian format). 尾数格式与字节排序有关,它有两种不同的格式,即大尾数和小尾数. 如果在不同尾数字节格式的平台之间移动数据库,就需要手工操作,并且使用RMAN的convert datafile 或者 convert tablespace命令来将传送的数据文件转换为正确的尾数格式. 一.可跨平台传送的表空间 Oracle 支持几乎(不是所有)Oracle 数据库家族的所有平台之间的表空间移动.该功能具

Oracle RMAN 维护介绍(二) 恢复目录的维护

使用恢复目录时会涉及到其他一些维护活动,比如在数据库升级或迁移期间升级恢复目录,手工配置数据库对应物以及在某些数据库操作后在同步恢复目录. 1.在RMAN中取消注册数据库 在Oracle 10g 之前,从恢复目录中取消注册数据库是一个手工操作的过程.在10g中,从恢复目录中删除数据库只需要执行 unregister database.如: RMAN>unregister database orcl; 注意的是: 该命令不会删除该数据库的备份文件,而只是删除这些备份文件的恢复目录引用. 同样需要注

Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)

      Oracle 数据库可以实现数据库不完全恢复与完全恢复.完全恢复是将数据库恢复到最新时刻,也就是无损恢复,保证数据库无丢失的恢复.而不完全恢复则是根据需要特意将数据库恢复到某个过去的特定时间点或特定的SCN以及特定的Sequence.我们可以通过基于用户管理的不完全恢复实现,也可以通过基于RMAN方式来实现.本文主要描述是基于RMAN的不完全恢复的几种情形并给出示例.有关数据库备份恢复,RMAN备份恢复的概念与实战可以参考文章尾部给出的链接.   一.不完全恢复的步骤    a.关闭

基于RMAN实现坏块介质恢复(blockrecover)

      对于物理损坏的数据块,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)功能来完成受损块的恢复,而不需要恢复整个数据库或所有文件来修复这些少量受损的数据块.恢复整个数据库或数据文件那不是大炮用来打蚊子,有点不值得!但前提条件是你得有一个可用的RMAN备份存在,因此,无论何时备份就是一切.本文演示了产生坏块即使用RMAN实现坏块恢复的全过程.   1.创建演示环境 SQL> select * from v$version where rownum<2; BAN

Oracle RMAN的体系结构概述

一. 服务器管理恢复 恢复管理器, Recovery Manager, 简陈 RMAN. RMAN 实现一直服务器管理恢复(Server Managed Recovery: SMR). SMR 是一种数据库执行所需要的操作以确保自身备份成功的能力,依赖于Oracle RDBMS 内核中的内置代码可以完成这一功能. SMR 的功能主要体现在能够减少用户的操作. 二. RMAN 使用程序 RMAN 是SMR的具体实现,它是Oracle 提供的,RMAN 是一个独立的应用程序,它负责建立到Oracle

中小型数据库 RMAN CATALOG 备份恢复方案(二)

      中小型数据库呈现的是数据库并发少,数据库容量小,版本功能受限以及N多单实例等特点.尽管如此,数据库的损失程度也会存在零丢失的情形.企业不愿意花太多的钱又要保证数据库的可靠稳定,可是苦煞了我这些搞DB的.接上一篇文章,中小型数据库 RMAN CATALOG 备份恢复方案(一),我们继续来给出基于中小型数据库的恢复的脚本与其部署.   1.RMAN还原shell脚本 --下面的shell脚本用于实现数据库的自动还原,还原成功后,数据库被关闭.因为我们在Prod数据库无异常的情形下,不需要