TurboIMAGE/XL Database Management System Reference Manual MPE/iX V6.5 (30391-90011)

Chapter 4 127
Using the Database
TurboIMAGE/XL Logging Services
DBXBEGIN, DBXEND, and DBXUNDO. In addition, DBQUIESCE procedures called by True-
Online Backup to quiesce and unquiesce the database are also logged to the logging file.
TurboIMAGE/XL calls the MPE/iX logging intrinsics OPENLOG, WRITELOG, and CLOSELOG
in order to log information to the log file. When a database is opened, DBOPEN calls the
OPENLOG intrinsic using the log identifier and password stored in the database root file. If
this call succeeds, DBOPEN calls WRITELOG to log a DBOPEN log record containing information
about the database and the new user. The WRITELOG intrinsic is also used to log
information when the TurboIMAGE/XL intrinsics DBPUT, DBDELETE, and DBUPDATE are
called. WRITELOG is called after all error checks are made, but before actually modifying
the working database. Consequently, a log record is not written until the TurboIMAGE/XL
procedure has committed itself to succeed. WRITELOG is also used by the TurboIMAGE/XL
intrinsics DBBEGIN, DBEND, DBMEMO, DBXBEGIN, DBXEND, DBXUNDO, and DBQUIESCE
procedures.
DBCLOSE (mode 1) calls WRITELOG to log a DBCLOSE log record, and then calls CLOSELOG to
terminate access to the log file. If a transaction initiated with DBBEGIN fails to call DBEND,
or a DBXBEGIN does not have a matching DBXEND, DBCLOSE causes an abnormal DBEND or
DBXEND log record to terminate access to the log file. DBCLOSE also causes an abnormal
DBEND or DBXEND log record to be written if the program aborts with an unfinished
transaction.
User Logging and Logical Transactions
TurboIMAGE/XL transactions are of two basic types--single and logical. A single
transaction is a single call to an intrinsic. It is not delimited by begin and end intrinsics.
A logical transaction can be considered as the basic work unit performed against a
database. A logical transaction could consist of a single modification, but more typically
consists of several calls to TurboIMAGE/XL intrinsics which lock, read, modify, and unlock
information. Logical transactions transfer the database from one consistent state to
another, but in the midst of a multiple-step transaction, the database could be temporarily
inconsistent with itself. (For an example, see "Logical Transactions" in chapter 7.)
TurboIMAGE/XL logical transactions are defined in Table 4-5.
Table 4-5. Types of Logical Transactions
Transaction Definition
Static A logical transaction that begins with a DBBEGIN call and ends with a DBEND
call. A static transaction spans only one database. This type of transaction can
be recovered with DBRECOV.
Multiple
database
A logical transaction that spans more than one database. A multiple database
transaction begins with a DBBEGIN call and ends with a DBEND call. This type
of transaction is recovered with DBRECOV.
Dynamic A logical transaction that begins with a DBXBEGIN call and ends with a
DBXEND call. Unlike non-dynamic transactions (that is, static and multiple
database transactions), dynamic transactions can be rolled back with a call to
the DBXUNDO procedure and are automatically rolled back in the event of a
system failure or program abort.