1.Dd December 3, 2003       \" DATE 
2.Dt db_upgrade 1       \" Program name and manual section number 
3.Os Darwin
4.Sh NAME                 \" Section Header - required - don't modify 
5.Nm db_upgrade
6.\" The following lines are read in generating the apropos(man -k) database. Use only key
7.\" words here as the database is built based on the words here and in the .ND line. 
8.\" Use .Nm macro to designate other names for the documented program.
9.Sh SYNOPSIS             \" Section Header - required - don't modify
10.Nm
11.Op Fl NsV
12.Op Fl h Ar home
13.Op Fl P Ar password
14file ...
15.Sh DESCRIPTION          \" Section Header - required - don't modify
16The
17.Nm
18utility upgrades the Berkeley DB version of one or more files and the databases they contain to the current release version.
19.Pp
20The options are as follows:
21.Bl -tag -width
22.It Fl h
23Specify a home directory for the database environment; by default, the current working directory is used.
24.It Fl N
25Do not acquire shared region mutexes while running. Other problems, such as potentially fatal errors in Berkeley DB, will be ignored as well. This option is intended only for debugging errors, and should not be used under any other circumstances.
26.It Fl P
27Specify an environment password. Although Berkeley DB utilities overwrite password strings as soon as possible, be aware there may be a window of vulnerability on systems where unprivileged users can see command-line arguments or where utilities are not able to overwrite the memory containing the command-line arguments.
28.It Fl s
29This flag is only meaningful when upgrading databases from releases before the Berkeley DB 3.1 release.
30.Pp
31As part of the upgrade from the Berkeley DB 3.0 release to the 3.1 release, the on-disk format of duplicate data items changed. To correctly upgrade the format requires that applications specify whether duplicate data items in the database are sorted or not. Specifying the -s flag means that the duplicates are sorted; otherwise, they are assumed to be unsorted. Incorrectly specifying the value of this flag may lead to database corruption.
32.Pp
33Because the
34.Nm
35utility upgrades a physical file (including all the databases it contains), it is not possible to use
36.Nm
37to upgrade files where some of the databases it includes have sorted duplicate data items, and some of the databases it includes have unsorted duplicate data items. If the file does not have more than a single database, if the databases do not support duplicate data items, or if all the databases that support duplicate data items support the same style of duplicates (either sorted or unsorted),
38.Nm
39will work correctly as long as the -s flag is correctly specified. Otherwise, the file cannot be upgraded using
40.Nm ,
41and must be upgraded manually using the db_dump and db_load utilities.
42.It Fl V
43Write the library version number to the standard output, and exit.
44.El
45.Pp
46.Em \&It is important to realize that Berkeley DB database upgrades are done in place, and so are potentially destructive. 
47This means that if the system crashes during the upgrade procedure, or if the upgrade procedure runs out of disk space, the databases may be left in an inconsistent and unrecoverable state. See Upgrading databases for more information.
48.Pp
49The
50.Nm
51utility may be used with a Berkeley DB environment (as described for the -h option, the environment variable DB_HOME, or because the utility was run in a directory containing a Berkeley DB environment). In order to avoid environment corruption when using a Berkeley DB environment,
52.Nm
53should always be given the chance to detach from the environment and exit gracefully. To cause
54.Nm
55to release all environment resources and exit cleanly, send it an interrupt signal (SIGINT).
56.Pp
57The 
58.Nm
59utility exits 0 on success, and >0 if an error occurs.
60.Pp
61.Sh ENVIRONMENT      \" May not be needed
62.Bl -tag -width "DB_HOME" \" ENV_VAR_1 is width of the string ENV_VAR_1
63.It Ev DB_HOME
64If the -h option is not specified and the environment variable DB_HOME is set, it is used as the path of the database home, as described in DB_ENV->open.
65.El                      
66.\" .Sh FILES                \" File used or created by the topic of the man page
67.\" .Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact
68.\" .It Pa /usr/share/file_name
69.\" FILE_1description
70.\" .It Pa /Users/joeuser/Library/really_long_file_name
71.\" FILE_2 description
72.\" .Sh DIAGNOSTICS       \" May not be needed
73.\" .Bl -diag
74.\" .It Diagnostic Tag
75.\" Diagnostic informtion here.
76.\" .It Diagnostic Tag
77.\" Diagnostic informtion here.
78.\" .El
79.Sh SEE ALSO 
80.Xr db_archive 1 ,
81.Xr db_checkpoint 1 ,
82.Xr db_deadlock 1 ,
83.Xr db_dump 1 ,
84.Xr db_load 1 ,
85.Xr db_printlog 1 ,
86.Xr db_recover 1 ,
87.Xr db_stat 1 ,
88.Xr db_verify 1
89.\" .Sh BUGS              \" Document known, unremedied bugs 
90.\" .Sh HISTORY           \" Document history if command behaves in a unique manner 
91