HP 3000 Manuals

Run-Time TurboIMAGE/XL Control Blocks [ TurboIMAGE/XL Database Management System Reference Manual ] MPE/iX 5.5 Documentation


TurboIMAGE/XL Database Management System Reference Manual

Run-Time TurboIMAGE/XL Control Blocks 

As mentioned in chapter 4, TurboIMAGE/XL uses control blocks resident in
privileged mapped files to provide and control user access to a database
through the TurboIMAGE/XL procedures.  The contents of these control
blocks are maintained by TurboIMAGE/XL. Although it is not necessary to
know the details in order to use the TurboIMAGE/XL procedures, the
following descriptions are provided for those who prefer to understand
the control blocks and their functions.

Local Database Access 

The following structures are involved in local database access:

   *   Database System Control Block (DBS)--Contains pointers to all of
       the DBGs on the system.

   *   Database Globals Control Block (DBG)--Contains global information
       required during run-time and space for DBLOCK's lock descriptors.
       The DBG also contains a pointer to the DBB and pointers to the
       DBUs.

   *   Database Buffer Area Control Block (DBB)--Contains a set of
       addresses and temporary locks used to coordinate access to the
       data set, a set of buffer headers, and a pointer to the DBG.

   *   Database User Local Control Block (DBU)--Contains information
       pertaining to each access path (each DBOPEN) to the database.  The
       DBU also contains pointers to the DBG, DBB, and DBS.

   *   Database User Local Index Control Block (DBUX)--Contains the
       addresses of all the DBUs and DBRs (Remote Database Control
       Blocks) belonging to a specific process.  The DBUX also contains
       dynamic roll-back information.[REV BEG]

   *   Database Lock Table (TURBOLKT)--Contains information pertaining to
       locks on the database and is used to avoid deadlocks.

   *   Multi-Database Transactions (TURBOGTX)--Contains information
       pertaining to dynamic transactions constituting multiple
       databases.

   *   QOPEN Table (QOPEN)--Contains information about user logging
       process for active DBOPENS of modes 1-4.

   *   QLOCK Table (QLOCK)--Contains information about all writers to
       databases and a pointer to QOPEN.

The DBS is a permanent file, TURBODBS.PUB.SYS, that is created by DBOPEN
if it does not exist beforehand.[REV END] Thereafter, it is opened when
the first user opens any database on the system.  It is reinitialized
after a system abort.  Each system has only one DBS; it contains pointers
to the current DBGs for any currently open database(s).

Both the DBG and the DBB are created when the first user opens a database
(DBOPEN). They remain allocated until the last user closes the database.
Each opened database has only one DBB and one DBG, regardless of the
number of users.  Both of these control blocks are part of a permanent
mapped file called dbnameGB located in the same group and account as the
database.


