Oracle利用BBED恢复崩溃实例(ORA-01092,ORA-00704,ORA-01578)

news2025/1/12 20:41:07

 BBED修复数据损坏引起的数据库崩溃(ORA-01092,ORA-00704,ORA-01578)(2021年某苏州国企的案例)

1.Symptom

用户一个边缘系统出现数据文件损坏,且没有备份,数据库无法启动

报错如下,发现是oracle bootstrap损坏    

SQL> alter database open;alter database open*ERROR at line 1:ORA-01092: ORACLE instance terminated. Disconnection forcedORA-00704: bootstrap process failureORA-01578: ORACLE data block corrupted (file # 1, block # 520)ORA-01110: data file 1: '+DATA/dbocs/datafile/system01'Process ID: 83985Session ID: 191 Serial number: 3

bootstrap保存数据库中object_id最小的部分DDL (10g为<57 11g-19C<60)       

select max(obj#) from bootstrap$ ;

11g    

19C

2.Solution

因为没有备份,所以正常的恢复这条路是给堵死了;但是数据库的数据文件是完整的,那么首先能想到的就是DUL抽数或者BBED做block级别的修复;而数据库损坏的部分为系统的bootstrap部分,这部分数据块具有通用性,那么是不是可以从其他同构的数据库平台(OS,ORACLE一致)来​copy数据块修复呢?如果不行再考虑使用DUL从数据文件抽数​恢复。

 何为BBED    

BBED(Block Browser and Editor)是Oracle数据库中的一个强大的工具,它允许用户直接浏览和编辑数据文件的内容,包括数据块(block)和数据页(page)。BBED主要用于以下几个方面:

  1. 数据恢复和修复:当数据库发生损坏或者数据文件受损时,BBED可以用于检查和修复受影响的数据块。通过BBED,用户可以直接浏览损坏的数据块,并进行相应的修复操作。

  2. 深入了解数据库内部结构:BBED允许用户直接查看数据库内部的数据结构和存储方式,包括数据块的布局、数据页的组织方式等。这对于理解Oracle数据库的内部工作原理和优化性能非常有帮助。

  3. 数据分析和调试:BBED可以用于分析和调试数据库中的数据,包括查看表的数据、索引的结构等。这对于诊断数据库性能问题和分析数据访问模式非常有用

  看到BBED如此强大就要知道,不是万不得已不要使用 谨慎!谨慎!  

2.1. 配置oracle11g的BBED

bbed作为oracle 内部工具,11g之后就不再提供,所以如果要想使用bbed需要重新编译配置具体方法如下:从oracle10g主机下载如下四个文件  并将如下四个文件copy到如下目录​

cp /tmp/sbbdpt.o $ORACLE_HOME/rdbms/lib/sbbdpt.ocp /tmp/ssbbded.o $ORACLE_HOME/rdbms/lib/ssbbded.ocp /tmp/ bbedus.msb $ORACLE_HOME/rdbms/mesg/bbedus.msbcp /tmp/bbedus.msg  $ORACLE_HOME/rdbms/mesg/bbedus.msg修改权限和属性chmod 777 sbbdpt.ochmod 777 ssbbded.ochmod 777 bbedus.msbchmod 777  bbedus.msgchown oracle:oinstall bbedus.msbchown oracle:oinstall sbbdpt.o    chown oracle:oinstall ssbbded.ochown oracle:oinstall  bbedus.msg编译bbed make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed        [oracle@DBSVR1 lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed       Linking BBED utility (bbed)rm -f /u01/oracle/oracle/rdbms/lib/bbedgcc -o /u01/oracle/oracle/rdbms/lib/bbed -m64 -z noexecstack -L/u01/oracle/oracle/rdbms/lib/ -L/u01/oracle/oracle/lib/ -L/u01/oracle/oracle/lib/stubs/  /u01/oracle/oracle/lib/s0main.o /u01/oracle/oracle/rdbms/lib/ssbbded.o /u01/oracle/oracle/rdbms/lib/sbbdpt.o `cat /u01/oracle/oracle/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -ldbtools11 -lclntsh  `cat /u01/oracle/oracle/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/oracle/oracle/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lmm -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /u01/oracle/oracle/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/oracle/oracle/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11   -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11   `cat /u01/oracle/oracle/lib/sysliblist` -Wl,-rpath,/u01/oracle/oracle/lib -lm    `cat /u01/oracle/oracle/lib/sysliblist` -ldl -lm   -L/u01/oracle/oracle/lib    [oracle@DBSVR1 lib]$ ./bbed  Password: blockedit ----默认密码

 PS:12C-19C bbed的配置使用和11g一致,也是要使用到10g的文件来编译​

  现在10g的环境可能比较难找了,所以我把 bbed所需的包放在了公众号上,有需要的直接点下载

   

2.2  check bootstrap block

配置好了BBED 下一步就是去确认数据库损坏的block

查询bootstrap所在的文件和block

set line 300col segmnet_name for a20col tablespace_name for a20select segment_name,tablespace_name,extent_id,file_id,block_id,blocks from dba_extents where segment_name='BOOTSTRAP$'          

确认涉及到的数据块号

select distinct dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid) from BOOTSTRAP$;

    

2.3从同构环境数据库中拷贝数据块

(操作系统和数据库版本都一致等)

在正常的机器上dd if=/oracledb1/oracle/oradata/orcl/system01.dbf of=/tmp/bbed_system.dbf bs=10M count=1将文件传到故障端scp /tmp/bbed_system.dbf  root@xxx.32:/tmp/bbed_system.dbf     

2.4.利用BBED恢复数据块  

修改远程copy过来的数据文件属性    
[root@DBSVR1 tmp]# chown oracle:oinstall  /u01/oracle/oradata/tmp/bbed_system.dbf
[root@DBSVR1 tmp]# su - oracle
[oracle@DBSVR1 ~]$
[oracle@DBSVR1 ~]$ cd /u01/oracle/oradata/tmp/
配置bbed参数文件
[oracle@DBSVR1 oracle]$ vi bbed_1.txt
[oracle@DBSVR1 oracle]$ cat bbed_1.txt
1  /u01/oracle/oradata/orcl/system01.dbf  ##源损坏文件
20 /u01/oracle/oradata/tmp/bbed_system.dbf  ##同构正常文件
​
[oracle@DBSVR1 oracle]$ cd $ORACLE_HOME/rdbms/lib
[oracle@DBSVR1 lib]$
[oracle@DBSVR1 lib]$
[oracle@DBSVR1 lib]$./bbed PASSWORD=blockedit mode=edit blocksize=8192 listfile=/u01/oracle/bbed_1.txt​
BBED: Release 2.0.0.0.0 - Limited Production on Sun Mar 7 10:08:35 2021

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED>
BBED> info
​
 File#  Name                                                        Size(blks)
​
 -----  ----                                                        ----------
​
     1  /u01/oracle/oradata/orcl/system01.dbf                                0
​
    20  /u01/oracle/oradata/tmp/bbed_system.dbf                              0
​
          
​
BBED> set count 128
​
        COUNT           128
​
          
​
BBED> copy file 20 block 520 to file 1 block 520  ---做文件block的对拷 来修复数据文件
​
 File: /u01/oracle/oradata/orcl/system01.dbf (1)
​
 Block: 520              Offsets:    0 to  127           Dba:0x00400208
​
------------------------------------------------------------------------
​
 10a20000 08024000 d0010000 00000204 43e40000 00000000 00000000 00000000    
​
 00000000 01000000 07000000 20100000 00000000 03000000 07000000 0c024000
​
 00000000 00000000 01000000 03000000 00000000 00000000 00000000 01000000
​
 00000000 3b000000 00000040 09024000 07000000 00000000 00000000 00000000
​
 <32 bytes per line>
​
BBED>  copy file 20 block 521 to file 1 block 521
​
 File: /u01/oracle/oradata/orcl/system01.dbf (1)
​
 Block: 521              Offsets:    0 to  127           Dba:0x00400209
​
------------------------------------------------------------------------
​
 06a20000 09024000 d7010000 00000106 fa520000 01000000 3b000000 73010000
​
 00000000 01f80200 00000000 00002500 02000000 11024000 02004c00 18200000
​
 d7010000 00011800 ffff4200 c6048404 84040000 1800a31f 1a1f951d cd1c4e1b
​
 7a1aad19 49177b16 b315d614 0a14ef12 05120e11 380f680e 910d790c 69099c08
​
 <32 bytes per line>
​
BBED> copy file 20 block 522 to file 1 block 522
​
 File: /u01/oracle/oradata/orcl/system01.dbf (1)
​
 Block: 522              Offsets:    0 to  127           Dba:0x0040020a
​
------------------------------------------------------------------------
​
 06a20000 0a024000 d7010000 00000106 e81e0000 01000000 3b000000 bb010000
​
 00000000 01f80200 00000000 00002500 02000000 20024000 04000700 15200000
​
 d7010000 00011500 ffff3c00 b2057605 76050000 1500521d 811cb71b e31a8a18
​
 07172216 ce120312 f9102010 410f750e 590dad0c 800bb30a dc096507 9606b205
​
 <32 bytes per line>

BBED> copy file 20 block 523 to file 1 block 523
​
 File: /u01/oracle/oradata/orcl/system01.dbf (1)
​
 Block: 523              Offsets:    0 to  127           Dba:0x0040020b
​
------------------------------------------------------------------------
​
 06a20000 0b024000 d7010000 00000106 7b7e0000 01000000 3b000000 d0010000    
​
 00000000 01000300 00000000 00002500 02000000 27024000 04002f00 0f200000
​
 d7010000 00010f00 ffff3000 f50dc50d c50d0000 0f00301d 561c481b 821aab19
​
 9c18c117 f816b113 ea122011 5110890f c00ef50d 00000000 00000000 00000000

 <32 bytes per line>
​
BBED> sum apply
​
Check value for File 1, Block 523:
​
current = 0x7e7b, required = 0x7e7b   
​
BBED>
BBED> exit

2.5修复后 重新启动数据    

 修复后可以正常启动

SQL> startup
ORACLE instance started.
​
Total System Global Area 8217530368 bytes
Fixed Size        2269552 bytes
Variable Size     1761611408 bytes
Database Buffers   6442450944 bytes
Redo Buffers       11198464 bytes
Database mounted.
Database opened.
SQL> 
​

3.后记

   常言道有备无患,但是仍然有很多很多的案例因为没有备份,不得不选择各种非常规手段来恢复数据,只有个expdp或者rman就可以解决99%的问题!备份--数据库的最后一道保险!希望大家都不会用到BBED和DUL!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1560958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓Termux系统安装MariaDB结合内网穿透实现公网连接本地数据库

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

【python】pip清华大学镜像

1、修改pip源为清华源&#xff1a; pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple2、结果是自动给我创建了一个文件&#xff1a; 3、打开这个文件所在的文件夹&#xff1a; 4、打开文件&#xff1a; 5、如果不想指定清华的&#xff0c;就删掉…

TransmittableThreadLocal 问题杂记

0、前言 TransmittableThreadLocal&#xff0c;简称 TTL&#xff0c;是阿里巴巴开源的一个Java库&#xff0c;它能够实现ThreadLocal在多线程间的值传递&#xff0c;适用于使用线程池、异步调用等需要线程切换的场景&#xff0c;解决了ThreadLocal在使用父子线程、线程池时不能…

【SpringBoot从入门到精通】01_SpringBoot概述

一、Spring与SpringBoot 1.1 Spring Spring 是一款目前主流的 Java EE 轻量级开源框架&#xff0c;是 Java 世界最为成功的框架之一。Spring 由“Spring 之父”Rod Johnson(罗宾约翰逊) 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。 广义…

基于ssm的平面设计课程在线学习平台系统(java项目+文档+源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的平面设计课程在线学习平台系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 前台功能&#xf…

MySql 常用的聚合函数总结

MySQL 中的聚合函数用于对一组数据进行计算&#xff0c;并返回单个值作为结果。以下是常用的 MySQL 聚合函数的总结及其功能描述&#xff1a; 1. COUNT() 功能&#xff1a;用于计算指定列或表中的行数。 语法&#xff1a; COUNT(*) COUNT(expression) 示例&#xff1a; SELECT …

吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.9-3.11

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第三周&#xff1a;浅层神经网络(Shallow neural networks)3.9 神 经 网 络 的 梯 度 下 降 &#xff08; Gradient descent for neural networks&#xff09;3.10&#xff08;选修&#xff0…

MATLAB多级分组绘图及图例等细节处理 ; MATLAB画图横轴时间纵轴数值按照不同sensorCode分组画不同sensorCode的曲线

平时研究需要大量的绘图Excel有时候又臃肿且麻烦 尤其是当处理大量数据时可能会拖死Windows 示例代码及数据量展示 因为数据量是万级别的折线图也变成"柱状图"了, 不过还能看出大致趋势! 横轴是时间纵轴是传感器数值图例是传感器所在深度 % data readtable(C:\U…

“美国债务螺旋上升,每百天膨胀万亿”!华尔街:投入比特币是明智之举,美元早晚垮台?

​ 前不久&#xff0c;黄金和比特币价格的双双逼近历史高位&#xff0c;再度吸引了不少金融市场参与者的关注。虽然这两类资产大涨的背后&#xff0c;有着诸如比特币减半临近、地缘局势引发避险等各自的原因&#xff0c;但也有一些业内人士提到了美国政府债务规模激增等无法回…

如何使用 ArcGIS Pro 自动矢量化水系

对于某些要素颜色统一的地图&#xff0c;比如电子地图&#xff0c;可以通过图像识别技术将其自动矢量化&#xff0c;这里为大家介绍一下 ArcGIS Pro 自动矢量化水系的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的电子地图数据&#…

【C++】list介绍

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. list介绍2. list的构造3. ist iterator的使用4. capacity5. element access6. modifiers7. 迭代器失效8. Operations8.1 reverse8.2 sort8.3 unique8.4 splice 1. list介绍 list是可以在常数范围内在任意位置进行插…

Linux之 线程池 | 单例模式的线程安全问题 | 其他锁

目录 一、线程池 1、线程池 2、线程池代码 3、线程池的应用场景 二、单例模式的线程安全问题 1、线程池的单例模式 2、线程安全问题 三、其他锁 一、线程池 1、线程池 线程池是一种线程使用模式。线程池里面可以维护一些线程。 为什么要有线程池&#xff1f; 因为在…

代码随想录算法训练营第二十五天| 216.组合总和III,17.电话号码的字母组合

题目与题解 216.组合总和III 题目链接&#xff1a;216.组合总和III 代码随想录题解&#xff1a;216.组合总和III 视频讲解&#xff1a;和组合问题有啥区别&#xff1f;回溯算法如何剪枝&#xff1f;| LeetCode&#xff1a;216.组合总和III_哔哩哔哩_bilibili 解题思路&#xf…

超云信创新品发布,引领国产化AI算力新高度

在当前数字化转型的大潮中&#xff0c;算力作为新质生产力的重要动力引擎&#xff0c;对推动经济社会发展起着关键作用。尤其在人工智能领域&#xff0c;随着高性能、安全可控的AI算力需求持续攀升&#xff0c;国产化服务器的研发与应用显得尤为迫切。 作为国内专业的算力基础…

【技巧】如何解除Excel“打开密码”?

给Excel表格设置“打开密码”&#xff0c;可以保护表格不被他人随意打开&#xff0c;那如果后续不需要保护了&#xff0c;不想每次打开Excel都需要输密码&#xff0c;要怎么去除“打开密码”呢&#xff1f; 今天分享3个方法&#xff0c;最后一个方法记得收藏起来&#xff0c;以…

基于springboot实现教师工作量管理系统项目【项目源码+论文说明】

基于springboot实现教师工作量管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了教师工作量管理系统的开发全过程。通过分析教师工作量管理系统管理的不足&#xff0c;创建了一个计算机管理教师工作…

Dragonfly S系列相机 多领域大规模制造应用的首选

Dragonfly S系列工业相机&#xff0c;作为一款模块化紧凑型USB3机器视觉相机&#xff0c;一经推出就广受从生命科学仪器到工厂自动化等行业的青睐。同时它也非常适合各种嵌入式和手持设备的高性能图像采集系统。 Dragonfly S系列相机凭借其模块化、紧凑、轻量级的设计理念&…

在哪买国外服务器便宜?

在哪买国外服务器便宜&#xff1f;在寻找便宜且可靠的国外服务器商家时&#xff0c;我们需要考虑多个因素&#xff0c;包括价格、性能、可靠性、技术支持和扩展性等。下面是一些备受推崇的便宜国外服务器商家。 Amazon Web Services (AWS)。作为全球最大的云服务提供商之一&am…

抖店的运营玩法你真的了解吗?没有货源也能操作的方法来了!

大家好&#xff0c;我是电商小布。 现在越来越多的小伙伴开始察觉到了抖店这个项目的优势&#xff0c;并想要加入进来开一家属于自己的小店。 但是店铺的发展远不是我们看到的那么简单&#xff0c;开店只是我们进入这个市场的第一步。 接下来的运营操作才是关键点。 而这个…

国货护肤更替,“韩束珀莱雅们”会成为常胜将军吗?

【潮汐商业评论/文】 July是一位资深的护肤达人&#xff0c;“这是敏感肌专用的修复水&#xff0c;这是针对熬夜黑眼圈的眼霜&#xff0c;这是军训专用防晒霜&#xff0c;这是……&#xff0c;”虽然粉丝很少&#xff0c;但July总是乐此不疲的分享自己的爱用护肤品。 最近&am…