首先,坏块分为物理坏块和逻辑坏块。前者通常是硬件的问题,后者是oracle本身内部的问题。

先给oracle数据库开启归档模式

SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /oracle/app/product/11.2.0/db_1/dbs/arch
Oldest online log sequence     6
Current log sequence           8
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.Total System Global Area  759943168 bytes
Fixed Size                  2257112 bytes
Variable Size             654315304 bytes
Database Buffers           96468992 bytes
Redo Buffers                6901760 bytes
Database mounted.
SQL> alter database archivelog;Database altered.SQL> alter database open;Database altered.SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /oracle/app/product/11.2.0/db_1/dbs/arch
Oldest online log sequence     6
Next log sequence to archive   8
Current log sequence           8

创建坏块修复实验的表空间,用户和所需权限

--创建一个大小为1m的表空间create tablespace test datafile '/oracle/app/oradata/xtts11g/test01.dbf' size 1m;--创建test用户create user test identified by test default tablespace test temporary tablespace temp profile DEFAULT;--授予相关的测试权限grant connect,dba,resource,unlimited tablespace to test;

创建表和模拟数据

SQL> conn test/test;
Connected.
SQL> create table test tablespace test as select * from scott.emp;Table created.SQL> insert into test select * from test;14 rows created.SQL> /28 rows created.SQL> /56 rows created.SQL> /112 rows created.SQL> /224 rows created.SQL> /448 rows created.SQL> /896 rows created.SQL> /1792 rows created.SQL> /3584 rows created.SQL> /7168 rows created.SQL> /
insert into test select * from test
*
ERROR at line 1:
ORA-01653: unable to extend table TEST.TEST by 8 in tablespace TESTSQL> select count(*) from test;COUNT(*)
----------14336

触发检查点,将数据写入到数据文件中

SQL> alter system checkpoint;System altered.

进行模拟坏块前,先用rman进行备份

[oracle@mongodb ~]$ rman target /Recovery Manager: Release 11.2.0.4.0 - Production on Sat Feb 20 13:46:55 2021Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.connected to target database: XTTS11G (DBID=1621650015)RMAN> backup tablespace 'TEST' tag=zq;Starting backup at 20-FEB-21
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=406 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/oracle/app/oradata/xtts11g/test01.dbf
input datafile file number=00006 name=/oracle/app/oradata/xtts11g/test02.dbf
channel ORA_DISK_1: starting piece 1 at 20-FEB-21
channel ORA_DISK_1: finished piece 1 at 20-FEB-21
piece handle=/oracle/app/product/11.2.0/db_1/dbs/01vnlmnq_1_1 tag=ZQ comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 20-FEB-21RMAN> 

关闭数据库,用bbed篡改数据文件

bbed安装方法

cp ssbbded.o $ORACLE_HOME/rdbms/lib
cp sbbdpt.o $ORACLE_HOME/rdbms/lib
cp bbedus.msg $ORACLE_HOME/rdbms/mesg
cp bbedus.msb $ORACLE_HOME/rdbms/mesgcd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed

bbed的安装介质在我的资源分享中可以免费下载,linux和aix的都有

