oracle检查数据库是否有坏块的命令

oracle检查数据库是否有坏块的命令,第1张

oracle检测坏块的方式:

1、利用oracle的RMAN工具

2、利用dbv工具检测

3、利用 exp/imp工具检测

其中2、3的方式无法彻底检测所有坏块,所以重点介绍下RMAN方式

RMAN>backup check logical validate datafile n

可以检查数据文件是否包含坏块,同时并不产生实际的备份输出。

而且当使用Recovery Manager进行实际的数据库备份时,同时也就进行了坏块

检查。但要注意的是,在线使用Recovery Manager扫描坏块和备份时,需要数

据库运行在归档模式(archive log),否则只能在数据库未打开的情况下进行。

 Oracle数据文件的坏块,可分为物理坏块和逻辑坏块。物理坏块(也可以称为介质坏块)指的是块格式本身是坏的,块内的数据没有任何意义。而逻辑坏块,指的是块内的数据在逻辑是存在问题。比如说索引块的索引值没有按从小到大排列。物理坏块一般是由于内存问题、OS问题、IO子系统问题和硬件引起,逻辑坏块一般是是由于Oracle Bug等原因引起。

Oracle数据文件的每个块,其块头为20字节。其定义如下:(来自于DSI401)

struct kcbh

{

ub1 type_kcbh/* block type */

ub2 frmt_kcbh

ub1 spare1_kcbh

ub1 spare2_kcbh

krdba rdba_kcbh/* relative DBA */

ub4 bas_kcbh/* base of SCN */

ub2 wrp_kcbh/* wrap of SCN */

ub1 seq_kcbh/* sequence # of changes at the same scn */

ub1 flg_kcbh

ub2 chkval_kcbh

}

在块头中,seq_kcbh(占用1字节,块头偏移14)有着特殊的含义,如果该值为0xff,则表示该块被标记为corruption。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9899975.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存