名词解释:

顾名思义,完全恢复就是指数据没有丢失的恢复了。不完全恢复是指恢复后有部分数据丢失。它们是数据库的两种恢复方式。

 
     完全恢复:利用重做日志或增量备份将数据块恢复到最接近当前时间的时间点。之所以叫做完整恢复是由于Oracle应用了归档日志和联机重做日志中所有的修改。
     不完全恢复:利用备份产生一个非当前版本的数据库。换句话说,恢复过程中不会应用备份产生后生成的所有的重做日志。
 
     通常在下列情况下生成整个数据库的不完整恢复
     ● 介质失败损坏了几个或全部的联机重做日志文件;
     ● 用户操作造成的数据丢失,比如,用户误删除了一张表;
     ● 由于个别归档日志文件的丢失无法进行完整的恢复;
     ● 丢失了当前的控制文件,必须使用备份的控制文件打开数据库。
     为了执行不完整介质恢复,必须使用恢复时间点以前的备份来还原数据文件,并在恢复完成后使用RESETLOG选项打开数据库。
 
resetlogs参数
     在不完全恢复期间,通常需要使用resetlogs命令打开数据库,这是因为我们要从已经建立的现有重做日志流中脱离出来。resetlogs参数表示一个数据库逻辑生存期的结束了另一个数据库逻辑生存期的开始。数据库的逻辑生存期也称为一个对应物(incarnation)。每次使用resetlogs命令时,SCN计数器不会被重置,但是Oracle会重置其他计数器(如日志序列号),同时还会重置联机重做日志的内容。
 
     经过测试,当在非归档模式下尝试执行完全恢复时,发出alter database open 后,RMAN会报如下错误:
     SQL> alter database open;
     alter database open
     *
     ERROR at line 1:
     ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
但是如果加上resetlogs,就不会报错了。而且从恢复的过程来看,期间确实使用在联机日志文档,也就是说它执行的是完全恢复。这说明在非归档模式下执行完全恢复后,打开数据库时也要重置重做日志。其实这也很好想,非归档模式下,没有归档的重作日志,完全恢复时使用联机日志后,这些联机日志文件就没什么用了,因此Oracle就重置日志文件序列号(个人觉得:理论上来说,是可以不重置的,日志文件的序号直接在现有的日志序号上增加,但是这样日志序号会越来越大。Oracle应该是考虑到这一点就在非归档模式下执行完全恢复和不完全恢复时都重置了重做日志)。
 
完全恢复
     完全恢复很简单,不多说,如下:
     $ rman target /                       ##登录rman工具,如果使用了catalog,则登陆方法rman targetsys/Oracle@lscatalogcata/cata@leo
     RMAN> startup mount           ##必须为mount状态,才能restore 和 recover 数据库
     RMAN> restore database;     ##复制旧数据文件覆盖损坏的数据文件
     RMAN> recover database;    ##数据文件头SCN号同步当前日志中最后一个SCN号【完全恢复】
     RMAN> alter database open [resetlogs];    
     
 
不完全恢复
     不完全恢复有一个核心要领需要牢记:不完全恢复影响的是整个数据库,不能只对数据库的一部分执行不完全恢复。不完全恢复使用的方法通常有:基于时间、SCN、日志序列、还原点或基于删除的恢复。
      $ rman target /  
     RMAN> startup mount
     RMAN>run
     2> {
     3> set until time "to_date('07/01/2015 15:00:00', 'mm/dd/yyyy hh24:mi:ss')";
     4> restore database;
     5> recover database;
     6> alter database open;
     7> }
     从执行过程来看,不完全恢复就是加了一个限制条件,时间/SCN等。如上基于时间点的恢复,Oracle会查找目标恢复时间之前并与恢复时间最近的备份集。如果没有找到可用的备份集,就会报错。
 