NOTE If you have an existing file with the same name that TurboIMAGE/XL would assign to the permanent mapped file (that is, dbnameGB), you will get the following message for status code -9: CANNOT CREATE DBG : MPE ERROR <nnn>
The DBG is derived mostly from the root file and contains global information required by TurboIMAGE/XL intrinsics during run-time. In addition, the DBG contains the lock table which holds user-level locking information. The DBG is used as a reference area for global data and lock information. The DBB is used to retrieve, log, and update data located within the data sets. It contains a set of buffer headers which are shared by all concurrent users accessing the database. These buffer headers contain information about data set blocks. The DBB also contains information pertaining to logging and recovery. A two-level resource priority locking scheme is used within the DBB to allow single data block operations to access the control block concurrently. This involves DBGET, DBFIND and DBUPDATE processes. DBPUT and DBDELETE operations, and DBUPDATE operations on detail data set search or sort items made possible through the critical item update (CIUPDATE) option, are unable to access the data blocks concurrently with other DBPUTs, DBDELETEs, and search or sort item DBUPDATEs. These block put-delete lock operations must hold a global lock on the DBB throughout part of the operation; therefore, there is less concurrency when using DBPUT and DBDELETE and when using DBUPDATE on search or sort items via the CIUPDATE option. When you update a search or sort item value, you get the same net effect as performing a DBDELETE and DBPUT. One DBU is created and stored in a privileged, unnamed temporary file each time a user issues a DBOPEN, and remains allocated until the corresponding DBCLOSE is issued. The DBU contains information pertaining to the user's individual access to the database. This includes information about the user's access mode, record position, list specifications, and security table. All TurboIMAGE/XL intrinsics process on the DBU, except accesses for global and buffer area information found in the DBG and DBB. The DBUX is created and stored in a privileged, unnamed temporary file the first time the user's process calls DBOPEN. One DBUX exists for each process. Its purpose is to keep track of the addresses of all the DBUs belonging to that process. Because 127 entries are allowed in the DBUX, each process is allowed a maximum of 127 DBOPENs (63 per database) depending on the availability of system resources. The DBUX remains allocated until the user's process is terminated. When accessing a local database, the TurboIMAGE/XL procedures usually make use of, and can modify information in all of the control blocks. [REV BEG] The TURBOLKT is a permanent file, TURBOLKT.PUB.SYS, that is created by DBOPEN (if it does not exist beforehand). Thereafter, it is opened when the first user opens any database on the system. It is purged when the system is rebooted. Each system has only one TURBOLKT file. It is used to avoid deadlocks for all IMAGE/SQL users. Additionally, it is also used to detect potential deadlock for TurboIMAGE/XL users if, and only if, deadlock detection is activated by DBCONTROL mode 7. The TURBOGTX is a permanent file, TURBOGTX.PUB.SYS, that is created by DBXBEGIN (if it does not exist beforehand). Thereafter, it is opened for all users who employ dynamic multi-database transaction(s) (DMDBX). Each system has only one TURBOGTX file, and it remains on the system even after the system is rebooted. It is used for tracking DMDBX. The QOPEN table is an unnamed global object and is first created by DBOPEN when the first writer of any database enabled for user logging opens a database. It is subsequently accessed only by writers of databases enabled for user logging. Each system has only one QOPEN table, and it is purged when all processes accessing it are terminated. It contains information pertaining to user logging process for DBOPEN. This information is used to write to log records for DBRECOV and to coordinate with DBQUIESCE called by TurboSTORE/iX 7x24 True-Online Backup. The QLOCK is an unnamed permanent global structure that is created by DBOPEN (if it does not exist beforehand). There is one per system, and it is accessed by all writers to all databases. It is purged only at system reboot time. It is used for containing database information required to quiesce database(s) for TurboSTORE/iX 7x24 True-Online Backup.[REV END] Remote Database Access TurboIMAGE/XL provides the capability of accessing a database on a remote HP 3000 system from a user program running on the local HP 3000 system, as described in chapter 9. This capability is provided in conjunction with NS3000/XL and is accomplished by transmitting TurboIMAGE/XL database access requests (DBGET, DBPUT, and so forth) to the remote computer where they are executed and the results returned to the local calling process. The control block structures used by TurboIMAGE/XL for the remote computer which contains the database are those described in the preceding section. On the local computer running the user application program, TurboIMAGE/XL constructs and uses a structure called the Remote Database Control Block (DBR). One DBR is created each time a user's process issues a DBOPEN accessing a remote TurboIMAGE/XL database (each access path to a remote database); this DBR is released when the corresponding DBCLOSE is issued. The DBR resides in a privileged, unnamed temporary file associated with the user application process on the local computer, and contains database, set, and item information plus the work areas necessary to set up communication with the remote computer. Returned data and status information is also processed in the DBR and is transferred to the appropriate user stack areas before TurboIMAGE/XL returns to the local calling process. Access to a TurboIMAGE/V database from an MPE/iX system or access to a TurboIMAGE/XL database from an MPE V system is allowed provided both systems are configured with Network Services (NS3000). To access an IMAGE/3000 database, an MPE V system (with NS/3000 and TurboIMAGE/V) acting as an intermediary is required. However, if the limits on the remote database exceed those allowed on the local system, access will not be successful. This is because the DBR will be too small to handle remote capacities that exceed the local limits. Control Block Sizes It is not necessary to predict the exact length of the control blocks used by TurboIMAGE/XL to manage user accesses to databases. However, the exact length of the DBU and the exact current length of the DBG are returned in the status array by DBOPEN. These lengths can be truncated to 32767 if the control block is greater than 32767.


MPE/iX 5.5 Documentation