http://space.itpub.net/index.php?action/viewspace/itemid/524593

http://www.eygle.com/faq/How.To.Backup.and.Recreate.Controlfile.htm

resetlogs,noresetlogs,完全恢复,不完全恢复

----- 定义:

完全恢复 --  利用重做日志或增量备份将数据块恢复到最接近当前时间的时间点。
之所以叫做完整恢复是由于Oracle应用了归档日志和联机重做日志中所有的修改。
如果只是数据文件损坏,且存在备份及备份以来的所有归档日志文件,那么就能
把数据库完全恢复到发生介质损坏的那个时间点。完全恢复分为数据库级别,数据
文件级别以及表空间级别 。

不完全恢复 -- 需要将数据库恢复到历史上某个时间点,或由于丢失了联机日志
件或某个归档日志文件,或者使用了以前备份的控制文件进行恢复,进行的恢复
叫做不完全恢复。 换句话说,恢复过程中不会应用备份产生后生成的所有的重
做日志(可能应用部分或不应用)。

通常出现下面的情况需要进行不完全恢复:

a. 几个或全部的联机重做日志文件损坏;
b. 由于个别归档日志文件的丢失无法进行完整的恢复;
c. 用户操作造成的数据丢失,比如,用户误删除了一张表, 这时可进行不完全
   恢复将数据库恢复到误操作之前的时间点;
d. 丢失了当前的控制文件,必须使用备份的控制文件打开数据库。不过只要
   所有的归档日志文件和联机日志文件都在,仍然能够恢复所有的数据。

为了执行不完整介质恢复,必须使用恢复时间点以前的备份来还原数据文件,
并在恢复完成后使用RESETLOG选项打开数据库。resetlogs会重置日志序列号
(变为1)强制清空或重建REDO, noresetlogs则不会 。

------ 关系:

1. 不完全恢复必须使用resetlogs ;
2. 使用resetlogs大多数情况下是做不完全恢复,但也可以做完全恢复(视丢失文件类型不同);
3. noresetlogs 必须做完全恢复时使用,但完全恢复不一定都是noresetlogs;

------ 条件:

1. 只要拥有当前的日志文件,那么就能够对数据库执行完全恢复;
2. 使用备份的控制文件(using backup controlfile)则需要使用resetlogs方式打
   开数据库(当然不一定是不完全恢复,备份的控制文件不能自动进行完全恢复, 可
   以手工apply日志进行完全恢复; 重新创建控制文件则可以自动进行完全恢复);
3. 使用当前控制文件或重建控制文件来恢复,可以不需要resetlogs打开数据库;

----- 各种情况下的恢复:

1. 所有控制文件丢失,而其他文件没有丢失

恢复方式A:  从备份中恢复控制文件。

恢复原理: 这时控制文件中的检查点SCN显然要小于当前数据文件头中检查点SCN
(也比联机日志或归档日志要旧), Oracle会读取数据

控制文件会去读数据文件头中与检查点SCN对应的RBA(redo block
address) 信息来确定从那个序列的归档日志开始恢复,一直推进恢复到NEXT SCN是无穷大的那个REDOLOG,此时恢复是完全

恢复的,但打开的时候还要以resetlogs方式打开,这样要重置归档日志的sequence,也就是说,如果你恢复时使用了备份控

制文件,那么打开数据库时必然是要resetlogs的。附测试用例:

先确定是哪个归档文件,然后是从这个归档文件的哪里开始恢复 ????

之所有要冻结DATAFILE的检查点SCN及日志序列号,是为了将来使用热备恢复的时候知道从
哪里开始应用重做记录,也就是从备份出来的数据文件头部记录的日志序列号对应的日志
文件开始,而在该日志文件中,则从数据文件头部记录的检查点SCN开始向后应用所有的
日志文件 。

恢复步骤:
(1). 恢复备份的控制文件到原控制文件目录下。
(2). SQL> startup mount; 
(3). SQL> recover database; (使用备份控制文件不能自动进行完全恢复,可手工apply) 
(4). SQL> alter database open resetlogs;
(5). 完成完全恢复,事实证明不完全恢复时必须RESETLOGS,但是如果使用备份控制
     文件来恢复,使用RESETLOGS也可以完全恢复。其实丢失控制文件也可以不使用
     RESETLOGS方式打开数据库。

恢复方式B: 使用trace文件脚本重新生成控制文件(具体用法参考生成的trace文件)。

恢复原理: ???

