ORA-00227:控制文件中检测到损坏的块:(块40,#块 1)

当Oracle数据库的控制文件损坏导致数据库无法启动时,可以采取多种恢复方法。如果有多余的控制文件副本,直接替换损坏文件;若有备份,使用备份恢复;若无备份,需重建控制文件。重建过程涉及指定数据库参数,并根据实际环境调整日志和数据文件。在RAC环境下,可能需要先禁用集群模式,然后重建,最后恢复集群模式。确保所有文件路径和参数配置正确,以避免启动错误。
摘要由CSDN通过智能技术生成

一 问题描述

数据库,起不来,报错:

二 出错原因

硬件损坏

三 解决办法

① 如果有多个控制文件的话,关闭数据库,用完好的控制文件覆盖掉损坏的控制文件即可(cp 好的控制文件 损坏的控制文件),再启动数据库即可。

② 如果有控制文件的备份,则用备份进行恢复。

③ 若只有一个控制文件,且没对控制文件做备份,则需要重建控制文件

示例:

CREATE CONTROLFILE REUSE  DATABASE "YJT" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 4672
LOGFILE
  GROUP 1 (
    '+DATA/yjt/onlinelog/group_1.261.996927927'
  ) SIZE 256M BLOCKSIZE 512,
  GROUP 2 (
    '+DATA/yjt/onlinelog/group_2.265.996930093'
  ) SIZE 256M BLOCKSIZE 512,
  GROUP 3 (    
    '+DATA/yjt/onlinelog/group_3.262.996924769'
  ) SIZE 256M BLOCKSIZE 512,
  GROUP 4 (
    '+DATA/yjt/onlinelog/group_4.266.996931363'
  ) SIZE 256M BLOCKSIZE 512,
  GROUP 5 (
    '+DATA/yjt/onlinelog/group_5.291.996924127'
  ) SIZE 256M BLOCKSIZE 512,
  GROUP 6 (
    '+DATA/yjt/onlinelog/group_6.303.996924127'
  ) SIZE 256M BLOCKSIZE 512,
  GROUP 7 (
    '+DATA/yjt/onlinelog/group_7.304.996924129'
  ) SIZE 256M BLOCKSIZE 512,
  GROUP 8 (
    '+DATA/yjt/onlinelog/group_8.305.996924129'
  ) SIZE 256M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '+DATA/yjt/datafile/SYSTEM.256.994538163',
  '+DATA/yjt/datafile/SYSAUX.257.994538163',
  '+DATA/yjt/datafile/UNDOTBS1.258.994538163',
  '+DATA/yjt/datafile/USERS.259.994538163',
  '+DATA/yjt/datafile/pls.dbf',
  '+DATA/yjt/datafile/lcs.dbf'
CHARACTER SET ZHS16GBK
;

--注意:这里的redo log和datafile需要根据自己环境,进行相应修改,数据文件名要能对应上。

redo log的大小也要对应上。 否则会报错:

假如报错:

第 1 行出现错误:

ORA-01503: CREATE CONTROLFILE 失败

ORA-12720: 操作要求数据库处于 EXCLUSIVE 模式下

则说明是rac环境,需要先禁用rac集群:

SQL> alter system set cluster_database=false scope=spfile;

系统已更改。

SQL> shutdown abort;

ORACLE 例程已经关闭。

SQL> startup nomount;

ORACLE 例程已经启动。

然后重新执行重建控制文件的sql,执行成功后,数据库自动进入mount状态:

SQL> SELECT status from v$instance;

STATUS

------------

MOUNTED

#再启动数据库

alter database open;

--由于我上面将cluster_database设置成false了,这里再还原回去:

#改回集群模式

SQL>  alter system set cluster_database=true scope=spfile;

系统已更改。

SQL> shutdown abort;

ORACLE 例程已经关闭。

SQL> startup;

ORACLE 例程已经启动。

Total System Global Area 2.9931E+10 bytes

Fixed Size                  2242912 bytes

Variable Size         7247759008 bytes

Database Buffers   2.2616E+10 bytes

Redo Buffers            64851968 bytes

数据库装载完毕。

数据库已经打开。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值