问题:某数据库在执行rman全备的时候,发现alert日志中有报错,报错提示, file 10,block 305076全部为zero,内容全零,处理过程如下

分析处理:

1. 这个问题可能是 系统或者oraclebug导致,也可能是磁盘故障,断电等导致的。

2. 这个坏块

  • 如果是包含有用数据的块,那么只能根据备份来进行恢复,(块恢复,或者文件恢复)。
  • 如果是不包含有用数据的块,就是说这个块不属于任何段segment,(table ,index等) ,那么可以进行一些特殊的手法来处理。

针对第二种情况,这个块没被使用,MOS上有个官方的解决方案《如何格式化不属于任何段的损坏块 (Doc ID 1526163.1)》,这个方案的方法思路就是,通过脚本创建一个表,往里每次小量的插入数据,从而把这个zero的块给重新格式化并填充。

这个方法是安全的,并且是推荐的,但是我在实际的使用中,并没有重复的分配到这个块的extent给segment使用,老是跳过这个extent,直接扩大了datafile来装入新插入的数据。

所以这里我就使用了bbed来模拟一个块来欺骗oracle的方法来规避这个问题。

说明: file 10,block 305076,305076这个块通过查询dba_extent发现,是个 区中块,前后都有数据块,不是段头和位图块,更简单一些,这里选用其前的  305075块来参考  创建并覆盖305076这个块。

1.  rman备份报 zero block错误。因为这块extent已经是空闲的,考虑将305076之前的块305075,拷贝到305076,修改rdba来欺骗oracle,之后这个空闲块被重新利用的时候,会被格式化