具体恢复中遇到的问题可能需要具体对待,这种方法通常是在没有控制文件(二进制
文件)备份的情况下使用的,如果存在备份应该使用备份的控制文件尝试恢复.

恢复步骤:
(1). 使用脚本重新生成控制文件(因为在线日志没有损坏,所以用noresetlogs选项)。
SQL> startup nomount ;
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 'G:\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
  9    GROUP 2 'G:\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
10    GROUP 3 'G:\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
11  -- STANDBY LOGFILE
12  DATAFILE
13    'G:\ORADATA\ORCL\SYSTEM01.DBF',
14    'G:\ORADATA\ORCL\SYSAUX01.DBF',
15    'G:\ORADATA\ORCL\UNDOTBS01.DBF',
16    'G:\ORADATA\ORCL\USERS01.DBF',
17    'G:\ORADATA\ORCL\NAM01.DBF'
18  CHARACTER SET ZHS16GBK
19  ;

# Recovery is required if any of the datafiles are restored backups,
# or if the last shutdown was not normal or immediate.

(2). SQL> recover database; (使用重建的控制文件可以自动进行完全恢复) 
(3). SQL> alter database open ;
(4). 完全恢复完成。如果在线日志有损坏,重建控制文件需要使用resetlogs
     选项,恢复时需要 RECOVER DATABASE USING BACKUP CONTROLFILE;
     ALTER DATABASE OPEN RESETLOGS;

2. 部分数据文件丢失,而其他文件没有丢失

3. 非当前联机日志文件丢失,而其他文件没有丢失

4. 当前联机日志文件丢失,而其他文件没有丢失

5. 控制文件与部分数据文件丢失,而其他文件没有丢失

5. 控制文件与部分数据文件丢失,而其他文件没有丢失

5. 控制文件与非当前联机日志文件丢失,而其他文件没有丢失

5. 控制文件与当前联机日志文件丢失,而其他文件没有丢失

QUOTE:
--------------------------------------------------------------------------------
最初由 cross 发布
A:重新创建了新的控制文件,从数据文件中得到数据文件状态及检查点信息.
B:在使用旧的控制文件做恢复时候,旧的控制文件记录的scn与当前数据文件scn是不一致的,需要这样做来恢复
--------------------------------------------------------------------------------
对于A,SCN信息不一定是从数据文件获取的,你可以手工做实验DUMP建立的控制文件看看,在联机日志存在时,他获取的是日志

末尾的SCN号码
对于B,不光是控制文件小于数据文件头SCN时才使用,只要你的控制文件相对于联机日志或归档日志较旧时,都可以使用

至此完成完全恢复,事实证明不完全恢复时必须RESETLOGS,但是完全恢复时如果使用备份控制文件来恢复,那么使用

RESETLOGS一样可以完全恢复。但是丢失控制文件也可以不使用RESETLOGS方式打开数据库,这样也就可以避免重置日志序列

号带来的不变,详情请见第四种情况

第二种情况,不完全恢复,不管你是要什么样的不完全恢复,SCN,TIME,跨越REDO,都必须使用resetlogs。测试用例可以

参见EYGLE老师的相关教程。

第三种情况,丢失REDOLOG,这就更需要resetlogs了,因为resetlogs能够重建REDOLOG。如果你的REDOLOG、控制文件、数据

文件丢失的话,需要先恢复控制文件,然后restore database;recover database;alter database open resetlogs;注意,

这时候做的是不完全恢复,因为REDO没有了。在recover过程中可能会报错然后自动退出RMAN,无视,alter database open

resetlogs即可,

从数据验证的结果来看,除了REDO里面的记录没有恢复,其他基本都恢复了,REDO及ARCHIVELOG的序列被重置。

第四种情况,没有丢失控制文件及各种日志,仅丢失数据文件,这种问题比较常见,有可能磁盘损坏造成数据文件丢失,等

磁盘故障排除后,需要恢复,此时的恢复就很简单了,restore database;recover database;alter database open;就一切

OK,也就是说,在不使用备份控制文件恢复的情况下,是可以使用noresetlog方式打开数据库的。前提有一,不能丢失日志

文件。假若丢失了控制文件和数据文件但还是想以noresetlog打开的话,就必须手动以noresetlogs方式重建控制文件,而且

REDOLOG的状态都必须正常,否则是无法使用noresetlogs方式打开。

using backup controlfile 与 recreate controlfile 区别

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-690017/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-690017/

