`

reset incarnation

 
阅读更多

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在控制文件中为什么要存储实体信息,相应的reset database命令有什么用?
在 下面的例子中也可以看到,Oracle在控制文件中记录实体信息,一方面可以清楚的看到数据库实体的发展过程(毕竟resetlogs对数据库是一个具有 较大影响的动作,必须能够清楚的查看到数据库生命期内出现的所有实体信息),另一方面,也可以通过reset database命令选择在rman中将要操作的数据库实体,进而将数据库恢复到某个以前实体对应的数据生命期,这个功能在以前8i的时候是不支持的,从9i开始,可以重置实体到以前,使用resetlogs之前的备份进行数据库恢复。具体操作如下:

--在实体5中对数据库进行全库备份

RMAN> backup database format='c:\bak\df_%d_%s_%p.bak';

启动 backup 于 26-3月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=143 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件 fno=00002 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件 fno=00003 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
输入数据文件 fno=00004 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 26-3月 -08
通道 ORA_DISK_1: 已完成段 1 于 26-3月 -08
段句柄=C:\BAK\DF_ORCL_26_1.BAK 标记=TAG20080326T224202 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:16
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 26-3月 -08
通道 ORA_DISK_1: 已完成段 1 于 26-3月 -08
段句柄=C:\BAK\DF_ORCL_27_1.BAK 标记=TAG20080326T224202 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
完成 backup 于 26-3月 -08

--关闭数据库,将当前重做日志文件删除,模拟故障,造成resetlogs的恢复场景

RMAN> shutdown immediate

数据库已关闭
数据库已卸载
Oracle 实例已关闭

RMAN> startup mount

已连接到目标数据库 (未启动)
Oracle 实例已启动
数据库已装载

系统全局区域总计 314572800 字节

Fixed Size 1248768 字节
Variable Size 79692288 字节
Database Buffers 226492416 字节
Redo Buffers 7139328 字节

RMAN> alter database open resetlogs;
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: alter db 命令 (在 03/26/2008 22:50:16 上) 失败
ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效

RMAN> recover database;

启动 recover 于 26-3月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK

正在开始介质的恢复
无法恢复介质
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 03/26/2008 22:50:36 上) 失败
ORA-00283: recovery session canceled due to errors
RMAN-11003: 在分析/执行 SQL 语句期间失败: alter database recover if needed
start
ORA-00283: 恢复会话因错误而取消
ORA-19909: 数据文件 1 属于孤立的原型
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'

--强制打开后,看到现在已经进入实体6
RMAN> alter database open resetlogs;

数据库已打开

RMAN> list incarnation;


数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1176767170 PARENT 1 10-3月 -08
2 2 ORCL 1176767170 PARENT 472611 25-3月 -08
3 3 ORCL 1176767170 PARENT 474163 25-3月 -08
4 4 ORCL 1176767170 PARENT 488631 26-3月 -08
5 5 ORCL 1176767170 PARENT 490308 26-3月 -08
6 6 ORCL 1176767170 CURRENT 504418 26-3月 -08

--将数据库关闭,重新启动数据库到mount状态
RMAN> shutdown immediate

数据库已关闭
数据库已卸载
Oracle 实例已关闭

RMAN> startup mount

已连接到目标数据库 (未启动)
Oracle 实例已启动
数据库已装载

系统全局区域总计 314572800 字节

Fixed Size 1248768 字节
Variable Size 79692288 字节
Database Buffers 226492416 字节
Redo Buffers 7139328 字节


--实体5中有备份,现在需要将数据库恢复到实体5的数据中,首先重置实体
RMAN> reset database to incarnation 5;

将数据库重置为原型 5

--在重置实体后,restore和recover都会针对重置设置的实体进行,rman自动选择重置到的实体5所对应的备份进行恢复
RMAN> restore database;

启动 restore 于 26-3月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
正将数据文件00002恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
正将数据文件00003恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
正将数据文件00004恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 C:\BAK\DF_ORCL_26_1.BAK
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = C:\BAK\DF_ORCL_26_1.BAK 标记 = TAG20080326T224202
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:07
完成 restore 于 26-3月 -08

RMAN> recover database;

启动 recover 于 26-3月 -08
使用通道 ORA_DISK_1

正在开始介质的恢复

无法找到存档日志
存档日志线程 =1 序列=3
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 03/26/2008 22:54:34 上) 失败
RMAN-06054: 介质恢复正请求未知的日志: 线程 1 seq 3 lowscn 504053

RMAN> list incarnation;


数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1176767170 PARENT 1 10-3月 -08
2 2 ORCL 1176767170 PARENT 472611 25-3月 -08
3 3 ORCL 1176767170 PARENT 474163 25-3月 -08
4 4 ORCL 1176767170 PARENT 488631 26-3月 -08
5 5 ORCL 1176767170 CURRENT 490308 26-3月 -08
6 6 ORCL 1176767170 ORPHAN 504418 26-3月 -08

--在应用日志后,强制打开数据库,可以看到已经将实体5重置为新的实体7,但实体7的scn大于实体5的scn,但小于实体6的scn
RMAN> alter database open resetlogs;

数据库已打开

RMAN> list incarnation;


数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1176767170 PARENT 1 10-3月 -08
2 2 ORCL 1176767170 PARENT 472611 25-3月 -08
3 3 ORCL 1176767170 PARENT 474163 25-3月 -08
4 4 ORCL 1176767170 PARENT 488631 26-3月 -08
5 5 ORCL 1176767170 PARENT 490308 26-3月 -08
7 7 ORCL 1176767170 CURRENT 504054 26-3月 -08
6 6 ORCL 1176767170 ORPHAN 504418 26-3月 -08                    

分享到:
评论

相关推荐

    Incarnation

    "化身"(Incarnation)在这个上下文中,似乎与字体设计相关。从提供的标签"字体"来看,我们可以推测这是一个关于特定字体或排版风格的作品。在压缩包中包含的两个文件,"Incarnation1.GIF"可能是一个展示该字体实际...

    oracle 带你感受不一样的备份恢复理论(第二版).pdf

    每条记录包含数据库的键值(DBKey)、Incarnation键值(IncKey)、数据库名称(DBName)、数据库ID(DBID)、状态(STATUS)、重置SCN(ResetSCN)以及重置时间(ResetTime)。例如,当看到`Incarnation ID = 8`,...

    oracle 备份

    例如,若数据库从Incarnation 7升级至Incarnation 8,那么Incarnation 7下的备份集将无法直接用于恢复Incarnation 8的状态,除非通过特定的恢复过程,如闪回数据库或使用备份控制文件等手段。 #### 五、实践案例:...

    带你感受不一样备份恢复理论

    作者高阳(网名Braveheart)分享了他对RMAN的理解超越了传统的死记硬背和案例模仿,而是深入到其背后的逻辑和哲学,特别是incarnation这一概念的应用。 ### Incarnation概念解析 **Incarnation**,在Oracle数据库...

    【6】Going deeper with convolutions.pdf

    One particular incarnation used in our submission for ILSVRC14 is called GoogLeNet, a 22 layers deep network, the quality of which is assessed in the context of classification and detection.

    DS306_v1.3.pdf CiA Draft Standard 306

    The usage of devices in a communication network requires configuration of ...concrete incarnation of a device configuration. The Module Data Sheet describes modules of devices with a modular structure.

    Going Deeper with Convolutions

    One particular incarnation used in our submission for ILSVRC14 is called GoogLeNet, a 22 layers deep network, the quality of which is assessed in the context of classification and detection

    Open resetlogs操作对Oracle数据库恢复的影响.pdf

    resetlogs操作对于Oracle数据库的恢复会产生重大的影响,具体体现在数据库备份、恢复过程以及数据库形态(incarnation)的变化上。 首先,resetlogs操作会重置联机日志序号。每当Oracle数据库因介质损坏或其它原因...

    Windows程序设计英文版

    As you probably know, Windows 98 is the latest incarnation of the graphical operating system that has become the de facto standard for IBM-compatible personal computers built around 32-bit Intel ...

    Knowledge Graphs.pdf

    modern incarnation of the phrase stems from the 2012 announcement of the Google Knowledge Graph [458], followed by further announcements of the development of knowledge graphs by Airbnb [82], Amazon ...

    php 开发入门

    PHP5 is the latest incarnation of PHP (PHP: Hypertext Preprocessor)—a programming language devised by Rasmus Lerdorf in 1994 for building dynamic, interactive Web sites. Since then, it's been ...

    Spring 实践(Spring in Practice).pdf版本

    In this respect, Spring is like JEE and even its earlier J2EE incarnation. Spring’s approach—based on POJOs, dependency injection, and support for a wide variety of third-party libraries—proved to...

    Bug 18411339 Low performance or ORA-1220

    from v$log_history lh, v$database_incarnation di where lh.resetlogs_time = di.resetlogs_time and lh.resetlogs_change# = di.resetlogs_change# and di.status = 'CURRENT' and lh.thread# is not ...

    Java Program Design: Principles, Polymorphism, and Patterns

    The design of a simplified banking program is introduced in chapter 1 in a non-object-oriented incarnation and the example is carried through all chapters. You can see the object orientation develop ...

Global site tag (gtag.js) - Google Analytics