SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
6165759
SQL> select name,checkpoint_change# from v$datafile;
NAME CHECKPOINT_CHANGE#
---------------------------------------------------------------------- ------------------
C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSTEM01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\EXAMPLE01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSAUX01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\MACLEAN1.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\UNDOTBS01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\USERS01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART1.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART2.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\LOW_COST_STORE.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\SOURCE_TBS.DBF 6165759
已选择 10 行。
SQL> select name,checkpoint_change# from v$datafile_header;
NAME CHECKPOINT_CHANGE#
---------------------------------------------------------------------- ------------------
C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSTEM01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\EXAMPLE01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSAUX01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\MACLEAN1.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\UNDOTBS01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\USERS01.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART1.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\ILM_PART2.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\LOW_COST_STORE.DBF 6165759
C:\APP\XIANGBLI\ORADATA\MACLEAN\SOURCE_TBS.DBF 6165759
已选择 10 行。
前面和你的演示2的步骤一样, shutdown abort ,重建控制文件
----- END DDE Actions Dump (total 0 csec) -----
ORA-01113: ?? 1 ??????
ORA-01110: ???? 1: 'C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSTEM01.DBF'
kcvcrv: Entering kcvcrv()DDE rules only execution for: ORA 1110
SQL> oradebug setmypid
已处理的语句
SQL> oradebug dump controlf 3;
已处理的语句
SQL> oradebug tracefile_name
C:\APP\XIANGBLI\diag\rdbms\maclean\maclean\trace\maclean_ora_5668.trc
我们dump controlfile 来看一下
DATA FILE #1:
name #17: C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSTEM01.DBF
creation size=0 block size=8192 status=0x12 flg=0x1 head=17 tail=17 dup=1
status=0x12 ==> 0x0010 KCCFEMRR && 0x0002 KCCFEONL ==>说明这个文件需要恢复和 之前是online状态
KCCFESTS 0x0001 * belongs to System TableSpace *
KCCFEONL 0x0002 * file is ONLine *
KCCFERDE 0x0004 * ReaDing is Enabled *
KCCFECGE 0x0008 * ChanGing is Enabled *
KCCFEMRR 0x0010 * Media Recovery Required *
KCCFEGEM 0x0020 * Generate End hot backup Marker at next open *
KCCFECKD 0x0040 * File entry generated by check dictionary *
KCCFESOR 0x0080 * Save Offline scn Range at next checkpoint *
KCCFERMF 0x0100 * Renamed Missing File *
KCCFEGOI 0x0200 * Generate Off-line Immediate marker *
SQL> recover database ;
完成介质恢复。
SQL> alter database open;
数据库已更改。
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL>
SQL>
SQL>
SQL> startup mount;
在不重建控制文件的情况下, shutdown abort 并 dump controlf
SQL> oradebug setmypid
已处理的语句
SQL> oradebug dump controlf 3;
已处理的语句
SQL> alter database open;
数据库已更改。
***************************************************************************
DATA FILE RECORDS
***************************************************************************
(size = 520, compat size = 520, section max = 100, section in-use = 12,
last-recid= 2, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 11, numrecs = 100)
DATA FILE #1:
name #17: C:\APP\XIANGBLI\ORADATA\MACLEAN\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe flg=0x1 head=17 tail=17 dup=1
pdb_id 0, tablespace 0, index=1 krfil=1 prev_file_in_ts=0 prev_file_in_pdb=0
status=0xe ==>
1110 => 0x08 & 0x04 & 0x02 = > KCCFECGE & KCCFERDE & KCCFEONL
==> 没有KCCFEMRR 0x0010 * Media Recovery Required *
这说明了 重建控制文件时 将 文件的status做了修改 计入了KCCFEMRR 0x0010 * Media Recovery Required *