Thursday, September 25, 2008

DB_BLOCK_CHECKING

Property

Description

Parameter type

String

Syntax

DB_BLOCK_CHECKING = { FALSE | OFF | LOW | MEDIUM | TRUE | FULL }

Default value

FALSE

Modifiable

ALTER SESSION, ALTER SYSTEM

Basic

No

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 for SYSTEM tablespace blocks is always turned on.

· LOW

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

· MEDIUM

All LOW checks are performed, as well as semantic block checking for all non-index-organized table blocks.

· FULL or TRUE

All LOW and MEDIUM checks are performed, as well as semantic checks for index blocks (that is, blocks of subordinate objects that can actually be dropped and reconstructed when faced with corruption).

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. The more updates or inserts in a workload, the more expensive it is to turn on block checking. You should set DB_BLOCK_CHECKING to FULL if the performance overhead is acceptable.

For backward compatibility the use of FALSE (implying OFF) and TRUE (implying FULL) is preserved.

Note:

1. Related parameter: DB_BLOCK_CHECKSUM

2. DB_BLOCK_CHECKING is used to control whether block checking is done for transaction managed blocks. As early detection of corruptions is useful, and has only a small performance impact, Oracle recommends that the default setting be used FOR NEW DATABASES but note the following warning.

Warning: The overhead of DB_BLOCK_CHECKING = TRUE can be considerable on some types of application. The immediate overhead is a CPU overhead of checking a block contents after each change but a secondary effect is than that this means blocks are held for longer periods of time so other sessions needing the current block image may have to wait longer. The actual overhead on any system depends heavily on the application profile and data layout.

The FALSE setting is provided for compatibility with earlier releases where block checking is disabled as a default.

3. For database block checking features, see more info in Metalink Note 32969.1.

4. Query for the current value of the parameter

select name, value, isdefault, isses_modifiable, issys_modifiable,

isinstance_modifiable, isdeprecated, description

from v$parameter where upper(name) = ‘DB_BLOCK_CHECKING’;

NAME

VALUE

IS

DEFAULT

ISSES_

MODIFIABLE

ISSYS_

MODIFIABLE

ISINSTANCE_

MODIFIABLE

IS

DEPRECATED

DESCRIPTION

db_block_checking

FALSE

TRUE

TRUE

IMMEDIATE

TRUE

FALSE

header checking and data and

index block checking

Oracle initializatoin parameters

No comments:

Post a Comment