DB_BLOCK_CHECKSUM&&DB_BLOCK_CHECKING

来源:互联网 发布:手机光绘软件 编辑:程序博客网 时间:2024/05/18 02:27

最近发现一个问题,在插入数据的时候竟然出现坏块怎么处理

了解下两个参数,可能有用

DB_BLOCK_CHECKING

PropertyDescriptionParameter typeStringSyntaxDB_BLOCK_CHECKING = { FALSE | OFF | LOW | MEDIUM | TRUE | FULL }Default valueFALSEModifiableALTER SYSTEMBasicNo

DB_BLOCK_CHECKING specifies whether or not Oracle performs block checking for database blocks.

Values:

  • OFF or FALSE

    No block checking is performed for blocks in user tablespaces. However, semantic block checking forSYSTEM tablespace blocks is always turned on.

  • LOW

    Basic block header checks are performed after block contents change in memory (for example, afterUPDATE orINSERT statements, on-disk reads, or inter-instance block transfers in Oracle RAC).

  • MEDIUM

    All LOW checks and full semantic checks are performed for all objects except indexes (whose contents can be reconstructed by a drop+rebuild on encountering a corruption).

  • FULL or TRUE

    All LOW and MEDIUM checks and full semantic checks are performed for all objects.

Oracle checks a block by going through the data in the block, making sure it is logically self-consistent. Block checking can often prevent memory and data corruption. Block checking typically causes 1% to 10% overhead, depending on workload and the parameter value. Specific DML overhead may be higher. The more updates or inserts in a workload, the more expensive it is to turn on block checking. You should setDB_BLOCK_CHECKING toFULL if the performance overhead is acceptable.

For backward compatibility, the use of FALSE (implying OFF) andTRUE (implyingFULL) is preserved.

这个参数是一个高级参数,只在实际更改快时候检查数据和索引块。还在数据快被标记为讹误前进行讹误检测

 

DB_BLOCK_CHECKSUM

PropertyDescriptionParameter typeStringSyntaxDB_BLOCK_CHECKSUM = { OFF | FALSE | TYPICAL | TRUE | FULL }Default valueTYPICALModifiableALTER SESSION, ALTER SYSTEMBasicNo

DB_BLOCK_CHECKSUM determines whether DBWn and the direct loader will calculate a checksum (a number calculated from all the bytes stored in the block) and store it in the cache header of every data block when writing it to disk. Checksums are verified when a block is read - only if this parameter isTYPICAL orFULL and the last write of the block stored a checksum. InFULL mode, Oracle also verifies the checksum before a change application from update/delete statements and recomputes it after the change is applied. In addition, Oracle gives every log block a checksum before writing it to the current log.

Starting with Oracle Database 11g, most of the log block checksum is done by the generating foreground processes, while the LGWR performs the rest of the work, for better CPU and cache efficiency. Prior to Oracle Database 11g, the LGWR solely performed the log block checksum.

If this parameter is set to OFF, DBWn calculates checksums only for theSYSTEM tablespace, but not for user tablespaces. In addition, no log checksum is performed when this parameter is set toOFF.

Checksums allow Oracle to detect corruption caused by underlying disks, storage systems, or I/O systems. If set toFULL,DB_BLOCK_CHECKSUM also catches in-memory corruptions and stops them from making it to the disk. Turning on this feature inTYPICAL mode causes only an additional 1% to 2% overhead. In theFULL mode it causes 4% to 5% overhead. Oracle recommends that you setDB_BLOCK_CHECKSUM to TYPICAL.

For backward compatibility the use of TRUE (implying TYPICAL) andFALSE (implyingOFF) values is preserved

这个参数是基本的参数,他迫使oracle进行校验和检查,包括计算每个数据快的校验和,并存储到数据快头中。读取数据时,比较校验和,识别出讹误的数据快,oracle建议是typical

 

 

0 0