转 LIST INCARNATION OF DATABASE
incarnation在英文中是“化身”的意思。
那么在oracle中,它又是什么意思呢?有什么作用呢?
我们看一些基本概念
Current Incarnation(当前化身):数据库当前正在使用的化身。
Parent Incarnation(父化身):数据库当前化身的上一个化身。在父化身以 OPEN RESETLOGS 打开后,就生成当前化身。
Ancestor Incarnation(祖辈化身):在父化身之前,辗转生成父化身的各个化身。
Direct Ancestral Path(直接祖辈路径 / 宗谱):由数据库的起始化身辗转生成至当前化身的分支路径,包含数据库的历代祖辈及父化身。
Orphan Incarnation(孤儿化身):不在数据库当前化身的宗谱上的数据库其它化身。
Orphaned Backups(孤儿备份):不是数据库当前化身的宗谱上生成的数据库备份。当前化身不能使
首先,我们可以来看一张图,来对incarnation有个基本的了解
如图,SCN1到SCN1000过程中,数据库属于incarnation 1,一直发展到横向的SCN 2000,做了不完全恢复到了SCN 1000,此时SCN1000之后到横向的SCN2000的便是(孤儿化身)。而SCN1000向上面的SCN2000发展形成incarnation 2。incarnation 1便是incarnation 2的(父辈化身)。
而SCN2000往上继续发展到SCN3000时,又做了不完全恢复到SCN2000,SCN2000继续横向发展到SCN3000,形成incarnation 3.所以incarnation 1便是incarnation 3的(祖辈化身),incarnation 2便是incarnation 1的(祖辈化身)。
所有incarnation 1到 incarnation 3 的这条灰色轨迹便是Direct Ancestral Path。
Incarnation 1 中 SCN 1000 之后的所有备份 和Incarnation 2 中 SCN 2000 之后的所有备份便是孤儿备份。
自此应该能够对Incarnation又大概的了解了吧。
下面我们来通过实验来了解下
RMAN> backup as compressed backupset database plus archivelog delete all input;
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1446008355 PARENT 1 18-SEP-11
2 2 ORCL 1446008355 PARENT 787897 26-JUL-16
3 3 ORCL 1446008355 PARENT 885125 03-AUG-16
4 4 ORCL 1446008355 PARENT 886406 13-AUG-16
5 5 ORCL 1446008355 CURRENT 906785 15-AUG-16
[oracle@linfan ~]$ sqlplus / as sysdba
SQL> grant dba to scott;
Grant succeeded.
SQL> begin
for i in 1 .. 10 loop
insert into test select current_scn from v$database;
commit;
end loop;
end; 2 3 4 5 6
7 /
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
1400132
1400135
1400138
1400141
1400144
1400147
1400150
10 rows selected.
rman target /
RMAN> run {
startup mount force;
set until scn 1400138;
restore database;
recover database;
alter database open resetlogs;
}
查看数据,发现还原成功
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
1400132
1400135
查看以下incarnation
RMAN> list incarnation ;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1446008355 PARENT 1 18-SEP-11
2 2 ORCL 1446008355 PARENT 787897 26-JUL-16
3 3 ORCL 1446008355 PARENT 885125 03-AUG-16
4 4 ORCL 1446008355 PARENT 886406 13-AUG-16
5 5 ORCL 1446008355 PARENT 906785 15-AUG-16
6 6 ORCL 1446008355 CURRENT 1400139 05-DEC-16
发现诞生了DB为6的incarnation,5号已经成为PARENT
再次执行之前的存储过程
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
1400132
1400135
1400972
1400975
1400978
1400981
1400984
1400987
CUR_SCN
----------
1400990
1400993
1400995
1400999
15 rows selected.
再次进行不完全恢复
RMAN> run {
startup mount force;
set until scn 1400990;
restore database;
recover database;
alter database open resetlogs;
}
恢复成功,演化出了DB为7的incarnation
RMAN> list incarnation ;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1446008355 PARENT 1 18-SEP-11
2 2 ORCL 1446008355 PARENT 787897 26-JUL-16
3 3 ORCL 1446008355 PARENT 885125 03-AUG-16
4 4 ORCL 1446008355 PARENT 886406 13-AUG-16
5 5 ORCL 1446008355 PARENT 906785 15-AUG-16
6 6 ORCL 1446008355 PARENT 1400139 05-DEC-16
7 7 ORCL 1446008355 CURRENT 1400991 05-DEC-16
查看test表
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
1400132
1400135
1400972
1400975
1400978
1400981
1400984
1400987
11 rows selected.
此时,我们若是想还原到1400132的状态,可以实现吗?
注:1400132是DB为5的incarnation下的SCN
RMAN> run {
startup mount force;
set until scn 1400132;
restore database;
recover database;
alter database open resetlogs;
}
很遗憾地,爆出了RMAN-20208的错误。
Starting restore at 05-DEC-16
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 12/05/2016 17:10:14
RMAN-20208: UNTIL CHANGE is before RESETLOGS change
那么怎么解决RMAN-20208的错误呢
要回到DB为5的incarnation,再进行恢复
RMAN> reset database to incarnation 5;
database reset to incarnation 5
RMAN> run {
startup mount force;
set until scn 1400132;
restore database;
recover database;
alter database open resetlogs;
}
RMAN> list incarnation ;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1446008355 PARENT 1 18-SEP-11
2 2 ORCL 1446008355 PARENT 787897 26-JUL-16
3 3 ORCL 1446008355 PARENT 885125 03-AUG-16
4 4 ORCL 1446008355 PARENT 886406 13-AUG-16
5 5 ORCL 1446008355 PARENT 906785 15-AUG-16
8 8 ORCL 1446008355 CURRENT 1400133 05-DEC-16
6 6 ORCL 1446008355 ORPHAN 1400139 05-DEC-16
7 7 ORCL 1446008355 ORPHAN 1400991 05-DEC-16
SQL> select * from test;
CUR_SCN
----------
1400123
1400126
1400129
由此可见,数据已经还原到之前状态,演化出DB为8的化身,DB为6和7的化身变成了孤儿化身(ORPHAN),数据库恢复成功。
总结:如果想要恢复到之前 incarnation 的 scn,就需要先切换到之前的 incarnation
https://blog.csdn.net/u012232730/article/details/83413851
转 LIST INCARNATION OF DATABASE的更多相关文章
- 记录一则RMAN恢复到历史备份(多个incarnation)
环境: OEL 5.7 + Oracle 11.2.0.4 1.直接restore到想要恢复的时间点报错: RMAN> sql "alter session set nls_date_ ...
- 跨resetlogs不完全恢复- oracle自动reset错误incarnation
在做oracle跨resetlogs的不完全恢复时,如果未删除flashback area的控制文件自动备份,那么Oracle可能会从控制文件自动备份中自动探测到incarnation信息,并重置in ...
- 在rman恢复中incarnation的概念
摘要 本文主要介绍incarnation的由来,在rman恢复中的作用,以及相关rman恢复的注意事项. 概念说明 从10g开始,incarnation被引入,用于跨越resetlogs进行恢复,由此 ...
- RMAN-06023: no backup or copy of datafile 1 found to restore
在ORACLE 10g数据库还原过程遭遇RMAN-06023: no backup or copy of datafile x found to restore,具体情况如下所示 .......... ...
- RMAN命令LIST操作总结
在使用RMAN备份.还原的过程中,我们经常需要查看备份的一些详细信息,例如,RMAN提供了LIST命令.关于LIST命令的详细信息 可以参考Oracle Database Backup and Rec ...
- 关于oracle修复控制文件与数据文件不一致的问题----
本小菜鸟周末鼓捣数据库关于rman恢复与备份方面的实验,结果不知道哪根筋搭错了,手一哆嗦,做了不知道什么操作,就出现了数据库打不开的严重状态,只能开启到mount状态,但是切换到open状态时就会报错 ...
- RMAN的show,list,crosscheck,delete命令
1.SHOW命令: 显示rman配置: RMAN> show all; 2.REPORT命令: 2.1.RMAN> report schema 报告目标数据库的物理结构; 2.2 ...
- RMAN常用备份恢复命令汇总
RMAN命令 1.独立命令 RMAN>shutdown immediate RMAN>startup RMAN>backup format 'd:\backup\%d_%s.b ...
- RMAN-使用catalog恢复目录进行备份与恢复
RMAN ArchitectureThe RMAN architecture, shown in Figure 7-3, includes a target database, repository, ...
随机推荐
- Max Sum(动态规划)
原创 http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目要求求出一个序列里面的最大序列和,序列要求是连续的,给出最大序列和,序列首元素下标和尾元素下标, ...
- Android学习笔记 - 开始
因为项目需求,要在Android上开发一个证件识别软件,项目时间 9/10- 9/30 工作内容: (1)修改证件识别库 (2)移植证件识别库至Android (3)开发一个Android应用程序 学 ...
- Nginx开发HTTP模块入门
Nginx开发HTTP模块入门 我们以一个最简单的Hello World模块为例,学习Nginx的模块编写.假设我们的模块在nginx配置文件中的指令名称为hello_world,那我们就可以在ngi ...
- visual studio installer 卸载时不能删除安装目录问题
在vs中可以制作安装程序,但是这个安装程序默认卸载的时候不会把安装目录卸载,如果想在卸载的时候删除这个目录,那就要费点周折了.此方法同时适应于程序自删除以及工作目录删除. 基本思路是在程序要退出的 ...
- mysql 复制(主从复制)
一.概述 让一台服务器的数据与其他服务器数据保持同步.一台主库的数据可以同步到多台备库上,而备库本身也可以配置成其他服务器的主库. 主要应用: 1) 数据分布 2) 负载均衡 3) 伪备份.在备份基础 ...
- java并发编程(更新)
概念理解:①串行程序②并发程序: 线程安全问题: 同一进程中的所有线程共享进程中的内存地址空间.如果没有明确的同步机制来管理共享数据,那么当一个线程正在使用某个变量时,另一个线程可能同时访问这个变量, ...
- 1442: Neo 的简单字符串(字符串)
1442: Neo 的简单字符串 时间限制: 10 Sec 内存限制: 128 MB 提交: 9 解决: 3 统计 题目描述 Neo 给你一系列字符串,请你输出字符串中的不同单词个数以及总单词个数. ...
- shell和matlab之间的参数传递
shell和matlab之间的参数传递比shell和Python之间的参数传递要简单,在matlab程序中(以.m脚本文件为例,其他程序如函数等未测试)不需要进行任何配置,直接使用即可,见下面 ...
- mybatis 学习笔记(四):mybatis 和 spring 的整合
mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...
- python实现对象'+'操作符
python对象实现__add__,__radd__方法即可实现'+'操作符 demo: # coding=utf-8 class Person(object): def __init__(self, ...