问题:某数据库在执行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. Ubuntu16.04 下安装tomcat

    有两种常用方法: 一.通过 apt-get 命令进行在线安装(会自动配置好环境变量和服务) 二.通过下载并解压 .tar.gz 包进行手动安装(需要手动配置环境变量) 一.通过 apt-get 命令进 ...

  2. NGINX本地服务器解析域名

    1.找到hosts文件 ,添加需要解析的域名 2.在cmd命令窗口中检测解析是否生效 3 找到本地服务器的域名配置文件:添加绑定的域名,更改访问的目录 4.添加pathinfo.隐藏index.php ...

  3. (PowerShell) 重命名文件

    Get-ChildItem -Path C:\temp\test -Filter *.txt | Rename-Item -NewName {$_.Basename.Replace("Old ...

  4. MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档)

    原文:http://download.csdn.net/download/jobfind/9559162 MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档).rar

  5. MyBatis基本配置和实践(五)

    第一步:创建一个Maven工程 第二步:编辑Maven工程的pom.xml,引入mybatis-generator-maven-plugin <?xml version="1.0&qu ...

  6. MySQL高可用架构之Keepalived+主从架构部署

    针对目前公司的数据库架构要做统计规划和调整,所以针对不同的业务环境要选择合适的架构就比较重要,同时作为运维人员又要考虑到维护的便捷性(不能做过多架构维护),最终停留在mha+vip/主从+vip/my ...

  7. 机器学习之LinearRegression与Logistic Regression逻辑斯蒂回归(三)

    一 评价尺度 sklearn包含四种评价尺度 1 均方差(mean-squared-error) 2 平均绝对值误差(mean_absolute_error) 3 可释方差得分(explained_v ...

  8. Win10设置多时区时钟方法技巧

    Win10设置多时区时钟方法技巧,本文小编将向大家介绍如何设置多个时区时钟,以及如何使用「闹钟和时钟」应用跟踪更多时区,感兴趣的朋友可以参考下面教程操作. Win10系统允许用户配置最多3个不同的时钟 ...

  9. JAXB实现java对象与xml之间转换

    JAXB简介: 1.JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标 ...

  10. iOS测试基础(命令篇)-iPhone型号及其他信息

    首先安装libimobiledevice和ideviceinstaller brew uninstall ideviceinstaller brew uninstall libimobiledevic ...