# DB_ENV->set_flags

`

###

    #include <db.h>

    int
    DB_ENV->set_flags(DB_ENV *dbenv, u_int32_t flags, int onoff);

# Description

The flags value must be set to 0 or by bitwise inclusively OR'ing together one or more of the following values: If onoff is zero, the specified flags are cleared; otherwise they are set.

DB_AUTO_COMMIT
  If set, operations for which no explicit transaction handle was specified, and which modify databases in the database environment, will be automatically enclosed within a transaction. If the call succeeds, changes made by the operation will be recoverable. If the call fails, the operation will have made no changes.

  Calling DB_ENV->set_flags with the DB_AUTO_COMMIT flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle). For consistent behavior across the environment, all DB_ENV handles opened in the environment must either set the DB_AUTO_COMMIT flag or the flag should be specified in the DB_CONFIG configuration file.

  The DB_AUTO_COMMIT flag may be used to configure Berkeley DB at any time during the life of the application.

DB_CDB_ALLDB
  If set, Berkeley DB Concurrent Data Store applications will perform locking on an environment-wide basis rather than on a per-database basis.

  Calling DB_ENV->set_flags with the DB_CDB_ALLDB flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle). For consistent behavior across the environment, all DB_ENV handles opened in the environment must either set the DB_CDB_ALLDB flag or the flag should be specified in the DB_CONFIG configuration file.

  The DB_CDB_ALLDB flag may be used to configure Berkeley DB only before the DB_ENV->open interface is called.

DB_DIRECT_DB
  If set and supported by the system, Berkeley DB will turn off system buffering of Berkeley DB database files to avoid double caching.

  Calling DB_ENV->set_flags with the DB_DIRECT_DB flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle). For consistent behavior across the environment, all DB_ENV handles opened in the environment must either set the DB_DIRECT_DB flag or the flag should be specified in the DB_CONFIG configuration file.

  The DB_DIRECT_DB flag may be used to configure Berkeley DB at any time during the life of the application.

DB_DIRECT_LOG
  If set and supported by the system, Berkeley DB will turn off system buffering of Berkeley DB log files to avoid double caching.

  Calling DB_ENV->set_flags with the DB_DIRECT_LOG flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle). For consistent behavior across the environment, all DB_ENV handles opened in the environment must either set the DB_DIRECT_LOG flag or the flag should be specified in the DB_CONFIG configuration file.

  The DB_DIRECT_LOG flag may be used to configure Berkeley DB at any time during the life of the application.

DB_NOLOCKING
  If set, Berkeley DB will grant all requested mutual exclusion mutexes and database locks without regard for their actual availability. This functionality should never be used for purposes other than debugging.

  Calling DB_ENV->set_flags with the DB_NOLOCKING flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle).

  The DB_NOLOCKING flag may be used to configure Berkeley DB at any time during the life of the application.

DB_NOMMAP
  If set, Berkeley DB will copy read-only database files into the local cache instead of potentially mapping them into process memory (see the description of the DB_ENV->set_mp_mmapsize method for further information).

  Calling DB_ENV->set_flags with the DB_NOMMAP flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle). For consistent behavior across the environment, all DB_ENV handles opened in the environment must either set the DB_NOMMAP flag or the flag should be specified in the DB_CONFIG configuration file.

  The DB_NOMMAP flag may be used to configure Berkeley DB at any time during the life of the application.

DB_NOPANIC
  If set, Berkeley DB will ignore any panic state in the database environment. (Database environments in a panic state normally refuse all attempts to call Berkeley DB functions, returning DB_RUNRECOVERY.) This functionality should never be used for purposes other than debugging.

  Calling DB_ENV->set_flags with the DB_NOPANIC flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle).

  The DB_NOPANIC flag may be used to configure Berkeley DB at any time during the life of the application.

DB_OVERWRITE
  Overwrite files stored in encrypted formats before deleting them. Berkeley DB overwrites files using alternating 0xff, 0x00 and 0xff byte patterns. For file overwriting to be effective, the underlying file must be stored on a fixed-block filesystem. Systems with journaling or logging filesystems will require operating system support and probably modification of the Berkeley DB sources.

  Calling DB_ENV->set_flags with the DB_OVERWRITE flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle).

  The DB_OVERWRITE flag may be used to configure Berkeley DB at any time during the life of the application.

DB_PANIC_ENVIRONMENT
  If set, Berkeley DB will set the panic state for the database environment. (Database environments in a panic state normally refuse all attempts to call Berkeley DB functions, returning DB_RUNRECOVERY.) This flag may not be specified using the environment's DB_CONFIG file. This flag may be used to configure Berkeley DB only after the DB_ENV->open interface is called.

  Calling DB_ENV->set_flags with the DB_PANIC_ENVIRONMENT flag affects the database environment, including all threads of control accessing the database environment.

  The DB_PANIC_ENVIRONMENT flag may be used to configure Berkeley DB at any time during the life of the application.

DB_REGION_INIT
  In some applications, the expense of page-faulting the underlying shared memory regions can affect performance. (For example, if the page-fault occurs while holding a lock, other lock requests can convoy, and overall throughput may decrease.) If set, Berkeley DB will page-fault shared regions into memory when initially creating or joining a Berkeley DB environment. In addition, Berkeley DB will write the shared regions when creating an environment, forcing the underlying virtual memory and filesystems to instantiate both the necessary memory and the necessary disk space. This can also avoid out-of-disk space failures later on.

  Calling DB_ENV->set_flags with the DB_REGION_INIT flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle). For consistent behavior across the environment, all DB_ENV handles opened in the environment must either set the DB_REGION_INIT flag or the flag should be specified in the DB_CONFIG configuration file.

  The DB_REGION_INIT flag may be used to configure Berkeley DB at any time during the life of the application.

DB_TXN_NOSYNC
  If set, Berkeley DB will not write or synchronously flush the log on transaction commit or prepare. This means that transactions exhibit the ACI (atomicity, consistency, and isolation) properties, but not D (durability); that is, database integrity will be maintained, but if the application or system fails, it is possible some number of the most recently committed transactions may be undone during recovery. The number of transactions at risk is governed by how many log updates can fit into the log buffer, how often the operating system flushes dirty buffers to disk, and how often the log is checkpointed

  Calling DB_ENV->set_flags with the DB_TXN_NOSYNC flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle). For consistent behavior across the environment, all DB_ENV handles opened in the environment must either set the DB_TXN_NOSYNC flag or the flag should be specified in the DB_CONFIG configuration file.

  The DB_TXN_NOSYNC flag may be used to configure Berkeley DB at any time during the life of the application.

DB_TXN_WRITE_NOSYNC
  If set, Berkeley DB will write, but will not synchronously flush, the log on transaction commit or prepare. This means that transactions exhibit the ACI (atomicity, consistency, and isolation) properties, but not D (durability); that is, database integrity will be maintained, but if the system fails, it is possible some number of the most recently committed transactions may be undone during recovery. The number of transactions at risk is governed by how often the system flushes dirty buffers to disk and how often the log is checkpointed.

  Calling DB_ENV->set_flags with the DB_TXN_WRITE_NOSYNC flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle). For consistent behavior across the environment, all DB_ENV handles opened in the environment must either set the DB_TXN_WRITE_NOSYNC flag or the flag should be specified in the DB_CONFIG configuration file.

  The DB_TXN_WRITE_NOSYNC flag may be used to configure Berkeley DB at any time during the life of the application.

DB_YIELDCPU
  If set, Berkeley DB will yield the processor immediately after each page or mutex acquisition. This functionality should never be used for purposes other than stress testing.

  Calling DB_ENV->set_flags with the DB_YIELDCPU flag only affects the specified DB_ENV handle (and any other Berkeley DB handles opened within the scope of that handle). For consistent behavior across the environment, all DB_ENV handles opened in the environment must either set the DB_YIELDCPU flag or the flag should be specified in the DB_CONFIG configuration file.

  The DB_YIELDCPU flag may be used to configure Berkeley DB at any time during the life of the application.

The DB_ENV->set_flags method returns a non-zero error value on failure and 0 on success.

The database environment's flag values may also be set using the environment's DB_CONFIG file. The syntax of the entry in that file is a single line with the string "set_flags", one or more whitespace characters, and the interface flag argument as a string; for example, "set_flags DB_TXN_NOSYNC". Because the DB_CONFIG file is read when the database environment is opened, it will silently overrule configuration done before that time.

# Errors

The DB_ENV->set_flags method may fail and return a non-zero error for the following conditions:

EINVAL
  An invalid flag value or parameter was specified.

The DB_ENV->set_flags method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions. If a catastrophic error has occurred, the DB_ENV->set_flags method may fail and return DB_RUNRECOVERY, in which case all subsequent Berkeley DB calls will fail in the same way.

# Class

DB_ENV

# See Also

Database Environments and Related Methods`

Copyright Sleepycat Software