com.sleepycat.db

## Class Environment

- java.lang.Object
- - com.sleepycat.db.Environment

-     public class Environment
      extends java.lang.Object

  A database environment. Environments include support for some or all of caching, locking, logging and transactions.

  To open an existing environment with default attributes the application may use a default environment configuration object or null:

  >         // Open an environment handle with default attributes.
  >         Environment env = new Environment(home, new EnvironmentConfig());

  or

  >         Environment env = new Environment(home, null);

  Note that many Environment objects may access a single environment.

  To create an environment or customize attributes, the application should customize the configuration class. For example:

  >         EnvironmentConfig envConfig = new EnvironmentConfig();
  >         envConfig.setTransactional(true);
  >         envConfig.setAllowCreate(true);
  >         envConfig.setCacheSize(1000000);

  >         Environment newlyCreatedEnv = new Environment(home, envConfig);

  Environment handles are free-threaded unless `EnvironmentConfig.setThreaded` is called to disable this before the environment is opened.

  An environment handle is an Environment instance. More than one Environment instance may be created for the same physical directory, which is the same as saying that more than one Environment handle may be open at one time for a given environment.

  The Environment handle should not be closed while any other handle remains open that is using it as a reference (for example, `Database` or `Transaction`. Once `Environment.close` is called, this object may not be accessed again, regardless of whether or not it throws an exception.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `EID_MASTER` A special identifier for eid in `Environment.openChannel` to create channel to send messages only to the master site.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Environment(java.io.File home, EnvironmentConfig config)` Create a database environment handle.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `backup(java.lang.String target, BackupOptions opt)` Perform a hot back up of the open environment.
    `void` | `backupDatabase(java.lang.String dbfile, java.lang.String target, boolean exclusiveCreate)` Perform a hot back up of a single database file contained within the environment.
    `Transaction` | `beginCDSGroup()` Allocate a locker ID in an environment configured for Berkeley DB Concurrent Data Store applications.
    `Transaction` | `beginTransaction(Transaction parent, TransactionConfig config)` Create a new transaction in the database environment.
    `void` | `checkpoint(CheckpointConfig config)` Synchronously checkpoint the database environment.
    `void` | `close()` Close the database environment, freeing any allocated resources and closing any underlying subsystems.
    `void` | `closeForceSync()` Close the database environment, freeing any allocated resources and closing any underlying subsystems.
    `void` | `closeForceSyncAndForceSyncEnv()` Close the database environment, freeing any allocated resources and closing any underlying subsystems.
    `void` | `closeForceSyncEnv()` Close the database environment, freeing any allocated resources and closing any underlying subsystems.
    `int` | `createLockerID()` Allocate a locker ID.
    `int` | `detectDeadlocks(LockDetectMode mode)` Run one iteration of the deadlock detector.
    `void` | `electReplicationMaster(int nsites, int nvotes)` Hold an election for the master of a replication group.
    `void` | `flushReplication()` Internal method: re-push the last log record to all clients, in case they've lost messages and don't know it.
    `void` | `freeLockerID(int id)` Free a locker ID.
    `java.io.File[]` | `getArchiveDatabases()` Return the database files that need to be archived in order to recover the database from catastrophic failure.
    `java.io.File[]` | `getArchiveLogFiles(boolean includeInUse)` Return an array of log files.
    `CacheFileStats[]` | `getCacheFileStats(StatsConfig config)` Return statistics for individual files in the cache.
    `CacheStats` | `getCacheStats(StatsConfig config)` Returns the memory pool (that is, the buffer cache) subsystem statistics.
    `EnvironmentConfig` | `getConfig()` Return this object's configuration.
    `java.io.File` | `getHome()` Return the database environment home directory.
    `Lock` | `getLock(int locker, boolean noWait, DatabaseEntry object, LockRequestMode mode)` Acquire a lock from the lock table returning information about it in the Lock parameter.
    `int` | `getLockerPriority(int id)` Return the deadlock priority for the given locker.
    `LockStats` | `getLockStats(StatsConfig config)` Return the database environment's locking statistics.
    `java.lang.String` | `getLogFileName(LogSequenceNumber lsn)` Return the name of the log file that contains the log record specified by a LogSequenceNumber object.
    `LogStats` | `getLogStats(StatsConfig config)` Return the database environment's logging statistics.
    `MutexStats` | `getMutexStats(StatsConfig config)` Return the database environment's mutex statistics.
    `boolean` | `getReplicationConfig(ReplicationConfig config)` Get the configuration of the replication subsystem.
    `ReplicationManagerSite` | `getReplicationManagerLocalSite()` Return a handle for the local replication site.
    `ReplicationManagerSite` | `getReplicationManagerSite(int eid)` Return a site known to the replication manager by its eid.
    `ReplicationManagerSite` | `getReplicationManagerSite(java.lang.String host, long port)` Return a site in the replication manager by its host and port.
    `ReplicationManagerSiteInfo[]` | `getReplicationManagerSiteList()` Return an array of all the sites known to the replication manager.
    `ReplicationManagerStats` | `getReplicationManagerStats(StatsConfig config)` Return the database environment's replication manager statistics.
    `int` | `getReplicationNumSites()` Get the number of sites in a replication group.
    `ReplicationStats` | `getReplicationStats(StatsConfig config)` Return the database environment's replication statistics.
    `int` | `getReplicationTimeout(ReplicationTimeoutType type)` Gets the timeout applied to the specified timeout type.
    `int` | `getSliceCount()` Get the number of slices in the environment.
    `Environment[]` | `getSlices()` Gets the Environment handles for the underlying slice environments.
    `TransactionStats` | `getTransactionStats(StatsConfig config)` Return the database environment's transactional statistics.
    `static int` | `getVersionFamily()` Return the release's Oracle family number.
    `static java.lang.String` | `getVersionFullString()` Return the full release version information, suitable for display.
    `static int` | `getVersionMajor()` Return the release major number.
    `static int` | `getVersionMinor()` Return the release minor number.
    `static int` | `getVersionPatch()` Return the release patch number.
    `static int` | `getVersionRelease()` Return the release's Oracle release number.
    `static java.lang.String` | `getVersionString()` Return the release version information, suitable for display.
    `TransactionStatus` | `isTransactionApplied(byte[] token, int maxwait)` Return whether the transaction referred to by the commit token "token" has been applied at the local replication environment.
    `void` | `lockVector(int locker, boolean noWait, LockRequest[] list)` Atomically obtain and release one or more locks from the lock table.
    `void` | `logFlush(LogSequenceNumber lsn)` Flush log records to stable storage.
    `void` | `logPrint(Transaction txn, java.lang.String message)` Append an informational message to the Berkeley DB database environment log files.
    `LogSequenceNumber` | `logPut(DatabaseEntry data, boolean flush)` Append a record to the log.
    `int` | `logVerify(LogVerifyConfig config)` Verify integrity of the log records of an environment and write both error and normal messages to the environment's error report destination.
    `ReplicationChannel` | `openChannel(int eid)` Create a channel.
    `Database` | `openDatabase(Transaction txn, java.lang.String fileName, java.lang.String databaseName, DatabaseConfig config)` Open a database.
    `LogCursor` | `openLogCursor()` Return a log cursor.
    `SecondaryDatabase` | `openSecondaryDatabase(Transaction txn, java.lang.String fileName, java.lang.String databaseName, Database primaryDatabase, SecondaryConfig config)` Open a database.
    `void` | `panic(boolean onoff)` Set the panic state for the database environment.
    `int` | `printLockStats(StatsConfig config)` Print the locking subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).
    `int` | `printLogStats(StatsConfig config)` Print the logging subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).
    `int` | `printMempStats(StatsConfig config)` Print the cache subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).
    `int` | `printMutexStats(StatsConfig config)` Print the mutex subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).
    `int` | `printReplicationManagerStats(StatsConfig config)` Print the Replication Manager subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).
    `int` | `printReplicationStats(StatsConfig config)` Print the replication subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).
    `int` | `printStats(StatsConfig config)` Print environment statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).
    `int` | `printTransactionStats(StatsConfig config)` Print the transaction subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).
    `ReplicationStatus` | `processReplicationMessage(DatabaseEntry control, DatabaseEntry rec, int envid)` Process an incoming replication message sent by a member of the replication group to the local database environment.
    `void` | `putLock(Lock lock)` Release a lock.
    `PreparedTransaction[]` | `recover(int count, boolean continued)` Environment recovery restores transactions that were prepared, but not yet resolved at the time of the system shut down or crash, to their state prior to the shut down or crash, including any locks previously held.
    `static void` | `remove(java.io.File home, boolean force, EnvironmentConfig config)` Destroy a database environment.
    `void` | `removeDatabase(Transaction txn, java.lang.String fileName, java.lang.String databaseName)` Remove the database specified by the fileName and databaseName parameters.
    `void` | `removeOldLogFiles()` Remove log files that are no longer needed.
    `void` | `renameDatabase(Transaction txn, java.lang.String fileName, java.lang.String databaseName, java.lang.String newName)` Rename a database.
    `void` | `replicationManagerStart(int nthreads, ReplicationManagerStartPolicy policy)` Starts the replication manager.
    `void` | `resetFileID(java.lang.String filename, boolean encrypted)` Allows database files to be copied, and then the copy used in the same database environment as the original.
    `void` | `resetLogSequenceNumber(java.lang.String filename, boolean encrypted)` Allows database files to be moved from one transactional database environment to another.
    `void` | `setBlobThreshold(int value)` Deprecated. Replaced with `setExternalFileThreshold(int)`.
    `void` | `setConfig(EnvironmentConfig config)` Change the settings in an existing environment handle.
    `void` | `setExternalFileThreshold(int value)` Set the external file threshold size.
    `void` | `setLockerPriority(int id, int priority)` Assign a deadlock priority to a locker.
    `void` | `setMsgfile(java.io.File file)` Sets the path of a file to store statistical information.
    `void` | `setReplicationConfig(ReplicationConfig config, boolean onoff)` Configure the replication subsystem.
    `void` | `setReplicationManagerMessageDispatch(ReplicationManagerMessageDispatch dispatch, int flags)` Set the message dispatch function.
    `void` | `setReplicationTimeout(ReplicationTimeoutType type, int replicationTimeout)` Sets the timeout applied to the specified timeout type.
    `static boolean` | `slices_enabled()`
    `void` | `startReplication(DatabaseEntry cdata, boolean master)` Configure the database environment as a client or master in a group of replicated database environments.
    `void` | `syncCache(LogSequenceNumber logSequenceNumber)` Ensure that all modified pages in the cache are flushed to their backing files.
    `void` | `syncReplication()` Forces master synchronization to begin for this client.
    `int` | `trickleCacheWrite(int percent)` Ensure that a specified percent of the pages in the shared memory pool are clean, by writing dirty pages to their backing files.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### EID_MASTER

          public static final int EID_MASTER

      A special identifier for eid in `Environment.openChannel` to create channel to send messages only to the master site.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Environment

          public Environment(java.io.File home,
                             EnvironmentConfig config)
                      throws DatabaseException,
                             java.io.FileNotFoundException

      Create a database environment handle.

      Parameters:
        `home` - The database environment's home directory. The environment variable `DB_HOME` may be used as the path of the database home. For more information on `envHome` and filename resolution in general, see File Naming.

        `config` - The database environment attributes. If null, default attributes are used.

      Throws:
        `java.lang.IllegalArgumentException` - if an invalid parameter was specified.

        `DatabaseException` - if a failure occurs.
        `java.io.FileNotFoundException` - if the environment home directory does not exist

  - ### Method Detail

    - #### close

          public void close()
                     throws DatabaseException

      Close the database environment, freeing any allocated resources and closing any underlying subsystems.

      When you call this method, all open database and cursor handles are closed automatically, and should not be reused.

      The `Environment` handle should not be closed while any other handle that refers to it is not yet closed; for example, database environment handles must not be closed while transactions in the environment have not yet been committed or aborted. Specifically, this includes `Transaction`, and `LogCursor` handles.

      In multiple threads of control, each thread of control opens a database environment and the database handles within it. When you close each database handle using this method, by default, the database is not synchronized. To synchronize all open databases ensure that the last environment object is closed using the Environment.CloseForceSync() method. When the close operation fails, the method returns a non-zero error value for the first instance of such error, and continues to close the rest of the environment objects.

      Where the environment was initialized with a locking subsystem, closing the environment does not release any locks still held by the closing process, providing functionality for long-lived locks.

      Where the environment was initialized with a transaction subsystem, closing the environment aborts any unresolved transactions. Applications should not depend on this behavior for transactions involving databases; all such transactions should be explicitly resolved. The problem with depending on this semantic is that aborting an unresolved transaction involving database operations requires a database handle. Because the database handles should have been closed before closing the environment, it will not be possible to abort the transaction, and recovery will have to be run on the database environment before further operations are done.

      Where log cursors were created, closing the environment does not imply closing those cursors.

      In multithreaded applications, only a single thread may call this method.

      After this method has been called, regardless of its return, the `Environment` handle may not be accessed again.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### closeForceSync

          public void closeForceSync()
                              throws DatabaseException

      Close the database environment, freeing any allocated resources and closing any underlying subsystems.

      This function is similar to Environment.close(), except that each open database is synchronized as it is closed.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### closeForceSyncEnv

          public void closeForceSyncEnv()
                                 throws DatabaseException

      Close the database environment, freeing any allocated resources and closing any underlying subsystems.

      This function is similar to Environment.close(), except that all memory mapped environment regions are synchronized as the environment is closed.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### closeForceSyncAndForceSyncEnv

          public void closeForceSyncAndForceSyncEnv()
                                             throws DatabaseException

      Close the database environment, freeing any allocated resources and closing any underlying subsystems.

      This function is similar to Environment.close(), except that it has the effect of both closeForceSync() and closeForceSyncEnv().

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### remove

          public static void remove(java.io.File home,
                                    boolean force,
                                    EnvironmentConfig config)
                             throws DatabaseException,
                                    java.io.FileNotFoundException

      Destroy a database environment.

      If the environment is not in use, the environment regions, including any backing files, are removed. Any log or database files and the environment directory itself are not removed.

      If there are processes currently using the database environment, this method will fail without further action (unless the force argument is true, in which case the environment will be removed, regardless of any processes still using it).

      The result of attempting to forcibly destroy the environment when it is in use is unspecified. Processes using an environment often maintain open file descriptors for shared regions within it. On UNIX systems, the environment removal will usually succeed, and processes that have already joined the region will continue to run in that region without change. However, processes attempting to join the environment will either fail or create new regions. On other systems in which the unlink system call will fail if any process has an open file descriptor for the file (for example Windows/NT), the region removal will fail.

      Calling this method should not be necessary for most applications because the environment is cleaned up as part of normal database recovery procedures. However, applications may want to call this method as part of application shut down to free up system resources. For example, if system shared memory was used to back the database environment, it may be useful to call this method in order to release system shared memory segments that have been allocated. Or, on architectures in which mutexes require allocation of underlying system resources, it may be useful to call this method in order to release those resources. Alternatively, if recovery is not required because no database state is maintained across failures, and no system resources need to be released, it is possible to clean up an environment by simply removing all the Berkeley DB files in the database environment's directories.

      In multithreaded applications, only a single thread may call this method.

      After this method has been called, regardless of its return, the `Environment` handle may not be accessed again.

      Parameters:
        `home` - The database environment to be removed. On Windows platforms, this argument will be interpreted as a UTF-8 string, which is equivalent to ASCII for Latin characters.

        `force` - The environment is removed, regardless of any processes that may still using it, and no locks are acquired during this process. (Generally, the force argument is specified only when applications were unable to shut down cleanly, and there is a risk that an application may have died holding a Berkeley DB mutex or lock.

        `config` - The database environment attributes. If null, default attributes are used.

      Throws:
        `DatabaseException` - if a failure occurs.
        `java.io.FileNotFoundException` - if the database file does not exist

    - #### setConfig

          public void setConfig(EnvironmentConfig config)
                         throws DatabaseException

      Change the settings in an existing environment handle.

      Parameters:
        `config` - The database environment attributes. If null, default attributes are used.

      Throws:
        `java.lang.IllegalArgumentException` - if an invalid parameter was specified.

        `DatabaseException` - if a failure occurs.

    - #### getConfig

          public EnvironmentConfig getConfig()
                                      throws DatabaseException

      Return this object's configuration.

      Returns:
        This object's configuration.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### openDatabase

          public Database openDatabase(Transaction txn,
                                       java.lang.String fileName,
                                       java.lang.String databaseName,
                                       DatabaseConfig config)
                                throws DatabaseException,
                                       java.io.FileNotFoundException

      Open a database.

      The database is represented by the file and database parameters.

      The currently supported database file formats (or access methods) are Btree, Hash, Queue, and Recno. The Btree format is a representation of a sorted, balanced tree structure. The Hash format is an extensible, dynamic hashing scheme. The Queue format supports fast access to fixed-length records accessed sequentially or by logical record number. The Recno format supports fixed- or variable-length records, accessed sequentially or by logical record number, and optionally backed by a flat text file.

      Storage and retrieval are based on key/data pairs; see `DatabaseEntry` for more information.

      Opening a database is a relatively expensive operation, and maintaining a set of open databases will normally be preferable to repeatedly opening and closing the database for each new query.

      In-memory databases never intended to be preserved on disk may be created by setting both the fileName and databaseName parameters to null. Note that in-memory databases can only ever be shared by sharing the single database handle that created them, in circumstances where doing so is safe. The environment variable `TMPDIR` may be used as a directory in which to create temporary backing files.

      Parameters:
        `txn` - For a transactional database, an explicit transaction may be specified, or null may be specified to use auto-commit. For a non-transactional database, null must be specified. Note that transactionally protected operations on a Database handle require that the Database handle itself be transactionally protected during its open, either with a non-null transaction handle, or by calling `DatabaseConfig.setTransactional` on the configuration object.

        `fileName` - The name of an underlying file that will be used to back the database. On Windows platforms, this argument will be interpreted as a UTF-8 string, which is equivalent to ASCII for Latin characters.

        `databaseName` - An optional parameter that allows applications to have multiple databases in a single file. Although no databaseName parameter needs to be specified, it is an error to attempt to open a second database in a physical file that was not initially created using a databaseName parameter. Further, the databaseName parameter is not supported by the Queue format.

        `config` - The database open attributes. If null, default attributes are used.

      Returns:
        a Database handle
      Throws:
        `DatabaseException` - if a failure occurs.
        `java.io.FileNotFoundException` - if the database file does not exist

    - #### openSecondaryDatabase

          public SecondaryDatabase openSecondaryDatabase(Transaction txn,
                                                         java.lang.String fileName,
                                                         java.lang.String databaseName,
                                                         Database primaryDatabase,
                                                         SecondaryConfig config)
                                                  throws DatabaseException,
                                                         java.io.FileNotFoundException

      Open a database.

      The database is represented by the file and database parameters.

      The currently supported database file formats (or access methods) are Btree, Hash, Queue, and Recno. The Btree format is a representation of a sorted, balanced tree structure. The Hash format is an extensible, dynamic hashing scheme. The Queue format supports fast access to fixed-length records accessed sequentially or by logical record number. The Recno format supports fixed- or variable-length records, accessed sequentially or by logical record number, and optionally backed by a flat text file.

      Storage and retrieval are based on key/data pairs; see `DatabaseEntry` for more information.

      Opening a database is a relatively expensive operation, and maintaining a set of open databases will normally be preferable to repeatedly opening and closing the database for each new query.

      In-memory databases never intended to be preserved on disk may be created by setting both the fileName and databaseName parameters to null. Note that in-memory databases can only ever be shared by sharing the single database handle that created them, in circumstances where doing so is safe. The environment variable `TMPDIR` may be used as a directory in which to create temporary backing files.

      Parameters:
        `txn` - For a transactional database, an explicit transaction may be specified, or null may be specified to use auto-commit. For a non-transactional database, null must be specified. Note that transactionally protected operations on a Database handle require that the Database handle itself be transactionally protected during its open, either with a non-null transaction handle, or by calling `DatabaseConfig.setTransactional` on the configuration object.

        `fileName` - The name of an underlying file that will be used to back the database. On Windows platforms, this argument will be interpreted as a UTF-8 string, which is equivalent to ASCII for Latin characters.

        `databaseName` - An optional parameter that allows applications to have multiple databases in a single file. Although no databaseName parameter needs to be specified, it is an error to attempt to open a second database in a physical file that was not initially created using a databaseName parameter. Further, the databaseName parameter is not supported by the Queue format.

        `primaryDatabase` - a database handle for the primary database that is to be indexed.

        `config` - The secondary database open attributes. If null, default attributes are used.
      Returns:
        a SecondaryDatabase handle
      Throws:
        `DatabaseException` - if a failure occurs.
        `java.io.FileNotFoundException` - if the database file does not exist

    - #### removeDatabase

          public void removeDatabase(Transaction txn,
                                     java.lang.String fileName,
                                     java.lang.String databaseName)
                              throws DatabaseException,
                                     java.io.FileNotFoundException

      Remove the database specified by the fileName and databaseName parameters.

      If no database is specified, the underlying file specified is removed, incidentally removing all of the databases it contained.

      Applications should never remove databases with open `Database` handles, or in the case of removing a file, when any database in the file has an open handle. For example, some architectures do not permit the removal of files with open system handles. On these architectures, attempts to remove databases currently in use by any thread of control in the system may fail.

      The environment variable DB_HOME may be used as the path of the database environment home.

      This method is affected by any database directory specified with `EnvironmentConfig.addDataDir`, or by setting the "set_data_dir" string in the database environment's DB_CONFIG file.

      The `Database` handle may not be accessed again after this method is called, regardless of this method's success or failure.

      Parameters:
        `txn` - If the operation is part of an application-specified transaction, the txn parameter is a Transaction object returned from the `Environment.beginTransaction` method; if the operation is part of a Berkeley DB Concurrent Data Store group, the txn parameter is a Transaction object returned from the `Environment.beginCDSGroup` method; otherwise null. For a transactional database, an explicit transaction may be specified, or null may be specified to use auto-commit. For a non-transactional database, null must be specified.

        `fileName` - The physical file which contains the database to be removed. On Windows platforms, this argument will be interpreted as a UTF-8 string, which is equivalent to ASCII for Latin characters.

        `databaseName` - The database to be removed.

      Throws:
        `DeadlockException` - if the operation was selected to resolve a deadlock.

        `DatabaseException` - if a failure occurs.
        `java.io.FileNotFoundException` - if the database file does not exist

    - #### renameDatabase

          public void renameDatabase(Transaction txn,
                                     java.lang.String fileName,
                                     java.lang.String databaseName,
                                     java.lang.String newName)
                              throws DatabaseException,
                                     java.io.FileNotFoundException

      Rename a database.

      If no database name is specified, the underlying file specified is renamed, incidentally renaming all of the databases it contains.

      Applications should never rename databases that are currently in use. If an underlying file is being renamed and logging is currently enabled in the database environment, no database in the file may be open when this method is called. In particular, some architectures do not permit renaming files with open handles. On these architectures, attempts to rename databases that are currently in use by any thread of control in the system may fail.

      The environment variable DB_HOME may be used as the path of the database environment home.

      This method is affected by any database directory specified with `EnvironmentConfig.addDataDir`, or by setting the "set_data_dir" string in the database environment's DB_CONFIG file.

      The `Database` handle may not be accessed again after this method is called, regardless of this method's success or failure.

      Parameters:
        `txn` - If the operation is part of an application-specified transaction, the txn parameter is a Transaction object returned from the `Environment.beginTransaction` method; if the operation is part of a Berkeley DB Concurrent Data Store group, the txn parameter is a Transaction object returned from the `Environment.beginCDSGroup` method; otherwise null. For a transactional database, an explicit transaction may be specified, or null may be specified to use auto-commit. For a non-transactional database, null must be specified.

        `fileName` - The physical file which contains the database to be renamed. On Windows platforms, this argument will be interpreted as a UTF-8 string, which is equivalent to ASCII for Latin characters.

        `databaseName` - The database to be renamed.

        `newName` - The new name of the database or file.

      Throws:
        `DeadlockException` - if the operation was selected to resolve a deadlock.

        `DatabaseException` - if a failure occurs.
        `java.io.FileNotFoundException` - if the database file does not exist

    - #### getHome

          public java.io.File getHome()
                               throws DatabaseException

      Return the database environment home directory. This directory is normally identified in the `Environment` constructor.

      Returns:
        The database environment home directory.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### trickleCacheWrite

          public int trickleCacheWrite(int percent)
                                throws DatabaseException

      Ensure that a specified percent of the pages in the shared memory pool are clean, by writing dirty pages to their backing files.

      The purpose of this method is to enable a memory pool manager to ensure that a page is always available for reading in new information without having to wait for a write.

      Parameters:
        `percent` - The percent of the pages in the cache that should be clean.

      Returns:
        The number of pages that were written to reach the specified percentage.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### detectDeadlocks

          public int detectDeadlocks(LockDetectMode mode)
                              throws DatabaseException

      Run one iteration of the deadlock detector.

      The deadlock detector traverses the lock table and marks one of the participating lock requesters for rejection in each deadlock it finds.

      Parameters:
        `mode` - Which lock request(s) to reject.

      Returns:
        The number of lock requests that were rejected.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getLock

          public Lock getLock(int locker,
                              boolean noWait,
                              DatabaseEntry object,
                              LockRequestMode mode)
                       throws DatabaseException

      Acquire a lock from the lock table returning information about it in the Lock parameter.

      Parameters:
        `locker` - An unsigned 32-bit integer quantity representing the entity requesting the lock.

        `mode` - The lock mode.

        `noWait` - If a lock cannot be granted because the requested lock conflicts with an existing lock, throw a `LockNotGrantedException` immediately instead of waiting for the lock to become available.

        `object` - An untyped byte string that specifies the object to be locked. Applications using the locking subsystem directly while also doing locking via the Berkeley DB access methods must take care not to inadvertently lock objects that happen to be equal to the unique file IDs used to lock files.

      Returns:
        a lock

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### putLock

          public void putLock(Lock lock)
                       throws DatabaseException

      Release a lock.

      Parameters:
        `lock` - The lock to be released.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### createLockerID

          public int createLockerID()
                             throws DatabaseException

      Allocate a locker ID.

      The locker ID is guaranteed to be unique for the database environment.

      Call `Environment.freeLockerID` to return the locker ID to the environment when it is no longer needed.

      Returns:
        A locker ID.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### freeLockerID

          public void freeLockerID(int id)
                            throws DatabaseException

      Free a locker ID.

      Parameters:
        `id` - The locker id to be freed.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getLockerPriority

          public int getLockerPriority(int id)
                                throws DatabaseException

      Return the deadlock priority for the given locker.

      Parameters:
        `id` - The locker id

      Returns:
        the deadlock priority
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### setLockerPriority

          public void setLockerPriority(int id,
                                        int priority)
                                 throws DatabaseException

      Assign a deadlock priority to a locker. This value is used when resolving deadlocks. The deadlock resolution algorithm will reject a lock request from a locker with a lower priority before a request from a locker with a higher priority. By default, all lockers are created with a priority of 100.

      Parameters:
        `id` - The locker id to configure
        `priority` - The priority to assign to the locker.

      Throws:
        `DatabaseException` - if a failure occurs

    - #### lockVector

          public void lockVector(int locker,
                                 boolean noWait,
                                 LockRequest[] list)
                          throws DatabaseException

      Atomically obtain and release one or more locks from the lock table. This method is intended to support acquisition or trading of multiple locks under one lock table semaphore, as is needed for lock coupling or in multigranularity locking for lock escalation.

      If any of the requested locks cannot be acquired, or any of the locks to be released cannot be released, the operations before the failing operation are guaranteed to have completed successfully, and the method throws an exception.

      Parameters:
        `noWait` - If a lock cannot be granted because the requested lock conflicts with an existing lock, throw a `LockNotGrantedException` immediately instead of waiting for the lock to become available. The index of the request that was not granted will be returned by `LockNotGrantedException.getIndex`.

        `locker` - An unsigned 32-bit integer quantity representing the entity requesting the lock.

        `list` - An array of `LockRequest` objects, listing the requested lock operations.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### openLogCursor

          public LogCursor openLogCursor()
                                  throws DatabaseException

      Return a log cursor.

      Returns:
        A log cursor.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getLogFileName

          public java.lang.String getLogFileName(LogSequenceNumber lsn)
                                          throws DatabaseException

      Return the name of the log file that contains the log record specified by a LogSequenceNumber object.

      This mapping of LogSequenceNumber objects to files is needed for database administration. For example, a transaction manager typically records the earliest LogSequenceNumber object needed for restart, and the database administrator may want to archive log files to tape when they contain only log records before the earliest one needed for restart.

      Parameters:
        `lsn` - The LogSequenceNumber object for which a filename is wanted.

      Returns:
        The name of the log file that contains the log record specified by a LogSequenceNumber object.

      Throws:
        `java.lang.IllegalArgumentException` - if an invalid parameter was specified.

        `DatabaseException` - if a failure occurs.

    - #### logVerify

          public int logVerify(LogVerifyConfig config)

      Verify integrity of the log records of an environment and write both error and normal messages to the environment's error report destination. This method does not perform the locking function, even in Berkeley DB environments that are configured with a locking subsystem. Because this function does not access any database files, you can call it even when the environment has other threads of control attached and running

      Parameters:
        `config` - The LogVerifyConfig object which contains configurations for the log verification.

      Returns:
        If the verification succeeds, return 0; otherwise non-zero. Error, warning and report messages are written to the environment's error report destination.

    - #### startReplication

          public void startReplication(DatabaseEntry cdata,
                                       boolean master)
                                throws DatabaseException

      Configure the database environment as a client or master in a group of replicated database environments. This method is not called by most replication applications. It should only be called by Base API applications implementing their own network transport layer, explicitly holding replication group elections and handling replication messages outside of the Replication Manager framework.

      Replication master environments are the only database environments where replicated databases may be modified. Replication client environments are read-only as long as they are clients. Replication client environments may be upgraded to be replication master environments in the case that the current master fails or there is no master present. If master leases are in use, this method cannot be used to appoint a master, and should only be used to configure a database environment as a master as the result of an election.

      The enclosing database environment must already have been configured to send replication messages by calling `EnvironmentConfig.setReplicationTransport`.

      Parameters:
        `cdata` - An opaque data item that is sent over the communication infrastructure when the client or master comes online. If no such information is useful, cdata should be null.

        `master` - Configure the environment as a replication master. If false, the environment will be configured as as a replication client.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### electReplicationMaster

          public void electReplicationMaster(int nsites,
                                             int nvotes)
                                      throws DatabaseException

      Hold an election for the master of a replication group. This method is not called by most replication applications. It should only be called by Base API applications implementing their own network transport layer, explicitly holding replication group elections and handling replication messages outside of the Replication Manager framework.

      If the election is successful, the new master's ID may be the ID of the previous master, or the ID of the current environment. The application is responsible for adjusting its usage of the other environments in the replication group, including directing all database updates to the newly selected master, in accordance with the results of this election.

      The thread of control that calls this method must not be the thread of control that processes incoming messages; processing the incoming messages is necessary to successfully complete an election.

      Before calling this method do the following:

      - open the database environment.
      - configure the database environment to send replication messages.
      - configure the database environment as a client or a master.

      ### How Elections are Held

      Elections are done in two parts: first, replication sites collect information from the other replication sites they know about, and second, replication sites cast their votes for a new master. The second phase is triggered by one of two things: either the replication site gets election information from nsites sites, or the election timeout expires. Once the second phase is triggered, the replication site will cast a vote for the new master of its choice if, and only if, the site has election information from at least nvotes sites. If a site receives nvotes votes for it to become the new master, then it will become the new master. We recommend nvotes be set to at least:

      (sites participating in the election / 2) + 1

      to ensure there are never more than two masters active at the same time even in the case of a network partition. When a network partitions, the side of the partition with more than half the environments will elect a new master and continue, while the environments communicating with fewer than half of the environments will fail to find a new master, as no site can get nvotes votes. We recommend nsites be set to:

      number of sites in the replication group - 1

      when choosing a new master after a current master fails. This allows the group to reach a consensus without having to wait for the timeout to expire.

      When choosing a master from among a group of client sites all restarting at the same time, it makes more sense to set nsites to the total number of sites in the group, since there is no known missing site. Furthermore, in order to ensure the best choice from among sites that may take longer to boot than the local site, setting nvotes also to this same total number of sites will guarantee that every site in the group is considered. Alternatively, using the special timeout for full elections allows full participation on restart but allows election of a master if one site does not reboot and rejoin the group in a reasonable amount of time. (See the Elections section in the Berkeley DB Programmer's Reference Guide for more information.)

      Setting nsites to lower values can increase the speed of an election, but can also result in election failure, and is usually not recommended.

      Parameters:
        `nsites` - The number of environments that the application believes are in the replication group. This number is used by Berkeley DB to avoid having two masters active simultaneously, even in the case of a network partition. During an election, a new master cannot be elected unless more than half of nsites agree on the new master. Thus, in the face of a network partition, the side of the partition with more than half the environments will elect a new master and continue, while the environments communicating with fewer than half the other environments will fail to find a new master.

        `nvotes` - The number of votes required by the application to successfully elect a new master. It must be a positive integer, no greater than nsites, or 0 if the election should use a simple majority of the nsites value as the requirement. A warning is given if half or fewer votes are required to win an election as that can potentially lead to multiple masters in the face of a network partition.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### flushReplication

          public void flushReplication()
                                throws DatabaseException

      Internal method: re-push the last log record to all clients, in case they've lost messages and don't know it.

      This method may not be called before the database environment is opened.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### processReplicationMessage

          public ReplicationStatus processReplicationMessage(DatabaseEntry control,
                                                             DatabaseEntry rec,
                                                             int envid)
                                                      throws DatabaseException

      Process an incoming replication message sent by a member of the replication group to the local database environment. This method is not called by most replication applications. It should only be called by Base API applications implementing their own network transport layer, explicitly holding replication group elections and handling replication messages outside of the Replication Manager framework.

      For implementation reasons, all incoming replication messages must be processed using the same `Environment` handle. It is not required that a single thread of control process all messages, only that all threads of control processing messages use the same handle.

      Before calling this method, the enclosing database environment must already have been opened and must already have been configured to send replication messages.

      Parameters:
        `control` - A copy of the control parameter specified by Berkeley DB on the sending environment.

        `envid` - The local identifier that corresponds to the environment that sent the message to be processed.

        `rec` - A copy of the rec parameter specified by Berkeley DB on the sending environment.

      Returns:
        A `ReplicationStatus` object.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### setReplicationConfig

          public void setReplicationConfig(ReplicationConfig config,
                                           boolean onoff)
                                    throws DatabaseException

      Configure the replication subsystem.

      The database environment's replication subsystem 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 "rep_set_config", one or more whitespace characters, and the method configuration parameter as a string; for example, "rep_set_config REP_CONF_NOWAIT". Because the DB_CONFIG file is read when the database environment is opened, it will silently overrule configuration done before that time.

      This method configures a database environment, including all threads of control accessing the database environment, not only the operations performed using a specified `Environment` handle.

      This method may be called at any time during the life of the application.

      Parameters:
        `config` - A replication feature to be configured.
        `onoff` - If true, the feature is enabled, otherwise it is disabled.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getReplicationConfig

          public boolean getReplicationConfig(ReplicationConfig config)
                                       throws DatabaseException

      Get the configuration of the replication subsystem. This method may be called at any time during the life of the application.
      Parameters:
        `config` - the feature to be checked
      Returns:
        Whether the specified feature is enabled or disabled.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getReplicationNumSites

          public int getReplicationNumSites()
                                     throws DatabaseException

      Get the number of sites in a replication group. Applications using the replication manager API may only call this method after replication has been started.
      Returns:
        The number of sites in the replication group
      Throws:
        `DatabaseException` - if a failure occurs

    - #### setReplicationTimeout

          public void setReplicationTimeout(ReplicationTimeoutType type,
                                            int replicationTimeout)
                                     throws DatabaseException

      Sets the timeout applied to the specified timeout type. This method may be called at any time during the life of the application.

      The database environment's replication subsystem may also be configured using the environment's DB_CONFIG file. The syntax of the entry in that file is a single line with the string "rep_set_timeout", one or more whitespace characters, and the which parameter specified as a string and the timeout specified as two parts. Because the DB_CONFIG file is read when the database environment is opened, it will silently overrule configuration done before that time.

      Parameters:
        `type` - The type of timeout to set.

        `replicationTimeout` - The time in microseconds of the desired timeout.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getReplicationTimeout

          public int getReplicationTimeout(ReplicationTimeoutType type)
                                    throws DatabaseException

      Gets the timeout applied to the specified timeout type.
      Parameters:
        `type` - The type of timeout to retrieve.

      Returns:
        The timeout applied to the specified timout type, in microseconds.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### syncReplication

          public void syncReplication()
                               throws DatabaseException

      Forces master synchronization to begin for this client. This method is the other half of setting `ReplicationConfig.DELAYCLIENT` with `setReplicationConfig(com.sleepycat.db.ReplicationConfig, boolean)`.

      When a new master is elected and the application has configured delayed synchronization, the application must choose when to perform synchronization by using this method. Otherwise the client will remain unsynchronized and will ignore all new incoming log messages. This method may be called any time after the client application learns that the new master has been established.

      Before calling this method, the enclosing database environment must already have been opened and must already have been configured to send replication messages.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### replicationManagerStart

          public void replicationManagerStart(int nthreads,
                                              ReplicationManagerStartPolicy policy)
                                       throws DatabaseException

      Starts the replication manager.

      The replication manager is implemented inside the Berkeley DB library, it is designed to manage a replication group. This includes network transport, all replication message processing and acknowledgment, and group elections.

      For more information on building replication manager applications, please see the "Replication Manager Getting Started Guide" included in the Berkeley DB documentation.

      This method may not be called before the database environment is opened.

      Parameters:
        `nthreads` - Specify the number of threads of control created and dedicated to processing replication messages. In addition to these message processing threads, the replication manager creates and manages a few of its own threads of control.

        `policy` - The policy defines the startup characteristics of a replication group. See `ReplicationManagerStartPolicy` for more information.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getReplicationManagerLocalSite

          public ReplicationManagerSite getReplicationManagerLocalSite()
                                                                throws DatabaseException

      Return a handle for the local replication site.
      Returns:
        a handle for the local replication site
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getReplicationManagerSiteList

          public ReplicationManagerSiteInfo[] getReplicationManagerSiteList()
                                                                     throws DatabaseException

      Return an array of all the sites known to the replication manager. This method may only be called after replication has been started using the `replicationManagerStart` method.
      Returns:
        an array of all the sites known to the replication manager
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getReplicationManagerSite

          public ReplicationManagerSite getReplicationManagerSite(int eid)
                                                           throws DatabaseException

      Return a site known to the replication manager by its eid.

      Parameters:
        `eid` - the site's environment id
      Returns:
        a replication site
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getReplicationManagerSite

          public ReplicationManagerSite getReplicationManagerSite(java.lang.String host,
                                                                  long port)
                                                           throws DatabaseException

      Return a site in the replication manager by its host and port.

      Parameters:
        `host` - the site's host name
        `port` - the site's port
      Returns:
        a replication site
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### openChannel

          public ReplicationChannel openChannel(int eid)
                                         throws DatabaseException

      Create a channel.

      Parameters:
        `eid` - the environment id of a remote site
      Returns:
        a replication channel
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### setReplicationManagerMessageDispatch

          public void setReplicationManagerMessageDispatch(ReplicationManagerMessageDispatch dispatch,
                                                           int flags)
                                                    throws DatabaseException

      Set the message dispatch function.

      Parameters:
        `dispatch` - Application-specific function used to handle messages sent over Replication Manager message channels.
        `flags` - This flag is DB_REPMGR_NEED_RESPONSE if the message requires a response. Otherwise, it is 0.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getCacheStats

          public CacheStats getCacheStats(StatsConfig config)
                                   throws DatabaseException

      Returns the memory pool (that is, the buffer cache) subsystem statistics.

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        the memory pool (that is, the buffer cache) subsystem statistics.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getCacheFileStats

          public CacheFileStats[] getCacheFileStats(StatsConfig config)
                                             throws DatabaseException

      Return statistics for individual files in the cache.

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        statistics for individual files in the cache.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getLogStats

          public LogStats getLogStats(StatsConfig config)
                               throws DatabaseException

      Return the database environment's logging statistics.

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        The database environment's logging statistics.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getReplicationStats

          public ReplicationStats getReplicationStats(StatsConfig config)
                                               throws DatabaseException

      Return the database environment's replication statistics.

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        The database environment's replication statistics.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getReplicationManagerStats

          public ReplicationManagerStats getReplicationManagerStats(StatsConfig config)
                                                             throws DatabaseException

      Return the database environment's replication manager statistics.

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        The database environment's replication manager statistics.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getLockStats

          public LockStats getLockStats(StatsConfig config)
                                 throws DatabaseException

      Return the database environment's locking statistics.

      Parameters:
        `config` - The locking statistics attributes. If null, default attributes are used.

      Returns:
        The database environment's locking statistics.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getMutexStats

          public MutexStats getMutexStats(StatsConfig config)
                                   throws DatabaseException

      Return the database environment's mutex statistics.

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        The database environment's mutex statistics.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getTransactionStats

          public TransactionStats getTransactionStats(StatsConfig config)
                                               throws DatabaseException

      Return the database environment's transactional statistics.

      Parameters:
        `config` - The transactional statistics attributes. If null, default attributes are used.

      Returns:
        The database environment's transactional statistics.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### printMempStats

          public int printMempStats(StatsConfig config)
                             throws DatabaseException

      Print the cache subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        A non-zero error value on failure and 0 on success.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### printLogStats

          public int printLogStats(StatsConfig config)
                            throws DatabaseException

      Print the logging subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        A non-zero error value on failure and 0 on success.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### printReplicationStats

          public int printReplicationStats(StatsConfig config)
                                    throws DatabaseException

      Print the replication subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        A non-zero error value on failure and 0 on success.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### printReplicationManagerStats

          public int printReplicationManagerStats(StatsConfig config)
                                           throws DatabaseException

      Print the Replication Manager subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        A non-zero error value on failure and 0 on success.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### printLockStats

          public int printLockStats(StatsConfig config)
                             throws DatabaseException

      Print the locking subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        A non-zero error value on failure and 0 on success.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### printMutexStats

          public int printMutexStats(StatsConfig config)
                              throws DatabaseException

      Print the mutex subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        A non-zero error value on failure and 0 on success.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### printStats

          public int printStats(StatsConfig config)
                         throws DatabaseException

      Print environment statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        A non-zero error value on failure and 0 on success.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### printTransactionStats

          public int printTransactionStats(StatsConfig config)
                                    throws DatabaseException

      Print the transaction subsystem statistical information to a specified output channel (see the setMsgfile() method for more information), or passed to an application callback function (see the setMsgcall() method for more information).

      Parameters:
        `config` - The statistics attributes. If null, default attributes are used.

      Returns:
        A non-zero error value on failure and 0 on success.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### beginCDSGroup

          public Transaction beginCDSGroup()
                                    throws DatabaseException

      Allocate a locker ID in an environment configured for Berkeley DB Concurrent Data Store applications. Returns a `Transaction` object that uniquely identifies the locker ID. Calling the `Transaction.commit()` method will discard the allocated locker ID.

      See Berkeley DB Concurrent Data Store applications for more information about when this is required. This method may be called at any time during the life of the application.

      Returns:
        A transaction handle that wraps a CDS locker ID.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### beginTransaction

          public Transaction beginTransaction(Transaction parent,
                                              TransactionConfig config)
                                       throws DatabaseException

      Create a new transaction in the database environment.

      Transactions may only span threads if they do so serially; that is, each transaction must be active in only a single thread of control at a time.

      This restriction holds for parents of nested transactions as well; no two children may be concurrently active in more than one thread of control at any one time.

      Cursors may not span transactions; that is, each cursor must be opened and closed within a single transaction.

      A parent transaction may not issue any Berkeley DB operations -- except for `Environment.beginTransaction`, `Transaction.abort` and `Transaction.commit` -- while it has active child transactions (child transactions that have not yet been committed or aborted).

      Parameters:
        `parent` - If the parent parameter is non-null, the new transaction will be a nested transaction, with the transaction indicated by parent as its parent. Transactions may be nested to any level. In the presence of distributed transactions and two-phase commit, only the parental transaction, that is a transaction without a parent specified, should be passed as an parameter to `Transaction.prepare`.

        `config` - The transaction attributes. If null, default attributes are used.

      Returns:
        The newly created transaction's handle.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### checkpoint

          public void checkpoint(CheckpointConfig config)
                          throws DatabaseException

      Synchronously checkpoint the database environment.

      Parameters:
        `config` - The checkpoint attributes. If null, default attributes are used.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### logFlush

          public void logFlush(LogSequenceNumber lsn)
                        throws DatabaseException

      Flush log records to stable storage.

      Parameters:
        `lsn` - All log records with LogSequenceNumber values less than or equal to the lsn parameter are written to stable storage. If lsn is null, all records in the log are flushed.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### logPut

          public LogSequenceNumber logPut(DatabaseEntry data,
                                          boolean flush)
                                   throws DatabaseException

      Append a record to the log.

      Parameters:
        `data` - The record to append to the log.

        The caller is responsible for providing any necessary structure to data. (For example, in a write-ahead logging protocol, the application must understand what part of data is an operation code, what part is redo information, and what part is undo information. In addition, most transaction managers will store in data the LogSequenceNumber of the previous log record for the same transaction, to support chaining back through the transaction's log records during undo.)

        `flush` - The log is forced to disk after this record is written, guaranteeing that all records with LogSequenceNumber values less than or equal to the one being "put" are on disk before this method returns.

      Returns:
        The LogSequenceNumber of the put record.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### logPrint

          public void logPrint(Transaction txn,
                               java.lang.String message)
                        throws DatabaseException

      Append an informational message to the Berkeley DB database environment log files.

      This method allows applications to include information in the database environment log files, for later review using the db_printlog utility. This method is intended for debugging and performance tuning.

      Parameters:
        `txn` - If the logged message refers to an application-specified transaction, the `txn` parameter is a transaction handle, otherwise `null`.

        `message` - the message

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getArchiveLogFiles

          public java.io.File[] getArchiveLogFiles(boolean includeInUse)
                                            throws DatabaseException

      Return an array of log files.

      When Replication Manager is in use, log archiving is performed in a replication group-aware manner such that the log file status of other sites in the group is considered to determine if a log file is in use.

      Log cursor handles (returned by the `openLogCursor() method` may have open file descriptors for log files in the database environment. Also, the Berkeley DB interfaces to the database environment logging subsystem (for example, `logPut` and `Transaction.abort` may allocate log cursors and have open file descriptors for log files as well. On operating systems where filesystem related system calls (for example, rename and unlink on Windows/NT) can fail if a process has an open file descriptor for the affected file, attempting to move or remove returned log files may fail. All Berkeley DB internal use of log cursors operates on active log files only and furthermore, is short-lived in nature. So, an application seeing such a failure should be restructured to close any open log cursors it may have, and otherwise to retry the operation until it succeeds. (Although the latter is not likely to be necessary; it is hard to imagine a reason to move or rename a log file in which transactions are being logged or aborted.)

      See db_archive for more information on database archival procedures.

      Parameters:
        `includeInUse` - if true, all log files, regardless of whether or not they are in use, are returned. Otherwise, the log files that are no longer in use (for example, that are no longer involved in active transactions), and that may safely be archived for catastrophic recovery and then removed from the system.

      Returns:
        An array of log files
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getArchiveDatabases

          public java.io.File[] getArchiveDatabases()
                                             throws DatabaseException

      Return the database files that need to be archived in order to recover the database from catastrophic failure. If any of the database files have not been accessed during the lifetime of the current log files, they will not be returned. It is also possible that some of the files referred to by the log have since been deleted from the system.

      When Replication Manager is in use, log archiving is performed in a replication group-aware manner such that the log file status of other sites in the group is considered to determine if a log file is in use.

      See db_archive for more information on database archival procedures.

      Returns:
        An array of database files
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### removeOldLogFiles

          public void removeOldLogFiles()
                                 throws DatabaseException

      Remove log files that are no longer needed.

      Automatic log file removal is likely to make catastrophic recovery impossible.

      When Replication Manager is in use, log archiving is performed in a replication group-aware manner such that the log file status of other sites in the group is considered to determine if a log file is in use.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### recover

          public PreparedTransaction[] recover(int count,
                                               boolean continued)
                                        throws DatabaseException

      Environment recovery restores transactions that were prepared, but not yet resolved at the time of the system shut down or crash, to their state prior to the shut down or crash, including any locks previously held. This method returns a list of those prepared transactions.

      This method should only be called after the environment has been recovered.

      Multiple threads of control may call this method, but only one thread of control may resolve each returned transaction, that is, only one thread of control may call `Transaction.commit()` or `Transaction.abort()` each returned transaction. Callers must call `Transaction.discard()` to discard each transaction they do not resolve.

      Parameters:
        `count` - the number of transactions returned
        `continued` - if set to false, return the first count number of transactions; if set to true, continue to return the next count number of transactions
      Returns:
        a list of `transactions` that must be resolved by the application (committed, aborted or discarded).
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### resetFileID

          public void resetFileID(java.lang.String filename,
                                  boolean encrypted)
                           throws DatabaseException

      Allows database files to be copied, and then the copy used in the same database environment as the original.

      All databases contain an ID string used to identify the database in the database environment cache. If a physical database file is copied, and used in the same environment as another file with the same ID strings, corruption can occur. This method creates new ID strings for all of the databases in the physical file.

      This method modifies the physical file, in-place. Applications should not reset IDs in files that are currently in use.

      This method may be called at any time during the life of the application.

      Parameters:
        `filename` - The name of the physical file in which the LSNs are to be cleared.
        `encrypted` - Whether the file contains encrypted databases.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### resetLogSequenceNumber

          public void resetLogSequenceNumber(java.lang.String filename,
                                             boolean encrypted)
                                      throws DatabaseException

      Allows database files to be moved from one transactional database environment to another.

      Database pages in transactional database environments contain references to the environment's log files (that is, log sequence numbers, or LSNs). Copying or moving a database file from one database environment to another, and then modifying it, can result in data corruption if the LSNs are not first cleared.

      Note that LSNs should be reset before moving or copying the database file into a new database environment, rather than moving or copying the database file and then resetting the LSNs. Berkeley DB has consistency checks that may be triggered if an application calls this method on a database in a new environment when the database LSNs still reflect the old environment.

      This method modifies the physical file, in-place. Applications should not reset LSNs in files that are currently in use.

      This method may be called at any time during the life of the application.

      Parameters:
        `filename` - The name of the physical file in which the LSNs are to be cleared.
        `encrypted` - Whether the file contains encrypted databases.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### panic

          public void panic(boolean onoff)
                     throws DatabaseException

      Set the panic state for the database environment. Database environments in a panic state normally refuse all attempts to call library functions, throwing a `RunRecoveryException`.

      This method configures a database environment, including all threads of control accessing the database environment, not only the operations performed using a specified `Environment` handle.

      This method may be called at any time during the life of the application.

      Parameters:
        `onoff` - If true, set the panic state for the database environment.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### backup

          public void backup(java.lang.String target,
                             BackupOptions opt)
                      throws DatabaseException

      Perform a hot back up of the open environment.

      All files used by the environment are backed up, so long as the normal rules for file placement are followed. For information on how files are normally placed relative to the environment directory, see the Berkeley DB File Naming section in the Berkeley DB Reference Guide.

      By default, data directories and the log directory specified relative to the home directory will be recreated relative to the target directory. If absolute path names are used, then use the `BackupOptions.setSingleDir` method.

      This method provides the same functionality as the db_hotbackup utility. However, this method does not perform the housekeeping actions performed by that utility. In particular, you may want to run a checkpoint before calling this method. To run a checkpoint, use the `Environment.checkpoint` method. For more information on checkpoints, see the Checkpoint section in the Berkeley DB Reference Guide.

      To back up a single database file within the environment, use the `Environment.backupDatabase` method.

      In addition to the configuration options available using the `BackupOptions` class, additional tuning modifications can be made using the `EnvironmentConfig.setBackupReadCount`, `EnvironmentConfig.setBackupReadSleep`, `EnvironmentConfig.setBackupSize`, and `EnvironmentConfig.setBackupWriteDirect` methods. Alternatively, you can write your own custom hot back up facility using the `BackupHandler` interface.

      This method may only be called after the environment has been opened.

      Parameters:
        `target` - Identifies the directory in which the back up will be placed. Any subdirectories required to contain the back up must be placed relative to this directory. Note that if a `BackupHandler` is configured for the environment, then the value specified to this parameter is passed on to the `BackupHandler.open` method. If this parameter is null, then the target must be specified to the `BackupHandler.open` method.

        This directory, and any required subdirectories, will be created for you if you specify true for the `BackupOptions.setAllowCreate` method. Otherwise, if the target does not exist, this method throws a `DatabaseException` exception.

        `opt` - The `BackupOptions` instance used to configure the hot back up.

      Throws:
        `DatabaseException` - if a failure occurs at any point during the back up.

    - #### backupDatabase

          public void backupDatabase(java.lang.String dbfile,
                                     java.lang.String target,
                                     boolean exclusiveCreate)
                              throws DatabaseException

      Perform a hot back up of a single database file contained within the environment.

      To back up the entire environment, use the `Environment.backup` method.

      You can make some tuning modifications to the backup process using the `EnvironmentConfig.setBackupReadCount`, `EnvironmentConfig.setBackupReadSleep`, `EnvironmentConfig.setBackupSize`, and `EnvironmentConfig.setBackupWriteDirect` methods. Alternatively, you can write your own custom hot back up facility using the `BackupHandler` interface.

      This method may only be called after the environment has been opened.

      Parameters:
        `dbfile` - The database file that you want to back up.

        `target` - Identifies the directory in which the back up will be placed. The target must exist; otherwise this method throws a `DatabaseException` exception. Note that if a `BackupHandler` is configured for the environment, then the value specified to this parameter is passed on to the `BackupHandler.open` method. If this parameter is null, then the target must be specified to the `BackupHandler.open` method.

        `exclusiveCreate` - If true, then if the target file exists, this method throws a `DatabaseException` exception.

      Throws:
        `DatabaseException` - if a failure occurs at any point during the back up.

    - #### getVersionString

          public static java.lang.String getVersionString()

      Return the release version information, suitable for display.

      This method may be called at any time during the life of the application.

      Returns:
        The release version information, suitable for display.

    - #### getVersionFullString

          public static java.lang.String getVersionFullString()

      Return the full release version information, suitable for display.

      This method may be called at any time during the life of the application.

      Returns:
        The full release version information, suitable for display.

    - #### getVersionFamily

          public static int getVersionFamily()

      Return the release's Oracle family number.

      This method may be called at any time during the life of the application.

      Returns:
        The release's Oracle family number.

    - #### getVersionRelease

          public static int getVersionRelease()

      Return the release's Oracle release number.

      This method may be called at any time during the life of the application.

      Returns:
        The release's Oracle release number.

    - #### getVersionMajor

          public static int getVersionMajor()

      Return the release major number.

      This method may be called at any time during the life of the application.

      Returns:
        The release major number.

    - #### syncCache

          public void syncCache(LogSequenceNumber logSequenceNumber)
                         throws DatabaseException

      Ensure that all modified pages in the cache are flushed to their backing files.

      Pages in the cache that cannot be immediately written back to disk (for example pages that are currently in use by another thread of control) are waited for and written to disk as soon as it is possible to do so.

      Parameters:
        `logSequenceNumber` - The purpose of the logSequenceNumber parameter is to enable a transaction manager to ensure, as part of a checkpoint, that all pages modified by a certain time have been written to disk.

        All modified pages with a log sequence number less than the logSequenceNumber parameter are written to disk. If logSequenceNumber is null, all modified pages in the cache are written to disk.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### isTransactionApplied

          public TransactionStatus isTransactionApplied(byte[] token,
                                                        int maxwait)
                                                 throws DatabaseException

      Return whether the transaction referred to by the commit token "token" has been applied at the local replication environment.

      This method may not be called before the database environment is opened.

      Parameters:
        `token` - the commit token

        `maxwait` - The maximum time to wait for the transaction to arrive by replication, expressed in microseconds. To check the status of the transaction without waiting, the timeout may be specified as 0.

      Returns:
        TransactionStatus indicating the status of the applicaton of the transaction.
      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getVersionMinor

          public static int getVersionMinor()

      Return the release minor number.

      This method may be called at any time during the life of the application.

      Returns:
        The release minor number.

    - #### getVersionPatch

          public static int getVersionPatch()

      Return the release patch number.

      This method may be called at any time during the life of the application.

      Returns:
        The release patch number.

    - #### setBlobThreshold

          public void setBlobThreshold(int value)
                                throws DatabaseException

      Deprecated. Replaced with `setExternalFileThreshold(int)`.
      Parameters:
        `value` - The external file threshold size.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### setExternalFileThreshold

          public void setExternalFileThreshold(int value)
                                        throws DatabaseException

      Set the external file threshold size.

      Parameters:
        `value` - The external file threshold size.

        Any data item that is equal to or larger in size than the threshold value will automatically be stored as an external file.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### setMsgfile

          public void setMsgfile(java.io.File file)
                          throws DatabaseException

      Sets the path of a file to store statistical information.

      Parameters:
        `file` - The path of a file to store statistical information.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getSliceCount

          public int getSliceCount()
                            throws DatabaseException

      Get the number of slices in the environment.

      Returns the number of slice environments configured for this environment.

      Returns:
        The number of slice environments.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### getSlices

          public Environment[] getSlices()
                                  throws DatabaseException

      Gets the Environment handles for the underlying slice environments.

      Returns:
        An array of the Environment handles. There is one handle for each slice.

      Throws:
        `DatabaseException` - if a failure occurs.

    - #### slices_enabled

          public static boolean slices_enabled()
                                        throws DatabaseException

      Throws:
        `DatabaseException`

Copyright (c) 1996, 2017 Oracle and/or its affiliates. All rights reserved.