1.数据块的完整性
物理完整性:数据块头部可访问,数据块载荷符合头部描述,数据块校验值合法,数据块首尾一
致。
逻辑完整性:在数据块物理结构完整的前提下,载荷内容可以访问或在含义上无语。
数据块完整性的前提是数据块在物理上能够被访问。
2.数据块完整性检查
2.1 参数db_block_checking
指示数据库的各种进程在执行了修改操作之后立即对其访问的数据块进行一次逻辑完整性检查,
检查一旦有误,立即自动发起块级别的恢复。
2.2 参数db_block_checksum
控制物理完整性检查时是否检查数据块头部的检验值
2.3 dbv命令
只能检查数据文件的数据块的物理结构的完整性
dbv file=+DATA/hlr/datafile/catlog.266.926847457 userid=grid/oracle
2.4 analyze命令
analyze ... validate structure 能够检查表和索引的逻辑完整性
2.5 dbms_repair.check_object存储过程
检查表和索引对象的数据块的损坏情况,并提供处理的建议,若受检对象的头部损坏,则会报错
ORA-01578
2.6 dbms_hm.run_check存储过程
能够检查诸多数据库对象的物理完整性,其中包括控制文件块,重做日志的重做记录等,也包括
数据文件块
2.7 backup命令
备份的时候会检查物理和逻辑完整性,备份一旦读取到受损的数据块,rman立即停止工作
backup validate
set maxcorrupt for 子句可以允许坏块进入备份
backup check logical database 额外检查逻辑完整性
3.恢复数据块
3.1 数据块级恢复
利用备份还原健康的数据块,然后利用归档和在线日志将还原的数据块恢复,这种恢复不能利用
增量备份,也不支持不完全恢复,也不能恢复数据文件的第一个数据块。
recover datafile 5 block 203
3.2 dbms_repair数据块修复包
fix_corrupt_blocks 将受损块标记为已损坏
skip_corrupt_blocks 在段头设置标签表示遭遇受损数据块可以不必理会
使用这对搭档可以使得表正常访问,但是受损数据块内的数据丢失
1.调用check_object过程
2.调用fix_corrupt_blocks将受损块标记为已受损
3.调用skip_corrupt_blocks跳过受损块
4.考虑全表扫描和走索引的数据不一致(坏块之前建的索引)
5.从索引中抢救字段值
物理完整性:数据块头部可访问,数据块载荷符合头部描述,数据块校验值合法,数据块首尾一
致。
逻辑完整性:在数据块物理结构完整的前提下,载荷内容可以访问或在含义上无语。
数据块完整性的前提是数据块在物理上能够被访问。
2.数据块完整性检查
2.1 参数db_block_checking
指示数据库的各种进程在执行了修改操作之后立即对其访问的数据块进行一次逻辑完整性检查,
检查一旦有误,立即自动发起块级别的恢复。
2.2 参数db_block_checksum
控制物理完整性检查时是否检查数据块头部的检验值
2.3 dbv命令
只能检查数据文件的数据块的物理结构的完整性
dbv file=+DATA/hlr/datafile/catlog.266.926847457 userid=grid/oracle
2.4 analyze命令
analyze ... validate structure 能够检查表和索引的逻辑完整性
2.5 dbms_repair.check_object存储过程
检查表和索引对象的数据块的损坏情况,并提供处理的建议,若受检对象的头部损坏,则会报错
ORA-01578
2.6 dbms_hm.run_check存储过程
能够检查诸多数据库对象的物理完整性,其中包括控制文件块,重做日志的重做记录等,也包括
数据文件块
2.7 backup命令
备份的时候会检查物理和逻辑完整性,备份一旦读取到受损的数据块,rman立即停止工作
backup validate
set maxcorrupt for 子句可以允许坏块进入备份
backup check logical database 额外检查逻辑完整性
3.恢复数据块
3.1 数据块级恢复
利用备份还原健康的数据块,然后利用归档和在线日志将还原的数据块恢复,这种恢复不能利用
增量备份,也不支持不完全恢复,也不能恢复数据文件的第一个数据块。
recover datafile 5 block 203
3.2 dbms_repair数据块修复包
fix_corrupt_blocks 将受损块标记为已损坏
skip_corrupt_blocks 在段头设置标签表示遭遇受损数据块可以不必理会
使用这对搭档可以使得表正常访问,但是受损数据块内的数据丢失
1.调用check_object过程
2.调用fix_corrupt_blocks将受损块标记为已受损
3.调用skip_corrupt_blocks跳过受损块
4.考虑全表扫描和走索引的数据不一致(坏块之前建的索引)
5.从索引中抢救字段值
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29942527/viewspace-2128489/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29942527/viewspace-2128489/