ORA-01207 old control file完全解决方案

Posted 奋斗的小鸟_oracle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA-01207 old control file完全解决方案相关的知识,希望对你有一定的参考价值。

这个错误是oracle db最常见的错误了,引起的原因很多,但是最主要的一个原因是 数据库 服务器突然掉电,然后重启启动数据库报错。
究其这个问题产生的原因,其实就是控制文件中记录的db信息太老,导致数据库在启动检测时出现不一致。
控制文件中记录了整个数据库的全部信息,具体包括数据文件的,日志文件等等。

那么为什么会出现控制文件记录的数据库信息太老呢,原因很简单:根据oracle db运行原理,数据库在运行期间,由于检查点发生等原因会不断的更新控制文件,同时数据库在关闭和重启过程中都会更新控制文件的内容,但是数据库服务器突然的掉电,会导致当前的db信息无法适时更新到控制文件中,再次启动数据库后,当oracle检测控制文件和其它文件信息是否一致时,就出现了这个错误。

解决办法:
1. SQL>alter database backup controlfile to trace  as 'c:\\RebuildCtl.sql';
数据库已更改。

2. SQL>shutdown immediate 如果数据库是打开状态,则关闭
ORA-01109: 数据库未打开
已经卸载数据库

3. 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

4. 打开根据提示,编辑在第1步生成的c:\\RebuildCtl.sql文件如下;
# The following commands will create a new control file and use it
# to open the database.
# Data used by the recovery manager will be lost. Additional logs may
# be required for media recovery of offline data files. Use this
# only if the current version of all online logs are available.
#STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
--  SET STANDBY TO MAXIMIZE PERFORMANCE
    MAXLOGFILES 5
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 226
LOGFILE
  GROUP 1 'D:\\ORACLE\\ORADATA\\ORCL\\REDO01.LOG'  SIZE 100M,
  GROUP 2 'D:\\ORACLE\\ORADATA\\ORCL\\REDO02.LOG'  SIZE 100M,
  GROUP 3 'D:\\ORACLE\\ORADATA\\ORCL\\REDO03.LOG'  SIZE 100M
-- STANDBY LOGFILE
DATAFILE
  'D:\\ORACLE\\ORADATA\\ORCL\\SYSTEM01.DBF',
  'D:\\ORACLE\\ORADATA\\ORCL\\UNDOTBS01.DBF',
  'D:\\ORACLE\\ORADATA\\ORCL\\INDX01.DBF',
  'D:\\ORACLE\\ORADATA\\ORCL\\TOOLS01.DBF',
  'D:\\ORACLE\\ORADATA\\ORCL\\USERS01.DBF'
CHARACTER SET US7ASCII
;
# Recovery is required if any of the datafiles are restored backups,
# or if the last shutdown was not normal or immediate.

RECOVER DATABASE

# Database can now be opened normally.

 ALTER DATABASE OPEN;

# Commands to add tempfiles to temporary tablespaces.
# Online tempfiles have complete space information.
# Other tempfiles may require adjustment.

 ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\\ORACLE\\ORADATA\\ORCL\\TEMP01.DBF' REUSE;

# End of tempfile additions.

5..运行上面的sql文件,

SQL> @c:\\RebuildCtl.sql

完成重建控制文件,

成功打开数据库。


以上是关于ORA-01207 old control file完全解决方案的主要内容,如果未能解决你的问题,请参考以下文章

遇到ORA-01207: 文件比控制文件更新 - 旧的控制文件解决办法-简单版

遇到ORA-01207: 文件比控制文件更新 - 旧的控制文件解决办法-简单版

C 库函数 – rename()

python文件操作_对文件进行复制拷贝_代码实现

old.2.流程梳理(function之return代码)

SSD CONTROLLER