一 oracle是如何判断控制文件的新旧
1 正常情况下
控制文件seq#(controlfile_sequence#) 大于等于数据文件头部记录的控制文件seq#(fhcsq)
控制文件 scn(controlfile_change#)大于等于数据文件头部scn(fhscn)
如下所示:
sql> select controlfile_type,controlfile_sequence#,controlfile_change#,checkpoint_change# from v$database;
control controlfile_sequence# controlfile_change# checkpoint_change#
------- --------------------- ------------------- ------------------
current 16344 2781355383 2781355383
sql> select hxfil,fhcsq,fhscn,fhrba_seq from x$kcvfh;
hxfil :数据文件编号
fhcsq:数据文件头部记录的控制文件seq号
fhscn:数据文件头部的scn号
fhrba_seq:数据文件头部rba地址中的日志序列号
hxfil fhcsq fhscn fhrba_seq
---------- ---------- ---------------- ----------
1 16343 2781355383 22
2 16343 2781355383 22
3 16343 2781355383 22
4 16343 2781355383 22
5 16343 2781355383 22
6 16343 2781355383 22
7 16343 2781355383 22
8 16343 2781355383 22
11 16343 2781355383 22
12 16343 2781355383 22
13 16343 2781355383 22
11 rows selected.
2 用旧控制文件恢复后的情况如下:
rman> restore controlfile from '/oracle/app/db1/dbs/01nve87c_1_1';
starting restore at 14-jan-13
allocated channel: ora_disk_1
channel ora_disk_1: sid=211 devtype=disk
channel ora_disk_1: restoring control file
channel ora_disk_1: restore complete, elapsed time: 00:00:04
output filename=/oracle/crm2/crm/control01.ctl
output filename=/oracle/crm2/crm/control02.ctl
finished restore at 14-jan-13
sql> select controlfile_type,controlfile_sequence#,controlfile_change#,checkpoint_change# from v$database;
control controlfile_sequence# controlfile_change# checkpoint_change#
------- --------------------- ------------------- ------------------
backup 16294 2781355207 2781347284
sql> select hxfil,fhcsq,fhscn,fhrba_seq from x$kcvfh;
hxfil fhcsq fhscn fhrba_seq
---------- ---------- ---------------- ----------
1 16343 2781355383 22