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; 打开数据库 ; 即使出现错误也可以正常使用。