ORA-01207:文件比控制文件更新 - 舊的控制文件

根據oracle文檔的解釋: 
Cause: The control file change sequence number in the datafile is greater than the number in the control file. This implies that the wrong control file is being used. Note that repeatedly causing this error can make it stop happening without correcting the real problem. Every attempt to open the database will advance the control file change sequence number until it is great enough. 
Action: Use the current control file or do BACKUP CONTROLFILE RECOVERY to make the control file current. Be sure to follow all restrictions on doing a BACKUP CONTROLFILE RECOVERY. 
Solution: 
1. Check alert file,kill monitor process 
2. Startup mount, 
3. “alter database backup control to trace” 
4. Find the trace file,and open it 
5. Startup nomount 
6. recreate controlfile using resetlogs 
7. “recover database using backup controlfile” 
8. “alter database open resetlogs;” 
9. “alter tablespace temp add tempfile '.dbf' reuse;” 

以下再詳細步驟:

oracle…

oarcle\ora92\bin\sqlplus /nolog

1.SQL> connect /as sysdba

2.SQL> shutdown abort   如果數據庫是打開狀態,強行關閉

3.SQL> startup 
ORACLE 例程已經啓動。 
Total System Global Area 293601280 bytes 
Fixed Size 1248624 bytes 
Variable Size 121635472 bytes 
Database Buffers 167772160 bytes 
Redo Buffers 2945024 bytes 
數據庫裝載完畢。 
ORA-01122: 數據庫文件 1 驗證失敗 
ORA-01110: 數據文件 1: 
'F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\ORCLDW\SYSTEM01.DBF' 
ORA-01207: 文件比控制文件更新 - 舊的控制文件 
4.SQL> alter database backup controlfile to trace as 'e:\controlfile'; 
數據庫已更改。 
5.SQL> shutdown immediate    如果數據庫是打開狀態,則關閉 
ORA-01109: 數據庫未打開 
已經卸載數據庫 
6.SQL> startup nomount; 
ORACLE 例程已經啓動。 
Total System Global Area 105979576 bytes 
Fixed Size 454328 bytes 
Variable Size 79691776 bytes 
Database Buffers 25165824 bytes 
Redo Buffers 667648 bytes

  
7.Editplus之類的編輯器打開在第4步生成的e:\controlfile'文件; 
其實在這個文件中的已經告訴你咋樣恢復你的數據庫了,找到STARTUP NOMOUNT字樣(有好幾處),然後下面可以看到類似語句,這個文件有好幾個類似的生成控制文件語句,主要針對不同的環境執行不同的語句,象我的數據庫沒有做任何備份,也不是在歸檔模式,就執行這句(刪除其中的註釋行,刪除不需要的數據文件,中間不要有任何空行; 碰到錯誤執行SQL> shutdown abort ;SQL> startup nomount; ) 
SQL>

CREATE CONTROLFILE REUSE DATABASE "ZFXFZB" RESETLOGS  NOARCHIVELOG 
    MAXLOGFILES 50 
    MAXLOGMEMBERS 5 
    MAXDATAFILES 100 
    MAXINSTANCES 1 
    MAXLOGHISTORY 680 
LOGFILE 
  GROUP 1 'E:\ORACLE\ORADATA\ZFXFZB\REDO01.LOG'  SIZE 100M, 
  GROUP 2 'E:\ORACLE\ORADATA\ZFXFZB\REDO02.LOG'  SIZE 100M, 
  GROUP 3 'E:\ORACLE\ORADATA\ZFXFZB\REDO03.LOG'  SIZE 100M 
DATAFILE 
  'E:\ORACLE\ORADATA\ZFXFZB\SYSTEM01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\UNDOTBS01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\CWMLITE01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\DRSYS01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\EXAMPLE01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\INDX01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\ODM01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\TOOLS01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\USERS01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\XDB01.DBF', 
  'E:\ORACLE\ORADATA\ZFXFZB\ZFXFZB.ORA' 
CHARACTER SET ZHS16GBK 
;

執行上面這段語句,這個語句重建控制文件,然後你可以看着e:\controlfile'文件完成下面的恢復工作了, 
8.SQL>RECOVER DATABASE    (恢復指定表空間、數據文件或整個數據庫) ; 即使出現錯誤也可以正常使用。

    SQL>ALTER DATABASE OPEN resetlogs;      ; 即使出現錯誤也可以正常使用。 

9.SQL>ALTER DATABASE OPEN;     打開數據庫 ; 即使出現錯誤也可以正常使用。


來源:http://www.cnblogs.com/emanlee/archive/2011/11/17/2253294.html 點擊打開鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章