T1-----------------T2-----------------T3
修改数据 恢复到T1之前 恢复到T2之前
1. 在恢复启动数据库,变为open状态时需要使用resetlogs参数,因为还原的数据文件与当前的联机日志不匹配,需要重新建立;
alter database open resetlogs;
2. 每次恢复会形成一个新的incarnation,我的理解就是一个新的数据库生命周期,或者SCN时间轴,因为恢复后的库还用原来的SCN(恢复到的历史点的SCN)继续进行,所以我认为两个incarnation的SCN是有可能重复的(网上没查到资料,只是个人推断):
对应上面的真实世界的时间轴,下面是SCN的轴:
------------T1-------------------T2------------------T3---------
incarnation1 :-----SCN1-------------SCN2--
incarnation2 : SCN1-----------------
incarnation3 : SCN2-----------------
SCN例: 1 2 3 [4] 5 6 7 8 9 10 [11] 12
[4] 5 6 7 8 9 10 11
[11] 12 13 14 15 16
基于以上如果要恢复到一个时间点/SCN(时间点不会重复?感觉好像不需要切?但实际得切),需要先切换到要恢复到的incarnation:
reset database to incarnation 1;