前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ORA-00214、ORA-01207错误如何处理

ORA-00214、ORA-01207错误如何处理

作者头像
用户5921339
发布于 2025-05-20 08:48:51
发布于 2025-05-20 08:48:51
12100
代码可运行
举报
运行总次数:0
代码可运行

故障现象

oracle数据库启动失败,报错ORA-00214,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> startup
ORACLE instance started.


Total System Global Area 5368709120 bytes
Fixed Size        8804088 bytes
Variable Size     1241516296 bytes
Database Buffers   4110417920 bytes
Redo Buffers        7970816 bytes
ORA-00214: control file
'/data/oracle/app/oracle/fast_recovery_area/orcl/control02.ctl' version 47807
inconsistent with file '/data/oracle/app/oracle/oradata/orcl/control01.ctl'
version 47790

原因说明

参数文件中,控制文件路径如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
control_files='/data/oracle/app/oracle/oradata/orcl/control01.ctl','/data/oracle/app/oracle/fast_recovery_area/orcl/control02.ctl'

根据错误提示可以知是两个控制文件版本不一致造成的。正常情况下,两个控制文件互为镜像,内容完全一致,由于突然断电或其他因素导致两个文件没有完全同步,从而出现了数据不一致的情况。

解决方法

情况一:两个控制文件中,有一个控制文件的SCN与数据文件的SCN一致

本例中控制文件/data/oracle/app/oracle/fast_recovery_area/orcl/control02.ctl的SCN与数据文件的SCN一致(control02.ctl的版本较新),此时有两种解决方法:

(1)修改控制文件

在nomount状态下执行以下操作:

  • 将/data/oracle/app/oracle/oradata/orcl/control01.ctl重命名或删除
  • 复制/data/oracle/app/oracle/fast_recovery_area/orcl/control02.ctl至/data/oracle/app/oracle/oradata/orcl/下,并重命名control01.ctl
  • 执行以下命令启动数据库
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

(2)修改参数文件pfile

  • 生成新的pfile文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> create pfile='/data/oracle/app/oracle/product/12.2.0/dbhome_1/dbs/initorcl.ora' from spfile;
  • 编辑initorcl.ora,修改control_files='/data/oracle/app/oracle/fast_recovery_area/orcl/control02.ctl'
  • 启动数据库
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> startup pfile='/data/oracle/app/oracle/product/12.2.0/dbhome_1/dbs/initorcl.ora'

情况二:两个控制文件的SCN一致,但是控制文件的SCN版本与数据文件不一致

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/data/oracle/app/oracle/oradata/orcl/system01.dbf'
ORA-01207: file is more recent than control file - old control file

以上这个报错说明数据文件比控制文件的版本新,即控制文件的SCN比数据文件的SCN要低。

该情况的处理方式如下:

(1)在mount模式下生成trace文件,用于重建控制文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> alter database backup controlfile to trace;

或者

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> alter database backup controlfile to trace as '/data/oracle/con.trace';

(2)关闭数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.

(3)利用trace文件重新生成控制文件,在nomount状态下执行语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/data/oracle/app/oracle/oradata/orcl/redo01.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 2 '/data/oracle/app/oracle/oradata/orcl/redo02.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 3 '/data/oracle/app/oracle/oradata/orcl/redo03.log'  SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/data/oracle/app/oracle/oradata/orcl/system01.dbf',
  '/data/oracle/app/oracle/oradata/orcl/sysaux01.dbf',
  '/data/oracle/app/oracle/oradata/orcl/undotbs01.dbf',
  '/data/oracle/app/oracle/oradata/orcl/pdbseed/system01.dbf',
  '/data/oracle/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf',
  '/data/oracle/app/oracle/oradata/orcl/users01.dbf',
  '/data/oracle/app/oracle/oradata/orcl/orclpdb/system01.dbf',
  '/data/oracle/app/oracle/oradata/orcl/orclpdb/sysaux01.dbf',
  '/data/oracle/app/oracle/oradata/orcl/orclpdb/users01.dbf',
  '/data/oracle/app/oracle/oradata/orcl/ct.dbf'
CHARACTER SET AL32UTF8
;

(4)启动数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> ALTER DATABASE OPEN;

(5)临时表空间添加数据文件