[oracle@db bbed64]$ bbed filename='/oradata/db/db_index03.dbf'
Password: BBED: Release 2.0.0.0. - Limited Production on Wed Jan :: Copyright (c) , , Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> show all;
FILE#
BLOCK#
OFFSET
DBA 0x00000000 ( ,)
FILENAME /oradata/db/db_index03.dbf
BIFILE bifile.bbd
LISTFILE
BLOCKSIZE
MODE Browse
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH
COUNT
LOGFILE log.bbd
SPOOL No BBED> show mode;
MODE Browse BBED> set mode edit;
MODE Edit BBED> set block ;
BLOCK# BBED> show all;
FILE#
BLOCK#
OFFSET
DBA 0x00000000 ( ,)
FILENAME /oradata/db/db_index03.dbf
BIFILE bifile.bbd
LISTFILE
BLOCKSIZE
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH
COUNT
LOGFILE log.bbd
SPOOL No BBED> d
File: /oradata/db/db_index03.dbf ()
Block: Offsets: to Dba:0x00000000
------------------------------------------------------------------------ < bytes per line> 将305075 拷贝到
BBED> copy block to block
File: /oradata/db/db_index03.dbf ()
Block: Offsets: to Dba:0x00000000
------------------------------------------------------------------------
06a20000 b3a78402 417c7807 6a180000 28e90100 9e354e07
01a68402 13000f00 bb2b0000 eef6c302 ec010200
ea377403 fe780000 a564c500 201e6e06
1b015a02 4b08af0b d7b28402 81b98402
601f0000 9511a511 b511c511 d511e511 b50ff511
a412b412 c312d312
e312f312 60136e13 7c138c13 9c13ac13 bb13ca13
d913e813 f713670a a614b614
c414d414 e414f414 a0094b08
4510c70a 9415a415 b315a60f 1b0a960f dd09c315 d315a70b 0b0ae315
f315d510 a016af16 ed09ce09
fc09be16 ce16de16 ee16fe16 3e0d8c0d 7c0d0e17 1e172e17 3e174e17 5e176e17
7e178e17 3511190f 15109e17 ae17770b be17670f c50f570c ce17f10c 1309de17
ee17fe17 0e181e18 2e183e18 4e18f510 e5105d18 6d187d18 8d189d18 ad18bd18
cd18dd18 ed18fd18 0d191d19 2d193d19 4d195d19 6d197d19 8d199d19 5510ad19
bd19cd19 dd19ed19 fd190d1a 1c1a2c1a 3c1a4c1a 5c1a6b1a 7a1a891a 981aa71a < bytes per line> BBED> show block
BLOCK# BBED> sum
Check value for File , Block :
current = 0x186a, required = 0x186a BBED> v
DBVERIFY - Verification starting
FILE = /oradata/db/db_index03.dbf
BLOCK = Block is corrupt
Corrupt block relative dba: 0x0284a7b4 (file , block )
Bad header found during verification
Data in bad block:
type: format: rdba: 0x0284a7b3
last change scn: 0x0000.07787c41 seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x7c410601
check value in block header: 0x186a
computed block checksum: 0x0 DBVERIFY - Verification complete Total Blocks Examined :
Total Blocks Processed (Data) :
Total Blocks Failing (Data) :
Total Blocks Processed (Index):
Total Blocks Failing (Index):
Total Blocks Empty :
Total Blocks Marked Corrupt :
Total Blocks Influx :
Message not found; product=RDBMS; facility=BBED 发现过不了校验
因为块里还是记录的源块的 rdba,需要从rdba: 0x0284a7b3 改为 rdba: 0x0284a7b4 BBED> p kcbh
struct kcbh, bytes @
ub1 type_kcbh @ 0x06
ub1 frmt_kcbh @ 0xa2
ub1 spare1_kcbh @ 0x00
ub1 spare2_kcbh @ 0x00
ub4 rdba_kcbh @ 0x0284a7b3
ub4 bas_kcbh @ 0x07787c41
ub2 wrp_kcbh @ 0x0000
ub1 seq_kcbh @ 0x01
ub1 flg_kcbh @ 0x04 (KCBHFCKV)
ub2 chkval_kcbh @ 0x186a
ub2 spare3_kcbh @ 0x0000 BBED> set offset
OFFSET BBED> d /v count=
BBED-: invalid parameter (=) BBED> d /v count
File: /oradata/db/db_index03.dbf ()
Block: Offsets: to Dba:0x00000000
-------------------------------------------------------
b3a78402 l .... < bytes per line> BBED> m /x b4
File: /oradata/db/db_index03.dbf ()
Block: Offsets: to Dba:0x00000000
------------------------------------------------------------------------
b4a78402 < bytes per line> BBED> p kcbh
struct kcbh, bytes @
ub1 type_kcbh @ 0x06
ub1 frmt_kcbh @ 0xa2
ub1 spare1_kcbh @ 0x00
ub1 spare2_kcbh @ 0x00
ub4 rdba_kcbh @ 0x0284a7b4
ub4 bas_kcbh @ 0x07787c41
ub2 wrp_kcbh @ 0x0000
ub1 seq_kcbh @ 0x01
ub1 flg_kcbh @ 0x04 (KCBHFCKV)
ub2 chkval_kcbh @ 0x186a
ub2 spare3_kcbh @ 0x0000 BBED> v
DBVERIFY - Verification starting
FILE = /oradata/db/db_index03.dbf
BLOCK = Block is corrupt
Corrupt block relative dba: 0x0284a7b4 (file , block )
Bad check value found during verification
Data in bad block:
type: format: rdba: 0x0284a7b4
last change scn: 0x0000.07787c41 seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x7c410601
check value in block header: 0x186a
computed block checksum: 0x7 DBVERIFY - Verification complete Total Blocks Examined :
Total Blocks Processed (Data) :
Total Blocks Failing (Data) :
Total Blocks Processed (Index):
Total Blocks Failing (Index):
Total Blocks Empty :
Total Blocks Marked Corrupt :
Total Blocks Influx :
Message not found; product=RDBMS; facility=BBED BBED> sum
Check value for File , Block :
current = 0x186a, required = 0x186d BBED> sum apply
Check value for File , Block :
current = 0x186d, required = 0x186d BBED> v
DBVERIFY - Verification starting
FILE = /oradata/db/db_index03.dbf
BLOCK = DBVERIFY - Verification complete Total Blocks Examined :
Total Blocks Processed (Data) :
Total Blocks Failing (Data) :
Total Blocks Processed (Index):
Total Blocks Failing (Index):
Total Blocks Empty :
Total Blocks Marked Corrupt :
Total Blocks Influx :
Message not found; product=RDBMS; facility=BBED

校验:

