DB_BLOCK_CHECKSUM 参数决定了DBWn进程和直接路径读取进程是否为块计算checksum并将该checksum存放在每个数据块的cache header并


在Oracle 之前:


在Oracle 中:


在Oracle 11g中:


但是在Oracle 11g中新增了一个参数:DB_ULTRA_SAFE,其用来管理DB_BLOCK_CHECKSUM参数。 DB_ULTRA_SAFE参数在第二节说明。

关于Oracle 11g新增的参数,可以参考官网:

What's New in Oracle Database Reference?

Oracle 11g 官网对DB_BLOCK_CHECKSUM 参数的说明:

DB_BLOCK_CHECKSUM determineswhether DBWn and the direct loader will calculate a checksum (anumber calculated from all the bytes stored in the block) and store it in thecache header of every data block when writing it to disk. Checksums areverified when a block is read - only if this parameter is TYPICAL or FULLand the last write of the block stored a checksum.

--DB_BLOCK_CHECKSUM 参数决定了DBWn进程和直接路径读取进程是否为块计算checksum并将该checksum存放在每个数据块的cache header并写入到磁盘中。当该数据块被读取时,该checksum会受到验证, 前提是DB_BLOCK_CHECKSUM 被设置为TYPICAL 或 FULL,且最近一次该块的写出中存有checksum。

In FULL mode,Oracle also verifies the checksum before a change application fromupdate/delete statements and recomputes it after the change is applied. Inaddition, Oracle gives every log block a checksum before writing it to thecurrent log.

--在FULL模式下,Oracle还会当块要发生变化应用前对该块验证checksum,并会在DML update/insert/delete语句引起变化被应用到块后再次计算该checksum。此外,Oracle会对写入到当前redo日志文件的每一个redo block计算checksum。

Starting withOracle Database 11g, most of the log block checksum is done by the generatingforeground processes, while the LGWR performs the rest of the work, for betterCPU and cache efficiency. Prior to Oracle Database 11g, the LGWR solelyperformed the log block checksum.

If thisparameter is set to OFF, DBWn calculates checksums only forthe SYSTEM tablespace, but not for user tablespaces. In addition, nolog checksum is performed when this parameter is set to OFF.

--若该参数设置为OFF,则 DBWn进程仅为system表空间上的对象计算checksum, 而对于普通表空间不计算。

Checksums allowOracle to detect corruption caused by underlying disks, storage systems, or I/Osystems. If set to FULL, DB_BLOCK_CHECKSUM also catchesin-memory corruptions and stops them from making it to the disk. Turning onthis feature in TYPICAL mode causes only an additional 1% to 2%overhead. In the FULL mode it causes 4% to 5% overhead. Oracle recommendsthat you set DB_BLOCK_CHECKSUM to TYPICAL.

--checksum让Oracle具备检测由底层磁盘、存储子系统、IO子系统引起的坏块。若设置为FULL, 则DB_BLOCK_CHECKSUM还会捕捉内存讹误并避免将存在逻辑讹误的块被写入到磁盘上。设置DB_BLOCK_CHECKSUM为TYPICAL模式可能引起1%-2%的性能损耗,设置为FULL mode可能引起4%-5%的性能损耗。Oracle推荐用户设置DB_BLOCK_CHECKSUM为TYPICAL。

For backwardcompatibility the use of TRUE (implying TYPICAL)and FALSE (implying OFF) values is preserved.

【数据库】Oracle 11g 新特性 -- DB_ULTRA_SAFE 参数 说明