使用bbed修改数据文件,人为制造坏块

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@mongodb ~]$ cd $ORACLE_HOME/rdbms/lib
[oracle@mongodb lib]$ ls bbed
bbed
[oracle@mongodb lib]$ vi par.txt
blocksize=8192
listfile=filelist.txt
mode=edit
[oracle@mongodb lib]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 22 13:54:47 2021Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> select file#||chr(9)||name||chr(9)||bytes from v$datafile;FILE#||CHR(9)||NAME||CHR(9)||BYTES
--------------------------------------------------------------------------------
1       /oracle/app/oradata/xtts11g/system01.dbf        796917760
2       /oracle/app/oradata/xtts11g/sysaux01.dbf        534773760
3       /oracle/app/oradata/xtts11g/undotbs01.dbf       89128960
4       /oracle/app/oradata/xtts11g/users01.dbf 5242880
5       /oracle/app/oradata/xtts11g/test01.dbf  1048576
6       /oracle/app/oradata/xtts11g/test02.dbf  1064966 rows selected.SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@mongodb lib]$ vi filelist.txt
1 /oracle/app/oradata/xtts11g/system01.dbf 796917760
2 /oracle/app/oradata/xtts11g/sysaux01.dbf 534773760
3 /oracle/app/oradata/xtts11g/undotbs01.dbf 89128960
4 /oracle/app/oradata/xtts11g/users01.dbf 5242880
5 /oracle/app/oradata/xtts11g/test01.dbf 1048576
6 /oracle/app/oradata/xtts11g/test02.dbf 106496
选择5号数据文件
[oracle@mongodb lib]$ ./bbed parfile=par.txt password=blockeditBBED: Release 2.0.0.0.0 - Limited Production on Mon Feb 22 13:56:20 2021Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.************* !!! For Oracle Internal Use only !!! ***************BBED> set dba 5,19DBA             0x01400013 (20971539 5,19)
破坏尾部8188偏移量
BBED> mapFile: /oracle/app/oradata/xtts11g/test01.dbf (5)Block: 19                                    Dba:0x01400013
------------------------------------------------------------KTB Data Block (Table/Cluster)struct kcbh, 20 bytes                      @0       struct ktbbh, 72 bytes                     @20      struct kdbh, 14 bytes                      @100     struct kdbt[1], 4 bytes                    @114     sb2 kdbr[170]                              @118     ub1 freespace[837]                         @458     ub1 rowdata[6893]                          @1295    ub4 tailchk                                @8188    BBED> set offset 8188OFFSET          8188BBED> m /x ff 8188
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) YFile: /oracle/app/oradata/xtts11g/test01.dbf (5)Block: 19               Offsets: 8188 to 8191           Dba:0x01400013
------------------------------------------------------------------------ff06c348 <32 bytes per line>BBED> sum apply
Check value for File 5, Block 19:
current = 0x084c, required = 0x084cBBED> verify
DBVERIFY - Verification starting
FILE = /oracle/app/oradata/xtts11g/test01.dbf
BLOCK = 19Block 19 is corrupt
Corrupt block relative dba: 0x01400013 (file 0, block 19)
Fractured block found during verification
Data in bad block:type: 6 format: 2 rdba: 0x01400013last change scn: 0x0000.001048c3 seq: 0x1 flg: 0x06spare1: 0x0 spare2: 0x0 spare3: 0x0consistency value in tail: 0x48c306ffcheck value in block header: 0x84ccomputed block checksum: 0x0DBVERIFY - Verification completeTotal Blocks Examined         : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing   (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 1
Total Blocks Influx           : 2
Message 531 not found;  product=RDBMS; facility=BBED可以看到已经成功制造了坏块,现在使用dbv和查询再次验证下
[oracle@mongodb lib]$ dbv file=/oracle/app/oradata/xtts11g/test01.dbfDBVERIFY: Release 11.2.0.4.0 - Production on Mon Feb 22 14:01:04 2021Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.DBVERIFY - Verification starting : FILE = /oracle/app/oradata/xtts11g/test01.dbf
Page 19 is influx - most likely media corrupt
Corrupt block relative dba: 0x01400013 (file 5, block 19)
Fractured block found during dbv:
Data in bad block:type: 6 format: 2 rdba: 0x01400013last change scn: 0x0000.001048c3 seq: 0x1 flg: 0x06spare1: 0x0 spare2: 0x0 spare3: 0x0consistency value in tail: 0x48c306ffcheck value in block header: 0x84ccomputed block checksum: 0x0DBVERIFY - Verification completeTotal Pages Examined         : 128
Total Pages Processed (Data) : 109
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 17
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 1
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 1
Total Pages Encrypted        : 0
Highest block SCN            : 1067203 (0.1067203)SQL> startup
ORACLE instance started.Total System Global Area  759943168 bytes
Fixed Size                  2257112 bytes
Variable Size             654315304 bytes
Database Buffers           96468992 bytes
Redo Buffers                6901760 bytes
Database mounted.
Database opened.
SQL> conn test/test;
Connected.
SQL> select count(*) from test;
select count(*) from test*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 5, block # 19)
ORA-01110: data file 5: '/oracle/app/oradata/xtts11g/test01.dbf'

利用备份恢复坏块

[oracle@mongodb lib]$ rman target /Recovery Manager: Release 11.2.0.4.0 - Production on Mon Feb 22 14:21:59 2021Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.connected to target database: XTTS11G (DBID=1621650015)RMAN> blockrecover datafile 5 block 19;Starting recover at 22-FEB-21
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=406 device type=DISKchannel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00005
channel ORA_DISK_1: reading from backup piece /oracle/app/product/11.2.0/db_1/dbs/06vnqvog_1_1
channel ORA_DISK_1: piece handle=/oracle/app/product/11.2.0/db_1/dbs/06vnqvog_1_1 tag=ZQ
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:01starting media recovery
media recovery complete, elapsed time: 00:00:03Finished recover at 22-FEB-21
[oracle@mongodb lib]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 22 14:25:30 2021Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> conn test/test;
Connected.
SQL> select count(*) from test;COUNT(*)
----------14336

至此,修复完成,当然这是有备份情况下的坏块修复,接下来我还会更新没有备份的时候的坏块处理方式,有兴趣的小伙伴可以关注一下博主,过几日继续更新,觉得文章有用的点个赞把!

oracle坏块,教你手把手修复oracle坏块(一)!!!相关推荐

  1. 计算机硬盘用u盘维修,硬盘坏了怎么修复 教你如何修复硬盘坏道

    硬盘可以说是电脑硬件中比较容易损坏的硬件之一,因此在电脑维修过程中,由于硬盘问题导致的电脑故障也非常常见.对于很多电脑用户来说,硬盘尽管不是最重要的,但硬盘上存储的数据有可能是非常重要的,一旦遭遇硬盘 ...

  2. 教你如何修复硬盘坏道

    由于硬盘采用磁介质来存储数据,在经历长时间的使用或者使用不当之后,难免会发生一些 问题,也就是我们通常所说的产生"坏道",当然这种坏道有可能是软件的错误,也有可能是硬盘本身硬件故障 ...

  3. linux 硬盘坏道数据复制,linux修复磁盘坏道(本教程完全来自实例、实测,具体参数请根据个人情况修改2021.4.12)...

    linux下其实修复磁盘的工具更多,很多甚至集成在系统里,方便调用. 1.尝试fsck修复磁盘,这个命令其实集成度好的系统开机会自动运行,比如slackware,debian等,方法如下: fdisk ...

  4. oracle数据块损坏后的修复方法

    关于oracle数据块损坏的解决方法,相关链接网址在: http://blog.csdn.net/dlinger/archive/2004/08/24/83911.aspx http://www.it ...

  5. oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...

    天萃荷净 深入研究Oracle坏块obj$导致exp/expdp不能执行导出的原因 上篇(案例:Oracle出现obj$坏块exp/expdp导出不能导出的解决办法ORA-01578 ORA-0111 ...

  6. oracle可以在liux上装_【Oracle】手把手教你做之Linux上安装Oracle11g

    手把手教你做之Linux上安装Oracle11g 这是我第一次安装时的过程,及遇到问题的解决办法,在此记录,有不妥之处,多多交流. 因为高稳定性及高定制低系统消耗等原因,我们希望在Linux上安装Or ...

  7. oracle强制拉库跳过recovery,学习笔记:Oracle坏块 数据库recover恢复时遇到坏块的解决思路案例...

    天萃荷净 recover遇到坏块处理本质探讨,记录一次在Oracle数据库recover恢复过程中,遇到数据库坏块无法恢复的解决思路案例 如果在还原出来的数据文件中有坏块,而归档日志和联机日志是正常的 ...

  8. oracle数据库恢复aul_用AUL/MyDUL修复Oracle

    用AUL/MyDUL修复Oracle 取得数据库的文件列表 如果你没有丢失迭制文件, 则可以从视图V$DATABASE查询取得. 否则你需要手工从磁盘中根据存留的文件, 来列出所有的文件. SQL&g ...

  9. Oracle(11g)数据库教程之十:Oracle操作题 (复习课)

    Oracle(11g)数据库教程之十:Oracle操作题 (复习课) 操作题 Sutdent表的定义 字段名 字段描述 数据类型 主键 非空 Id 学号 INT(10) 是 是 Name 姓名 VAR ...

  10. linux磁盘坏块 cp报错,Linux磁盘坏道的检测及修复

    磁盘坏道,是所有人都不希望遇到的事情-- 磁盘坏道,轻则磁盘性能下降,重则系统启动失败,数据丢失.所以我们要时刻关注磁盘健康状况,及时备份重要数据. 什么是S.M.A.R.T? 全称为 Self-Mo ...

最新文章

  1. centos8安装KVM/QEUM虚拟化
  2. 蓝桥杯利用字母可以组成一些美丽的图形,
  3. javascript中函数的全解简介
  4. php开发环境 ubuntu,Ubuntu配置PHP开发环境
  5. 正确使用计算机网络,如何正确使用计算机网络
  6. python网络爬虫与信息提取视频_Python网络爬虫与信息提取入门5
  7. 模拟登陆——以github为例
  8. 如何在引导程序中将容器垂直对齐
  9. 如何在scope图中标注_电机学习笔记: 变压器初级(原边)和次级(副边)的感应电动势、电压方向如何标注?...
  10. MDK 使用 ST-Link 下载出现 target dll has been cancelled 的错误的解决方法
  11. 解决can't find -lGL的问题
  12. java 主线程与子线程的执行顺序
  13. fer2013人脸表情数据集简介
  14. Mac下.CR2格式图片批量转换
  15. Python:摘苹果
  16. 调试器工作原理系列三篇
  17. 详细讲解如何安装原生安卓电子市场(android market)
  18. 弘康人寿理赔案例分析,如何理赔更顺畅?
  19. Unity 自定义编辑器窗口的使用
  20. m3u8转换到mp4 python_python-将爬取到的m3u8合并为mp4

热门文章

  1. 记一次虚拟机也模拟器齐开被自己坑的经历
  2. 【蓝桥杯嵌入式】【HAL库】九、DAC实验
  3. 微信状态栏隐藏 HTML,微信里几个实用的隐藏小技巧!
  4. C++华氏温度和摄氏温度的转换
  5. 摄氏温度转化为华氏温度代码
  6. x265中的lookahead
  7. C盘AppData文件占用83.7G?
  8. iOS shareExtension总结分享
  9. macos同时运行多个版本php程序(nginx+php56+php72)
  10. 光模块有什么用?什么是SFP光模块?