It is possible to back up data files that are not under transaction control while the FairCom Server remains running. Of course, the safest way to perform a complete backup of data and index files while the FairCom Server remains running is to ensure that all your files are under transaction control. This way you are sure that all data and index files are completely synchronized, and updates to the files can continue during a dynamic dump.
Some developers choose not to implement transaction control for one reason or another. In some cases, developers migrating from the FairCom DB Standalone Multi-user model, FPUTFGET, to the FairCom Server, choose to use the FairCom Server in an FPUTFGET-like manner. An FPUTFGET-like server is defined with the following FairCom Server keywords:
Although it is possible to define a non-transaction controlled file within a dynamic dump backup script, there is no protection against updates to this file. In other words, it is possible for the file to be updated during the dynamic dump. Updating a file controlled by transaction processing is okay, because the dump restore process can use the transaction logs to restore to a consistent state. However, if files NOT under transaction control are updated while they are being backed up they cannot be backed up in a consistent state.
The keyword !PROTECT, without an argument, when added to a dynamic dump script file causes the non-transaction files to be dumped cleanly by suspending any updates while each file is dumped. At this point, the associated index files for a data file are not guaranteed to be consistent with the data file because the files are not dumped at the same time. Updates are only suspended while the data file is being backed up.
This technique ensures the data file is backed up in a known state. The restore process for a non-transaction control file MUST be complemented with an index rebuild. Because protection is for data files only, under most situations, the indexes are not worth dumping since they must be rebuilt.
Note: !PROTECT suspends updates at the ISAM level only. The keyword !PROTECT_LOW also suspends low-level updates in addition to the ISAM level. FairCom suggests using the !PROTECT_LOW when using low-level function calls.