1<!--Copyright 1999,2008 Oracle.  All rights reserved.-->
2<html>
3<head>
4   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
5   <meta name="GENERATOR" content="Mozilla/4.75 [en] (X11; U; Linux 2.2.16-22 i686) [Netscape]">
6</head>
7<body>
8
9<h2>
10Environment Commands</h2>
11Environments provide a structure for creating a consistent environment
12for processes using one or more of the features of Berkeley DB.&nbsp; Unlike
13some of the database commands, the environment commands are very low level.
14<br>
15<hr WIDTH="100%">
16<p>The user may create and open a new DB environment&nbsp; by invoking:
17<p><b>> berkdb env</b>
18<br><b>&nbsp;&nbsp;&nbsp; [-cdb] [-cdb_alldb] [-lock] [-log] [-txn [nosync]]</b>
19<br><b>&nbsp;&nbsp;&nbsp; [-create] [-home<i> directory</i>] [-mode <i>mode</i>]</b>
20<br><b>&nbsp;&nbsp;&nbsp; [-data_dir <i>directory</i>] [-log_dir <i>directory</i>]
21[-tmp_dir <i>directory</i>]</b>
22<br><b>&nbsp;&nbsp;&nbsp; [-nommap] [-private] [-recover] [-recover_fatal]
23[-system_mem] [-errfile <i>filename</i>]</b>
24<br><b>&nbsp;&nbsp;&nbsp; [-use_environ] [-use_environ_root] [-verbose
25{<i>which </i>on|off}]</b>
26<br><b>&nbsp;&nbsp;&nbsp; [-region_init]</b>
27<br><b>&nbsp;&nbsp;&nbsp; [-cachesize {<i>gbytes bytes ncaches</i>}]</b>
28<br><b>&nbsp;&nbsp;&nbsp; [-mmapsize<i> size</i>]</b>
29<br><b>&nbsp;&nbsp;&nbsp; [-log_max <i>max</i>]</b>
30<br><b>&nbsp;&nbsp;&nbsp; [-log_buffer <i>size</i>]</b>
31<br><b>&nbsp;&nbsp;&nbsp; [-lock_conflict {<i>nmodes </i>{<i>matrix</i>}}]</b>
32<br><b>&nbsp;&nbsp;&nbsp; [-lock_detect default|oldest|random|youngest]</b>
33<br><b>&nbsp;&nbsp;&nbsp; [-lock_max <i>max</i>]</b>
34<br><b>&nbsp;&nbsp;&nbsp; [-lock_max_locks <i>max</i>]</b>
35<br><b>&nbsp;&nbsp;&nbsp; [-lock_max_lockers <i>max</i>]</b>
36<br><b>&nbsp;&nbsp;&nbsp; [-lock_max_objects <i>max</i>]</b>
37<br><b>&nbsp;&nbsp;&nbsp; [-lock_timeout <i>timeout</i>]</b>
38<br><b>&nbsp;&nbsp;&nbsp; [-overwrite]</b>
39<br><b>&nbsp;&nbsp;&nbsp; [-txn_max <i>max</i>]</b>
40<br><b>&nbsp;&nbsp;&nbsp; [-txn_timeout <i>timeout</i>]</b>
41<br><b>&nbsp;&nbsp;&nbsp; [-client_timeout <i>seconds</i>]</b>
42<br><b>&nbsp;&nbsp;&nbsp; [-server_timeout <i>seconds</i>]</b>
43<br><b>&nbsp;&nbsp;&nbsp; [-server <i>hostname</i>]</b>
44<br><b>&nbsp;&nbsp;&nbsp; [-rep_master] [-rep_client]</b>
45<br><b>&nbsp;&nbsp;&nbsp; [-rep_transport <i>{ machineid sendproc }</i>]</b>
46<br>&nbsp;
47<p>This command opens up an environment.&nbsp;&nbsp; We automatically set
48the DB_THREAD and the DB_INIT_MPOOL flags.&nbsp; The arguments are:
49<ul>
50<li>
51<b>-cdb</b> selects the DB_INIT_CDB flag for Concurrent Data Store</li>
52
53<li>
54<b>-cdb_alldb</b> selects the DB_CDB_ALLDB flag for Concurrent Data Store</li>
55
56<li>
57<b>-lock</b> selects the DB_INIT_LOCK flag for the locking subsystem</li>
58
59<li>
60<b>-log</b> selects the DB_INIT_LOG flag for the logging subsystem</li>
61
62<li>
63<b>-txn</b> selects the DB_INIT_TXN, DB_INIT_LOCK and DB_INIT_LOG flags
64for the transaction subsystem.&nbsp; If <b>nosync</b> is specified, then
65it will also select DB_TXN_NOSYNC to indicate no flushes of log on commits</li>
66
67<li>
68<b>-create </b>selects the DB_CREATE flag to create underlying files</li>
69
70<li>
71<b>-home <i>directory </i></b>selects the home directory of the environment</li>
72
73<li>
74<b>-data_dir <i>directory </i></b>selects the data file directory of the
75environment by calling <a href="../../docs/api_c/env_set_data_dir.html">DBENV->set_data_dir</a>.</li>
76
77<li>
78<b>-log_dir <i>directory </i></b>selects the log file directory of the
79environment&nbsp; by calling <a href="../../docs/api_c/env_set_lg_dir.html">DBENV->set_lg_dir</a>.</li>
80
81<li>
82<b>-tmp_dir <i>directory </i></b>selects the temporary file directory of
83the environment&nbsp; by calling <a href="../../docs/api_c/env_set_tmp_dir.so">DBENV->set_tmp_dir</a>.</li>
84
85<li>
86<b>-mode <i>mode </i></b>sets the permissions of created files to <b><i>mode</i></b></li>
87
88<li>
89<b>-nommap</b> selects the DB_NOMMAP flag to disallow using mmap'ed files</li>
90
91<li>
92<b>-private</b> selects the DB_PRIVATE flag for a private environment</li>
93
94<li>
95<b>-recover</b> selects the DB_RECOVER flag for recovery</li>
96
97<li>
98<b>-recover_fatal</b> selects the DB_RECOVER_FATAL flag for catastrophic
99recovery</li>
100
101<li>
102<b>-system_mem</b> selects the DB_SYSTEM_MEM flag to use system memory</li>
103
104<li>
105<b>-errfile </b>specifies the error file to use for this environment to
106<b><i>filename</i></b>
107by calling <a href="../../docs/api_c/env_set_errfile.html">DBENV->set_errfile</a><b><i>.
108</i></b>If
109the file already exists then we will append to the end of the file</li>
110
111<li>
112<b>-use_environ</b> selects the DB_USE_ENVIRON flag to affect file naming</li>
113
114<li>
115<b>-use_environ_root</b> selects the DB_USE_ENVIRON_ROOT flag to have the
116root environment affect file naming</li>
117
118<li>
119<b>-verbose</b> produces verbose error output for the given which subsystem,
120using the <a href="../../docs/api_c/dbenv_set_verbose.html">DBENV->set_verbose</a>
121method.&nbsp;&nbsp; See the description of <a href="#> <env> verbose which on|off">verbose</a>
122below for valid <b><i>which </i></b>values</li>
123
124<li>
125<b>-region_init </b>specifies that the user wants to page fault the region
126in on startup using the <a href="../../docs/api_c/env_set_region_init.html">DBENV->set_region_init</a>
127method call</li>
128
129<li>
130<b>-cachesize </b>sets the size of the database cache to the size&nbsp;
131specified by <b><i>gbytes </i></b>and <b><i>bytes, </i></b>broken up into
132<b><i>ncaches</i></b>
133number of caches using the <a href="../../docs/api_c/env_set_cachesize.html">DBENV->set_cachesize</a>
134method</li>
135
136<li>
137<b>-mmapsize </b>sets the size of the database page to <b><i>size </i></b>using
138the <a href="../../docs/api_c/env_set_mp_mmapsize.html">DBENV->set_mp_mmapsize</a>
139method</li>
140
141<li>
142<b>-log_max </b>sets the maximum size of the log file to <b><i>max</i></b>
143using the <a href="../../docs/api_c/env_set_lg_max.html">DBENV->set_lg_max</a>
144call</li>
145
146<li>
147<b>-log_regionmax </b>sets the size of the log region to <b><i>max</i></b>
148using the <a href="../../docs/api_c/env_set_lg_regionmax.html">DBENV->set_lg_regionmax</a>
149call</li>
150
151<li>
152<b>-log_buffer </b>sets the size of the log file in bytes to <b><i>size</i></b>
153using the <a href="../../docs/api_c/env_set_lg_bsize.html">DBENV->set_lg_bsize</a>
154call</li>
155
156<li>
157<b>-lock_conflict </b>sets the number of lock modes to <b><i>nmodes</i></b>
158and sets the locking policy for those modes to the <b><i>conflict_matrix</i></b>
159given using the <a href="../../docs/api_c/env_set_lk_conflict.html">DBENV->set_lk_conflict</a>
160method call</li>
161
162<li>
163<b>-lock_detect </b>sets the deadlock detection policy to the given policy
164using the <a href="../../docs/env_set_lk_detect.html">DBENV->set_lk_detect</a>
165method call.&nbsp; The policy choices are:</li>
166
167<ul>
168<li>
169<b>default</b> selects the DB_LOCK_DEFAULT policy for default detection</li>
170
171<li>
172<b>oldest </b>selects DB_LOCK_OLDEST to abort the oldest locker on a deadlock</li>
173
174<li>
175<b>random</b> selects DB_LOCK_RANDOM to abort a random locker on a deadlock</li>
176
177<li>
178<b>youngest</b> selects DB_LOCK_YOUNGEST to abort the youngest locker on
179a deadlock</li>
180</ul>
181
182<li>
183<b>-lock_max_locks </b>sets the maximum number of locks to <b><i>max </i></b>using
184the <a href="../../docs/api_c/env_set_lk_max_locks.html">DBENV->set_lk_max_locks</a>
185method call</li>
186
187<li>
188<b>-lock_max_lockers </b>sets the maximum number of locking entities to
189<b><i>max
190</i></b>using the <a href="../../docs/api_c/env_set_lk_max_lockers.html">DBENV->set_lk_max_lockers</a>
191method call</li>
192
193<li>
194<b>-lock_max_objects </b>sets the maximum number of simultaneously locked
195objects to <b><i>max </i></b>using the <a href="../../docs/api_c/env_set_lk_max_objects.html">DBENV->set_lk_max_objects</a>
196method call</li>
197
198<li>
199<b>-lock_timeout </b>sets the timeout for locks in the environment</li>
200
201<li>
202<b>-overwrite </b>sets DB_OVERWRITE flag</li>
203
204<li>
205<b>-txn_max </b>sets the maximum size of the transaction table to <b><i>max</i></b>
206using the <a href="../../docs/api_c/env_set_txn_max.html">DBENV->set_txn_max</a>
207method call</li>
208
209<li>
210<b>-txn_timeout </b>sets the timeout for transactions in the environment</li>
211
212<li>
213<b>-client_timeout</b> sets the timeout value for the client waiting for
214a reply from the server for RPC operations to <b><i>seconds</i></b>.</li>
215
216<li>
217<b>-server_timeout</b> sets the timeout value for the server to determine
218an idle client is gone to <b><i>seconds</i></b>.</li>
219
220<li>
221<b>-server </b>specifies the <b><i>hostname</i></b> of the server
222to connect to in the <a href="../../docs/api_c/env_set_server.html">DBENV->set_server</a>
223call.</li>
224
225<li>
226<b>-rep_client </b>sets the newly created environment to be a
227replication client, using the <a href="../../docs/api_c/rep_client.html">
228DBENV->rep_client</a> call.</li>
229
230<li>
231<b>-rep_master </b>sets the newly created environment to be a
232replication master, using the <a href="../../docs/api_c/rep_master.html">
233DBENV->rep_master</a> call.</li>
234
235<li>
236<b>-rep_transport </b>specifies the replication transport function,
237using the
238<a href="../../docs/api_c/rep_transport.html">DBENV->rep_set_transport</a>
239call.  This site's machine ID is set to <b><i>machineid</i></b> and
240the send function, a Tcl proc, is set to <b><i>sendproc</i></b>.</li>
241
242</ul>
243
244This command will invoke the <a href="../../docs/api_c/env_create.html">db_env_create</a>
245function.&nbsp; After it successfully gets a handle to an environment,
246we bind it to a new Tcl command of the form <b><i>envX</i></b>, where X
247is an integer starting at&nbsp; 0 (e.g. <b>env0, env1, </b>etc).&nbsp;
248We use the <i>Tcl_CreateObjCommand()</i> to create the top level environment
249command function.&nbsp; It is through this handle that the user can access
250all the commands described in the <a href="#Environment Commands">Environment
251Commands</a> section.&nbsp; Internally, the handle we get back from DB
252will be stored as the <i>ClientData</i> portion of the new command set
253so that all future environment calls will have that handle readily available.&nbsp;
254Then we call the <a href="../../docs/api_c/env_open.html">DBENV->open</a>
255method call and possibly some number of setup calls as described above.
256<p>
257<hr WIDTH="100%">
258<br><a NAME="> <env> verbose which on|off"></a><b>> &lt;env> verbose <i>which</i>
259on|off</b>
260<p>This command controls the use of debugging output for the environment.&nbsp;
261This command directly translates to a call to the <a href="../../docs/api_c/dbenv_set_verbose.html">DBENV->set_verbose</a>
262method call.&nbsp; It returns either a 0 (for success), a DB error message
263or it throws a Tcl error with a system message.&nbsp; The user specifies
264<b><i>which</i></b>
265subsystem to control, and indicates whether debug messages should be turned
266<b>on</b>
267or <b>off</b> for that subsystem.&nbsp; The value of <b><i>which</i></b>
268must be one of the following:
269<ul>
270<li>
271<b>deadlock </b>- Chooses the deadlocking code by using the DB_VERB_DEADLOCK
272value</li>
273
274<li>
275<b>recovery </b>- Chooses the recovery code by using the DB_VERB_RECOVERY
276value</li>
277
278<li>
279<b>wait </b>- Chooses the waitsfor code by using the DB_VERB_WAITSFOR value</li>
280</ul>
281
282<hr WIDTH="100%">
283<p><a NAME="> <env> close"></a><b>> &lt;env> close</b>
284<p>This command closes an environment and deletes the handle.&nbsp; This
285command directly translates to a call to the <a href="../../docs/api_c/env_close.html">DBENV->close</a>
286method call.&nbsp; It returns either a 0 (for success), a DB error message
287or it throws a Tcl error with a system message.
288<p>Additionally, since the handle is no longer valid, we will call <i>Tcl_DeleteCommand()
289</i>so
290that further uses of the handle will be dealt with properly by Tcl itself.
291<p>Also, the close command will automatically abort any <a href="txn.html">transactions</a>
292and close any <a href="mpool.html">mpool</a> memory files.&nbsp; As such
293we must maintain a list of open transaction and mpool handles so that we
294can call <i>Tcl_DeleteCommand</i> on those as well.
295<p>
296<hr WIDTH="100%">
297
298<b>> berkdb envremove<br>
299[-data_dir <i>directory</i>]<br>
300[-force]<br>
301[-home <i>directory</i>]<br>
302[-log_dir <i>directory</i>]<br>
303[-overwrite]<br>
304[-tmp_dir <i>directory</i>]<br>
305[-use_environ]<br>
306[-use_environ_root]</b>
307
308<p>This command removes the environment if it is not in use and deletes
309the handle.&nbsp; This command directly translates to a call to the <a href="../../docs/api_c/env_remove.html">DBENV->remove</a>
310method call.&nbsp; It returns either a 0 (for success), a DB error message
311or it throws a Tcl error with a system message.&nbsp; The arguments are:
312<ul>
313<li>
314<b>-force</b> selects the DB_FORCE flag to remove even if other processes
315have the environment open</li>
316
317<li>
318<b>-home <i>directory</i> </b>specifies the home directory of the environment</li>
319
320<li>
321<b>-data_dir <i>directory </i></b>selects the data file directory of the
322environment by calling <a href="../../docs/api_c/env_set_data_dir.html">DBENV->set_data_dir</a>.</li>
323
324<li>
325<b>-log_dir <i>directory </i></b>selects the log file directory of the
326environment&nbsp; by calling <a href="../../docs/api_c/env_set_lg_dir.html">DBENV->set_lg_dir</a>.</li>
327
328<li>
329<b>-overwrite </b>sets DB_OVERWRITE flag</li>
330
331<li>
332<b>-tmp_dir <i>directory </i></b>selects the temporary file directory of
333the environment&nbsp; by calling <a href="../../docs/api_c/env_set_tmp_dir.so">DBENV->set_tmp_dir</a>.</li>
334
335<li>
336<b>-use_environ </b>selects the DB_USE_ENVIRON flag to affect file naming</li>
337
338<li>
339<b>-use_environ_root</b> selects the DB_USE_ENVIRON_ROOT flag to affect
340file naming</li>
341</ul>
342
343</body>
344</html>
345