转 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, ...
随机推荐
- 函数有一个特殊的属性 prototype!
JavaScript 中只有对象,没有类. 实际上,JavaScript 才是真正应该被称为「面向对象」的语言,因为它是少有的可以不通过类,直接创建对象的语言. 函数的 prototype 属性 在 ...
- aspx 与 ashx cs
1. aspx 与 ashx 我们知道 aspx :继承自 System.Web.UI.Page 然而Page:IHttpHandler public class Page : TemplateCon ...
- docker 镜像创建
dockerfile FROM microsoft/aspnetcore:2.0 ARG source WORKDIR /app EXPOSE COPY ${source:-/} . ENTRYPOI ...
- GeoServer中GeoWebCache(GWC)的使用
本文介绍GeoWebCache的使用方法,包括如何切缓存,访问缓存wms/wmts服务,如何复用栅格缓存等. 文章大部分内容转载自https://www.cnblogs.com/naaoveGIS/p ...
- arp欺骗进行流量截获-2
上一篇讲了原理,那么这一篇主要讲如何实现.基本上也就是实现上面的两个步骤,这里基于gopacket实现,我会带着大家一步步详细把每个步骤都讲到. ARP 欺骗 首先就是伪造ARP请求,让A和B把数据包 ...
- DFT到FFT的理解
DFT简化计算理解(FFT) DFT: WN=e^(-j*2*pi/N) DFT复杂度o(N^2) 降低与N^2的依赖 使N = LM (L^2+m^2 <= N^2) N点DFT分解为M ...
- OpenResty 最佳实践 (2)
此文已由作者汤晓静授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. lua 协程与 nginx 事件机制结合 文章前部分用大量篇幅阐述了 lua 和 nginx 的相关知识,包 ...
- 离线安装 python 第三方库
离线安装 python 第三方库 首先你需要在联网的服务器上已经安装了一个第三方库,比如是paramiko,也就是说你已经执行了 pip install paramiko ,小提示: 如果在安 ...
- 20165219 2017-2018-2 《Java程序设计》第8周学习总结
20165219 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 进程与线程 线程是比进程更小的单位:线程间可以共享进程中的某些内存单元 java的多线机制 ...
- Atcoder Grand Contest 031C(构造,思维,异或,DFS)
#include<bits/stdc++.h>using namespace std;int n,a,b,sum;void dfs(int x,int y,int ban){ if( ...