TurboIMAGE/XL Database Management System Reference Manual (30391-90012)
Table Of Contents
- 1 Introduction
- 2 Database Structure and Protection
- 3 Defining a Database
- 4 Using the Database
- 5 TurboIMAGE/XL Library Procedures
- Using TurboIMAGE/XL Intrinsics
- DBBEGIN
- DBCLOSE
- DBCONTROL
- DBDELETE
- DBEND
- DBERROR
- DBEXPLAIN
- DBFIND
- DBGET
- DBINFO
- INTRINSIC NUMBER 402
- Syntax
- Parameters
- Discussion
- Mode 101: Item Number
- Mode 102: Item Name
- Mode 103: Items in Database
- Mode 104: Items in Data Set
- Mode 113: BTREEMODE1 and Wildcard Character
- Mode 201: Set Number
- Mode 202: Set Name
- Mode 203: Sets in Database
- Mode 204: Sets with Item
- Mode 205: Set Capacity
- Mode 206: Number of Data Set Chunks
- Mode 207: Size of Data Set Chunks
- Mode 208: Primary and Actual Capacity
- Mode 209: B-Tree Attachment
- Mode 301: Paths
- Mode 302: Key or Search Item
- Mode 401: Logging
- Mode 402: ILR
- Mode 403: Dynamic Roll-Back
- Mode 404: Logging Subsystem Information
- Mode 406: Database Information
- Mode 501: Subsystem Access
- Mode 502: Critical Item Update
- Modes 8nn: Third-Party Indexing
- Mode 901: Language
- DBLOCK
- DBMEMO
- DBOPEN
- DBPUT
- DBUNLOCK
- DBUPDATE
- DBXBEGIN
- DBXEND
- DBXUNDO
- 6 Host Language Access
- Model Program
- ORDERS Database Model Program
- Main Body of Program
- Opening the Database
- Retrieving All the Records on a Chain (with Item Level Locking)
- Retrieving a Data Entry Using a Record Number
- Retrieving Master Data Using a Key Value
- Retrieving Data Serially (with Set Level Locking)
- Adding an Entry
- Updating an Entry
- Deleting an Entry
- Rewinding a Data Set
- Obtaining Database Information
- Obtaining Error Messages and Explanations
- Closing the Database
- C
- COBOL II
- Defining Data Types, Variables, and Intrinsics
- Main Body of Program
- Opening the Database
- Retrieving All the Records on a Chain (with Item Level Locking)
- Retrieving a Data Entry Using a Record Number
- Retrieving Master Data Using a Key Value
- Retrieving Data Serially (with Set Level Locking)
- Adding an Entry
- Updating an Entry
- Deleting an Entry
- Rewinding a Data Set
- Obtaining Database Information
- Obtaining Error Messages and Explanations
- Closing the Database
- FORTRAN 77
- Pascal
- RPG
- 7 Logging and Recovery
- Database Utilities Used in Logging and Recovery
- Recovery Options
- Logical Transactions
- Dynamic Roll-Back Recovery
- Intrinsic Level Recovery
- Logging Preparation
- Step 1--Checking MPE/iX Logging Configuration
- Step 2--Acquiring Logging Capability
- Step 3--Logging to Tape or Disk
- Step 4--Building a Log File for Logging to Disk
- Step 5--Creating the Log Identifier
- Step 6--Setting the Log Identifier
- Step 7--Setting Flags for the Database Backup Copy
- Step 8--Making a Database Backup Copy
- TurboSTORE/iX 7x24 True-Online Backup
- Logging Status
- Logging Maintenance
- Roll-Forward Recovery
- Roll-Back Recovery
- DBRECOV Commands Used with Roll-Forward and Roll-Back Recovery
- Recovery Tables
- Post-Recovery Options
- The Mirror Database
- 8 Using the Database Utilities
- Restructuring the Database with TurboIMAGE/XL Utilities
- Summary of Utility Routines
- Utility Program Operation
- DBLOAD
- DBRECOV
- >CONTROL
- >EXIT
- >FILE
- >RECOVER
- >ROLLBACK
- >RUN
- DBRESTOR
- DBSTORE
- DBUNLOAD
- DBUTIL
- >>ACTIVATE
- >>ADDINDEX
- >>CREATE
- >>DEACTIVATE
- >>DETACH
- >>DISABLE
- >>DROPINDEX
- >>ENABLE
- >>ERASE
- >>EXIT
- >>HELP
- >>MOVE
- >>PURGE
- >>REBUILDINDEX
- >>REDO
- >>RELEASE
- >>SECURE
- >>SET
- >>SHOW
- Syntax
- Parameters
- Example (Show Users)
- Example Discussion
- Example (Show All)
- Example Discussion
- Example (Show Capacity)
- Format of Show Device List
- Example (Show Device)
- Format of Show Indices
- Example (Show Indices)
- Format of Show Locks List
- Example 1 (Show Locks)
- Example 1 Discussion
- Example 2 (Show Locks)
- Example 2 Discussion
- >>VERIFY
- 9 Using a Remote Database
- 10 Internal Structures and Techniques
- 11 B-Tree Indices
- A Error Messages
- B Results of Multiple Access
- C Database Design Considerations
- D Multiple Calls to DBLOCK
- E TurboIMAGE/XL Log Record Formats
- F MPE/iX Log Record Formats
- G Recovery and Logging Quick Reference
- H TurboIMAGE/XL versus TurboIMAGE/V

