当前位置: 首页 > news >正文

Oracle故障处理:数据库启动时遇到ORA-01578错误

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

Oracle故障处理:数据库启动时遇到ORA-01578错误

数据库启动的时候遇到坏块,特别是SYSTEM表空间中的一些底层表,如UNDO$,OBJ$等一些表,会导致数据库不能正常open,当然我们可以通过增加一些隐藏参数来达到跳过坏块来启动数据库,也可以通过bbed工具来手动修复块来。下面是自己的一个测试环境遇到这样的错误,通过bbed工具来修复

欢迎大家加入ORACLE超级群:17115662 免费解决各种ORACLE问题,以后BLOG将迁移到http://www.htz.pw

1,数据库版本

SQL> select * from v$version;BANNER——————————————————————————–Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit ProductionPL/SQL Release 11.2.0.3.0 – ProductionCORE    11.2.0.3.0      ProductionTNS for Linux: Version 11.2.0.3.0 – ProductionNLSRTL Version 11.2.0.3.0 – Production[oracle@www.htz.pw ~]$sqlplus / as sysdbaSQL*Plus: Release 11.2.0.3.0 Production on Sun May 25 04:36:03 2014Copyright (c) 1982, 2011, Oracle.  All rights reserved.Connected to an idle instance.SQL> startupORACLE instance started.Total System Global Area  237998080 bytesFixed Size                  2227216 bytesVariable Size             146801648 bytesDatabase Buffers           83886080 bytesRedo Buffers                5083136 bytesDatabase mounted.ORA-01092: ORACLE instance terminated. Disconnection forcedORA-00604: error occurred at recursive SQL level 1ORA-00607: Internal error occurred while making a change to a data blockORA-00600: internal error code, arguments: [kdBlkCheckError], [1], [225],[6108], [], [], [], [], [], [], [], []Process ID: 12178Session ID: 1 Serial number: 5

2,启动报错

[oracle@www.htz.pw ~]$sqlplus / as sysdbaSQL*Plus: Release 11.2.0.3.0 Production on Sun May 25 04:20:44 2014Copyright (c) 1982, 2011, Oracle.  All rights reserved.Connected to an idle instance.SQL> startupORACLE instance started.Total System Global Area  237998080 bytesFixed Size                  2227216 bytesVariable Size             146801648 bytesDatabase Buffers           83886080 bytesRedo Buffers                5083136 bytesDatabase mounted.ORA-01092: ORACLE instance terminated. Disconnection forcedORA-00604: error occurred at recursive SQL level 1ORA-01578: ORACLE data block corrupted (file # 1, block # 225)ORA-01110: data file 1: ‘/oracle/app/oracle/oradata/orcl1123/system01.dbf’Process ID: 1617Session ID: 1 Serial number: 5

此块就是存储undo$基表的块,在数据库启动的时候,做恢复的时候,是需要去读undo块的,所以导致报错

3,bbed修复坏块

BBED> verifyDBVERIFY – Verification startingFILE = /oracle/app/oracle/oradata/orcl1123/system01.dbfBLOCK = 225Block Checking: DBA = 4194529, Block Type = KTB-managed data blockFound block already marked corruptedDBVERIFY – Verification completeTotal Blocks Examined         : 1Total Blocks Processed (Data) : 1Total Blocks Failing   (Data) : 0Total Blocks Processed (Index): 0Total Blocks Failing   (Index): 0Total Blocks Empty            : 0Total Blocks Marked Corrupt   : 0Total Blocks Influx           : 0Message 531 not found;  product=RDBMS; facility=BBED

这里发现块被标记为坏块,其实这里知道就是把seq更改为FF了,下面我们修改回来就可以了

BBED> p kcbhstruct kcbh, 20 bytes                       @0      ub1 type_kcbh                            @0        0x06ub1 frmt_kcbh                            @1        0xa2ub1 spare1_kcbh                          @2        0x00ub1 spare2_kcbh                          @3        0x00ub4 rdba_kcbh                            @4        0x004000e1ub4 bas_kcbh                             @8        0x0021beaaub2 wrp_kcbh                             @12       0x0000ub1 seq_kcbh                             @14       0xffub1 flg_kcbh                             @15       0x04 (KCBHFCKV)ub2 chkval_kcbh                          @16       0x4cbaub2 spare3_kcbh                          @18       0x0000BBED> set mode editMODE            EditBBED> set count 16COUNT           16BBED> modify /x 00 offset 14Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) yFile: /oracle/app/oracle/oradata/orcl1123/system01.dbf (0)Block: 225              Offsets:   14 to   29           Dba:0x00000000————————————————————————0004ba4c 00000100 00000f00 0000aabe<32 bytes per line>BBED> set offset 8188OFFSET          8188BBED> dumpFile: /oracle/app/oracle/oradata/orcl1123/system01.dbf (0)Block: 225              Offsets: 8188 to 8191           Dba:0x00000000————————————————————————ff06aabe<32 bytes per line>BBED> modify /x 00 offset 8188File: /oracle/app/oracle/oradata/orcl1123/system01.dbf (0)Block: 225              Offsets: 8188 to 8191           Dba:0x00000000————————————————————————0006aabe<32 bytes per line>BBED> p tailchkub4 tailchk                                 @8188     0xbeaa0600BBED> sum applyCheck value for File 0, Block 225:current = 0x4cba, required = 0x4cbaBBED> verifyDBVERIFY – Verification startingFILE = /oracle/app/oracle/oradata/orcl1123/system01.dbfBLOCK = 225Block Checking: DBA = 4194529, Block Type = KTB-managed data blockdata header at 0x2a98b8725ckdbchk: row locked by non-existent transactiontable=0   slot=20lockid=1   ktbbhitc=2Block 225 failed with check code 6101DBVERIFY – Verification completeTotal Blocks Examined         : 1Total Blocks Processed (Data) : 1Total Blocks Failing   (Data) : 1Total Blocks Processed (Index): 0Total Blocks Failing   (Index): 0Total Blocks Empty            : 0Total Blocks Marked Corrupt   : 0Total Blocks Influx           : 0Message 531 not found;  product=RDBMS; facility=BBED

