Preface
Purpose
Audience
Organization
References to ABL data types
Typographical conventions
OpenEdge messages
Obtaining more information about OpenEdge messages
Introduction to Databases
Describing a database
Elements of a relational database
Tables
Rows
Columns
Keys
Indexes
Applying the principles of the relational model
OpenEdge database and the relational model
Database schema and metaschema
Sports 2000 database
Key points to remember
Database Design
Design basics
Data analysis
Logical database design
Table relationships
One-to-one relationship
One-to-many relationship
Many-to-many relationship
Normalization
First normal form
Second normal form
Third normal form
Denormalization
Defining indexes
Indexing basics
How indexes work
Reasons for defining an index
Sample indexes
Disadvantages of defining an index
Choosing which tables and columns to index
Indexes and ROWIDs
Calculating index size
Eliminating redundant indexes
Deactivating indexes
Physical database design
OpenEdge RDBMS
OpenEdge database file structure
Other database-related files
OpenEdge architecture
Storage areas
Control area
Schema area
Primary recovery area
Application data area
After-image area
Encryption Policy area
Audit data and index areas (optional)
Transaction log area
Guidelines for choosing storage area locations
Extents
Clusters
Blocks
Data blocks
Index blocks
Other block types
Master blocks
Storage object blocks
Free blocks
Empty blocks
Storage design overview
Mapping objects to areas
Determining configuration options
System platform
Connection modes
Single-user mode
Multi-user mode
Batch mode
Interactive mode
Client type
Self-service clients
Network clients
Database location
Database connections
Relative- and absolute-path databases
Administrative Planning
Data layout
Calculating database storage requirements
Formulas for calculating field storage
Sample to estimate storage requirements
Database-related size criteria
Sizing your database areas
Block sizes
Specifying records per block
Example of calculating records per block
Unused slots
Determining space to allocate per area
Distributing tables across storage areas
Using extents
Index storage
Primary recovery area
Database areas
Data area optimization
Splitting off the schema
Choosing an appropriate block size
Keeping extents sized to eliminate I/O indirection
Keeping areas small for offline utilities
Always have an overflow extent for each area
Enabling large files
Partitioning data
Primary recovery (before-image) information
Extent size rules
Sequential access
BI grow option
After-image information
Always use multi-volume extents
Isolate for disaster recovery
Sizing after-image extents
System resources
Disk capacity
Disk storage
Understanding data storage
Determining data storage requirements
Determining current storage using operating system commands
Projecting future storage requirements
Examining your growth pattern
Moving archival data off the production machine
Comparing expensive and inexpensive disks
Understanding cache usage
Increasing disk reliability with RAID
OpenEdge in a network storage environment
Disk summary
Memory usage
Estimating memory requirements
Operating system memory estimates
Understanding memory internals
OpenEdge-specific memory estimates
Example memory budget
Optimizing memory usage
Buffer hits
Increasing memory
Decreasing memory
Direct IO
Private buffers (-Bp)
Alternate Buffer Pool
CPU activity
Tuning your system
CPU usage and the -spin parameter
Understanding idle time
Fast CPUs versus many CPUs
Tunable operating system resources
Database Administration
Database administrator role
Security administrator role
Ensuring system availability
Database capacity
Application load
System memory
Additional factors to consider in monitoring performance
Testing to avoid problems
Safeguarding your data
Why backups are done
Creating a complete backup and recovery strategy
Who does the backup?
What does the backup contain?
Where does the backup go?
How to label a backup
When do you do a backup?
Using PROBKUP versus operating system utilities
Understanding the OpenEdge PROBKUP utility
How PROBKUP works
Adding operating system utilities to augment PROBKUP
After-imaging implementation and maintenance
OpenEdge Replication
Testing your recovery strategy
Maintaining your system
Daily monitoring tasks
Monitoring the database log file
Key Events
Monitoring area fill
Monitoring buffer hit rate
Monitoring buffers flushed at checkpoint
Monitoring system resources (disks, memory, and CPU)
Periodic monitoring tasks
Database analysis
Rebuilding indexes
Compacting indexes
Fixing indexes
Moving tables
Moving indexes
Truncating and growing BI files
Dumping and loading
Data Dictionary dump and load
Bulk loader
Binary dump and load
Periodic event administration
Annual backups
Archiving
Modifying applications
Making schema changes
Making application code changes
Migrating OpenEdge releases
Profiling your system performance
Establishing a performance baseline
Collecting your baseline statistics
Understanding your results
Performance tuning methodology
Summary
Preface
Summary