1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4  <head>
5    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6    <title>A Note on System Failure</title>
7    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
8    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
9    <link rel="start" href="index.html" title="Getting Started with Berkeley DB Transaction Processing" />
10    <link rel="up" href="introduction.html" title="Chapter��1.��Introduction" />
11    <link rel="prev" href="introduction.html" title="Chapter��1.��Introduction" />
12    <link rel="next" href="apireq.html" title="Application Requirements" />
13  </head>
14  <body>
15    <div class="navheader">
16      <table width="100%" summary="Navigation header">
17        <tr>
18          <th colspan="3" align="center">A Note on System Failure</th>
19        </tr>
20        <tr>
21          <td width="20%" align="left"><a accesskey="p" href="introduction.html">Prev</a>��</td>
22          <th width="60%" align="center">Chapter��1.��Introduction</th>
23          <td width="20%" align="right">��<a accesskey="n" href="apireq.html">Next</a></td>
24        </tr>
25      </table>
26      <hr />
27    </div>
28    <div class="sect1" lang="en" xml:lang="en">
29      <div class="titlepage">
30        <div>
31          <div>
32            <h2 class="title" style="clear: both"><a id="sysfailure"></a>A Note on System Failure</h2>
33          </div>
34        </div>
35      </div>
36      <p>
37            From time to time this manual mentions that transactions
38            protect your data against 'system or application failure.' This
39            is true up to a certain extent. However, not all failures are
40            created equal and no data protection mechanism can protect you
41            against every conceivable way a computing system can find to
42            die.
43        </p>
44      <p>
45            Generally, when this book talks about protection against
46            failures, it means that transactions offer protection against
47            the likeliest culprits for system and application crashes. So
48            long as your data modifications have been committed to disk,
49            those modifications should persist even if your application or
50            OS subsequently fails.  And, even if the application or OS
51            fails in the middle of a transaction commit (or abort), the
52            data on disk should be either in a consistent state, or there
53            should be enough data available to bring your databases into a
54            consistent state (via a recovery procedure, for example). You
55            may, however, lose whatever data you were committing at the
56            time of the failure, but your databases will be otherwise
57            unaffected.
58        </p>
59      <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
60        <h3 class="title">Note</h3>
61        <p>
62                    Be aware that many disks have a disk write cache and on
63                    some systems it is enabled by default.  This means that
64                    a transaction can have committed, and to your
65                    application the data may appear to reside on disk, but
66                    the data may in fact reside only in the write cache at
67                    that time. This means that if the disk write cache is
68                    enabled and there is no battery backup for it, data can
69                    be lost after an OS crash even when maximum durability
70                    mode is in use.  For maximum durability, disable the
71                    disk write cache or use a disk write cache with a
72                    battery backup.
73                </p>
74      </div>
75      <p>
76            Of course, if your <span class="emphasis"><em>disk</em></span> fails, then the transactional benefits described in this book
77            are only as good as the backups you have taken. 
78
79
80            <span>
81                By spreading your data and log files across separate disks,
82                you can minimize the risk of data loss due to a disk
83                failure, but even in this case it is possible to conjure a
84                scenario where even this protection is insufficient (a fire
85                in the machine room, for example) and you must go to your
86                backups for protection.
87            </span>
88        </p>
89      <p>
90            Finally, by following the programming examples shown in this book, you can write your code so as to protect
91            your data in the event that your code crashes. However, no programming API can protect you against logic
92            failures in your own code; transactions cannot protect you from simply writing the wrong thing to your
93            databases.
94        </p>
95    </div>
96    <div class="navfooter">
97      <hr />
98      <table width="100%" summary="Navigation footer">
99        <tr>
100          <td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a>��</td>
101          <td width="20%" align="center">
102            <a accesskey="u" href="introduction.html">Up</a>
103          </td>
104          <td width="40%" align="right">��<a accesskey="n" href="apireq.html">Next</a></td>
105        </tr>
106        <tr>
107          <td width="40%" align="left" valign="top">Chapter��1.��Introduction��</td>
108          <td width="20%" align="center">
109            <a accesskey="h" href="index.html">Home</a>
110          </td>
111          <td width="40%" align="right" valign="top">��Application Requirements</td>
112        </tr>
113      </table>
114    </div>
115  </body>
116</html>
117