首页 > 数据库 >oracle坏块总结

oracle坏块总结

时间:2023-08-01 22:32:56浏览次数:38  
标签:总结 header 0x0 损坏 oracle file 坏块 block

概念描述

Oracle数据文件的坏块可以分为物理坏块(Physical Block Corruptions)和逻辑坏块(Logical Block Corruptions)

物理坏块指的是块格式本身已经损坏,块内的数据没有任何意义。物理坏块一般是由于内存问题、OS问题、I/O子系统问题或硬件引起的。物理块损坏也可以称为介质块损坏(Media Corrupt Block)。这种类型的块损坏通常由Oracle报告错误ORA-1578,详细的损坏描述打印在警报日志中

物理坏块可以分为以下几类:

1.坏头(Bad header):数据块头(Cache Header)被无效值损坏

2.块有裂缝/不完整(Fractured/Incompleted Block):数据块头和块尾不匹配

断块例子:

Corrupt block relative dba: 0x0380e573 (file 14, block 58739)
Fractured block found during buffer read
Data in bad block -
type: 6 format: 2 rdba: 0x0380e573
last change scn: 0x0288.8e5a2f78 seq: 0x1 flg: 0x04
consistency value in tail: 0x00780601
check value in block header: 0x8739, computed block checksum: 0x2f00
spare1: 0x0, spare2: 0x0, spare3: 0x0
***
Reread of rdba: 0x0380e573 (file 14, block 58739) found same corrupted data

 

3.块checksum 无效

坏checksum例子:

Corrupt block relative dba: 0x0380a58f (file 14, block 42383)
Bad check value found during buffer read
Data in bad block -
type: 6 format: 2 rdba: 0x0380a58f
last change scn: 0x0288.7784c5ee seq: 0x1 flg: 0x06
consistency value in tail: 0xc5ee0601
check value in block header: 0x68a7, computed block checksum: 0x2f00
spare1: 0x0, spare2: 0x0, spare3: 0x0
***
Reread of rdba: 0x0380a58f (file 14, block 42383) found same corrupted data

4.块放错位置了

块错位例子:

Corrupt block relative dba: 0x0d805a89 (file 54, block 23177)
Bad header found during buffer read
Data in bad block -
type: 6 format: 2 rdba: 0x0d805b08 ----> Block is different than expected 0x0d805a89
last change scn: 0x0692.86dc08e3 seq: 0x1 flg: 0x04
consistency value in tail: 0x08e30601
check value in block header: 0x2a6e, computed block checksum: 0x0
spare1: 0x0, spare2: 0x0, spare3: 0x0
***

5.Zeroed out blocks(详见Doc ID:1545366.1)

 

逻辑坏块一般是由Oracle Bug等原因引起的,

逻辑坏块指的是块内的数据在逻辑上存在问题,比如说索引块的索引值没有按顺序排列导致的逻辑坏块。逻辑坏块通常包含一个正确的checksum和结构,但是块头以下的部分(块的内容)被损坏,可能引起不同的ORA-600错误。逻辑损坏详细的损坏信息通常不打印在alert告警日志中,但是DBV将报告逻辑损坏的块。

逻辑坏块可以分为以下几类:

① 行被不存在的事务锁定--ORA-600[4512]等

② 使用的空间大小不等于块的大小

③ avsp bad

④ 其它

 

当db_block_checking开启时,可能会产生内部错误ORA-600 [kddummy_blkchk]或ORA-600 [kdBlkCheckError]。如果启用了db_block_checking,并且该块在磁盘上已经在逻辑上损坏了,那么下一次块更新将把该块标记为软损坏,并且将来读取该块将产生ORA-1578错误。在这种情况下,DBVerify会以错误“DBV-200: Block, dba <rdba>, already marked corrupt”报告这种损坏

常用的坏块检测方法

方法

简介

语法

dbv

dbv工具不能验证redo log,archived log,contor file,rman备份集,只能验证数据文件块。

1.文件在操作系统上,dbv file=文件路径

2.文件在asm上, dbv userid=username/password file=asm文件路径

3.验证段,其中segment_id参数格式为:表空间ID,段头所在数据文件号,段头数据块号;

select tablespace_id,header_file,header_block from sys_dba_segs where owner='XXX' and segment_name='xxxx';

dbv userid=username/password segment_id=36.12.130

analyze

通过分析数据库对象,为优化器收集数据库对象统计信息。同时也能检查某个表或索引是否存在损坏情况。analyze执行坏块检查,但是不会标记坏块为corrupt,检测结果保存在user_dump_dest目录下的用户trace文件中