重建控制文件后虽然虽然存在临时表空间,但是却没有数据文件,因此需要为TEMP临时表空间新增数据文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> alter tablespace temp add tempfile '/data/oracle/app/oracle/oradata/orcl/temp01.dbf' size 1024m reuse autoextend on next 100m maxsize 32767m;

通过如下SQL语句可查看临时表空间数据文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> SELECT FILE#,TS#,NAME FROM v$tempfile;
SQL> select tablespace_name,file_name from dba_temp_files;

最后可以查看数据库SCN和数据文件以及控制文件是否一致

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> select checkpoint_change# from v$database;
SQL> select file#,checkpoint_change# from v$datafile;
SQL> select file#,checkpoint_change# from v$datafile_header;

今天的分享就到这里了,如果对文章的内容感兴趣,欢迎留言交流~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT人家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Oracle控制丢失如何恢复(归档模式)
rm删除所有控制文件,尝试添加数据文件,强制关闭数据库,尝试开启到mount状态。
Lucifer三思而后行
2021/08/17
1.1K0
Oracle数据库非归档模式下的冷备与恢复
冷备份是关闭数据库后的数据库备份,此时的备份一定是一致的数据库备份,因为数据库安全关闭。冷备是最简单也是最可靠的备份方式。简单是因为只需要复制需要的数据文件,这些文件包括数据文件、控制文件以及重做日志文件。可靠是因为在数据库安全关闭的条件下备份数据库文件,此时是一致的数据库备份。
用户5921339
2025/05/20
1140
Oracle数据库非归档模式下的冷备与恢复
Oracle 热备份
Oracle 热备份是指数据库处于open状态下,对数据库的数据文件、控制文件、参数文件、密码文件等进行一系列备份操作。
Leshami
2018/08/07
1.7K0
Oracle 控制文件(CONTROLFILE)
为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份
Leshami
2018/08/07
7060
Oracle 冷备份
首先在运行的库中得到数据库运行的所有的物理文件位置,然后在计划内关闭数据库(shutdown)
Leshami
2018/08/07
7760
只需这10步,通过历史控制文件恢复数据库
1. 记录控制文件、数据文件头的scn SYS@enmo>select checkpoint_change# from v$database; CHECKPOINT_CHANGE# ------------------ 18502624 SYS@enmo>select name,checkpoint_change# from v$datafile; NAME CHECKPOINT_CHANG
数据和云
2020/06/09
8520
Oracle数据库冷备份与热备份操作梳理
Oracle数据库的备份方式有冷备份和热备份两种,针对这两种备份的实施过程记录如下: 一、Oracle冷备份 概念 数据库在关闭状态下完成所有物理系统文件拷贝的过程,也称脱机备份。 适合于非归档模式(即noarchivelog模式,SCN保持一致)下,数据库处于一致性状态。 冷备份,数据库可以处于归档模式也可以处于非归档模式,最好是处于非归档模式。 步骤 首先在运行的库中得到数据库运行的所有的物理文件位置,然后在计划内关闭数据库(shutdown) 再执行拷贝物理文家到备份路径或备份设备 备份完成后立即启
洗尽了浮华
2018/01/23
5K0
Oracle 11G单机转单机Grid集群(ASM)
(单台机器)将11.2.0.4的单实例数据库由文件系统,迁移到ASM单实例的磁盘组中,并注册到集群管理。
Lucifer三思而后行
2021/08/17
1.3K0
【赵渝强老师】Oracle的参数文件与告警日志文件
在Oracle数据库中,参数文件在通常情况下指的就是初始化参数文件(Initialization Parameter File)。在参数文件中包括了初始化参数文件和服务器端参数文件。在Oracle数据库启动的时候就会读取参数文件,然后根据参数文件中的参数值来分配内存和启动一系列的后台进程。
赵渝强老师
2024/10/22
1790
【赵渝强老师】Oracle的参数文件与告警日志文件
使用RMAN增量备份处理Dataguard因归档丢失造成的gap
Thu Mar 29 11:21:45 2018 FAL[client]: Failed to request gap sequence  GAP - thread 1 sequence 184-185  DBID 1484954774 branch 960494131 FAL[client]: All defined FAL servers have been attempted. ------------------------------------------------------------ Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization parameter is defined to a value that's sufficiently large enough to maintain adequate log switch information to resolve archivelog gaps.
星哥玩云
2022/08/16
5730
Oracle pfile 参数文件
pfile 就是参数文件的一种,全称:初始化参数文件(Initialization Parameters Files)!
Lucifer三思而后行
2021/09/10
6700
备库跳归档恢复的有趣案例(r9笔记第19天)
在Data Guard环境中,主备库基本都是使用归档来传递数据的变化。如果主备的归档传输中断,同时主库的归档被删除或者损坏,这种情况下备库是没法开始继续接收归档,应用新的数据变更了。 看到网友paulyibin的文章中提到了SCN恢复的想法,感觉非常有意思,明白了思路,自己在本地也测试了一把,发现真是有趣。 一般来说,主库的归档丢失,常规的思路只能是重建备库了。其实我们可以换一个角度来看这个问题,数据的变化在归档中是一个连续的过程,而在日志文件,数据 文件中则是一个状态。我们可以
jeanron100
2018/03/19
6380
实战篇:Oracle DataGuard 出现 GAP 修复完整步骤
DG GAP 顾名思义就是:DG不同步,当备库不能接受到一个或多个主库的归档日志文件时候,就发生了 GAP。
Lucifer三思而后行
2022/01/08
4.3K0
实战篇:Oracle DataGuard 出现 GAP 修复完整步骤
恢复控制文件避免使用resetlogs选项 (r10笔记第12天)
在搭建Data Guard的时候,我们可以直接从主库生成一个备库控制文件,或者拷贝一个备库的控制文件即可,后续的工作就交给Data Guard来自动恢复完成了,尤其是使用rman备份恢复的时候,使用recover database是一气呵成,我们无须理会其中更多的细节,当然实际上Oracle已经帮我们处理好了。 我们都知道控制文件的备份有两种方式,一种是镜像,一种是trace。镜像备份方式类似alter database backup controlfile to 'xxxxx'这样的形式
jeanron100
2018/03/19
5860
Oracle从文件系统迁移到ASM存储
环境:RHEL 6.4 + Oracle 11.2.0.4 需求:数据库存储由文件系统迁移到ASM
Alfred Zhao
2019/05/24
1K0
Oracle数据库文件路径变更
2.数据文件alter database rename file '' to '';
Alfred Zhao
2019/05/24
2.4K0
RMAN 备份异机恢复 Oracle 数据库
源端和目标端的数据库版本需要保持一致,补丁版本可以不一致,目标端磁盘空间不能小于源端空间,目标端只需要安装 Oracle 软件即可!
用户8006012
2022/08/20
2.6K0
ORA-01113问题的简单分析(r6笔记第3天)
在启动数据库的时候,open阶段总是可能出现各种各样的问题, 比如让人胆战心惊的错误。 ORA-01113: file 1 needs media recovery 自己留意了一下,其实还是有蛮多的场景会出现这个问题,有些细节可能没有注意到就会出现这个问题, 比如我们重建控制文件的时候。 在重建控制文件之前做了shutdown abort的操作。 SQL> shutdown abort ORACLE instance shut down. SQL> startup nomount ORACLE in
jeanron100
2018/03/16
1.3K0
ORA-00600: [4194] 错误解决办法
上一篇文章还停留在腊月二十六,现在正月十五也已经过去了,这个年算是过去了,这二十多天里看到很多大佬都在不停的更新文章,卷的铺天盖地,我就只能假装看不见,算是躺平了,什么也没有干,静静地等待这个年过完。本文是今年年初一位朋友遇到的数据库的小问题,事后指导其记录形成的文档,算是小白记录问题处理过程,也是本公众号的第一篇投稿(还有投稿的读者朋友可以找我私聊),适合初学者通过搜索引擎、MOS 来解决 Oracle 数据库遇到的小问题并按照一定的格式来记录问题处理过程,具有一定的参考性,废话不多说,进入正文。
JiekeXu之路
2024/03/02
3240
ORA-00600: [4194] 错误解决办法
使用RMAN复制恢复开发库环境
最近为了不影响开发库的使用,打算复制创建一个备库,定时更新,防止开发库不能使用的情况下,可以临时使用备库,不影响进度。
bisal
2019/01/29
5470
相关推荐
Oracle控制丢失如何恢复(归档模式)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验