mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-17 01:26:25 +00:00
228 lines
10 KiB
HTML
228 lines
10 KiB
HTML
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|||
|
<head>
|
|||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|||
|
<title>DbEnv::close()</title>
|
|||
|
<link rel="stylesheet" href="apiReference.css" type="text/css" />
|
|||
|
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
|
|||
|
<link rel="start" href="index.html" title="Berkeley DB C++ API Reference" />
|
|||
|
<link rel="up" href="env.html" title="Chapter 5. The DbEnv Handle" />
|
|||
|
<link rel="prev" href="envadd_data_dir.html" title="DbEnv::add_data_dir()" />
|
|||
|
<link rel="next" href="envcreate.html" title="DbEnv" />
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<div xmlns="" class="navheader">
|
|||
|
<div class="libver">
|
|||
|
<p>Library Version 11.2.5.2</p>
|
|||
|
</div>
|
|||
|
<table width="100%" summary="Navigation header">
|
|||
|
<tr>
|
|||
|
<th colspan="3" align="center">DbEnv::close()</th>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td width="20%" align="left"><a accesskey="p" href="envadd_data_dir.html">Prev</a> </td>
|
|||
|
<th width="60%" align="center">Chapter 5.
|
|||
|
The DbEnv Handle
|
|||
|
</th>
|
|||
|
<td width="20%" align="right"> <a accesskey="n" href="envcreate.html">Next</a></td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<hr />
|
|||
|
</div>
|
|||
|
<div class="sect1" lang="en" xml:lang="en">
|
|||
|
<div class="titlepage">
|
|||
|
<div>
|
|||
|
<div>
|
|||
|
<h2 class="title" style="clear: both"><a id="envclose"></a>DbEnv::close()</h2>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<pre class="programlisting">#include <db_cxx.h>
|
|||
|
|
|||
|
DbEnv::close(u_int32_t flags);</pre>
|
|||
|
<p>
|
|||
|
The <code class="methodname">DbEnv::close()</code> method closes the
|
|||
|
Berkeley DB environment, freeing any allocated resources and
|
|||
|
closing all database handles opened with this environment handle,
|
|||
|
as well as closing any underlying subsystems.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
When you call the <code class="methodname">DbEnv::close()</code> method,
|
|||
|
all open <a class="link" href="db.html" title="Chapter 2. The Db Handle">Db</a> handles and
|
|||
|
<a class="link" href="dbc.html" title="Chapter 3. The Dbc Handle">Dbc</a> handles are closed
|
|||
|
automatically by this function. And, when you close a database
|
|||
|
handle, all cursors opened with it are closed automatically.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
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 the
|
|||
|
<code class="methodname">DbEnv::close()</code> method, by default, the
|
|||
|
database is not synchronized and is similar to calling the
|
|||
|
<code class="methodname">Db::close(DB_NOSYNC)</code> method. This is to
|
|||
|
avoid unncessary database synchronization when there are multiple
|
|||
|
environment handles open. To ensure all open database handles are
|
|||
|
synchronized when you close the last environment handle, set the
|
|||
|
flag parameter value of the <code class="methodname">DbEnv::close()</code>
|
|||
|
method to DB_FORCESYNC. This is similar to calling the
|
|||
|
<code class="methodname">Db::close(0)</code> method to close each database
|
|||
|
handle.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
If a database close operation fails, the method returns a non-zero
|
|||
|
error value for the first instance of such an error, and continues
|
|||
|
to close the rest of the database and environment handles.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
The <a class="link" href="env.html" title="Chapter 5. The DbEnv Handle">DbEnv</a> 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 the
|
|||
|
<a class="link" href="txn.html" title="Chapter 13. The DbTxn Handle">DbTxn</a>,
|
|||
|
<a class="link" href="logc.html" title="The DbLogc Handle">DbLogc</a> and
|
|||
|
<a class="link" href="memp.html" title="Chapter 9. The DbMpoolFile Handle">DbMpoolFile</a> handles.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
Where the environment was initialized with the
|
|||
|
<a class="link" href="envopen.html#envopen_DB_INIT_LOCK">DB_INIT_LOCK</a> flag,
|
|||
|
calling <code class="methodname">DbEnv::close()</code> does not release any locks still held by the
|
|||
|
closing process, providing functionality for long-lived locks.
|
|||
|
Processes that want to have all their locks released can do so by
|
|||
|
issuing the appropriate <a class="xref" href="lockvec.html" title="DbEnv::lock_vec()">DbEnv::lock_vec()</a> call.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
Where the environment was initialized with the
|
|||
|
<a class="link" href="envopen.html#envopen_DB_INIT_MPOOL">DB_INIT_MPOOL</a> flag,
|
|||
|
calling <code class="methodname">DbEnv::close()</code> implies calls to
|
|||
|
<a class="xref" href="mempfclose.html" title="DbMpoolFile::close()">DbMpoolFile::close()</a> for any
|
|||
|
remaining open files in the memory pool that were returned to this
|
|||
|
process by calls to <a class="xref" href="mempfopen.html" title="DbMpoolFile::open()">DbMpoolFile::open()</a>. It does
|
|||
|
not imply a call to <a class="xref" href="mempfsync.html" title="DbMpoolFile::sync()">DbMpoolFile::sync()</a> for those
|
|||
|
files.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
Where the environment was initialized with the
|
|||
|
<a class="link" href="envopen.html#envopen_DB_INIT_TXN">DB_INIT_TXN</a>
|
|||
|
flag, calling <code class="methodname">DbEnv::close()</code> aborts any
|
|||
|
unresolved transactions. Applications should not depend on this
|
|||
|
behavior for transactions involving Berkeley DB 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 calling <code class="methodname">DbEnv::close()</code>, it will not
|
|||
|
be possible to abort the transaction, and recovery will have to be
|
|||
|
run on the Berkeley DB environment before further operations are
|
|||
|
done.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
Where log cursors were created using the
|
|||
|
<a class="xref" href="logcursor.html" title="DbEnv::log_cursor()">DbEnv::log_cursor()</a> method,
|
|||
|
calling <code class="methodname">DbEnv::close()</code> does not imply
|
|||
|
closing those cursors.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
In multithreaded applications, only a single thread may call the
|
|||
|
<code class="methodname">DbEnv::close()</code> method.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
After <code class="methodname">DbEnv::close()</code> has been called,
|
|||
|
regardless of its return, the Berkeley DB environment handle may
|
|||
|
not be accessed again.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
The <code class="methodname">DbEnv::close()</code> <span>
|
|||
|
|
|||
|
<span>
|
|||
|
method either returns a non-zero error value or throws an
|
|||
|
exception that encapsulates a non-zero error value on
|
|||
|
failure, and returns 0 on success.
|
|||
|
</span>
|
|||
|
</span>
|
|||
|
</p>
|
|||
|
<div class="sect2" lang="en" xml:lang="en">
|
|||
|
<div class="titlepage">
|
|||
|
<div>
|
|||
|
<div>
|
|||
|
<h3 class="title"><a id="id3612113"></a>Parameters</h3>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="sect3" lang="en" xml:lang="en">
|
|||
|
<div class="titlepage">
|
|||
|
<div>
|
|||
|
<div>
|
|||
|
<h4 class="title"><a id="id3612116"></a>flags</h4>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<p>
|
|||
|
The <span class="bold"><strong>flags</strong></span> parameter must be set to 0
|
|||
|
or be set to the following value:
|
|||
|
</p>
|
|||
|
<div class="itemizedlist">
|
|||
|
<ul type="disc">
|
|||
|
<li>
|
|||
|
<p><a id="dbenvclose_DB_FORCESYNC"></a>
|
|||
|
<code class="literal">DB_FORCESYNC</code>
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
When closing each database handle internally,
|
|||
|
synchronize the database. If this flag is not
|
|||
|
specified, the database handle is closed without
|
|||
|
synchronizing the database.
|
|||
|
</p>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="sect2" lang="en" xml:lang="en">
|
|||
|
<div class="titlepage">
|
|||
|
<div>
|
|||
|
<div>
|
|||
|
<h3 class="title"><a id="id3612383"></a>Class</h3>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<p>
|
|||
|
<a class="link" href="env.html" title="Chapter 5. The DbEnv Handle">DbEnv</a>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
<div class="sect2" lang="en" xml:lang="en">
|
|||
|
<div class="titlepage">
|
|||
|
<div>
|
|||
|
<div>
|
|||
|
<h3 class="title"><a id="id3612314"></a>See Also</h3>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<p>
|
|||
|
<a class="xref" href="env.html#envlist" title="Database Environments and Related Methods">Database Environments and Related Methods</a>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="navfooter">
|
|||
|
<hr />
|
|||
|
<table width="100%" summary="Navigation footer">
|
|||
|
<tr>
|
|||
|
<td width="40%" align="left"><a accesskey="p" href="envadd_data_dir.html">Prev</a> </td>
|
|||
|
<td width="20%" align="center">
|
|||
|
<a accesskey="u" href="env.html">Up</a>
|
|||
|
</td>
|
|||
|
<td width="40%" align="right"> <a accesskey="n" href="envcreate.html">Next</a></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td width="40%" align="left" valign="top">DbEnv::add_data_dir() </td>
|
|||
|
<td width="20%" align="center">
|
|||
|
<a accesskey="h" href="index.html">Home</a>
|
|||
|
</td>
|
|||
|
<td width="40%" align="right" valign="top"> DbEnv</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
</div>
|
|||
|
</body>
|
|||
|
</html>
|