遇到ORA-01207: 文件比控制文件更新 - 旧的控制文件解决办法-简单版
遇到这样的问题,如ORA-01207: 文件比控制文件更新 - 旧的控制文件
解决问题的思路是重建控制文件
注意:
1、不知道会不会丢一小部分数据。适用于不重要的库和已经停机的业务,或者急救业务。
可以尝试从不同的地方找原来的control文件,几个不同的control文件如果都一样,说明只能这么恢复,如果不一样,尽量找系统表空间比较新的control去用,因为不涉及用户数据。
2、做之前保存之前的控制文件!!!!
报错如下:
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: 文件比控制文件更新 - 旧的控制文件
解决办法:
1、将控制文件trace出来
SQL>alter database backup controlfile to trace as 'D:\bak';
2、关闭数据库
SQL>shutdown immediate
3、启动到nomount
SQL>startup nomount;
4、在bak文件中找到STARTUP NOMOUNT字样,然后看到类似语句,这个文件有好几个类似的生成控制文件语句,主要针对不懂的环境执行不同的语句,象我的数据库没有做任何备份,也不是在归档模式,就执行这句。
在D:\bak 中将文本复制重建
在SQL>下执行,观察到控制文件更新了。【做之前保存之前的控制文件!!!!】
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\ORADATA\ORCL\REDO01.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'D:\ORADATA\ORCL\REDO02.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 3 'D:\ORADATA\ORCL\REDO03.LOG' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'D:\ORADATA\ORCL\SYSTEM01.DBF',
'D:\ORADATA\ORCL\SYSAUX01.DBF',
'D:\ORADATA\ORCL\UNDOTBS01.DBF',
'D:\ORADATA\ORCL\USERS01.DBF',
'D:\ORADATA\TS_BASE01.DBF'
CHARACTER SET ZHS16GBK
;
5、此时,控制文件可用,启动到mount状态
SQL>alter database mount;
6、进行介质恢复
SQL>RECOVER DATABASE (恢复指定表空间、数据文件或整个数据库)
介质恢复成功
7、打开数据库
SQL>ALTER DATABASE OPEN 打开数据库