sys@ORCL> select recid,sequence# from v$log_history;
RECID SEQUENCE#
---------- ----------
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 1
14 2
15 3
16 4
17 1
18 2
19 3
20 4
21 5
22 6
23 7
24 8
25 9
26 10
27 11
28 12
29 13
30 14
31 15
32 16
33 17
RMAN> list incarnation of database;
using target database control file instead of recovery catalog
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1316499950 PARENT 1 2005-06-30:19:09:40
2 2 ORCL 1316499950 PARENT 446075 2012-07-15:16:40:15
3 3 ORCL 1316499950 PARENT 604802 2012-08-08:10:35:10
4 4 ORCL 1316499950 CURRENT 607329 2012-08-08:11:28:40
alter database open resetlog 可让SEQUENCE#重新从序列号1开始
Oracle在SEQUENCE#为100时创建了备份,在SEQUENCE#为400时崩溃,由于你只有到SEQUENCE#为251
因此你只能恢复到SEQUENCE#为250时的状态,然后以RESETLOGS打开,Oracle又开始了一个新的Incarnation
SEQUENCE#被重新初始化到1,然后随着Oracle的不断增加并达到400,但这些Logfile与之前的Logfile并不关联
虽然它们的SEQUENCE#是一样的
指定RESETLOGS会执行下列操作:
① 归档当前Online Redolog File(如果能够访问到的话),然后清空内容并将SEQUENCE#重置为1
(如果Online Redo Log File不存在,则重建)
② 重置Controlfile中关于Online Redo Log File的元数据
③ 更新Datafile和Online Redolog File中的RESETLOGS SCN和重置时间信息
在10G之前的版本,数据库执行完OPEN RESETLOGS操作后,都建议立刻进行一次完全备份
因为之前版本中在执行OPEN RESETLOGS操作时并不对Online Redolog File进行归档
这会导致ARCHIVED LOG FILE不再连续,导致之前创建的备份不再有效
也就是恢复不到当前状态,只能恢复到OPEN RESETLOGS操作之前
10G及之后版本就不存在这个问题,OPEN RESETLOGS操作会首先将当前Online Redolog File归档
并且OPEN RESETLOGS操作也会记入Online Redologs文件并正常归档
相当于OPEN RESETLOGS只是一个命令操作,和其他SQL命令一样
这样保证了archived log file的连续性,之前的备份依然有效
OCP考题:
不过,仍然建议OPEN RESETLOGS操作后立马进行一次全库备份