这里看到报了ITL相当的一些东西,原因是由于原来做实验的时候,手动提交了数据。

报错代码的意思是,slot=20的行被锁住,占用了itl2.

下面是dump数据库看一下第21号的lb标记符

tl: 58 fb: –H-FL– lb: 0x1  cc: 17col  0: [ 2]  c1 15col  1: [10]  5f 53 59 53 53 4d 55 32 30 24col  2: [ 2]  c1 02col  3: [ 2]  c1 06col  4: [ 3]  c2 03 49col  5: [ 5]  c4 02 62 0a 09col  6: [ 1]  80col  7: [ 3]  c2 03 2acol  8: [ 3]  c2 02 3ecol  9: [ 1]  80col 10: [ 2]  c1 04col 11: [ 2]  c1 06col 12: *NULL*col 13: *NULL*col 14: *NULL*col 15: *NULL*col 16: [ 2]  c1 0BBED> p *kdbr[20]rowdata[634]————ub1 rowdata[634]                            @1823     0x2cBBED> set offset 1823OFFSET          1823BBED> dumpFile: /oracle/app/oracle/oradata/orcl1123/system01.dbf (0)Block: 225              Offsets: 1823 to 1838           Dba:0x00000000————————————————————————2c011102 c1150a5f 53595353 4d553230BBED> modify /x 2c00File: /oracle/app/oracle/oradata/orcl1123/system01.dbf (0)Block: 225              Offsets: 1823 to 1838           Dba:0x00000000————————————————————————2c001102 c1150a5f 53595353 4d553230<32 bytes per line>BBED> sum applyCheck value for File 0, Block 225:current = 0x6ec1, required = 0x6ec1BBED> verifyDBVERIFY – Verification startingFILE = /oracle/app/oracle/oradata/orcl1123/system01.dbfBLOCK = 225DBVERIFY – Verification completeTotal Blocks Examined         : 1Total Blocks Processed (Data) : 1Total Blocks Failing   (Data) : 0Total Blocks Processed (Index): 0Total Blocks Failing   (Index): 0Total Blocks Empty            : 0Total Blocks Marked Corrupt   : 0Total Blocks Influx           : 0Message 531 not found;  product=RDBMS; facility=BBED

块不在报错。验证通过

4,数据库正常打开

SQL> alter database open;Database altered.undo块能正常访问SQL> select name from undo$;NAME——————————SYSTEM_SYSSMU1$_SYSSMU10$_SYSSMU11$_SYSSMU12$_SYSSMU13$_SYSSMU14$_SYSSMU15$_SYSSMU16$_SYSSMU17$_SYSSMU18$NAME——————————_SYSSMU19$_SYSSMU2$_SYSSMU20$_SYSSMU3$_SYSSMU4$_SYSSMU5$_SYSSMU6$_SYSSMU7$_SYSSMU8$_SYSSMU9$21 rows selected.

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

http://www.zskr.cn/news/13962.html

相关文章:

  • AGC073C 赛后补题记录
  • 深入解析:【深度学习计算机视觉】03:目标检测和边界框
  • leetCode刷题记录1
  • 【Bluedroid】A2DP Source 音频流暂停流程解析[5]:停止流程及资源管理机制(btif_a2dp_source_stop_audio_req) - 教程
  • 【IEEE-CPS出版】2025年数据管理与计算机科学国际学术会议(ICDMCS 2025)
  • 实用指南:Unity单元测试:C语言轻量级框架实战
  • 【ACM出版】第五届管理科学和软件工程国际学术会议(ICMSSE 2025)
  • 标签化模板之styled-components原理
  • Halcon基础——图像增强
  • Day24接口的定义与实现
  • 题解:CF2146D2 Max Sum OR (Hard Version)
  • NVIDIA 开源 Audio2Face:音频生成逼真面部动画;Gemini Live API 支持思考能力 丨日报
  • 个人用云计算学习笔记 --14( Linux 逻辑卷管理、Linux 交换空间管理) - 教程
  • Print Conductor打印软件安装教程!一款非常好用的批量打印软件!支持PDF、Word、Excel、图片等
  • Python 面向对象编程基础:类与对象初体验
  • Drools 7.0基础环境搭建
  • 基于微信小程序的旅游景点体系【2026最新】
  • 反电动势法控制BLDC电机的原理图分析
  • 2025内网聊天工具排行 4款好用的内网聊天软件推荐
  • 方言普通话识别大模型,支撑中英+202种方言识别
  • BLE从机(20)BLE区分主机(IOS/安卓/WIN)
  • Gitee:中国开发者生态的数字化转型加速器
  • 大模型提示词技巧Prompt Engineering,看这一篇就够了 - 知乎
  • Pandawiki接入飞书机器人全攻略:打造企业智能问答新体验
  • WPF 深入系列.2.布局体系.布局控件.StackPanel
  • 快速查看Navicat数据库连接密码实战
  • 老旧系统接入统一认证
  • 大内容 Python动漫信息管理系统 Django+Echarts 类型饼图 折线图分析 后台管理 智能推荐(源码)✅
  • 深入解析:从“硬件能力比拼”到“生活价值交付”,方太智慧厨房重构行业竞争内核
  • 【AI 哲学思考】从大模型演进到生命隐喻:个性、极限与先天后天之问