oracle数据库校验码

23 篇文章 0 订阅
1 篇文章 0 订阅
查看数据块的校验码(注意:我的机器的endian format为little)

校验码的位置在数据块的 第 16、17两个字节

BBED> set dba 1, 42
        DBA             0x0040002a (4194346 1,42)
		
BBED> set offset 16 count 2
        OFFSET          16
        COUNT           2

BBED> dump
 File: /u01/app/oracle/oradata/normal/system01.dbf (1)
 Block: 42               Offsets:   16 to   17           Dba:0x0040002a
------------------------------------------------------------------------
 bdef		--这就是校验码的值(check sum)——需要倒过来 bdef -> efbd

BBED> sum apply
Check value for File 1, Block 42:
current = 0xefbd, required = 0xefbd		--这里的值就是上面dump出来的值
数据块头尾校验,其校验值存放在数据块的 8818字节中,占4个字节。
数据块头尾校验值组成是:
数据块的 SEQ(offset 14 开始的 1个字节)+ 数据库类型(offset 0开始的 1个字节)
最低 SCN_BASE注意:如果操作系统的endian format 为 little,则从offset 8开始的2个字节,
如果endian format 为 big,则从offset 10 开始的2个字节
)组成

下面我们一一查看各个值
--数据库SEQ值
BBED> dump offset 14 count 1
 File: /u01/app/oracle/oradata/normal/system01.dbf (1)
 Block: 42               Offsets:   14 to   14           Dba:0x0040002a
------------------------------------------------------------------------
 01 
 
--数据块类型
BBED> dump offset 0 count 1
 File: /u01/app/oracle/oradata/normal/system01.dbf (1)
 Block: 42               Offsets:    0 to    0           Dba:0x0040002a
------------------------------------------------------------------------
 06 

--最低SCN_BASE
BBED> dump offset 8 count 2
 File: /u01/app/oracle/oradata/normal/system01.dbf (1)
 Block: 42               Offsets:    8 to    9           Dba:0x0040002a
------------------------------------------------------------------------
 3a04 

--数据块头尾校验值
BBED> dump offset 8188 count 4
 File: /u01/app/oracle/oradata/normal/system01.dbf (1)
 Block: 42               Offsets: 8188 to 8191           Dba:0x0040002a
------------------------------------------------------------------------
 01063a04 
上面验证了
数据块头尾校验值 = 数据库SEQ值 + 数据块类型 + 最低SCN_BASE
01063a04 = 01 + 06 +  3a04


注意:如果出现坏块,则:
数据块头尾校验值 !=  数据库SEQ值 + 数据块类型 + 最低SCN_BASE
因此,可以使用bbed修改 数据块头尾校验值 让他和 (数据库SEQ值 + 数据块类型 + 最低SCN_BASE)值一样
(提醒:慎用bbed)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值