rman备份报错,全zero错误处理一例(bbed)的更多相关文章

  1. Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法

    Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法 可能是误删文件导致在使用rman备份时候出现以下提示 RMAN-06169: could not read file hea ...

  2. 部署到IIS报错:HTTP错误500.19,错误代码0x800700d

    title=部署到IIS报错:HTTP错误500.19,错误代码0x800700d.   用vs直接运行网站没问题,部署到IIS就报错,由此可知应该是IIS中不支持网站相关配置. 查找发现在web.c ...

  3. mysql5.6版本备份报错

    MySQL5.6版本备份报错,密码不安全 [root@centos199 mysql]# mysqldump -uroot -ppassword cz-office > mysql38.sqlW ...

  4. Oracle导入大数据量(百万以上)dmp文件,报错ora-12592 :包错误

    进行自动化测试过程中,发现需要重新搭建一套自动化测试库,然后利用pl/sql对数据库导出: 进行导入后发现报错ora-12592 :包错误 原因分析,数据量过大,传输超时,需要在Oracle服务端以及 ...

  5. mysql 备份报错mysqldump: [Warning] Using a password on the command line interface can be insecure.

    -------------------------------------------------------------------------------- mysql 备份报错mysqldump ...

  6. [原]Jenkins(八)---jenkins构建项目报错时发送错误报告邮件

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  7. 如何解决金蝶IKernel.exe报错 Windows Installer 错误 重新安装、无法卸载

    如何解决金蝶IKernel.exe报错 Windows Installer 错误 金蝶这个小婊子,就是这么贱. 卸载了高版本的,再安装低版本就不能安装上,死活都不能安装. 请手动启动一下Install ...

  8. 转 rman 恢复报错

    ###sample 1   原因是新库起了FRA 区,FRA 区的旧文件属于之前的归档日志文件产生,这样会导致无法识别的问题. 解决办法,清空FRA或者恢复时候不启用FRA. RMAN RESTORE ...

  9. manjaro软件源报错 不停看到错误 "PackageName: signature from "User <email@archlinux.org>" is invalid" 的几种解决方法

    对于报错情况, 格式大致如下: error: PackageName: signature from "User <email@archlinux.org>" is i ...

随机推荐

  1. Keras 自适应Learning Rate (LearningRateScheduler)

    When training deep neural networks, it is often useful to reduce learning rate as the training progr ...

  2. Linux修改Oracle用戶

    Linux下SSH登陆后: su - Oracle; sqlplus /nolog; conn system/密码; 或者 connect/as sysdba; alter user 用户名 iden ...

  3. 避免jar依赖冲突的一种办法

    java中的依赖冲突问题一直比较头疼,特别是做公用包给其他系统用的时候,现在都不敢引入太多的依赖,基本上每次都要帮别人解决依赖冲突的问题,非常麻烦. 特别是碰到一些老系统还不是用maven管理的,人家 ...

  4. Windows Azure系列公开课 - 第三课:创建虚拟机 (基础篇)

    Windows Azure微软智能云平台主要提供四大类服务:计算服务(Compute),数据服务 (Data Services) ,应用服务 (App Services) ,网络服务(Network) ...

  5. mongodb节点配置指南

    修改复制集节点的优先级 复制集节点的 priority 参数的值决定了选举中该节点的优先级.值越高,优先级越高. 我们可以通过修改复制集配置参数中 members 数组位置的优先级来修改对应机器的优先 ...

  6. kettle使用命令行传入数据库链接参数(ip、数据库、端口、用户、密码)执行job时子转换失败。

    使用cmd 传参数执行 kettle job 遇到错误: 错误原因,无法找到文件.... 原来使用,通过目录指定转换,好处是:当以文件资源库保存时,可以直接将文件夹复制走,直接运行就可以,不需要单独针 ...

  7. ajax实现跨域请求

    因为现在一直用的mvc,所以就以mvc来说说ajax跨域提交. 首先说说跨域,简单说就是不同域名访问,比如在aaa.com访问bbb.com. 就拿招聘网站来说,分为两种用户,求职者和企业,求职者端是 ...

  8. 字典构造、合并(dict)、排序

    使用dict,zip方法将两个list合并为dict keys = ["b", "a", "c", "e", " ...

  9. Python学习---Django的基础学习

    django实现流程 Django学习框架:     #安装: pip3 install django          添加环境变量    #1  创建project       django-ad ...

  10. Apache配置支持目录浏览

      主配置文件 httpd.conf 中修改: 1)添加支持模块 LoadModule autoindex_module modules/mod_autoindex.so LoadModule dir ...