- 爱易网页
-
数据库教程
- 数据块一致性稽查的4种方法
日期:2014-05-16 浏览次数:20463 次
数据块一致性检查的4种方法
㈠ 什么是数据块一致性?
每一个数据块头部都有一个“校验和”字段
当数据块被写回磁盘前,Oracle会重新计算这个校验和
并记录到这个字段,最终写回磁盘
下次数据块被读入内存时,Oracle会重新计算数据块的校验和
并与校验和字段中的值相比较
如果有差异,Oracle就会抛出ORA-1578
也就是,整个校验过程:
写回时,计算并保存
读入时,计算并比较
通过校验和字段进行检查叫物理一致性检查,其侧重于硬件故障,并不关心内容正确与否
而逻辑一致性检查便是接手这任务,如:记录和索引是否对应;记录是否被不存在的事务锁定等
db_block_checksum:物理一致性检查
当值为true时,Oracle除了会对所有表空间的数据块进行校验和检查,还会对redo log块做校验和
如果置之为false,则只会对system表空间的数据块进行校验
Oracle建议开启这个参数
db_block_checking:逻辑一致性检查
当值为false时,只会对system表空间做逻辑一致性检查
对性能影响比较大,需DBA自己权衡
㈡ 4种工具校验
① DBV
可以对数据文件物理和逻辑进行一致性检查
但不会检查表和索引的匹配性
具体参见我之前的博客:
Oracle 工具dbv的使用介绍
② analyze
同样执行物理和逻辑一致性检查
能够检查表和索引的匹配性
若是检查出问题,则会将问题放在USER_DUMP_DEST的trc文件内
analyze检查对象一致性语法:
analyze table table_name validate structure cascade online(offline)
注释:
⑴ cascade:可确认每条记录都有相应的索引
⑵ online :在线一致性检查,只是不会收集对象统计信息
⑶ offline:可收集对象统计信息,只是表会被锁住
⑷ 当检查分区表的记录是否在正确分区时,可把检查出来
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。