
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。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)