mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 17:16:25 +00:00
226 lines
10 KiB
HTML
226 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>DB_ENV->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 DB_ENV Handle" />
|
||
<link rel="prev" href="envbackup.html" title="DB_ENV->backup()" />
|
||
<link rel="next" href="envcreate.html" title="db_env_create" />
|
||
</head>
|
||
<body>
|
||
<div xmlns="" class="navheader">
|
||
<div class="libver">
|
||
<p>Library Version 11.2.5.3</p>
|
||
</div>
|
||
<table width="100%" summary="Navigation header">
|
||
<tr>
|
||
<th colspan="3" align="center">DB_ENV->close()</th>
|
||
</tr>
|
||
<tr>
|
||
<td width="20%" align="left"><a accesskey="p" href="envbackup.html">Prev</a> </td>
|
||
<th width="60%" align="center">Chapter 5.
|
||
The DB_ENV 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>DB_ENV->close()</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<pre class="programlisting">#include <db.h>
|
||
|
||
int
|
||
DB_ENV->close(DB_ENV *dbenv, u_int32_t flags); </pre>
|
||
<p>
|
||
The <code class="methodname">DB_ENV->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">DB_ENV->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 DBcursor Handle">DBcursor</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">DB_ENV->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">DB_ENV->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 DB_ENV Handle">DB_ENV</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 12. The DB_TXN Handle">DB_TXN</a>,
|
||
<a class="link" href="logc.html" title="The DB_LOGC Handle">DB_LOGC</a> and
|
||
<a class="link" href="memp.html" title="Chapter 8. The DB_MPOOLFILE Handle">DB_MPOOLFILE</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">DB_ENV->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="DB_ENV->lock_vec()">DB_ENV->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">DB_ENV->close()</code> implies calls to
|
||
<a class="xref" href="mempfclose.html" title="DB_MPOOLFILE->close()">DB_MPOOLFILE->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="DB_MPOOLFILE->open()">DB_MPOOLFILE->open()</a>. It does
|
||
not imply a call to <a class="xref" href="mempfsync.html" title="DB_MPOOLFILE->sync()">DB_MPOOLFILE->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">DB_ENV->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">DB_ENV->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="DB_ENV->log_cursor()">DB_ENV->log_cursor()</a> method,
|
||
calling <code class="methodname">DB_ENV->close()</code> does not imply
|
||
closing those cursors.
|
||
</p>
|
||
<p>
|
||
In multithreaded applications, only a single thread may call the
|
||
<code class="methodname">DB_ENV->close()</code> method.
|
||
</p>
|
||
<p>
|
||
After <code class="methodname">DB_ENV->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">DB_ENV->close()</code> <span>
|
||
<span>
|
||
method returns a non-zero error value on failure and 0 on success.
|
||
</span>
|
||
|
||
</span>
|
||
</p>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h3 class="title"><a id="idp59246480"></a>Parameters</h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sect3" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h4 class="title"><a id="idp59210576"></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="idp59292768"></a>Class</h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
<a class="link" href="env.html" title="Chapter 5. The DB_ENV Handle">DB_ENV</a>
|
||
</p>
|
||
</div>
|
||
<div class="sect2" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h3 class="title"><a id="idp59287912"></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="envbackup.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">DB_ENV->backup() </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="h" href="index.html">Home</a>
|
||
</td>
|
||
<td width="40%" align="right" valign="top"> db_env_create</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</body>
|
||
</html>
|