问题:某数据库在执行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. 在PHP中使用加密技术

    Gpg4win 是一款基于 GPG 的非对称加密软件.非对称加密方式,简单理解就是用公钥加密文件,用私钥解密文件.如果你需要发送加密信息,首先获取接收者的公钥,然后利用该公钥加密后传递,对方利用对应的 ...

  2. Node服务端极速搭建 -- nvmhome

    > 本文意在让你掌握极速搭建Node服务端(任何Project) ```$ whoaminame: kelvinemail: kelvv@outlook.comhomepage: www.kel ...

  3. Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程

    Ubuntu 搭建Web服务器(MySQL+PHP+Apache)详细教程 看了好多人的博客,有的不全 or 有问题,整理了一下,适合小白 新手先整理几个小问题 1.为啥使用 Linux 搭建服务器? ...

  4. firewall 如何开放端口

    转自官方网页:http://www.firewalld.org/documentation/howto/open-a-port-or-service.html How to open port 80/ ...

  5. Linux下top命令监控性能状态

    1.性能分析因素:CPU.内存.网络.磁盘读写 2.系统对应的应用类型主要分为以下两种: IO Bound:一般都是高负荷的内存使用以及存储系统,IO范畴的应用就是一个大数据处理的过程:通常数据库软件 ...

  6. python基础——Linux系统下的文件目录结构

    单用户操作系统和多用户操作系统 单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源. 多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户 ...

  7. iTextSharp 使用详解(转)

    PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段“暴力”破解的方法,代码片断如下 ...

  8. 尝试Office 2003 VSTO的开发、部署

    转载:http://www.cnblogs.com/oneivan/p/4243574.html 背景:一年前,某项目需要使用到Excel进行数据录入,考虑到很多用户还是使用XP+Office 200 ...

  9. rabbitmq集群步骤

    这里选用三台主机,主机名分别是hidden1, hidden2, hidden3 主机名一定要修改成不一样的,要不然加入集群的时候会加入不成功 修改完主机名后,在/etc/hosts文件中加入对应的解 ...

  10. Exchange 2016 CU6 安装后,发生错误 出现意外错误,无法处理您的请求

    公司的Exchange2016环境准备上线了,今天owa打不开了.出现如下图的错误,更多详细信息没有截图,但最关键的一句记下来了. X-OWA-Error Microsoft.Exchange.Dia ...