494 Chapter10
Internal Structures and Techniques
Internal Techniques
result in poor DBPUT performance. This method should be used only if you have
determined that the potential poor performance consequences cannot occur.
The intent of the two primary address algorithms is to spread master entries as uniformly
as possible throughout the record space of the data file. This uniform spread reduces the
number of synonyms occurring in the master data set.
NOTE
In general, a master data set with a capacity equal to a prime number or to
the product of two or three primes can yield fewer synonyms than master
data sets with capacities consisting of many factors. Refer to appendix C for a
list of prime numbers. More information on dynamic data set expansion is
given earlier in this chapter.
Migrating Secondaries
In some cases, secondary entries of master data sets are automatically moved to storage
locations other than the one originally assigned. This most often occurs when a new
master data entry is assigned a primary address occupied by a secondary entry. By
definition, the secondary entry is a synonym to some other primary entry resident at their
common primary address. Thus, the new entry represents the beginning of a new synonym
chain. To accommodate this new chain, the secondary entry is moved to an alternate
secondary address and the new entry is added to the data set as a new primary entry. This
move and the necessary linkage and chain head maintenance is done automatically.
A move can also occur when the primary entry of a synonym chain that has one or more
secondary entries is deleted. Because retrieval of each entry occurs through a synonym
chain, each synonym chain must have a primary entry. To maintain the integrity of a
synonym chain, TurboIMAGE/XL always moves the first secondary entry to the primary
address of the deleted primary entry.
Space Allocation for Master Data Sets
Space allocation for each master data set is controlled by a free space counter resident in
the user label of the data set, by each bit map that monitors each block of the data set, and
by enabling of the data set for dynamic expansion.
When a data set is enabled for dynamic expansion, the expansion is triggered at run-time
during DBPUT (implied for automatic master) when the data set has reached its almost-full
capacity. Once an expansion is done, the master data set is partitioned into two areas: the
original area corresponding to the original initial capacity (hashing) and the expansion
area corresponding to all extents allocated as a result of run-time expansion. The original
area has a mixture of primary and secondary entries. The expansion area has only
secondary entries which are added using a delete chain head and end-of-file pointer (high
water mark), similar to detail data sets.
The master data sets which are not enabled for dynamic expansion have only one area
which contains both primary and secondary entries.
When a new entry is added, TurboIMAGE/XL decrements the free space counter and sets
the bit corresponding to the newly assigned record address to a one. If the bit is a zero