總體上來講,oracle的壞塊可以分為兩種情景:物理損壞和邏輯損壞。物理損壞是由於存儲等原因造成的,致使oracle在處理數據塊時發現塊的checksum不一致。邏輯損壞多是由於oracle的bug或者內存錯誤引起,通過檢測數據塊的checksum並不會發現什麼問題,但是在邏輯上這些塊已經發生了損壞。
oracle通過兩個參數來控制對物理損壞和邏輯損壞的檢測:
SQL> show parameter db_block_check NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_block_checking string FALSE db_block_checksum string TRUE
db_block_checking 是當block發生任何變化的時候進行邏輯上的完整性和正確性檢查。該參數能夠避免內存中數據塊的損壞。塊的檢查將對系統會有1%到10%的性能影響。取決於對db_block_checking參數的設置。頻繁的DML將使得塊檢查帶來更多的開銷。在系統負荷允許的情形下建議設置為full。該參數對SYSTEM表空間始終是處於“打開”狀態,而不管該參數是否設置為OFF。下面是該參數的設置參考。FALSE和TRUE是為了老版本的兼容。