|
最初由 grassbell 发布
[B]对于4/5 两种重建控制文件的情况的问题?
针对数据文件的Checkpoint scn都有记载。这些信息应该是从系统表空间中读取后加载到控制文件中的吧?而不是从数据文件的头信息中读取的。
我曾作了一个试验,就是用一个用备份的users02.dbf 代替了现有的文件,然后重建控制文件。这时控制文件中users02.dbf 的Checkpoint scn和其他文件仍然是一样的。(备份后,执行了checkpoint的) [/B]
这个应该好理解:正常情况下所有数据文件和控制文件,联机日志应处在同一SCN点上,重建控制文件时,ORACLE只会检测你的数据文件是不是有效文件,然后在控制文件中确定当前的SCN点,同时各数据文件的SCN点也是相同的。在打开数据库时(实际上MOUNT时就已经检测到了),ORACLE检测到这个USERS02.DBF文件的SCN与控制文件中的SCN不一致,则会提醒要求RECOVER(V$RECOVER_FILE)。并根据控制文件中的记录的归档日志信息确定这个RECOVER过程将要用到哪几个归档文件(V$RECOVERY_LOG )。
对于这个问题,还是存在一个疑问,就是新建控制文件时,执行RECOVER 时ORACLE会提醒归档文件的名称,这个归档文件名是怎么得来的,ORACLE怎么知道要这个文件???因为这时新建的控制文件中的归档信息没有了!!!BITI的观点是ORACLE会从数据文件头中读过来?!!呵呵就算数据文件头中记录了一个归档序列号,但通常恢复时需要的也不止一个归档文件啊,它怎么知道下一个归档文件名????
头大,想不明白!有什么好的解释吗。  |
|