resetlogs,noresetlogs,完全恢复,不完全恢复相关推荐

  1. oracle数据库恢复aul_RMAN备份与恢复 —— 完全恢复与不完全恢复

    名词解释: 顾名思义,完全恢复就是指数据没有丢失的恢复了.不完全恢复是指恢复后有部分数据丢失.它们是数据库的两种恢复方式. 完全恢复:利用重做日志或增量备份将数据块恢复到最接近当前时间的时间点.之所以 ...

  2. 人工手动冷备不完全恢复介绍(purge表不完全恢复)

    不完全恢复 不完全恢复的基本类型: 1)基于时间点 (until time): 使整个数据库恢复到过去的一个时间点前 2)基于scn (until change): 使整个数据库恢复到过去的某个SCN ...

  3. Oracle的不完全恢复

    一.不完全恢复特性 1.不完全恢复 不完全恢复仅仅是将数据恢复到某一个特定的时间点或特定的SCN,而不是当前时间点.不完全恢复会影响整个数据库,需要在MOUNT状   态下进行.在不完全恢复成功之后, ...

  4. oracle resetlog与noresetlog的作用(转载)

    关于resetlog的作用是将日志序列重置,这样以前的归档就作废. 首先一定要明白oracle工作的基本原理,归档情况下:大家一定要同步,谁也不能滞后或者超前,也就是SCN号,如果学oracle不懂s ...

  5. oracle常见语句(转载)

    --==================================== 一.sql语句方面 =================================================== ...

  6. RMAN的备份与恢复

    文章目录 1 物理备份 1.1 完全备份(full) 1.2 差异/增量备份(differential) 1.2.1 0级备份 1.2.2 差异增量1级备份 1.2.3 差异增量2级备份 1.3 累积 ...

  7. oracle实验和代码

    专业:网络工程本科 制 定 人: 郭东恩 教 研 室:数据库技术教研室 2011 年1 月 前言 大型数据库ORACLE是属于数据库开发软件及应用领域的专业课,是面向计算机专业本科生开设的一门数据库应 ...

  8. itpub上的ORACLE之常用FAQ V1.0(转)

    itpub上的ORACLE之常用FAQ V1.0发布于2005-06-01 被读23598次 [字体:大 中 小] 作者:itpub 第一部分.SQL&PL/SQL [Q]怎么样查询特殊字符, ...

  9. oracle笔记一(sql语句方面)

    oracle笔记一(sql语句方面) 一.sql语句 --================================================ 1.增加主键    alter table ...

最新文章

  1. PyTorch + NumPy这么做会降低模型准确率,这是bug还是预期功能?
  2. vscode + angular
  3. 使用WMI编程获取主机硬件信息(续)
  4. PADS logic 和PADS layout 连接
  5. Prism4翻译笔记(二)第二章:初始化Prism应用程序
  6. JDK8下载及其环境配置
  7. 如何让Low Poly好看
  8. 哇嘎显示等待无服务器,vagaa搜索不到资源怎么回事?vagaa哇嘎搜索没反应的解决方法...
  9. 英语发音规则---G字母
  10. 提示计算机中丢失 opencv_world300d.dll
  11. RepLKNet:不是大卷积不好,而是卷积不够大,31x31卷积了解一下 | CVPR 2022
  12. 小米首页二级菜单栏实现原理
  13. babel : 无法加载文件 C:\Users\Lenovo\AppData\Roaming\npm\babel.ps1 ,因为在此系统上禁止运行脚本。
  14. macOS Monterey 12.5 (21G72) 正式版 ISO、IPSW、PKG 下载
  15. 【《深度学习入门》—— 学习笔记(一)】
  16. Diffusion模型详解
  17. JS去除字符串中间多余空格
  18. 工业网关BL110实现西门子S7-200 PLC接入华为 云平台
  19. 安卓端简易FTP客户端APP开发
  20. LNMP架构数据迁移到NFS存储服务器

热门文章

  1. py sel采集部署linux报错
  2. 哔哩哔哩视频合并 B站缓存视频合并 安卓版 音视频合并 基于ffmpeg
  3. 用Javascript实现人脸美容
  4. Java中Iteration的用法
  5. CTP协议的组成原理与具体实现(原理篇,含组件解析)_物联网竞赛挑战赛
  6. 若依报错com.alibaba.fastjson2.JSONArray cannot be cast to com.ruoyi.common.core.domain.model.LoginUser
  7. 任务八 分类算法谈论 贝叶斯算法
  8. 解析!如何从手机网站直接跳转到微信添加好友界面
  9. IIC、SPI、UART串行通信以及同步/异步通信学习
  10. 首期Coming AMA!技术大咖柳白畅谈数字身份