Oracle Incarnation 详解
先 解释一下我对incarnation的理解吧,incarnation,我把这个叫做数据库实体,不知道其他人怎么个叫法,从含义上看,它指的是一个重置 scn后的数据库场景。一个数据库在刚开始被创建出来时,scn号为1,随着运行,scn不断单调递增,Oracle就是根据scn描述数据库的整个发展 进程,可以说scn就是数据库的时间轴。当数据库正常运行,或者执行完全恢复时,scn只会单调递增直到最新的scn,这样数据库中所有的数据都按照时间 的顺序改变着,但如果数据库出现了人为误操作,需要执行不完全恢复,这时候就得用以前备份的所有数据文件将数据版本回到以前,然后从那个起点开始应用日 志,直到出现人为故障之前的那一刻,但这时,scn并未到达最新的scn,而是到了之前的某个scn,在这一刻,人为故障还未发生。在完成recover .. until .. 的操作后,所有的数据文件通过应用日志到了统一的一点,但数据库暂时还不能正常打开,因为控制文件中记录的是最新的scn,与应用日志后的数据文件并不一 致,因此无法直接打开数据库回到原始的状态,必须通过resetlogs的方式强制控制文件、重做日志文件以及数据文件的scn一致,此时新打开的数据库 中第一个scn等于应用日志到的最后一条日志的scn号+1(在告警日志文件中可以看到RESETLOGS after incomplete recovery UNTIL CHANGE 145936 这样的信息,打开数据库后的scn则为145937)。数据库每次resetlogs之后,scn和日志序列号都被重置,因此每次resetlogs都会 产生一个新的incarnation,而incarnation的信息存储在控制文件中,在rman中可以通过list incarnation看到实体信息。
Oracle在控制文件中记录实体信息,一方面可以清楚的看到数据实体的发展过程(毕竟resetlogs 对数据库是一个具有较大影响的动作,必须能够清楚的查看到数据库生命期内出现的所有实体信息),另一方面,也可以通过reset database命令选择在rman中将要操作的数据库实体,进而将数据库恢复到某个以前实体对应的数据生命期,这个功能在以前8i的时候是不支持的,从 9i开始,可以重置实体到以前,使用resetlogs之前的备份进行数据库恢复。
Rman跨resetlogs版本恢复
RMAN> startup nomount;
RMAN> sql 'alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
--因为rman默认以环境变量来读取时间格式,与sqlplus的固定格式不同,所以,此处要设定时间格式变量。
RMAN> restore controlfile from autobackup until time '2009-03-10 18:15:00';
注意,仍然需要适当的还原控制文件。
RMAN> alter database mount;
RMAN> restore database;
RMAN> sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
RMAN> recover database until time '2009-03-10 18:15:00';
此时,出现以下错误:
RMAN-03002: recover 命令 (在 03/10/2009 19:21:19 上) 失败
RMAN-20207: UNTIL TIME 或 RECOVERY WINDOW 在 RESETLOGS 时间之前
20207 错误:默认的认为until time或RECOVERY WINDOW的时间不能早于resetlogs的时间. 既然resetlogs了,就不认识之前的归档日志信息了。把之前的归档日志排除在可供恢复的选择之外了。这只是默认的行为,可能处于节省系统资源的考 虑,毕竟resetlogs之前的数据再利用可能很小。
其解决可按以下方法处理:
1.找到数据库的当前incarnation号:
RMAN> list incarnation of database "test";
数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
1 1 TEST 1978860036 PARENT 1 30-8月 -05
2 2 TEST 1978860036 PARENT 534907 05-3月 -09
3 3 TEST 1978860036 PARENT 762990 10-3月 -09
4 4 TEST 1978860036 PARENT 764885 10-3月 -09
5 5 TEST 1978860036 PARENT 765443 10-3月 -09
6 6 TEST 1978860036 PARENT 767488 10-3月 -09
7 7 TEST 1978860036 PARENT 771807 10-3月 -09
8 8 TEST 1978860036 PARENT 774320 10-3月 -09
9 9 TEST 1978860036 PARENT 779541 10-3月 -09
10 10 TEST 1978860036 PARENT 782000 10-3月 -09
11 11 TEST 1978860036 PARENT 783792 10-3月 -09
12 12 TEST 1978860036 CURRENT 801599 10-3月 -09 --此行原型(incarnation)号状态为current,即当前
所以,数据库的前一个(resetlogs之前)原型号为11.
我们重新启动数据库到mount状态(因为需要知道是重置哪个库,所以要挂载)
2.重置数据库到前一个原型(注意:此时的控制文件已经在前面的步骤中,还原到了适当的时间点。实际上,我们应该在nomount前还原控制文件)
RMAN> reset database to incarnation 11;
将数据库重置为原型 11
RMAN> sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
RMAN> restore database;
RMAN> recover database until time '2009-03-10 18:15:00';
RMAN> alter database open resetlogs; (此时,数据库的incarnation编号将再次上涨)
数据库正常打开
参考至:http://www.linuxidc.com/Linux/2011-09/42737.htm
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com
相关推荐
3. Oracle数据库的版本特性:Oracle9i与Oracle10g及以上版本在数据库恢复操作中的差异,特别是对于resetlogs操作和归档日志新格式的应用。 4. 数据库备份的策略和技巧:掌握如何在不同的应用场景下,制定合理的...
- **Incarnation (对应物)**:在不完全恢复后重新打开数据库时通常需要使用`RESETLOGS`选项。这标志着一个数据库逻辑生存周期的结束和下一个逻辑生存周期的开始,这种逻辑生存周期被称为“对应物”。 #### 三、RMAN...
rman 基于时间点恢复是指使用 Oracle 的备份恢复工具 RMAN,将数据库恢复到某个特定的时间点。这种方法可以将数据库恢复到某个特定的时间点,并且可以恢复到某个特定的状态。 在本例中,我们使用 RMAN 将数据库恢复...
Oracle Recovery Manager(RMAN)是Oracle数据库提供的一个强大的工具,它可以帮助管理员进行数据库备份、恢复以及灾难恢复等工作。RMAN支持多种类型的备份方式,其中增量备份是一种高效的备份策略,它仅备份自上次...
### ORACLE备份与恢复知识点详解 #### 一、概述 Oracle备份与恢复是数据库管理员(DBA)必须掌握的核心技能之一。对于任何企业级应用来说,数据的安全性和完整性至关重要。Oracle提供了多种工具和技术来确保数据的高...
#### 一、RMAN与Incarnation的理解 RMAN(Recovery Manager),作为Oracle数据库的重要组成部分,提供了一整套数据保护机制,包括备份、恢复以及灾难恢复策略。深入理解RMAN不仅仅局限于执行具体的备份命令,更在于...
- 通道是RMAN与目标数据库之间的连接,可以通过`allocate channel`命令在目标数据库上启动服务器进程,并定义该进程执行备份或恢复操作时使用的I/O类型。 - **Recovery Catalog(恢复目录)** - 恢复目录是一个...
### RMAN与Incarnation的关系 在RMAN中,incarnation的概念用于管理和跟踪数据库的历史状态,特别是在备份和恢复过程中。RMAN能够列出数据库的所有incarnation,并且每个incarnation都有一个唯一的标识符(IncKey)...
Oracle RMAN,即恢复管理器(Recovery Manager),是Oracle数据库提供的一种强大的工具,用于数据库的备份、恢复和维护。本文将深入探讨RMAN的使用,包括如何进行备份与恢复,以及RMAN的关键命令和配置。 一、RMAN...
RMAN(Recovery Manager)是Oracle数据库管理系统中的一个重要工具,用于数据库备份、恢复和维护。在本文件中,我们详细探讨了RMAN的各种命令及其用途。 首先,`list`命令用于查询不同类型的备份信息。例如,`list ...
这个问题主要出现在 Oracle 11.2.0.4 及之后的版本中,但不包括 12.2.0.1 及以上版本。受影响的产品组件是 Oracle Server 的 Rdbms 部分,具体涉及的版本包括 12.1.0.2 服务器补丁集、12.1.0.1 基础版本以及 11.2....
总结来说,本课件主要介绍了Oracle数据库中RMAN的使用,包括它的功能、Nocatalog连接、恢复目录的创建和管理、备份和恢复的操作,以及RMAN命令的使用,这些都是数据库管理员在日常维护和故障恢复中必不可少的知识点...
"化身"(Incarnation)在这个上下文中,似乎与字体设计相关。从提供的标签"字体"来看,我们可以推测这是一个关于特定字体或排版风格的作品。在压缩包中包含的两个文件,"Incarnation1.GIF"可能是一个展示该字体实际...
RMAN是Oracle数据库中的一个重要工具,主要用于数据库备份、恢复以及灾难恢复等操作。以下将围绕标题“oracle资料”及其描述中提到的“rman命令”,展开详细的讨论。 ### 一、RMAN命令简介 RMAN是Oracle数据库管理...
**编写备份脚本**:根据实际需求编写 RMAN 备份脚本,并将其与 TSM Client 的 `schedule` 功能结合使用。 3. **设置备份计划**:通过 `schedule` 功能定义具体的备份时间计划。 #### 四、总结 本文详细介绍了...
WHERE APPLIED = 'YES' AND RESETLOGS_CHANGE# = (SELECT RESETLOGS_CHANGE# FROM V$DATABASE_INCARNATION WHERE STATUS = 'CURRENT') GROUP BY THREAD#; 二、切换 1. 检查主库是否可切换至 STANDBY。可以使用以下...
### Oracle 10g 视图详解 #### 高可用性和恢复能力 Oracle 10g 的高可用性与恢复功能对于确保数据安全至关重要。以下列出的视图提供了关于备份、归档和恢复过程的关键信息。 1. **V$ARCHIVE**: 展示了归档日志的...