这两个参数的含义经常让人混淆,虽然都是对block进行检查。[@more@]
db_block_checksum & db_block_checking
===========================================================
作者: bitirainy(http://bitirainy.itpub.net)
发表于: 2004.11.05 12:12
分类: Oracle is anything
出处: http://bitirainy.itpub.net/post/330/4216
---------------------------------------------------------------
发表于: 2004.11.05 12:12
分类: Oracle is anything
出处: http://bitirainy.itpub.net/post/330/4216
---------------------------------------------------------------
这两个参数的含义经常让人混淆,虽然都是对block进行检查。
db_block_checksum 是在将数据块写到数据文件的时候对block内数据做一个校验写在块头,当读入时候重新计算校验和写出时候的校验对比,如果不同则认为是块损坏。这通常应该是由于脱离oracle以外在os或者硬件中出现了损坏,如果设置为false则只对系统表空间有效。从8i开始设置为true的时候也同时对log block进行校验。
db_block_checking 是当block发生任何变化的时候进行逻辑上的完整性和正确性检查,这在内存中进行,当发现错误就立即回退,设置为false则只对系统表空间有效。
这意味着,如果db_block_checking = false ,非系统表空间中数据在逻辑上可能已经损坏,但是 db_block_checksum 却是无法检查出来的,原样写到磁盘原样读到内存,因为它只校验块在写出后和读入之间是否发生变化而不检查写出前是否存在 逻辑上的正确。
比如有时索引块损坏,造成通过索引无法获得数据,但是读索引块的时候并没有出1578错误,可能就是这个原因
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3907/viewspace-1011230/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/3907/viewspace-1011230/