"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" BLUNDER INSURANCE """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" PRODUCT : R:BASE VERSION : 3.1 CATEGORY : BACKUPS SUBCATEGORY : INTEGRITY """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" From William B. Driskell, 6536 20th Ave N.E., Seattle, WA 98115. Bill is a marine biologist and computer consultant. You can reach him at 206-522-5930. It has been suggested in half-jesting tones that all new database managers should have their knuckles tattooed with that ubiquitous phrase, "BACK IT UP!" Unfortunately, the exclamation point requires an extra knuckle so the scheme loses its emphasis. In total seriousness, every installation should have standard backup procedures tailored for both ordinary and extraordinary activities. A daily backup is probably good enough for most firms with a routine workload but perhaps not adequate during those deadline-tomorrow- gotta-work-all-night sessions. During such high intensity data grinds, it would be prudent to backup your databases at more frequent intervals - by work stages or elapsed work time. Making Local Backups """""""""""""""""""" What if your system operator only runs a tape backup at 5:00 and then goes home? Use local backups to reduce your exposure to data disaster. For example, copy your database to a different drive to help eliminate hardware risk or copy your database to a different subdirectory to safeguard against file management blunders. If you're tight on disk space, use a file compression and archiving utility like PKZIP from Phil Katz to reduce the file size. Typically, PKZIP can reduce the size by up to 70%. Personally, I find it convenient to maintain local copies of my active databases in a subdirectory called BACKUP. If I accidentally delete a table or change the wrong set of rows, I have a choice. I can either manually correct my errors or replace the table from the backup copy. I have a procedure for maintaining local backups. Typically, as soon as I finish importing a data set or making major edits to a database, I exit from R:BASE and quickly check the integrity of the database by using the RBCHECK or AUTOCHK program. Once I know the database is good, I use RELOAD to create a backup copy of the entire database in the BACKUP subdirectory. I verify that the backup is good by using RBCHECK or AUTOCHK. Then I compress all three .RBF files in the BACKUP directory into a single .ZIP archive file using PKZIP, copy the .RBF files back over the original database, and delete the backup RBF files. Checking & Fixing Databases """"""""""""""""""""""""""" You can use either RBCHECK or AUTOCHK to review the structure and data files (database files 1 and 2), looking for a variety of internal inconsistencies. RBCHECK comes with each copy of R:BASE 3.0 or 3.1. If you have R:BASE 3.1B, you can use the AUTOCHK program instead of RBCHECK. Other R:BASE users can get AUTOCHK by purchasing a new utility program named R:SCOPE from Microrim. You can use R:SCOPE to fix databases and to rummage around inside a database. You can fix databases manually or use the AUTOFIX feature to fix them automatically. Using RBCHECK """"""""""""" RBCHECK displays a lengthy list of verifications as it goes through table by table, column by column. It displays cryptic technical error messages. RBCHECK really spits out more information than you need for non-problem databases. You really only need to see the two summary lines that display the number of errors found in files 1 and 2. The remainder of the display is important only if an error is found. Therefore, I wrote a DOS batch file (CHK.BAT) to run RBCHECK, store the display in a temporary file, and use the DOS FIND command to retrieve the error summary lines. Enter the following at a DOS prompt to run it: CHK dbname Here's CHK.BAT: @ECHO OFF RBCHECK %1 >errors FIND "errors for File" errors DEL errors The RBCHECK program in R:BASE 3.0 and 3.1 requires the owner password. To run RBCHECK automatically, you must put -U on the front of the owner password, and specify it on the command line like this: RBCHECK -Uownerpw dbname If there is an owner password, use this format to send the output to a file: RBCHECK -Uownerpw dbname >outfile If there is no owner password, use this format to send the output to a file: RBCHECK dbname >outfile Blunder Insurance """"""""""""""""" Use these tools to set up your own blunder insurance program. To retrieve a table, change to the BACKUP subdirectory, and use PKUNZIP to restore the archived database. Then open the backup database, set NULL to -0-, and use OUTPUT and UNLOAD to unload the table into a file. Edit the DEFINE statement in the unloaded file to match the original database name. Then open the original database, use DROP or RENAME to delete or rename the original table, and use INPUT to load the file.