VAX Rdb/VMS Guide to Database Maintenance and Performance

*HyperReader

  CONTENTS

  Title Page

  Copyright Page

  Preface

  Technical Changes and New Features

  1      Introduction

  1.1     For the New Database Administrator

  1.2     Availability of Rdb/VMS
    1.2.1      Online Backups
    1.2.2      VAXcluster and Network-Wide Automatic Recovery
    1.2.3      Automatic Cleanup
    1.2.4      Online DBA Activities
    1.2.5      Offline DBA Activities
    1.2.6      DBA Activities Requiring Database Reload
    1.2.7      Quick and Automatic Database Recovery
    1.2.8      Database Integrity
    1.2.9      Checking Database Integrity and Evaluating Performance and Database Behavior

  1.3     Database Maintenance Operations

  1.4     Evaluating and Improving Performance

  1.5     Using Rdb/VMS in a VAXcluster Environment

  1.6     Creating Sample Single-File and Multifile Databases

  2      Loading Data

  2.1     Data Loading Strategies
    2.1.1      Using the PLACE Statement
      2.1.1.1      Using the PLACE Statement to Get the Dbkey for Each Row to Be Stored
      2.1.1.2      Sorting the Dbkeys in Ascending Order
      2.1.1.3      Using the Dbkeys to Read the Rows in Sorted Order to Be Stored in the Database
    2.1.2      Defining the Database
      2.1.2.1      Defining the Database-Wide Parameters
      2.1.2.2      Defining Storage Area Parameters
      2.1.2.3      Defining the Table
      2.1.2.4      Defining the Hashed Index
      2.1.2.5      Defining the Storage Map

  2.2     Placement and Clustering Strategies Using Hashed Indexes
    2.2.1      Separate Areas, No Placement Clause
    2.2.2      Separate Areas, with Placement Clause
    2.2.3      Same Area, with Placement Clause (One I/O Operation)
    2.2.4      Clustering:  Add Child Rows, Separate Storage Area, with Placement Clause
    2.2.5      Shadowing:  Child and Parent in Separate Areas, with Placement Clause
    2.2.6      Clustering:  Child and Parent Rows and Hashed Index All in the Same Area with Placement Clause

  2.3     Troubleshooting Data Load Operations

  2.4     Loading Data from a Record Management Services (RMS) File
    2.4.1      Using BASIC to Load Data
    2.4.2      Using COBOL to Load Data
    2.4.3      Using FORTRAN to Load Data

  2.5     Loading and Unloading Data Using the RMU/LOAD and RMU/UNLOAD Commands
    2.5.1      Understanding the Format of the RMS Record Definition File
    2.5.2      Loading Data into a Database Table

  2.6     Changing Database Definitions Following a Data Load Operation
    2.6.1      Using DATATRIEVE to Load Data

  2.7     Importing an Rdb/ELN Database into an Rdb/VMS Database

  3      Monitoring Your Rdb/VMS Databases

  3.1     Rdb/VMS Monitor Process
    3.1.1      Starting and Stopping the Monitor Process Interactively
    3.1.2      Renaming the Monitor Log File
    3.1.3      Changing the Monitor Process Priority
    3.1.4      Reopening the Monitor Log File
    3.1.5      Reading the Monitor Log File

  3.2     Listing Active User Information

  3.3     Displaying Clusterwide User Information

  3.4     Information About Database Characteristics

  4      Security Auditing in Rdb/VMS

  4.1     An Overview of Rdb/VMS Security Auditing
    4.1.1      Rdb/VMS Default Security Auditing and RMU Security Auditing Commands
    4.1.2      Rdb/VMS and Its Use of VMS Security Auditing
    4.1.3      Monitoring Security Auditing Resources

  4.2     Security Audit Event Types
    4.2.1      The AUDIT Audit Event Type
    4.2.2      The DACCESS Audit Event Type
    4.2.3      The PROTECTION Audit Event Type
    4.2.4      The RMU Audit Event Type

  4.3     Defining Security Events to Be Audited
    4.3.1      Setting User level Information for Security Auditing
    4.3.2      Setting Audit Access to Database Objects (DACCESS Auditing)
    4.3.3      Enabling and Disabling Event Information for Security Auditing
    4.3.4      Starting and Stopping Security Auditing and Other Database Auditing Characteristics

  4.4     Reviewing Security Audit Information
    4.4.1      How to Interpret Security Auditing Alarm Information
      4.4.1.1      How to Interpret AUDIT Event Security Auditing Alarm Information
      4.4.1.2      How to Interpret DACCESS Event Security Auditing Alarm Information
      4.4.1.3      How to Interpret PROTECTION Event Security Auditing Alarm Information
      4.4.1.4      How to Interpret RMU Event Security Auditing Alarm Information
    4.4.2      How to Use the RMU/LOAD/AUDIT Command
    4.4.3      How to Review Audit Journal Records

  5      Opening and Closing a Database

  5.1     Opening a Database
    5.1.1      Using the RMU/OPEN Command
    5.1.2      Attaching to a Database

  5.2     Closing a Database
    5.2.1      Closing a Database and Using SQL or RDO
    5.2.2      Closing a Database Using the /NOABORT Qualifier

  6      Verifying the Integrity of Your Rdb/VMS Database

  6.1     Why Verify Your Database

  6.2     Causes of Database Corruption

  6.3     What Happens When You Verify Your Database

  6.4     What the Full Verify Operation Checks for in Your Database

  6.5     What Problems the Full Verify Operation Can Detect in Your Database

  6.6     Devising a Full Verify Strategy to Detect Problems in Your Database

  6.7     Interaction of RMU/VERIFY Command Qualifiers

  6.8     Measuring and Improving Verification Performance for Your Database

  6.9     Examples of Running Verify Operations on the MF_PERSONNEL Sample Database

  6.10    How to Troubleshoot Suspected Problems Using the RMU/VERIFY Command Qualifiers
    6.10.1     Detecting Page Corruption Using a Checksum Verification
    6.10.2     Detecting a Data Integrity Corruption
    6.10.3     Summary of the RMU/VERIFY Command Qualifiers to Use for Troubleshooting

  6.11    Examples of Database Corruption
    6.11.1     Example of Line Index Corruption
    6.11.2     Example of a Sorted Index Corruption
    6.11.3     Example of Data Integrity Corruption

  7      Altering a Database

  7.1     Using RdbALTER
    7.1.1      Attaching to a Database
    7.1.2      Clearing a Corruption Flag
    7.1.3      Selecting the Area Page for Altering
    7.1.4      Displaying Page Contents
    7.1.5      Changing Page Contents
    7.1.6      Moving Database Files
    7.1.7      Moving Data
    7.1.8      Clearing an Inconsistent Flag
    7.1.9      Changing the Radix
    7.1.10     Verifying Alterations
    7.1.11     Keeping a Log or an Audit Trail of Alterations
    7.1.12     Completing Transactions
    7.1.13     Exiting from the RdbALTER Utility
    7.1.14     Getting Online Information About RdbALTER Commands

  8      Backing Up and Restoring Your Database

  8.1     Using Logical Names

  8.2     Backing Up a Database
    8.2.1      Type and Frequency of Database Backups
    8.2.2      Specifying the File Protection for a Backup File
    8.2.3      Online Backup
    8.2.4      Full Database Backup Operations
    8.2.5      Incremental Database Backup Operations
    8.2.6      Backup Operation Options for Backing Up Databases
    8.2.7      Sample Backup Procedure for a Database That Contains No Read-Only Storage Areas
    8.2.8      Backing Up a Database That Contains Read-Only Storage Areas
      8.2.8.1      Backing Up a Database Containing Read-Only Storage Areas with a Backup File That Contains Read/Write and Read
      8.2.8.2      Backing Up a Database Containing Read-Only Storage Areas with a Backup File That Contains Only Read/Write Sto
      8.2.8.3      Backing Up a Database Containing Read-Only Storage Areas with a Backup File That Includes Only Read-Only StoR
      8.2.8.4      Backing Up a Database Using Incremental Backups
    8.2.9      Backing Up a Database Directly to Tape
      8.2.9.1      Using a Single Tape Drive
      8.2.9.2      Using Multiple Tape Drives

  8.3     Restoring a Database
    8.3.1      Full Database Restore Operations
    8.3.2      Incremental Restore Operations
    8.3.3      Sample Restore Procedure
    8.3.4      Restoring a Database That Contains Read-Only Storage Areas
      8.3.4.1      Restoring a Read/Write Storage Area Using the /AREA Qualifier from a Backup File Containing Exclusively ReadA
      8.3.4.2      Restoring a Read-Only Storage Area Using the /AREA Qualifier from a Backup File Containing Exclusively Read-A
    8.3.5      Restoring a Database Directly from Tape
      8.3.5.1      Using a Single Tape Drive
      8.3.5.2      Using Multiple Tape Drives
    8.3.6      Whether or Not to Update the Data Dictionary During a Restore Operation
    8.3.7      Modifying Database Characteristics During a Restore Operation
      8.3.7.1      Modifying After-Image Journaling Characteristics During a Restore Operation
      8.3.7.2      Modifying SPAM Threshold Values During a Restore Operation
      8.3.7.3      Modifying Blocks Per Page During a Restore Operation
    8.3.8      Moving Database Files
    8.3.9      Moving Dictionary Information

  8.4     Using the SQL or RDO EXPORT and IMPORT Statements

  9      Journaling and Recovery

  9.1     Journaling and Recovery for Update Transactions

  9.2     After-Image Journal File
    9.2.1      What Information Is Written to the AIJ File and What Information Is Not
    9.2.2      Steps to Creating an After-Image Journal File
      9.2.2.1      Setting the Size of After-Image Journal Allocation
      9.2.2.2      Setting the Size of After-Image Journal Extents
    9.2.3      Placement of the After-Image Journal File
    9.2.4      Tradeoffs Between Accumulating Multiple AIJ Files Versus Using Regular Incremental Backup and Restore OperationsB
    9.2.5      Backing Up After-Image Journal Files to Tape
    9.2.6      Displaying the Contents of an After-Image Journal File

  9.3     What Can You Do If You Have Lost Your AIJ File to a Disk Drive Problem

  9.4     Recovering a Database from Journal Files
    9.4.1      Steps for Recovering a Database
    9.4.2      Proper Order to Apply AIJ Files
    9.4.3      Proper Timing for Changing the AIJ File Relative to an Online Incremental or Full Backup Operation
    9.4.4      Strategies and Procedures for Backup, Restore, and Recovery Operations with a New Version of Rdb/VMS
      9.4.4.1      Upgrading from Rdb/VMS V2.3 to V4.0 Using the RDO BACKUP Statement and the RDO or SQL IMPORT Statement
      9.4.4.2      Upgrading from Rdb/VMS V2.3 to V4.0 Through V3.0 or V3.1 Using the RMU/CONVERT Command
      9.4.4.3      Upgrading from Rdb/VMS V3.0 or V3.1 to V4.0 Using the RMU/CONVERT Command
    9.4.5      RMU/RECOVER Command Qualifiers
      9.4.5.1      The /UNTIL Qualifier
      9.4.5.2      The /AIJ_BUFFERS Qualifier
      9.4.5.3      The /TRACE and /NOTRACE Qualifiers
      9.4.5.4      The /ROOT Qualifier
      9.4.5.5      The /AREAS Qualifier

  9.5     Recovery-Unit Journal File
    9.5.1      Placement of the RUJ File
    9.5.2      Improving Performance of the Automatic Recovery Process
    9.5.3      Displaying the Contents of a Recovery-Unit Journal File

  9.6     Example of Backup and Journaling

  10     Modifying Your Database Characteristics

  10.1    Changing Database Characteristics
    10.1.1     Changing the OPEN IS Option of the Database
    10.1.2     Changing Extent Values of the Database
    10.1.3     Changing the Maximum Number of Users of the Database
    10.1.4     Changing the Maximum Number of VAXcluster Nodes
    10.1.5     Changing Database Lock Characteristics
    10.1.6     Changing the Number of Database Buffers
    10.1.7     Changing the Number of Database Recovery Buffers
    10.1.8     Controlling After-Image Journaling
    10.1.9     Controlling Snapshot Files
    10.1.10    Using Deferred Snapshot Files
    10.1.11    Changing Allocation Characteristics for After-Image Journal Files
    10.1.12    Changing Allocation Characteristics for the Snapshot Files
    10.1.13    Changing the Requirement for a Dictionary

  10.2    Adding New Storage Areas for Multifile Databases

  10.3    Changing, Deleting, and Moving Storage Areas for Multifile Databases
    10.3.1     Changing Storage Areas
    10.3.2     Deleting Storage Areas
    10.3.3     Moving Storage Areas

  10.4    Changing and Deleting Indexes
    10.4.1     Changing Indexes
      10.4.1.1     Changing Sorted Indexes
      10.4.1.2     Changing Hashed Indexes
    10.4.2     Deleting Indexes

  10.5    Changing and Deleting Storage Maps
    10.5.1     Changing Storage Maps
    10.5.2     Deleting Storage Maps

  10.6    Applications That Use the SQL or RDO EXPORT and IMPORT Statements
    10.6.1     Reorganizing the Database
      10.6.1.1     Reorganizing a Single-File Database into a Multifile Database
      10.6.1.2     Reorganizing Databases for Special Uses
    10.6.2     Creating a Duplicate Copy of an Empty Database
    10.6.3     Importing the Database and Changing Device Specifications
    10.6.4     Archiving a Version-Independent Copy of Data
    10.6.5     Migrating the Database to Another Rdb/VMS or Rdb/ELN System
    10.6.6     Making a Copy of the Database

  11     Understanding Internal Database File Structure

  11.1    Types of Data Storage
    11.1.1     Place All Tables in One File of a Single-File Database
    11.1.2     Place Each Table in a Separate File of a Multifile Database
    11.1.3     Place a Combination of Tables in a Single File of a Multifile Database
    11.1.4     Place One Table in Several Files of a Multifile Database

  11.2    Storage Areas and Storage Maps
    11.2.1     Storage Areas with Uniform Page Format
    11.2.2     Storage Areas with Mixed Page Format
    11.2.3     Storage Maps

  11.3    Displaying Data Storage Areas and Snapshot Files
    11.3.1     Display Format Used for Logical Areas, Snapshot Files, and Database Pages
    11.3.2     Using the RMU/DUMP/AREA Command
    11.3.3     Using the RMU/DUMP/LAREA Command
    11.3.4     Displaying Snapshot Files
    11.3.5     Comparison of Live Data Page and Snapshot Page Displays

  11.4    Data Storage Page Structure
    11.4.1     Page Header for a Data Storage Page
    11.4.2     Line Index for a Data Storage Page
    11.4.3     Transaction Sequence Number Index for a Data Storage Page
    11.4.4     Locked and Unlocked Free Space for a Data Storage Page
    11.4.5     Storage Segment Structure for a Data Storage Page
      11.4.5.1     User-Stored Data Storage Segments
      11.4.5.2     Segmented String Storage Segments
      11.4.5.3     Index Node Storage Segments
        11.4.5.3.1      Sorted Index Node Records for Storage Areas with Uniform Page Format
        11.4.5.3.2      Sorted Index Duplicate Nodes
        11.4.5.3.3      Hashed Index Node Records for Storage Areas with Mixed Page Format
    11.4.6     Page Tail for a Data Storage Page
    11.4.7     Fragmented Storage Records

  11.5    Space Area Management (SPAM) Page Structure
    11.5.1     SPAM Pages in Storage Areas with Uniform Page Format
      11.5.1.1     Area Bit Maps
      11.5.1.2     Area Inventory Pages
    11.5.2     SPAM Page Intervals in Storage Areas with Mixed Page Format
    11.5.3     SPAM Thresholds for Storage Areas with Mixed Page Format and When No Placement Index Is Used

  12     Handling Bugcheck Dumps

  12.1    Rdb/VMS Troubleshooting
    12.1.1     Types of Bugcheck Dumps and Where to Look
    12.1.2     Locations of Bugcheck Dump Files
    12.1.3     Defining the RDM$BUGCHECK_DIR Logical Name

  12.2    Meaning of Several Types of Error Messages and Bugcheck Dump Exceptions
    12.2.1     What Does the Error %RDMS-F-TERMINATE Mean?
    12.2.2     What Does It Mean When You Have Exceeded a Quota?
      12.2.2.1     Disk Quota Exceeded
      12.2.2.2     Exceeded Quota
    12.2.3     Using an Invalid Dbkey in an Update Transaction

  12.3    When to Report a Bugcheck Dump
    12.3.1     Getting a Bugcheck Dump
    12.3.2     Examining a Bugcheck Dump
    12.3.3     Contents of a Bugcheck Dump

  12.4    Submitting a Software Performance Report

  13     Performance Tuning Overview

  13.1    System Resources, Memory Management, and Process Parameters
    13.1.1     Tuning Working Set Adjustment Parameters
    13.1.2     General Tuning Guidelines

  13.2    Establishing a Context to Interpret Tuning Results

  13.3    Utilities and Tools to Evaluate Performance
    13.3.1     Analyzing Space Usage
    13.3.2     Monitoring Locks
    13.3.3     Displaying Database Statistics
    13.3.4     Displaying Database Information
    13.3.5     Operating System Utilities
    13.3.6     Other System Performance Utilities

  13.4    VAXcluster Performance Considerations

  13.5    Using a Test Database
    13.5.1     Making Changes One at a Time
    13.5.2     Developing SQL ALTER SCHEMA, RDO CHANGE DATABASE, SQL or RDO EXPORT and IMPORT Procedures

  13.6    Changing Operating System Parameters

  13.7    Sample Performance Evaluation Procedure

  13.8    Sample List of Performance-Related Database Changes

  13.9    Making Performance Changes in Order of Difficulty

  14     Analyzing Record Storage

  14.1    Introducing the RMU/ANALYZE Command

  14.2    Overview of the RMU/ANALYZE Command

  14.3    RMU/ANALYZE/AREAS Command
    14.3.1     Using the RMU/ANALYZE/AREAS Command with the /OPTIONS=NORMAL Qualifier
    14.3.2     Using the RMU/ANALYZE/AREAS Command with the /OPTIONS=FULL Qualifier
    14.3.3     Using the RMU/ANALYZE/AREAS Command with the /OPTIONS=DEBUG Qualifier

  14.4    RMU/ANALYZE/LAREAS Display
    14.4.1     Using the RMU/ANALYZE/LAREAS Command with the /OPTIONS=NORMAL Qualifier
    14.4.2     Using the RMU/ANALYZE/LAREAS Command with the /OPTIONS=FULL Qualifier
    14.4.3     Using the RMU/ANALYZE/LAREAS Command with the /OPTIONS=DEBUG Qualifier

  14.5    RMU/ANALYZE/INDEXES Display
    14.5.1     Using the RMU/ANALYZE/INDEXES Command with the /OPTIONS=NORMAL Qualifier
    14.5.2     Using the RMU/ANALYZE/INDEXES Command with the /OPTIONS=FULL Qualifier
    14.5.3     Using the RMU/ANALYZE/INDEXES Command with the /OPTIONS=DEBUG Qualifier

  14.6    RMU/ANALYZE/PLACEMENT Display
    14.6.1     Using the RMU/ANALYZE/PLACEMENT Command with the /OPTIONS=NORMAL Qualifier
    14.6.2     Using the RMU/ANALYZE/PLACEMENT Command with the /OPTIONS=FULL Qualifier
    14.6.3     Using the RMU/ANALYZE/PLACEMENT Command with the /OPTIONS=DEBUG Qualifier

  14.7    Using the RMU/ANALYZE Command and Creating a Binary Output File for Further Analysis

  15     Using Database Statistics

  15.1    Selecting a Display Mode

  15.2    Selecting a Display Page

  15.3    Selecting a Display Format
    15.3.1     Graphic Display Format
    15.3.2     Numbers Display Format
    15.3.3     Time Plot Display Format

  15.4    Writing a Display to a File

  15.5    Getting Online Help

  15.6    Types of Database Statistics

  15.7    Understanding the Display Pages
    15.7.1     Summary I/O Statistics
    15.7.2     Index Statistics (Retrieval) Display
    15.7.3     Index Statistics (Insertion) Display
    15.7.4     Index Statistics (Removal) Display
    15.7.5     Hashed Index Statistics
    15.7.6     Virtual Memory Usage Statistics
    15.7.7     Summary Locking Statistics
    15.7.8     AIJ Statistics
    15.7.9     PIO Statistics
    15.7.10    Record Statistics
    15.7.11    Snapshot Statistics
    15.7.12    I/O Stall Time
    15.7.13    Transaction Durations
    15.7.14    Stall Messages
    15.7.15    I/O Statistics (by File) Display
    15.7.16    Lock Statistics for One Lock Type
    15.7.17    Lock Statistics for One Statistics Field

  15.8    Getting Statistics Output in a Formatted Binary Output File

  15.9    Using DECtrace with VAX Rdb/VMS Applications
    15.9.1     How to Collect Event Data for Rdb/VMS
      15.9.1.1     Describing Rdb/VMS Events and Items
      15.9.1.2     Creating a Selection
      15.9.1.3     Scheduling Data Collection
    15.9.2     How to Use Registration IDs

  15.10  Collecting Workload Information for RdbExpert
    15.10.1    Creating a Report Based on Collected Data
      15.10.1.1    Formatting and Merging Data Files
      15.10.1.2    Generating a Report
    15.10.2    Creating a Customized Report

  15.11  Rdb/VMS Database Relations
    15.11.1    Rdb/VMS ALL Class Database Relations
    15.11.2    Rdb/VMS Workload Class Database Relations

  16     Improving Database Performance

  16.1    Start by Studying Your Data

  16.2    Normalization and Its Effects on Database Operation
    16.2.1     Updating a Controlled, Redundant Database
    16.2.2     Primary and Foreign Keys

  16.3    Lock Considerations
    16.3.1     Reserving Options
    16.3.2     Incompatible Share Mode and Lock Type
    16.3.3     Batch Update Transactions
    16.3.4     Transaction Scope
    16.3.5     Adjustable Lock Granularity
    16.3.6     Read-Only Storage Areas
    16.3.7     Using an RDB$SYSTEM Read-Only Storage Area

  16.4    Indexed Retrieval
    16.4.1     Index Compression
    16.4.2     Sorted Index Structure
      16.4.2.1     Chronological Key
      16.4.2.2     Duplicate Nodes Key
      16.4.2.3     Clustering Indexes
      16.4.2.4     Sequential Retrieval
    16.4.3     Setting Sorted Index Characteristics for Performance
    16.4.4     Hashed Index Structure
      16.4.4.1     Important Database and Storage Area Parameters for Using Hashed Indexes
      16.4.4.2     Tuning Considerations
        16.4.4.2.1      Tuning to Get Two I/O Operations
        16.4.4.2.2      Tuning to Get One I/O Operation
      16.4.4.3     Estimating the Size of the Storage Area
        16.4.4.3.1      Estimating the Page Size
        16.4.4.3.2      Estimating the Size of Fixed and Variable Page Overhead
        16.4.4.3.3      Estimating the Size of Hashed Index Structures
        16.4.4.3.4      Example of Calculating the Size of Hashed Indexes
        16.4.4.3.5      Estimating the Size of Data Rows
        16.4.4.3.6      Calculating the Page Size
        16.4.4.3.7      Estimating the File Allocation Size
      16.4.4.4     Potential Sizing Problems
    16.4.5     Shadow Pages

  16.5    Reducing Disk I/O Operations

  16.6    Data Distribution

  16.7    Data Content-Active Versus Inactive Rows

  16.8    Journaling Considerations

  16.9    Database Integrity Considerations

  16.10  Constraint Optimizations
    16.10.1    Existence Constraint
    16.10.2    Uniqueness Constraint
    16.10.3    Modification Operation
    16.10.4    Database Key Retrieval and Erasing
    16.10.5    Multiple Evaluations

  16.11  Adjusting Database Parameters
    16.11.1    Specifying the Buffer Size
    16.11.2    Specifying the Number Of Buffers
    16.11.3    Adjusting Buffers
    16.11.4    Flushing Buffers and the COMMIT Statement
    16.11.5    Row or Record Fragmentation
    16.11.6    Specifying the Number Of Recovery Buffers
    16.11.7    Allocation for the After-Image Journal File
    16.11.8    Allocation for Snapshot Files
    16.11.9    Extents for After-Image Journal and Snapshot Files
    16.11.10  Accessing the Snapshot File
    16.11.11  Making the Snapshot File Optional for Rdb/VMS
    16.11.12  Deferred Snapshots Capability

  16.12  Adjusting Storage Area Parameters
    16.12.1    Page Size
    16.12.2    Allocation Size
    16.12.3    Page Format
    16.12.4    General Guidelines for Selecting SPAM Threshold Values
    16.12.5    Optimizing SPAM Intervals
    16.12.6    Placing Snapshot, Storage Area, and Database Files on Separate Disks

  16.13  Adjusting Storage Map Parameters
    16.13.1    PLACEMENT VIA INDEX Option
    16.13.2    Optional Data Compression on a Per Table Basis
      16.13.2.1    Examples of Setting Data Compression
      16.13.2.2    Summary of Data Compression Options

  16.14  Loading the Database

  16.15  Remote Access

  16.16  Adjusting VMS Parameters for Rdb/VMS Applications
    16.16.1    Checking and Setting System Parameters
    16.16.2    Checking and Setting User Account Parameters

  16.17  Granting TMPMBX Privilege

  16.18  Using Rdb/VMS Logical Names to Tune the Database
    16.18.1    RDMS$DIAG_FLAGS
    16.18.2    RDMS$RUJ
    16.18.3    RDMS$KEEP_PREP_FILES
    16.18.4    SQL$KEEP_PREP_FILES
    16.18.5    RDMS$DEBUG_FLAGS
    16.18.6    RDMS$DEBUG_FLAGS_OUTPUT
    16.18.7    RDM$BIND_BUFFERS
    16.18.8    RDM$BIND_RUJ_EXTEND_BLKCNT
    16.18.9    RDM$BUGCHECK_DIR
    16.18.10  RDMS$BIND_WORK_VM
    16.18.11  RDMS$BIND_WORK_FILE
    16.18.12  RDMS$BIND_SEGMENTED_STRING_BUFFER
    16.18.13  RDMS$BIND_LOCK_TIMEOUT_INTERVAL
    16.18.14  RDMS$BIND_SORT_WORKFILES

  17     The Query Optimizer and RDMS$DEBUG_FLAGS

  17.1    Query Optimizer
    17.1.1     Avoid Using Queries That Are Not Directly Based on the First Key Segment
    17.1.2     Assisting the Query Optimizer in Other Ways

  17.2    Dynamic Optimization
    17.2.1     Traditional OR Optimization
    17.2.2     Dynamic OR Optimization
    17.2.3     New Notation for Dynamic OR Optimization
    17.2.4     Dynamic Leaf-Level Optimization
      17.2.4.1     Examples of Dynamic, Leaf-Level Optimization
        17.2.4.1.1      An Example of Background-Only, Leaf Dynamic, Leaf-Level Optimization
        17.2.4.1.2      An Example of Fast-First, Leaf Dynamic, Leaf-Level Optimization
        17.2.4.1.3      An Example of Sorted, Leaf Dynamic, Leaf-Level Optimization
        17.2.4.1.4      An Example of Index-Only, Leaf Dynamic, Leaf-Level Optimization

  17.3    Using RDMS$DEBUG_FLAGS
    17.3.1     Displaying the Optimization Strategy (the S Flag)
      17.3.1.1     Displaying the Access Strategy (the S Flag) with the "E" Debug Flag
      17.3.1.2     Using the "\" Debug Flag
    17.3.2     Displaying the Cost of Optimization (the O Flag)
    17.3.3     Displaying the Optimization Strategy and Cost of Optimization Together (the SO Flag)
    17.3.4     Analyzing the RDMS$DEBUG_FLAGS Display

  17.4    Displaying Sort Statistics (the R Flag)

  18     Using Rdb/VMS in a VAXcluster Environment

  18.1    Overview of a VAXcluster Environment
    18.1.1     Definition of a VAXcluster Environment
    18.1.2     Sharing Disk Files
    18.1.3     Dual-Ported Disks
    18.1.4     Disk Naming Conventions
    18.1.5     Common System Disk
    18.1.6     Distributed Lock Manager

  18.2    Rdb/VMS in a VAXcluster Environment
    18.2.1     Single-Node Versus VAXcluster Environment
    18.2.2     Specifying Maximum VAXcluster Nodes
    18.2.3     Multiple Monitor Processes
    18.2.4     Distributed Access to the Root Portion of the Database File

  18.3    Deciding Where to Place Rdb/VMS Files

  18.4    VAX CDD/Plus Requirements

  18.5    Creating a Database
    18.5.1     Making Sure Your Database Is Accessible
    18.5.2     Reducing Loss of Database Access in a CI-Only VAXcluster Environment

  18.6    Creating the MF_PERSONNEL Database in a VAXcluster Environment

  18.7    Converting a Single-Node Database to a VAXcluster Database

  18.8    Automatic Recovery Procedure

  18.9    Maintaining and Monitoring Your Database
    18.9.1     Local Area VAXcluster Configuration Considerations
    18.9.2     EXPORT and IMPORT Operations
    18.9.3     Monitoring Your Database

  EXAMPLES

  2-1        Using the PLACE Statement Format in RDO

  2-2        Using the PLACE Statement for Reading Data from an Rdb/VMS Database Table

  2-3        Sorting the Dbkeys Using Binary Characteristics

  2-4        Analyzing the Distribution of Data Rows to a Given Page When the Rows Are Stored in an Rdb/VMS Database

  2-5        Changing the Number of Buffers and Disabling Snapshots

  2-6        Setting the Number of Buffers Using the Logical Name RDM$BIND_BUFFERS

  2-7        Defining the EMPIDS_LOW, EMPIDS_MID, and EMPIDS_OVER Storage Areas

  2-8        Defining the Domain and the EMPLOYEES Table

  2-9        Defining the EMPLOYEES_HASH and JOB_HISTORY_HASH Hashed Index

  2-10       Defining the EMPLOYEES_MAP and JOB_HISTORY_MAP Storage Map

  2-11       Placing Rows and the Hashed Index in Separate Storage Areas and Not Using the Placement Clause

  2-12       Placing Rows and the Hashed Index in Separate Storage Areas and Using the Placement Clause

  2-13       Placing Data Rows and the Hashed Index in the Same Storage Area and Using the Placement Option

  2-14       Placing Parent and Child Rows in the Same Storage Area Using the Placement Clause and the Hashed Indexes in a Separ

  2-15       Placing Parent Rows and Hashed Indexes in One Storage Area and Child Rows in a Separate Storage Area and Using theC

  2-16       Placing Parent and Child Rows and Hashed Indexes All in the Same Storage Areas and Using the Placement Clause

  2-17       A BASIC Subroutine That Shows How a Counter Works

  2-18       A BASIC Program for Loading Data

  2-19       Using a Database Path Name to Point to the Metadata for the Table Definition in the Data Dictionary

  2-20       A COBOL Program for Loading Data

  2-21       A Sequential RMS Data File That Contains ASCII Text Salary Columns

  2-22       A COBOL Program for Loading Data That Converts Two ASCII Text Salary Columns to Integers and Then to Signed LongwoD

  2-23       A FORTRAN Program for Loading Data

  2-24       Unloading the COLLEGES Table Using the RMU/UNLOAD Command

  2-25       Displaying the Contents of the COLLEGES.RRD File Showing the Record Definition in CDO Format

  2-26       Displaying the Contents of the COLLEGES.UNL Data File Showing the Records and Their Format

  2-27       Three New Records in the COLLEGES3.UNL File That Will Be Loaded into the COLLEGES Table

  2-28       Loading the COLLEGES Table with Three More Rows Using the RMU/LOAD Command

  2-29       Displaying the Contents of the COLLEGES Table Through a Query Showing the Three New Rows

  2-30       Displaying the Contents of the ALL_COLLEGES.RRD File, Showing the Modified Record Definition in CDO Format

  2-31       Loading the ALL_COLLEGES Table with Data Rows Using the RMU/LOAD Command

  2-32       Using DATATRIEVE to Place the DATATRIEVE Record Definitions in a File

  2-33       Creating the Command File

  2-34       Using DATATRIEVE to Place the DATATRIEVE Record Definitions in a File

  2-35       Loading the Data Using DATATRIEVE

  2-36       Using RDO to Check the Results of Using DATATRIEVE to Load the Data

  2-37       DATATRIEVE Record Definition for the Families Domain

  2-38       A New FAMILIES Record Definition for DATATRIEVE

  2-39       Defining the CHILDREN Table

  2-40       Using DATATRIEVE to Transfer the Data

  2-41       Running the Rdb/ELN Backup Utility EBRP

  2-42       Backing Up the Rdb/ELN PERSONNEL Database Using the EBRP BACKUP Command

  2-43       Running SQL or RDO

  2-44       Importing the Rdb/ELN Backup File into an Rdb/VMS Database

  2-45       Exporting an Rdb/VMS Database to Be Moved into Rdb/ELN

  2-46       Restoring the Rdb/VMS PERSONNEL Database into an Rdb/ELN PERSONNEL Database Using the EBRP RESTORE Command

  3-1        Stopping the Monitor Process

  3-2        Stopping the Monitor Process and Aborting User Processes

  3-3        Starting the Monitor Process

  3-4        Displaying the Contents of the Monitor Log File

  3-5        Specifying a Different Device and Directory for the Monitor Log File

  3-6        Displaying the Contents of the Monitor Log File

  3-7        Stopping and Changing the Monitor Process Priority

  3-8        Reopening the Monitor Log File

  3-9        Showing Rdb/VMS System Status

  3-10       Reopening the Monitor Log File and Showing Rdb/VMS System Status

  3-11       Reading the Contents of the Monitor Log File

  3-12       Reading the Contents of the Monitor Log File Using an Editor

  3-13       Showing Rdb/VMS System Status

  3-14       Showing the Current Version of Rdb/VMS

  3-15       Showing the Databases Currently Open and the Attached Users

  3-16       Displaying a List of All Database Users on a VAXcluster System

  3-17       Using the SYSMAN Utility to Set the Environment and the RMU/SHOW USERS Command to Show the Users on a VAXcluster Co

  3-18       Displaying Information About Database Characteristics

  5-1        Opening the Database Manually and Showing Users

  5-2        Closing the Database and Showing Users

  5-3        Changing the Database Opening to Automatic and Showing Users

  5-4        Closing Databases and Showing Users

  5-5        Closing the Database

  5-6        Opening and Then Closing the Database

  5-7        Trying to Access a Database Being Closed

  5-8        Changing Database Access to Manual Open for Maintenance Operations

  5-9        Closing the Database

  5-10       Changing Database Access to Automatic Open for General Use

  5-11       Closing the Database Through Attrition for a Specific Node

  5-12       Showing If Users Are Attached to the Database

  5-13       Showing That No Active Users Are Attached to the Database

  5-14       Closing the Database Through Attrition for All Nodes in a VAXcluster Environment

  6-1        A Log File Produced from a Full Verify Operation

  6-2        Verifying the Integrity of the Database

  6-3        Using Exclusive Access to the Database During a Verify Operation

  6-4        Using the /CHECKSUM_ONLY Qualifier to Verify Only Database Page Checksums

  6-5        Verifying the Constraints for a Database

  6-6        Page Checksum Bad Warning Message Returned from a Checksum-Only Verify Operation

  6-7        Page Checksum Bad Warning Message and GAPONPAGE Error Message Returned from a DEPARTMENTS Area Verify Operation

  6-8        A Display of the Online Help File Explanation for the RMU/VERIFY GAPONPAGE Error Message

  6-9        A Display of the Corrupted Page 2 of the DEPARTMENTS Storage Area

  6-10       A Display of the Uncorrupted Page 2 of the DEPARTMENTS Storage Area

  6-11       A Page Checksum Bad Warning Message That Is Returned from a Checksum Verify Operation of the DEPARTMENTS Area

  6-12       A Page Checksum Bad Warning Message That Is Returned from a Checksum Verify Operation of the DEPARTMENTS Logical Ar

  6-13       B-Tree Lexical Error That Is Returned from a Index Verify Operation with No Data Record Check

  6-14       B-Tree Lexical Error That Is Returned from a Checksum Verify Operation with a Data Record Check

  6-15       A Display of the Corrupted Portion of Page 2 of the DEPARTMENTS Storage Area

  6-16       A Display of Page 2 of the DEPARTMENTS Storage Area That Now Shows No Corruption

  6-17       A Page Checksum Bad Warning Message That Is Returned from a Checksum Verify Operation of the JOBS Logical Area

  6-18       A List of Page Errors That Are Returned from an Area Verify Operation of the JOBS Storage Area

  6-19       Fatal Error Messages That Are Returned from a Constraint Verify Operation

  6-20       How to Trace the Corruption to a Set of Constraints

  6-21       A Display of the Corrupted Portion of Page 2 of the JOBS Storage Area

  6-22       Restoring the JOBS Storage Area to Make It Usable Again

  6-23       Verifying the JOBS Storage Area

  6-24       A Display of the Portion of Page 2 of the JOBS Storage Area That Now Shows No Corruption

  7-1        An RMU/DUMP Command That Displays the Contents of Header of the MF_PERSONNEL Database Root File

  7-2        An RMU/DUMP Command That Displays the Contents of the EMPIDS_LOW Storage Area

  7-3        A Display of Line 1 of Page 2 in Area 2 (EMPIDS_LOW Storage Area)

  7-4        Changing Data on Page 2 in the EMPIDS_LOW Storage Area

  7-5        A Page Verification Using the RdbALTER Command Returns a Checksum Error

  7-6        Depositing a New Checksum on Page 2 in the EMPIDS_LOW Storage Area

  7-7        Using the COPY Command to Copy the Database Files

  7-8        Using the DEPOSIT FILE Command to Relocate the Storage Area Files

  7-9        A Checksum Error is Returned from a Full Verification Operation

  7-10       A Display of Page 2 of the EMP_INFO Storage Area

  7-11       Moving the Contents of Line 17 Back to the Designated Location, Cleaning Up Extraneous Bytes, and Verifying the Pag

  7-12       Committing Changes, Exiting from RdbALTER, and Performing an RMU/VERIFY of MF_PERSONNEL

  8-1        Creating the Directory Structure and Defining a Concealed Logical Name for the MF_PERSONNEL.RDB File

  8-2        Defining Additional Concealed Logical Names for the Other MF_PERSONNEL Database Files

  8-3        Defining a Concealed Logical Name for Backups for the MF_PERSONNEL Database

  8-4        Specifying the File Protection for a Backup File

  8-5        Displaying the Database Root File Header to Determine If Snapshots Are Enabled

  8-6        A Procedure to Enable Snapshot Files Using Concealed Logical Names

  8-7        Starting an Online Backup Operation with Snapshot Files Enabled

  8-8        Starting an Online Backup Operation with Snapshot Files Disabled

  8-9        Starting a Full Database Backup Operation

  8-10       Mounting a Tape Volume and Starting a Full Backup Operation

  8-11       Mounting Two Tape Volumes and Starting a Full Backup Operation

  8-12       Checking the Database Root File to See When the Database Was Last Backed Up

  8-13       Checking the Backup File to See When It Was Created

  8-14       Starting an Incremental Backup Operation

  8-15       Mounting a Tape Volume and Starting an Incremental Backup Operation

  8-16       Determining When the Last Full Backup Was Made

  8-17       Displaying an Area to Determine a Time Stamp

  8-18       Performing CHECKSUM Verification of Database Pages Before Each Database Page Is Backed Up

  8-19       Verifying the Database Prior to a Full Backup Operation

  8-20       Starting a Full Backup Operation After Verifying the Database

  8-21       Verifying the Contents of a Database Backup File After a Backup Operation

  8-22       Verifying a Database Prior to an Incremental Backup Operation

  8-23       Starting an Incremental Backup Operation After Verifying the Database

  8-24       Setting Purge Limits for Incremental Backup Files

  8-25       Verifying the Contents of an Incremental Backup File

  8-26       Performing a Full Backup Operation That Includes the DEPARTMENTS Read-Only Storage Area

  8-27       Performing a Full Backup Operation That Includes Only Read/Write Storage Areas

  8-28       Performing a Full Backup Operation That Includes Only the DEPARTMENTS Read-Only Storage Area

  8-29       A Procedure for Using a Single Tape Drive for a Full Backup Operation

  8-30       A Procedure for Using Multiple Tapes on a Single Drive for a Full Backup Operation

  8-31       A Procedure for Using Multiple Tape Drives for a Full Backup Operation

  8-32       Starting a Full Restore Operation from the DBS_BACKUPS Disk

  8-33       An Error Message Displays If You Omit the /NEW_VERSION Qualifier in a Restore Operation When a Previous Version of

  8-34       Using the /NEW_VERSION Qualifier During a Restore Operation to Supersede a Previous Version of the Database

  8-35       Deleting an Old Database Version After Fully Restoring and Recovering the Database

  8-36       Displaying the Root File Header to Check If the Database Was Ever Incrementally Restored

  8-37       Starting an Incremental Restore Operation Following a Full Restore Operation

  8-38       Displaying the Root File Header to Check If the Database Was Incrementally Restored

  8-39       An Error Message Displays If You Try to Incrementally Restore the Same Database a Second Time, Using the Same Incre

  8-40       A Sample Restore Procedure Followed by Deleting an Old Version of the Database

  8-41       A Procedure for Restoring the SALARY_HISTORY Storage Area and Then Recovering Just That Storage Area

  8-42       An Error Results If You Try To Restore a Storage Area That Is Not Included In the Backup File

  8-43       An Error Results When You Try to Verify the Database

  8-44       Restoring an Inconsistent Storage Area from a Backup File Containing That Storage Area

  8-45       Verifying the Database and Checking the Version Number of the Storage Area File

  8-46       Performing a Full Restore Operation of Only the SALARY_HISTORY Read/Write Storage Area for the MF_PERSONNEL Databas

  8-47       Performing a Full Restore Operation of the DEPARTMENTS Read-Only Storage Area for the MF_PERSONNEL Database

  8-48       A Procedure for Using a Single Tape Drive for a Full Restore Operation

  8-49       A Procedure for Using Multiple Tapes on a Single Tape Drive for a Full Restore Operation

  8-50       A Procedure for Using Multiple Tape Drives for a Full Restore Operation

  8-51       Restoring a Database Without Updating the CDD/Plus Data Dictionary

  8-52       Modifying After-Image Journaling Characteristics During a Restore Operation

  8-53       Disabling After-Image Journaling During a Restore Operation

  8-54       Changing the After-Image Journal File Specification During a Restore Operation

  8-55       Moving Database Files During a Restore Operation

  8-56       Moving Dictionary Information During a Restore Operation

  8-57       Checking That Metadata Was Properly Moved into the Dictionary After a Restore Operation

  9-1        Changing the Database Journal Allocation and Extent Size Parameters

  9-2        Placement of the AIJ File

  9-3        Mounting a Tape as a VMS Volume Prior to Backing Up an AIJ File

  9-4        Backing Up an AIJ File to Tape

  9-5        Submitting a Batch Job to Back Up an AIJ File to Tape

  9-6        The Resulting Error Message When the Name of the New AIJ Backup File Matches the Name of an Existing AIJ Backup Fil

  9-7        Specifying Backup AIJ Qualifiers to Control the Size of the AIJ File and How Often to Test Its Size Before Backing

  9-8        Displaying the Contents of an Empty AIJ File

  9-9        Displaying the Contents of an Empty AIJ File

  9-10       Determining Where the AIJ File Was Located

  9-11       Recovering a Database and Specifying the Device and File Specification of the AIJ File

  9-12       Using the /AIJ_BUFFERS Qualifier in the RMU/RECOVER Command

  9-13       Using the /TRACE Qualifier in the RMU/RECOVER Command

  9-14       Using the /ROOT Qualifier in the RMU/RECOVER Command

  9-15       Using the /AREAS Qualifier in the RMU/RECOVER Command

  9-16       Defining a System Logical for the RUJ File

  9-17       Changing the Number of Recovery Buffers Allocated to the Recovery Process

  9-18       Displaying the Contents of an Empty RUJ File

  9-19       Displaying the Contents of an RUJ File

  9-20       Defining System and Concealed Logical Names for Database Files; Manually Opening the Database to Limit Access; BacT

  9-21       An Example of Restoring, Verifying and Recovering a Database

  9-22       Controlling the Size of the AIJ File

  10-1       An RMU/DUMP Command That Displays the Contents of the MF_PERSONNEL Database Root File

  10-2       A Display of the Current Database Parameter Settings and Parameters for the DEPARTMENTS Storage and Snapshot Areas

  10-3       Changing the Extent Values of the Database

  10-4       Changing the Extent Options of the Database

  10-5       Changing the Maximum Number of Users Option of the Database

  10-6       Changing the Maximum Number of VAXcluster Nodes Options of the Database

  10-7       Changing the Adjustable Lock Granularity Option of the Database

  10-8       Changing the Number of Buffers Option of the Database

  10-9       Changing the Number of Recovery Buffers Option of the Database

  10-10      A Display of the MF_PERSONNEL Database Root File to Determine the Current Snapshot Settings

  10-11      Disabling Snapshot Files for the MF_PERSONNEL Database

  10-12      A Display of the MF_PERSONNEL Database Root File to Verify the Current Settings for Snapshot Files

  10-13      Using the RMU/DUMP Command to Determine If There Are Snapshot Transactions in Progress

  10-14      Determining the Current Size of the DEPARTMENTS Snapshot File for the MF_PERSONNEL Database

  10-15      Increasing the Allocation Size of MF_PERSONNEL Snapshot Files

  10-16      Verifying the New Size of the DEPARTMENTS Snapshot File in the MF_PERSONNEL Database

  10-17      Specifying Deferred Snapshot Files for the MF_PERSONNEL Database

  10-18      Specifying Immediate Snapshot Files for the MF_PERSONNEL Database

  10-19      Changing Allocation Characteristics for the MF_PERSONNEL AIJ File

  10-20      Verifying the New Space Allocation and Extent Settings of the MF_PERSONNEL AIJ File

  10-21      Changing Allocation Characteristics for the MF_PERSONNEL Snapshot Files

  10-22      Verifying the New MF_PERSONNEL Snapshot File Extent Settings

  10-23      Changing the Requirement to Required for the Dictionary

  10-24      Changing the Requirement for a Dictionary to Not Required

  10-25      Specifying Parameters for the JOB_ASSIGNMENTS Storage Area

  10-26      Deleting a Storage Area in the MF_PERSONNEL Database

  10-27      Using the RMU/MOVE_AREA Command to Move Both the DEPARTMENTS Storage Area and Snapshot Area to a Different Disk Dev

  10-28      Using the RMU/MOVE_AREA Command to Move the DEPARTMENTS Storage Area and Snapshot Area to Two Different Disk Device

  10-29      The JOB_ASSIGNMENTS_SORT Index Definition for the JOB_ASSIGNMENTS Table in the MF_PERSONNEL Database

  10-30      Changing the JOB_ASSIGNMENTS_SORT Index Definition for the JOB_ASSIGNMENTS Table in the MF_PERSONNEL Database

  10-31      The JOB_ASSIGN_EMPID_HASH and the JOB_ASSIGNMENTS_HASH Index Definitions for the JOB_ASSIGNMENTS Table in the MF_PE

  10-32      Partitioning the JOB_ASSIGNMENTS_HASH Index Across Two Storage Areas in the MF_PERSONNEL Database

  10-33      Deleting the TEST_HASH Index

  10-34      The Original JOB_ASSIGNMENTS_SORT_MAP Storage Map Definition for the JOB_ASSIGNMENTS Table in the MF_PERSONNEL Data

  10-35      Modifying the STORE Clause of the JOB_ASSIGNMENTS_ SORT_MAP Storage Map Definition for the JOB_ ASSIGNMENTS Table t

  10-36      Specifying the PLACEMENT VIA INDEX Option in the JOB_ASSIGNMENTS_SORT_MAP Storage Map Definition for the JOB_ASSIGt

  10-37      The Original JOB_ASSIGN_EMPID_HASH_MAP Storage Map Definition for the JOB_ASSIGNMENTS Table in the MF_PERSONNEL Dat

  10-38      Modifying the STORE Clause in the JOB_ASSIGN_EMPID_HASH_MAP Storage Map Definition for the JOB_ASSIGNMENTS Table it

  10-39      Specifying the PLACEMENT VIA INDEX Option for the JOB_ASSIGNMENTS_HASH_MAP Storage Map Definition for the JOB_ASSIt

  10-40      The Original TEST_STORAGE_HASH_MAP Storage Map Definition for the JOB_ASSIGNMENTS Table in the MF_PERSONNEL Databas

  10-41      Deleting the TEST_STORAGE_HASH_MAP Storage Map Definition for the JOB_ASSIGNMENTS Table in the MF_PERSONNEL Databas

  10-42      The Physical Design for the DEPARTMENTS Table in the MF_PERSONNEL Database

  10-43      Creating an RBR File Using the SQL or RDO EXPORT Statement

  10-44      An SQL and RDO Procedure That Creates or Defines an MF_PERSONNEL Database Using an IMPORT Statement

  10-45      Creating an RBR File Using the SQL or RDO EXPORT Statement

  10-46      An SQL and RDO Procedure That Creates or Defines an MF_PERSONNEL Database Using an IMPORT Statement

  10-47      Creating a Duplicate Copy of an Empty Database Using the EXPORT Statement

  10-48      Creating a Duplicate Copy of a Database That Contains No Data Using the IMPORT Statement

  10-49      Using the TRACE Clause in an IMPORT Operation to Check the Number of I/O Operations and CPU Time Required

  10-50      Creating the Interchange (RBR) File Using the SQL or RDO EXPORT Statement

  10-51      Redefining the Concealed Logical Name for the New Database Root File on the New Disk Device

  10-52      Importing the RBR File Using the SQL or RDO IMPORT Statement

  10-53      Creating a Version-Independent Copy of Data (RBR File) Using the SQL or RDO EXPORT Statement and Specifying the WIT

  10-54      Importing the Archived Copy of the Database Interchange File Using the SQL or RDO IMPORT Statement

  10-55      Migrating a V3.0 Rdb/VMS Database to an Rdb/VMS System Prior to V3.0

  10-56      Importing a Pre-V3.0 Copy of the Database (RBR File) Using the SQL or RDO IMPORT Statement

  10-57      Migrating a Pre-V3.0 Rdb/VMS Database to Rdb/ELN

  10-58      Using the Rdb/ELN Backup and Restore Utility (EBRP) to Restore an Exported Single-File Rdb/VMS Database to an Rdb/E

  10-59      Migrating a Multifile Rdb/VMS Database Using the SQL or RDO EXPORT Statement and Specifying the WITH NOEXTENSIONS O

  10-60      Using the Rdb/ELN Backup and Restore Utility (EBRP) to Restore an Exported Multifile Rdb/VMS Database to an Rdb/ELN

  10-61      Using the RMU/COPY_DATABASE Command to Make a Copy of the MF_PERSONNEL Database

  11-1       The Display Format Used for Logical Areas, Snapshot Files, and Database Pages

  11-2       A Display of the Partial First Page of Three Selected Storage Areas of the MF_PERSONNEL Database

  11-3       A Display of the EMP_INFO Storage Area of the the MF_PERSONNEL Database

  11-4       A Display of the CANDIDATES Logical Area of the MF_PERSONNEL Database

  11-5       An RMU/DUMP Command That Displays the First Page of All Logical Areas of the MF_PERSONNEL Database

  11-6       A Display of Logical Area RDB$AIP That Lists the Logical Area Numbers and Names of the MF_PERSONNEL Database

  11-7       An RMU/DUMP Command That Attempts to Display the Contents of the EMPLOYEES Logical Area of the MF_PERSONNEL Databas

  11-8       A Partial Display of the First Page of Three Selected Snapshot Files of the MF_PERSONNEL Database

  11-9       An RMU/DUMP Command That Displays Selected Pages of the EMPIDS_LOW Snapshot File of the MF_PERSONNEL Database to an

  11-10      An Example of a Snapshot File Showing the Components of the Page Tail

  11-11      An Example of the Page Header for a Data Storage Page

  11-12      An Example of the Line Index for a Data Storage Page

  11-13      An Example of the Transaction Sequence Number Index for a Data Storage Page

  11-14      An Example of the Locked and Unlocked Free Space for a Data Storage Page

  11-15      An Example of the User-Stored Data Storage Segment

  11-16      A Display of a Segmented String Data Storage Segment

  11-17      An Example of a Sorted Index Node Segment

  11-18      A Display of a Storage Area Page with Mixed Page Format Containing Hashed Index Node and Data Storage Records

  11-19      An Example of the Page Tail for a Data Storage Page in a Mixed Storage Area

  11-20      An Example of the Page Tail for a Data Storage Page in a Uniform Storage Area

  11-21      An Example of a Fragmented Storage Record

  11-22      An Example of a SPAM Page for a Storage Area with Uniform Page Format

  11-23      An Example of an Area Bit Map Page

  11-24      An Example of an Area Inventory Page

  11-25      An Example of a SPAM Page for a Storage Area with Mixed Page Format

  11-26      Sample SQL and RDO Command Files That Define Storage Area SPAM Threshold Parameters for Specific Storage Areas

  12-1       Using the DCL SEARCH Command to Find the Exception in an Rdb/VMS Run-time Services Bugcheck Dump File

  12-2       A Typical Error Message That Results When Rdb/VMS Produces an Rdb/VMS Run-Time Services Bugcheck Dump

  12-3       A Typical Error Message That Results When Rdb/VMS Produces an RMU Bugcheck Dump

  12-4       Defining the RDM$BUGCHECK_DIR Logical Name

  12-5       Examples of Exception Reports Extracted from RDMDBRBUG.DMP Files

  12-6       An Exception Generated from Exceeding the Disk Quota

  12-7       A Batch Command Procedure That Enables Four Work Files to Be Created, Each on a Separate Disk Volume

  12-8       An Exception That Can Be Generated from Exceeding the Paging File Quota (PGFLQUOTA)

  12-9       Using a VMS Text Editor to Read the Bugcheck Dump File

  14-1       Using the RMU/ANALYZE /AREAS=EMPIDS_LOW /OPTIONS=NORMAL Command on the MF_PERSONNEL Database

  14-2       Using the RMU/ANALYZE /AREAS=EMPIDS_LOW /OPTIONS=FULL Command on the MF_PERSONNEL Database

  14-3       Using the RMU/ANALYZE /AREAS=EMPIDS_LOW /OPTIONS=DEBUG Command on the MF_PERSONNEL Database

  14-4       Using the RMU/ANALYZE /AREAS=DEPARTMENTS /LAREAS=(DEPARTMENTS,DEPARTMENTS_INDEX) /OPTIONS=NORMAL Command on the MFD

  14-5       Using the RMU/ANALYZE /INDEXES /OPTIONS=NORMAL Command on the EMPLOYEES_HASH Hashed Index for the MF_PERSONNEL Data

  14-6       Using the RMU/ANALYZE /INDEXES /OPTIONS=NORMAL Command on the DEPARTMENTS_INDEX Sorted Index for the MF_PERSONNEL D

  14-7       Using the RMU/ANALYZE /INDEXES /OPTIONS=NORMAL Command on the JOB_HISTORY_HASH Hashed Index for the MF_PERSONNEL Da

  14-8       Using the RMU/ANALYZE /INDEXES /OPTIONS=FULL Command on the JOB_HISTORY_HASH Hashed Index for the MF_PERSONNEL Data

  14-9       Using the RMU/ANALYZE /INDEXES /OPTIONS=FULL Command on the DEPARTMENTS_INDEX Sorted Index for the MF_PERSONNEL Dat

  14-10      Using the RMU/ANALYZE /INDEXES /OPTIONS=DEBUG Command on the EMPLOYEES_HASH Hashed Index for the MF_PERSONNEL Datab

  14-11      Using the RMU/ANALYZE /INDEXES /OPTIONS=DEBUG Command on the DEPARTMENTS_INDEX Sorted Index for the MF_PERSONNEL Da

  14-12      Using the RMU/ANALYZE /INDEXES /OPTIONS=DEBUG Command on the JOB_HISTORY_HASH Hashed Index for the MF_PERSONNEL Dat

  14-13      An RMU/DUMP Command to Display the First 10 Data Pages of the EMPIDS_LOW Storage Area in the MF_PERSONNEL Database

  14-14      Using the RMU/ANALYZE /PLACEMENT /OPTIONS=NORMAL Command on the EMPLOYEES_HASH Hashed Index for the MF_PERSONNEL Da

  14-15      Using the RMU/ANALYZE /PLACEMENT /OPTIONS=NORMAL Command on the DEPARTMENTS_INDEX Sorted Index for the MF_PERSONNED

  14-16      Using the RMU/ANALYZE /PLACEMENT /OPTIONS=NORMAL Command on the JOB_HISTORY_HASH Hashed Index for the MF_PERSONNELD

  14-17      Using the RMU/ANALYZE /PLACEMENT /OPTIONS=FULL Command on the EMPLOYEES_HASH Hashed Index for the MF_PERSONNEL Data

  14-18      Using the RMU/ANALYZE /PLACEMENT /OPTIONS=FULL Command on the DEPARTMENTS_INDEX Sorted Index for the MF_PERSONNEL D

  14-19      Using the RMU/ANALYZE /PLACEMENT /OPTIONS=FULL Command on the JOB_HISTORY_HASH Hashed Index for the MF_PERSONNEL Da

  14-20      Using the RMU/ANALYZE /PLACEMENT /OPTIONS=DEBUG Command on the EMPLOYEES_HASH Hashed Index for the MF_PERSONNEL Dat

  14-21      Using the RMU/ANALYZE /PLACEMENT /OPTIONS=DEBUG Command on the DEPARTMENTS_INDEX Sorted Index for the MF_PERSONNELD

  14-22      Using the RMU/ANALYZE /PLACEMENT /OPTIONS=DEBUG Command on the JOB_HISTORY_HASH Hashed Index for the MF_PERSONNEL D

  14-23      Using the RMU/ANALYZE Command to Create a Fixed Length Record Binary File

  14-24      Using the RMU/ANALYZE Command to Create a CDD/Plus Compatible Record Definition Binary File

  14-25      Using the RMU/ANALYZE Command to Create Both a Fixed Length Record File and a CDD/Plus Compatible Record Definition

  15-1       Sample DECtrace Summary Report for Pages 1 Thru 3 Based on Rdb/VMS Data

  15-2       Sample DECtrace Summary Report for Pages 4 Thru 6 Based on Rdb/VMS Data Pages

  15-3       Sample DECtrace Summary Report for Pages 7 Thru 9 Based on Rdb/VMS Data

  15-4       Sample DECtrace Summary Report for Pages 10 Thru 13 Based on Rdb/VMS Data

  15-5       Using Reporting Options to Generate a Customized Report

  15-6       Sample DECtrace Customized Report Based on Rdb/VMS Data

  16-1       Joining Three Tables to Use the Employee's Department Information

  16-2       Using Controlled Redundancy by Joining Two Tables to Use the Employee's Department Information

  16-3       Starting a Transaction in a Shared Read Reserving Option

  16-4       Starting a Transaction in a Shared Write Reserving Option

  16-5       Updating and Retrieving a Row by Dbkey

  16-6       Updating and Retrieving a Row by Column Value

  16-7       Starting a Transaction in a Protected Read Reserving Option

  16-8       Starting a Transaction in a Protected Write Reserving Option

  16-9       Starting a Transaction in an Exclusive Read or Write Reserving Option

  16-10      An Error Message That Is Generated When You Try to Use an Incompatible Share Mode and Lock Type

  16-11      Changing the Read/Write Status of the DEPARTMENTS Storage Area to Read-Only

  16-12      Changing the Read/Write Status of the RDB$SYSTEM Storage Area to Read-Only

  16-13      Updating the Cardinalities of the Tables and Indexes in the RDB$SYSTEM Storage Area

  16-14      Confirming the Cardinality of a Table and Index

  16-15      Setting the Index Compression for a SQL CHAR or RDO TEXT Data Type Column

  16-16      Setting the Index Compression for a SQL SMALLINT and RDO SIGNED WORD Data Type Column

  16-17      Defining a Multisegmented Index to Reduce Lock Contention in Index Structures When Using Chronological Keys

  16-18      Defining Additional Indexes to Reduce Lock Contention in Index Structures When Using Chronological Keys

  16-19      Sequential Access of the EMPLOYEES Table and a Table Level Lock Results When the Field Used Does Not Have an Index

  16-20      Indexed Access of the EMPLOYEES Table and Adjustable Locking Results When the Field Used Has an Index Defined for I

  16-21      An Error Message Generated When You Specify a Node Size Lower Than the Minimum Value for the Index

  16-22      Shadowing Achieves a Clustering Effect Between Two Different Storage Areas for Storing and Retrieving Parent/Child

  16-23      Defining the RDMS$BIND_WORK_VM Logical Name with 20,000 Bytes

  16-24      Defining Temporary Work Space for Temporary Tables Created and Used by Rdb/VMS

  16-25      Defining a Table Constraint That Checks for the Existence of an EMPLOYEE Row Before Adding a JOB_HISTORY Row

  16-26      Using Program Logic to Take the Place of a Table Constraint to Check That an EMPLOYEE Row Exists Before Adding a JO

  16-27      Creating a Snapshot File for the Default RDB$SYSTEM Storage Area

  16-28      Creating and Explicitly Enabling the Snapshot File for the Default RDB$SYSTEM Storage Area

  16-29      Creating a Snapshot File for the Default RDB$SYSTEM Storage Area and Limiting Its Size to 50 Pages

  16-30      Modifying the Snapshot File Allocation and Extent Size

  16-31      Specifying Snapshot Extents for a Multivolume Database

  16-32      Using the RMU/DUMP Command to Determine the Current Setting for Snapshot Files, to Change and Then Check the Settin

  16-33      A List of the Concealed Logical Names for the MF_PERSONNEL Database Files

  16-34      Using the RMU/BACKUP and RMU/RESTORE Command to Change the Location of the EMPIDS_LOW.SNP File

  16-35      Setting Data Compression for Single-File Databases

  16-36      Setting Data Compression for Tables Using a Storage Map Statement

  16-37      Defining a New Storage Area and Specifying a Larger Page Size, Decompressing Rows in a Storage Map, and Deleting th

  16-38      Using the IMPORT Statement to Specify Import Parameters, New Storage Area and Storage Map Characteristics, Includia

  16-39      Messages That Display When the IMPORT Statement Executes

  16-40      Using the SHOW Statement to Check the Compression Characteristic for Storage Maps and Tables

  16-41      Using the PLACE Statement to Return the Dbkey of a Specified Row

  16-42      A Command That Accesses a Database on a Remote Node Using a Special Account

  16-43      A DCL Command That Allows Faster Processing on the Remote Node and Improves Performance Over the Network

  16-44      Using the RMU/DUMP Command to Display the Value of the Number of Buffers Parameter for a Database

  16-45      Using AUTHORIZE and Modifying Account Names for All Rdb/VMS Users by Granting Them the TMPMBX Privilege

  16-46      Using the DCL DEFINE Command to Assist in Locating Erroneous Queries

  16-47      Using the DCL DEFINE Command to Locate the Recovery-Unit Journal File on a Disk and Directory Other Than the Defau(

  16-48      Using the DCL DEFINE Command to Specify the RDBPRE Preprocessor to Retain the Intermediate MAR and Language Files

  16-49      Using the DCL DEFINE Command to Specify the SQL Precompiler to Retain the Intermediate MAR and Language Files

  16-50      Using the DCL DEFINE Command to Temporarily Override the Database Default Number of Buffers to Use at Run Time

  16-51      Using the DCL DEFINE Command to Pre-extend the RUJ Files for Each Process Using a Database

  16-52      Using the DCL DEFINE Command to Redirect the Location of Bugcheck Files from the Default SYS$LOGIN Directory

  16-53      Defining the RDMS$BIND_WORK_VM Logical Name to Be 25,000 Bytes

  16-54      Using the DCL DEFINE Command to Redirect the Location of the Temporary Tables from the Default SYS$LOGIN Disk and D

  16-55      Using the DCL DEFINE Command to Increase the Buffer Space and Efficiency of Applications that Manipulate Segmented

  16-56      Using the DCL DEFINE Command to Specify the Wait Interval for Transactions Waiting for Locks to be Released

  16-57      Using the DCL DEFINE Command to Specify the Device for the SORT Work File

  16-58      Specify a Specific Device for a SORT Work File

  16-59      Using the DCL DEFINE Command to Specify Several Devices for the SORT Work Files

  17-1       Defining the Access Strategy Flag

  17-2       Defining the Access Strategy Flag with the "E" Debug Flag

  17-3       Defining the Access Strategy Flag with the "\" Debug Flag Flags

  17-4       Defining the Estimated Cost of Access Strategy Flag

  17-5       Defining Both the Cost and Access Strategy Flags

  17-6       Defining the Sort Statistics Flag

  17-7       A Query of the EMPLOYEES Table That Prints the LAST_NAME of All Employees in the Company Using the Access Strategy

  17-8       The Last Three Lines of the Query Optimizer Output That Shows the Retrieval Access Strategy Performed

  17-9       A Query of the EMPLOYEES and JOB_HISTORY Tables That Prints the LAST_NAME and JOB_CODE of All Employees in the ComF

  17-10      A Query of the EMPLOYEES and JOB_HISTORY Tables That Prints the LAST_NAME and JOB_CODE of All Employees in the ComF

  17-11      A Query of the JOB_HISTORY and JOBS Tables That Prints the EMPLOYEE_ID and JOB_TITLE of All Employees in the Compao

  17-12      A Query of the JOB_HISTORY and JOBS Tables That Prints the EMPLOYEE_ID and JOB_TITLE of All Employees in the Compao

  17-13      A JOBS Table Query That Prints the JOB_CODE, JOB_TITLE, MINIMUM_SALARY, and MAXIMUM_SALARY of All Employees Using S

  17-14      Defining the WAGECLASS_IDX Index

  17-15      A JOBS Table Query That Prints the JOB_CODE, JOB_TITLE, MINIMUM_SALARY, and MAXIMUM_SALARY of All Employees Using W

  17-16      Displaying the Sort Statistics Using the Sort Flag

  18-1       Using the RMU/Monitor Command to Start the Rdb/VMS Monitor Process for Each Satellite Node in a Local Area VAXclust

  18-2       An Error Message Is Returned When You Attempt to Access a Database from a VAXcluster Node When the Maximum Nodes Pa

  18-3       Specifying the Number of VAXcluster Nodes to Be 20

  18-4       Displaying the Contents of the Database Header File to Show the Current Value for the Maximum Number of VAXcluster

  18-5       Using the RMU/DUMP Command to Check the Current Value of the VAXcluster Node Count

  18-6       Establishing a Single Logical Name for the Dictionary and Placing Dictionary Files on a Shareable Cluster Disk

  18-7       Creating the Directory Structure and Defining a Concealed Logical Name for the MF_PERSONNEL Root File

  18-8       Defining Concealed Logical Names for the Database Files

  18-9       Defining a Concealed Logical Name for the Database Recovery-Unit Journal Files

  18-10      Defining a Database in SQL and RDO Using the Defined Concealed Logical Name

  18-11      Creating a Schema in SQL or Defining a Database in RDO and Using the Defined Concealed Logical Names

  18-12      Using the System Logical Name to Refer to the After-Image Journal File

  18-13      Using Concealed Logical Names to Refer to the Database After-Image Journal and Recovery-Unit Journal Files

  FIGURES

  8-1        Sample MF_PERSONNEL File Distribution and Use of Logical Names

  9-1        Proper Timing for Changing the AIJ File Relative to an Online Incremental or Full Backup Operation

  11-1       All Tables in One File of a Single-File Database

  11-2       Each Table in a Separate File of a Multifile Database

  11-3       Combination of Tables in a Single File of a Multifile Database

  11-4       One Table in Several Files of a Multifile Database

  11-5       A Storage Area with Uniform Page Format

  11-6       A Mapping of AIP and ABM Data Structures to SPAM and Data Pages for Uniform Page Format Storage Areas

  11-7       A Storage Area with Mixed Page Format

  11-8       Diagram of Data Storage Page Components in a Mixed Page Format Storage Area

  11-9       Adding a New Row to the Database

  11-10      Rdb/VMS Page Structure with the System Record

  11-11      Pointer to Another Page

  11-12      SPAM Intervals in a Mixed Storage Area Using Defaults

  11-13      SPAM Page Distribution with a Larger Interval

  14-1       The MF_PERSONNEL Database Structure Showing Storage Areas, Tables, and Primary and Secondary Keys

  16-1       A Join of Three Tables to Use the Employee's Department Information

  16-2       Controlled Redundancy with a Join of Two Tables to Use the Employee's Department Information

  16-3       Adjustable Lock Levels

  16-4       Duplicate Index Nodes

  16-5       B-Tree Index Structure

  16-6       Clustered Access Contention at One Index Node

  16-7       Hashed Index Structure for a Mixed Page Format Storage Area Using PLACEMENT VIA INDEX with One Table

  16-8       Buffer Pool:  Database Parameter Defaults

  16-9       Transactions Accessing the Database Snapshot File

  16-10      Effect of Data Compression

  18-1       Example of a Single-Node Environment

  18-2       Example of a Computer Interconnect (CI)-Only VAXcluster Environment

  18-3       Example of a Local Area VAXcluster Environment

  18-4       Example of a Mixed-Interconnect VAXcluster Environment

  18-5       Sample Placement of MF_PERSONNEL Database Files in a VAXcluster Environment

  TABLES

  1-1        Regular Daily and Weekly Maintenance Activities

  1-2        Maintenance Activities to Be Performed at Database Startup and Shutdown

  1-3        Maintenance Activities to Be Performed After Problems Arise

  1-4        General RMU Maintenance Activities to Be Performed as Necessary

  1-5        General SQL and RDO Maintenance Activities to Be Performed as Necessary

  4-1        Database Privileges and Associated Database Operations and RMU Commands

  4-2        Table Privileges and Associated Table Operations

  4-3        Column Privileges and Associated Column Operations

  4-4        RMU Functions That Are Not Audited

  4-5        DACCESS Privileges for Database Objects

  4-6        Columns Needed in a Database Table for Storing Security Audit Journal Records

  10-1       Requirements for Making Metadata Updates

  10-2       The Columns and Keys for the JOB_ASSIGNMENTS Table

  10-3       A Summary of the Change Storage Map Options and How Rows Are Affected (Moved/Not Moved)

  10-4       The Tables and Storage File for the Single-File PERSONNEL Database

  10-5       The Tables, Storage Areas, and Storage Maps for the Multifile MF_PERSONNEL Database

  11-1       SPAM Entry for a Data Page

  13-1       Performance Problem Areas

  15-1       Rdb/VMS Events

  15-2       Resource Utilization Items

  15-3       Rdb/VMS Data Items

  15-4       Events and Items Available in the ALL Class for Rdb/VMS

  15-5       Events and Items Available in the PERFORMANCE Class for Rdb/VMS

  15-6       Events and Items Available in the WORKLOAD Class for Rdb/VMS

  15-7       DECtrace Reports

  15-8       Columns for Table EPC$1_221_DATABASE

  15-9       Columns for Table EPC$1_221_DATABASE_ST

  15-10      Columns for Table EPC$1_221_TRANSACTION

  15-11      Columns for Table EPC$1_221_TRANSACTION_ST

  15-12      Columns for Table EPC$1_221_REQUEST_ACTUAL

  15-13      Columns for Table EPC$1_221_REQUEST_BLR

  15-14      Columns for Table EPC$1_221_REQUEST_BLR_ST

  15-15      Columns for Table EPC$1_221_REQUEST_MIN

  15-16      Columns for Table EPC$1_221_REQUEST_MAX

  15-17      Columns for Table EPC$1_221_REQUEST_TOT

  15-18      Columns for Table EPC$1_221_DATABASE

  15-19      Columns for Table EPC$1_221_DATABASE_ST

  15-20      Columns for Table EPC$1_221_TRANSACTION

  15-21      Columns for Table EPC$1_221_TRANSACTION_ST

  15-22      Columns for Table EPC$1_221_REQUEST_ACTUAL

  15-23      Columns for Table EPC$1_221_REQUEST_BLR

  15-24      Columns for Table EPC$1_221_REQUEST_BLR_ST

  16-1       How Far Will the Rdb/VMS Default Values Take You?

  16-2       Rdb/VMS Database-Wide Parameter Default Values and Minimum and Maximum Values

  16-3       Rdb/VMS Multifile Storage Area Parameter Default Values and Minimum and Maximum Values

  16-4       Rdb/VMS Multifile Storage Map Parameter Default Values

  16-5       How Well Do You Know Your Data?

  16-6       Interrelated Database Performance Parameters

  16-7       Lock Compatibility Between a Current Transaction and Access Modes Other Transactions Can Specify

  16-8       The Effect of Long and Short Transactions on a Database

  16-9       Calculating the Fixed and Variable Overhead for a Page

  16-10      Estimating the Number of Bytes per Entry Plus Overhead Bytes for Each Respective Index Record Type on a Data Page

  16-11      An Example Calculation of the Number of Bytes Per Entry Plus Overhead Bytes for Each Respective Index Record Type o

  16-12      The EMPLOYEES Row Columns and Column Sizes

  16-13      The JOB_HISTORY Row Columns and Column Sizes

  16-14      Calculating the Fixed Overhead for a Page

  16-15      Calculating the Data Row Overhead for a Page

  16-16      Calculating the Page Size

  16-17      Calculating the File Allocation Size

  16-18      Calculating the File Allocation Size to Store 100 Data Pages

  16-19      Calculating the SPAM Pages and Adding these Pages to the Estimated File Allocation Size

  16-20      SQL and RDO Statements Affecting Database Parameters

  16-21      RMU Commands Affecting Database Parameters

  16-22      Behavior of Transactions When Snapshots Are Deferred

  16-23      SQL and RDO Statements Affecting Storage Area Parameters

  16-24      RMU Commands Affecting Storage Area Parameters

  16-25      SQL and RDO Statements Affecting Storage Map Parameters

  16-26      Summary of Rdb/VMS Logical Names

  17-1       The Results of AND and OR Logic with Respect to the Number of Queries Made and Size of the Dbkey Set