名词解释:

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

 
     完全恢复:利用重做日志或增量备份将数据块恢复到最接近当前时间的时间点。之所以叫做完整恢复是由于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. 下载csv

    export function downloadCsv(val, key, name, keyName) { if (val.length) { let str = [] str.push(keyNa ...

  2. Linux学习-FTP服务

    一.FTP相关介绍 1.文本传输协议FTP FTP (File Transfer Protocol) 文件传输协议,是因特网中使用最广泛的文件传输协议: 基于C/S结构的双通道协议(数据和命令连接) ...

  3. Warning: Failed prop type: Invalid prop `value` supplied to `Picker`.报错问题

    在使用antd的日期插件时,不留意就会报各种错误. 例如:Warning: Failed prop type: Invalid prop `value` supplied to `Picker`. 这 ...

  4. 前端js怎么实现大文件G级的断点续传(分块上传)和分段下载

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  5. Kohana重写接收不到get参数问题

    .htaccess,不需要重启apache # Turn on URL rewriting RewriteEngine On # Installation directory RewriteBase ...

  6. 设计模式学习笔记——Composite 组合模式

    用于描述无限层级的复杂对象,类似于描述资源管理器,抽象出每一个层级的共同特点(文件夹和文件,展开事件) 以前描述一个对象,是将整个对象的全部数据都描述清楚,而组合模式通过在对象中定义自己,描述自己的下 ...

  7. D - Cheerleaders(第三周)

    D - Cheerleaders 题目链接:https://vjudge.net/contest/154063#problem/D 题目大意: 给你一个 n∗m 的方格,现在有 k 个相同石子,我们要 ...

  8. [CSP-S模拟测试]:木叶下(图论)

    题目传送门(内部题77) 输入格式 第一行一个整数$n$,表示原先的树的点数接下来$n-1$行每行两个整数$a,b$,表示原先的树上的$n-1$条边,保证这$n-1$条边形成一棵树. 接下来一行一个整 ...

  9. flask_sqlalchemy获取动态 model名称 和 动态查询

    需求 想要实现动态的查询,表名,字段,字段值都不是固定的 obj=表名.query.filter_by(字段=值1).first() obj.字段=值2 首先动态获取db_model名字(即Role) ...

  10. SpringBoot 切换国际化

    git:https://github.com/xiaozhuanfeng/demoProj 代码结构: application.properties: spring.messages.basename ...