(转)alter database open resetlogs 的意义
转自:http://blog.sina.com.cn/s/blog_63216bda0100zblr.html
Oracle文档中提到,一旦用备份的控制文件进行数据库恢复,就需要使用resetlogs的方法打开数据库,但是resetlogs通常意味着不完全恢复,而且更重要的是一旦用resetlogs方法打开数据库,日志的序号用重新从1开始。其实如果只是控制文件损坏,日志文件都完整的话,数据库是可以完全恢复的,而且不必非得用resetlogs打开。接下来,我们就对不完全恢复做出总结,如图9-10所示,然后再通过一些实验深入理解。
|
| 图9-10 控制文件的重建方法及后续恢复操作 |
9.6.1 使用alter database open resetlogs的场合
使用resetlogs选项,会把当前的日志序号(log sequence number)重设为1,并抛弃所有日志信息。在以下条件时需要使用resetlogs选项:
在不完全恢复(介质恢复);
使用备份控制文件。
使用resetlogs打开数据库后,务必要完整地进行一次数据库备份。
指定RESETLOGS会执行下列操作:
归档当前的在线重做日志文件(如果能访问到的话),然后清空内容并将日志文件序号重置为1(如果在线重做日志文件不存在,则重建)。
更新数据文件和在线重做日志文件中的RESETLOGS SCN和重置时间信息。
顾名思义,reset将重置日志顺序号,那么以前数据库的备份将不再可用
万事万物有果必有因,执行了不完全恢复操作,或者使用了备份的控制文件进行恢复,或者执行Flashback Database操作之后,在打开数据库时必须指定RESETLOGS选项,这是由Oracle自身特性决定的。
正常运行中Oracle内部有一个生命周期,这种生命周期在Oracle中也有一个专业词汇,叫incarnation。不完全恢复,顾名思义就是只恢复部分数据,由于已经无法将数据库恢复到当前状态(崩溃前的状态),Oracle数据库也不知道当前处于什么状态了,事务上也许一致,但是不是最新,Oracle自己无从判断,后续也许仍有重做日志文件,但却无法应用(或DBA不允许应用)。如果没有Incarnation的概念,正常Open数据库的话又会产生重做日志文件,并且这些日志文件的序号与之前相同(但内容可能不同),这样不管是备份还是恢复都会造成混淆,因此必须在执行不完全恢复后,标示之前生命周期结束,方法就是以RESETLOGS方式打开数据库。以RESETLOGS方式打开后,Oracle数据库又开始了一个新的生命周期,即重置Incarnation,日志文件序号也被重新初始化到1。
图7-4显示了一次OPEN RESETLOGS的操作。如果我们画一个时间轴的话,不完全恢复就是将数据库恢复到从备份时间到当前时间之间的某一个点。
数据库在日志文件序号为1000时创建了备份,在日志文件序号为4000时崩溃,由于日志文件序号为2501,因此你只能将数据库恢复到日志文件序号为2500时的状态,然后以RESETLOGS方式打开,Oracle数据库又开始了一个新的Incarnation,日志文件序号被重新初始化到1,然后随着数据库的运行不断增加并达到4000,但这些日志文件与之前的日志文件并不关联(虽然文件序号相同)。
|
指定RESETLOGS会执行下列操作:
归档当前的在线重做日志文件(如果能访问到的话),然后清空内容并将日志文件序号重置为1(如果在线重做日志文件不存在,则重建)。
重置控制文件中关于在线日志文件的元数据。
更新数据文件和在线重做日志文件中的RESETLOGS SCN和重置时间信息。
在10g之前的版本,数据库执行完OPEN RESETLOGS操作之后,都建议立刻进行一次完全备份,因为之前版本中在执行OPEN RESETLOGS操作时并不对当前的Online Redologs文件进行归档,这会导致归档文件不再连续,因此之前创建的备份不再有效(恢复不到当前状态了,只能恢复到OPEN RESETLOGS操作之前)。10g及之后版本就不存在这个问题了,OPEN RESETLOGS操作会首先将当前在线重做日志文件归档(如果能够访问到的话),并且OPEN RESETLOGS操作也会记入Online Redologs文件并正常归档,相当于OPEN RESETLOGS只是一个命令操作,就像其他SQL命令一样,这样保证了归档日志文件的连续性,之前的备份依然有效,不过三思仍然建议执行OPEN RESETLOGS操作之后马上进行一次全库备份。
提示
什么是Incarnation?
Oracle数据库的Incarnation在有些资料中译作对应物,在我看来可以将其理解成生命周期。Oracle数据库从创建到遇到RESETLOGS操作为一个生命周期,这个生命周期内数据库的逻辑属性,如SCN、日志文件序列号等具有相同的特征。当通过OPEN RESETLOGS方式打开数据库后,原生命周期即宣告结束,原生命周期中生成的重做日志文件也被废弃,日志文件序号自动重置为1。
(转)alter database open resetlogs 的意义的更多相关文章
- alter database open resetlogs
使用resetlogs选项,会把当前的日志序号(log sequence number)重设为1,并抛弃所有日志信息.在以下条件时需要使用resetlogs选项: 在不完全恢复(介质恢复): 使用备份 ...
- 关于alter database open resetlogs及incarnation的一点理解
关于alter database open resetlogs及incarnation的一点理解 不完全恢复只能做一次吗? 采用rman的默认设置,对数据库进行了backup database备份,进 ...
- 丢失全部控制文件,noresetlogs重建控制文件,alter database open
測试2: (1)一致性的全备 SQL> shutdown immediate; $ cp -rf $ORACLE_BASE/oradata/boss/*.dbf /oradata/bossbak ...
- 非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法
非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法 环境:非域环境 因为是自动故障转移,需要加入见证,事务安全模式是,强安全FULL模式 做到最后一 ...
- backup, file manipulation operations (such as ALTER DATABASE ADD FILE) and encryption changes on a database must be serialized.
昨天在检查YourSQLDba备份时,发现有台数据库做备份时出现了下面错误信息,如下所示: <Exec> <ctx>yMaint.ShrinkLog</ctx> ...
- 由于无法在数据库 'TestNonContainedDB' 上放置锁 ALTER DATABASE 失败
Error: 消息5601,级别16,状态1,第1行,由于无法在数据库 'TestNonContainedDB' 上放置锁,ALTER DATABASE 失败.请稍后再试.消息5069,级别16,状态 ...
- [Hive - LanguageManual] Create/Drop/Alter Database Create/Drop/Truncate Table
Hive Data Definition Language Hive Data Definition Language Overview Create/Drop/Alter Database Crea ...
- Use ALTER DATABASE to Move Databases
Use ALTER DATABASE to Move Databases Follow Our Daily Tips •facebook.com/TechNetTips• twitter.com/Te ...
- ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected解决方法
在进行物理主备库角色转换的时候遇到ORA-01093错误 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY; ALTER ...
随机推荐
- 洛谷 P1718 图形复原
P1718 图形复原 题目描述 HWX小朋友对几何的热爱在电脑组是出了名的,号称“每题必解”,这天,LXC在玩logo的时候突然想到了一个题目,刚好可以去测试一下他封号的虚实,于是,他logo编程画了 ...
- ubuntu下vim中内容拷贝到浏览器
在vim中编辑好了代码想要复制出来到浏览器或者其它地方.用yy复制后去别的地方粘帖发现根本不是当初复制的内容,非常头疼-- 这是由于vim中有它自己的一套剪贴板系统(clipboard).这套系统和u ...
- 基于SVM的数据分类预測——意大利葡萄酒种类识别
update:把程序源代码和数据集也附上http://download.csdn.net/detail/zjccoder/8832699 2015.6.24 --------------------- ...
- DB2物化视图(Materialized Query Tables, MQT)
DB2的物化视图MQT是基于查询结果定义的一个表,MQT中包括的数据来自MQT定义所基于的一个或多个表, 使用MQT能够显著提高查询的操作性能. 数据库的视图和MQT都是基于一个查询来定义的.每当视图 ...
- 修正单纯形法·优化算法实现·Java
修正单纯性法 代码例如以下: 舍去了输入转化的内容,主要包括算法关键步骤. public class LPSimplexM { private static final double inf = 1e ...
- mongo数据库--非关系型数据库
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFuZ2xpdXFpbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- android图像处理系列之六-- 给图片添加边框(下)-图片叠加
前面介绍了一种用透明图片叠加的方式添加花边边框,下面将介绍另外一种图片叠加添加花边边框的方式.前面方法有一个缺点,就是做成PNG图片,图片体积会很大,不是一般的大,比同样的JPG大三倍多,如果项目可以 ...
- php中array_merge函数
php中array_merge函数 一.array_merge简介 (PHP 4, PHP 5, PHP 7) array_merge — 合并一个或多个数组 说明¶ array array_merg ...
- ZJOI2017线段树
ZJOI2017线段树 题意: 给你一颗广义线段树,太长了,自己去看. 题解: 直接上zkw那一套,把闭区间换成开区间,就是把取\([l,r]\),变成取\([l-1,l-1],[r+1,r+ ...
- JS 在HTML页面显示当前日期
代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <t ...