RMAN备份与恢复 —— 完全恢复与不完全恢复的更多相关文章

  1. Oracle【IT实验室】数据库备份与恢复之四:RMAN(备份与恢复管理器)

    RMAN是ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件. 归档日志和控制文件.它也可以用来执行完全或不完全的数据库恢复. RMAN可以由命令行接口或者 OEM的 Backup ...

  2. RMAN 备份与恢复深入解析(二)

    RMAN 备份与恢复深入解析(一)  http://space.itpub.net/26686207/viewspace-760869 更多精彩内容尽在 www.leonarding.com < ...

  3. RMAN备份与恢复实践(转)

    1   RMAN备份与恢复实践 1.1  备份 1.1.1 对数据库进行全备 使用backup database命令执行备份 RMAN> BACKUP DATABASE; 执行上述命令后将对目标 ...

  4. RMAN备份与恢复之概念二

      1   RMAN备份恢复 1.1  基础理论 恢复可以分为完全恢复和不完全恢复 完全数据库恢复是恢复到故障发生前的状态,所有已经提交的操作都进行恢复,确保数据库不丢失任何数据,完全恢复只用于归档模 ...

  5. RMAN备份与恢复(一)--认识RMAN

    RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup).修复(restore)和恢复(recover)于一体的工具.接下来了解一下RMAN中的几个重 ...

  6. RMAN备份与恢复之不完全恢复

    要点:对于RMAN的不完全恢复,有如下步骤: 1)加载数据到mount状态(建议恢复前先做备份) 2)为高并发分配多个通道 3)还原所有(所需)的数据文件 4)使用until time,until s ...

  7. 【RMAN】使用RMAN备份将数据库不完全恢复到指定时间点

    RMAN作为Oracle强大的备份恢复工具,可以协助我们恢复数据库到指定时间点,这便是Oracle不完全恢复的一种体现,通过这种方法可以找回我们曾经丢失的数据.这里以找回误TRUNCATE表数据为例给 ...

  8. oracle 备份恢复篇(二)---rman 增备恢复--不完全恢复

    一,环境准备 全备脚本: export TMP=/tmp export TMPDIR=$TMP export ORACLE_BASE=/u01 export ORACLE_SID=prod expor ...

  9. RMAN备份与恢复实例

    1. 检查数据库模式:   sqlplus /nolog    conn /as sysdba   archive log list (查看数据库是否处于归档模式中) 若为非归档,则修改数据库归档模式 ...

随机推荐

  1. SpringCloud学习系列-构建部门微服务消费者Module

    1.新建microservicecloud-consumer-dept-80 2.Pom <project xmlns="http://maven.apache.org/POM/4.0 ...

  2. Jackson常用工具类

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11983194.html Demo package org.fool.util; import com. ...

  3. 【SaltStack官方版】—— states教程, part 4 - states 说明

    STATES TUTORIAL, PART 4 本教程建立在第1部分.第2部分.第3部分涵盖的主题上.建议您从此开始.这章教程我们将讨论更多 sls 文件的扩展模板和配置技巧. This part o ...

  4. SQL Server参数优化

    内存参数: 此处为512G物理内存,一般来说设置为物理内存80%左右,设置过大资源不会自动释放,内存可能会持续增长:设置过小资源浪费. CPU参数: 最大工作线程数: 此处为4个CPU40核,调整后物 ...

  5. Vuex-全局状态管理【传递参数】

    src根目录 新建store文件夹,新建index.js 作为入口 在store文件夹中 新建modules文件夹 modules文件夹中,新建 a.js b.js 2个文件 a.js const s ...

  6. 使用mongodb

    1.安装 yarn add moogose 2.启动 在命令行 mongod --dbpath D:\data//这是最后出现 waiting for connections on port 2701 ...

  7. PHP入门培训教程 PHP变量的使用

      很多朋友在编写PHP程序的时候有时候对变量总有着不能确定的问题,而且也有很多问题就是因为变量的处理不当所造成的.这里兄弟连PHP培训 小编,就PHP变量系统说一下. PHP的变量分为全局变量与局部 ...

  8. 超大文件上传方案( Java )

    1.介绍enctype enctype 属性规定发送到服务器之前应该如何对表单数据进行编码. enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样) 1. ...

  9. kohana orm巧用字段备注支持扩展

    1.SELECT * FROM `bota_language` WHERE `type` = 'order_type'; id  key     value      type        ---- ...

  10. Android Bluetooth 文件接收路径修改方法

    修改文件: packages/apps/Bluetooth/src/com/android/bluetooth/opp/BluetoothOppReceiveFileInfo.java 相关代码片段: ...