analyze table/index table_name validate structure;

exp

对坏块表执行导出操作,会收到相关错误信息(ORA-01578)。exp检测不会发现高水位线以上的坏块,索引中的坏块,数据字典中的坏块

exp username/password tables=xxx.xxx file=xxx.dmp

rman

rman可以检查块是否被损坏,如果备份中的数据库中有坏块,那么将会收到错误。

backup validate check logical database archivelog all;针对逻辑块 

backup validate database archivelog all;这个指令是针对于物理块

参考文档

Physical and Logical Block Corruptions. All you wanted to know about it. (Doc ID 840978.1)

https://cloud.tencent.com/developer/article/1624450

标签:总结,header,0x0,损坏,oracle,file,坏块,block
From: https://blog.51cto.com/u_13482808/6929338

相关文章

  • 浅浅总结了 23 届的秋招经验,给大家看看
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!8月正式开始,不少企业已经开始预热秋招了。8月第一篇文章,咱们就来看看23届的同学们都留下了哪些经验教训。毕竟,“前事不忘,后事之师”!01把握应届生身份,抓住秋招机会秋招才开......
  • 如何获取Oracle sql monitor报告
    ql_monitor监控执行时间超过5s的sql,或者开启并行的sql,或者加了/+monitor/的sql,应该是记录实例启动以来的sqlsetlinesize200setpages30colsql_textformata50trunccolinst_idformat99colusernameformata10trunccolsql_idformata14coldate_startformata......
  • 8.1 周二总结
    跟着课程做了一些练习,买飞机票和找质数,开发验证码和数组元素的复制,还有评分。通过今天的学习,更加熟练了eclipse这一软件和Java代码编程的使用。明天准备做一些pta试题,并根据课程继续学习接下来的内容。......
  • 8月1日总结
    今天上午看了Java视频,下午写了pta。今天学习了接口和内部类。               接口接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用java中的接口更多体现在对行为的抽象特点:①接口用关键字interface修饰publicinterface接口名{}②类......
  • Oracle中使用SQL实现日期转换(oracle中的日期转换)
    Oracle中使用SQL实现日期转换(oracle中的日期转换)原文链接:https://www.dbs724.com/260684.htmlOracle中使用SQL实现日期转换在Oracle数据库中,日期转换是一项非常重要的操作,因为不同国家和地区的日期格式不同,而且不同的应用程序需要不同的日期格式。Oracle提供了许多日期转换函......
  • Oracle常用时间操作
    dd-mon-yy格式转换为yyyy-mm-ddselectto_char(to_date('01-5月-05','dd-mon-yy'),'yyyy-mm-dd')fromdual计算2009-05-01与2008-04-30的月份差select(extract(yearfromto_date('2009-05-01','yyyy-mm-dd'))-extract(yearfromt......
  • Oracle之is null命中索引
    ISNULL用于判断某一列中的值是否为空,当ISNULL作为WHERE条件的时候,查询不会命中该列上的索引(具体执行时还要看优化器的策略)。--1.伪列+联合索引,通过加伪列,创建伪联合索引,来使ISNULL命中索引(数据量达到几万时,此索引将不会命中)CREATEINDEXidx_zzxhONbhis.mz_fp(zzxh,-1)......
  • QT常用总结(1)
    一、QLineEdit常用设置QLineEdit*Edit1=newQLineEdit;1.设置QLineEdit为不可编辑的状态Edit1->setenabled(false);//方式一Edit1->SetReadOnly(true);//方式二2.设置QLineEdit输入时提示输入范围Edit1->setToolTip("输入范围为");3.正则表达式限定QLineEdit的输入范围Q......
  • NineData支持全版本的企业级Oracle客户端,现已发布!
    Oracle数据库是一款全球领先的关系型数据库管理系统,它为企业提供了高性能、高可用性和安全性的数据处理解决方案,被广泛应用于各个行业。对于Oracle数据库,大家都很熟悉,本文不再赘述。近期,NineData发布对Oracle数据库的SQL开发支持。开发者可以使用NineData便捷查询云端......
  • SQL总结-MySQL索引使用和优化技巧
    本文将全面介绍MySQL索引的使用技巧,并提供多种优化索引的方法,帮助读者提高数据库查询性能。MySQL索引基础知识索引的工作原理索引就像书的目录,可以帮助MySQL快速定位数据,从而加速查询。索引类型MySQL支持多种索引类型:B树索引(B-Tree):最常见的索引类型,可以对值进行排......