2181 lines
86 KiB
Plaintext
2181 lines
86 KiB
Plaintext
|
1 BACKUP
|
||
|
B[ACKUP]
|
||
|
BACKUP copies blocks from one or more Greystone Technology Database
|
||
|
Structure (GDS) files to a new file or files. BACKUP suspends updates
|
||
|
to all regions specified by the BACKUP command from the time it starts
|
||
|
the first region until it finishes the last region. This ensures that
|
||
|
BACKUP captures a consistent application state. BACKUP does not
|
||
|
suspend processes that only perform retrievals.
|
||
|
|
||
|
The format of the BACKUP command is:
|
||
|
|
||
|
B[ACKUP][-qualifier[...]] region-list[,...] file-spec
|
||
|
|
||
|
|
||
|
By default, BACKUP is -COMPREHENSIVE.
|
||
|
|
||
|
The first argument may specify more than one region of the current
|
||
|
Global Directory in a list separated with commas.
|
||
|
|
||
|
To BACKUP only one region, the file-specification must resolve to a
|
||
|
UNIX file or directory name. To BACKUP several regions, the
|
||
|
file-specification must be a directory specification. If the
|
||
|
file-specification is a directory, MUPIP assigns the backup files the
|
||
|
same name as the file associated with the dynamic segment of each
|
||
|
region. Therefore, the target directory must not contain any of the
|
||
|
regions included in the BACKUP.
|
||
|
|
||
|
2 Qualifiers
|
||
|
-COMPREHENSIVE
|
||
|
-C[OMPREHENSIVE]
|
||
|
Specifies that BACKUP copy the entire file from disk to disk. On
|
||
|
completion, the result is ready for use as a GT.M database. This
|
||
|
option does not support operation to magnetic tape.
|
||
|
|
||
|
BACKUP -COMPREHENSIVE has the following advantages:
|
||
|
|
||
|
o It does not require exclusive access to the file
|
||
|
|
||
|
o It can interlock multiple files simultaneously
|
||
|
|
||
|
The -COMPREHENSIVE qualifier is not compatible with any other
|
||
|
qualifier.
|
||
|
|
||
|
By default, BACKUP operates -COMPREHENSIVE.
|
||
|
|
||
|
-INCREMENTAL
|
||
|
-I[NCREMENTAL]
|
||
|
Specifies that BACKUP include only blocks from the database that
|
||
|
have changed since a prior point specified by the -SINCE or
|
||
|
-TRANSACTION qualifier. MUPIP RESTORE integrates the results of
|
||
|
a BACKUP -INCREMENTAL into a database.
|
||
|
|
||
|
The -INCREMENTAL qualifier is not compatible with the
|
||
|
-COMPREHENSIVE qualifier.
|
||
|
|
||
|
-RECORD
|
||
|
-R[ECORD]
|
||
|
Specifies that the BACKUP utility record this backup as a
|
||
|
reference point for subsequent backups. Each time a BACKUP
|
||
|
specifies -RECORD, that backup replaces the previous recorded
|
||
|
backup as the RECORD reference point for the file.
|
||
|
|
||
|
-SINCE
|
||
|
-S[INCE]=keyword
|
||
|
Specifies that a BACKUP -INCREMENTAL includes blocks changed
|
||
|
since the last specified BACKUP.
|
||
|
|
||
|
-SINCE accepts the keywords:
|
||
|
|
||
|
o C[OMPREHENSIVE] - Backup all changes since the last BACKUP
|
||
|
-COMPREHENSIVE
|
||
|
|
||
|
o I[NCREMENTAL] - Backup all changes since the last BACKUP
|
||
|
-INCREMENTAL
|
||
|
|
||
|
o R[ECORD] - Backup all changes since the last BACKUP -RECORD
|
||
|
|
||
|
The -SINCE qualifier is incompatible with the -COMPREHENSIVE and
|
||
|
-TRANSACTION qualifiers.
|
||
|
|
||
|
By default, BACKUP -INCREMENTAL operates -SINCE=COMPREHENSIVE.
|
||
|
|
||
|
-TRANSACTION
|
||
|
-T[RANSACTION]=transaction-number
|
||
|
Specifies a hexadecimal starting transaction which causes BACKUP
|
||
|
-INCREMENTAL to copy all blocks that have been changed by the
|
||
|
specified and all subsequent transactions. Transaction numbers
|
||
|
appear in a DSE DUMP -FILEHEADER, with a "Current TN" label. If
|
||
|
the transaction number is invalid, BACKUP reports an error and
|
||
|
rejects the command.
|
||
|
|
||
|
BACKUP -INCREMENTAL -TRANSACTION=1 copies all in-use blocks and
|
||
|
has the following advantages:
|
||
|
|
||
|
o It does not require exclusive access to the file
|
||
|
|
||
|
o It can interlock multiple files simultaneously
|
||
|
|
||
|
Different regions do not normally have a single transaction
|
||
|
number that marks a meaningful point. Therefore, a BACKUP
|
||
|
command specifying multiple regions and using the -TRANSACTION
|
||
|
qualifier with arguments other than one (1) is unlikely to
|
||
|
produce desirable results.
|
||
|
|
||
|
The -TRANSACTION qualifier is incompatible with the
|
||
|
-COMPREHENSIVE and -SINCE qualifiers.
|
||
|
|
||
|
1 CREATE
|
||
|
CR[EATE]
|
||
|
CREATE generates database files using the characteristics stored in a
|
||
|
Global Directory by the Global Directory Editor (GDE). CREATE uses the
|
||
|
Global Directory to map a region to a segment and a segment to a file.
|
||
|
Use the MUPIP CREATE command to create a new database or a new copy of
|
||
|
a previously existing file during a database reorganization. If a
|
||
|
database file already exists for the segment, CREATE takes no action.
|
||
|
If a file does not exist, CREATE sets up the file. CREATE also
|
||
|
initializes the database structure (GDS).
|
||
|
|
||
|
The format of the CREATE command is:
|
||
|
|
||
|
CR[EATE] [-R[EGION]=region-name]
|
||
|
|
||
|
The optional -REGION qualifier specifies a single region for which to
|
||
|
create a database file.
|
||
|
|
||
|
By default, CREATE sets up database files for all regions in the
|
||
|
current Global Directory.
|
||
|
|
||
|
2 Qualifiers
|
||
|
-REGION
|
||
|
-R[EGION]=region-name
|
||
|
Specifies a single region for creation of a database file. By
|
||
|
default, CREATE sets up (creates) database files for all regions
|
||
|
in the current Global Directory.
|
||
|
|
||
|
1 EXIT
|
||
|
EXI[T]
|
||
|
EXIT terminates MUPIP and returns control to the point where MUPIP was
|
||
|
invoked. This command is useful when you invoke MUPIP without an
|
||
|
action and wish to leave without performing one, or after using MUPIP
|
||
|
HELP.
|
||
|
|
||
|
The format of the EXIT command is:
|
||
|
|
||
|
EXI[T]
|
||
|
|
||
|
The Exit command does not accept any qualifiers.
|
||
|
|
||
|
1 EXTEND
|
||
|
EXTE[ND]
|
||
|
EXTEND expands a GDS database file. Databases generally extend
|
||
|
automatically, but this command allows you to control the time and
|
||
|
amount of extension.
|
||
|
|
||
|
The format of the EXTEND command is:
|
||
|
|
||
|
EXTE[ND] region-name [-B[LOCKS]=blocks]
|
||
|
|
||
|
The required region-name parameter specifies the name of the region to
|
||
|
expand. EXTEND uses the Global Directory to map the region to the
|
||
|
dynamic segment and the segment to the file.
|
||
|
|
||
|
2 Qualifiers
|
||
|
-BLOCKS
|
||
|
-B[LOCKS]=blocks
|
||
|
Specifies the number of GDS database blocks by which GT.M should
|
||
|
extend the file. GDS files use some blocks for bit maps. EXTEND
|
||
|
adds the specified number of blocks and the bit map blocks
|
||
|
required as overhead. For more information about bit maps, refer
|
||
|
to the "GDS" chapter of the GT.M Administration and Operations
|
||
|
Guide.
|
||
|
|
||
|
EXTEND uses the value in the fileheader as the number of GDS
|
||
|
blocks by which to extend the database file.
|
||
|
|
||
|
1 EXTRACT
|
||
|
EXTR[ACT]
|
||
|
EXTRACT copies specified globals from the current database to a
|
||
|
sequential output file in one of two formats (i.e., GO, or BINARY).
|
||
|
Use EXTRACT to back up specific globals or when extracting data from
|
||
|
the database for use by another system. EXTRACT uses the Global
|
||
|
Directory to determine which database files to use. EXTRACT may
|
||
|
operate concurrently with normal GT.M database access. To ensure that
|
||
|
an EXTRACT reflects a consistent application state, suspend database
|
||
|
updates to all regions involved in the extract with the -FREEZE
|
||
|
qualifier.
|
||
|
|
||
|
The format of the EXTRACT command is:
|
||
|
|
||
|
EXTR[ACT][-qualifier[...]] file-specification
|
||
|
|
||
|
EXTRACT places its output in the file defined by the
|
||
|
file-specification. EXTRACT may output to a UNIX file on any device
|
||
|
that supports such files, including magnetic tapes. Note that magnetic
|
||
|
tapes may have a smaller file maximum size than disks. <CTRL C>
|
||
|
produces a status message from EXTRACT. Entering <CTRL C> twice in
|
||
|
quick succession aborts EXTRACT. An EXTRACT terminated abnormally by
|
||
|
operator action or error produces incomplete output.
|
||
|
|
||
|
2 Qualifiers
|
||
|
-SELECT
|
||
|
-S[ELECT]=global-name-list
|
||
|
Specifies the globals to extract. The "^" in the specification
|
||
|
of the global name is optional. Enclose lowercase global names
|
||
|
in quotes ("").
|
||
|
|
||
|
The global-specification can be:
|
||
|
|
||
|
o A global name, such as MEF
|
||
|
|
||
|
o A range of global names, such as A7:B6
|
||
|
|
||
|
o A list, such as A,B,C
|
||
|
|
||
|
o Global names with the same prefix, such as TMP*
|
||
|
|
||
|
In the first case, EXTRACT selects only global ^MEF. In the
|
||
|
second case, EXTRACT selects all global names between ^A7 and
|
||
|
^B6, inclusive. In the third case, EXTRACT selects globals ^A,
|
||
|
^B, and ^C. In the fourth case, EXTRACT selects all global names
|
||
|
from ^TMP through ^TMPzzzzz.
|
||
|
|
||
|
By default, EXTRACT selects all globals, as if it had the
|
||
|
qualifier -SELECT=*.
|
||
|
|
||
|
-FORMAT
|
||
|
-FO[RMAT]=GO|B[INARY]
|
||
|
Specifies the format of the output file.
|
||
|
|
||
|
The format codes are:
|
||
|
|
||
|
o GO - Global Output format, used for files you want to
|
||
|
transport or archive
|
||
|
|
||
|
o B[INARY] - Binary format, used for database reorganization
|
||
|
or short term backups
|
||
|
|
||
|
-FORMAT=GO stores the data in record pairs. Each global node
|
||
|
produces one record for the key and one for the data. FORMAT=GO
|
||
|
has two header records.
|
||
|
|
||
|
-FORMAT=BINARY only applies for Greystone Technology Database
|
||
|
Structure (GDS) files. EXTRACT -FORMAT=BINARY works much faster
|
||
|
than EXTRACT -FORMAT=GO.
|
||
|
|
||
|
By default, EXTRACT uses -FORMAT=GO.
|
||
|
|
||
|
-FREEZE
|
||
|
-FR[EEZE]
|
||
|
Prevents database updates to all regions of the Global Directory
|
||
|
used by the EXTRACT for the duration of the EXTRACT.
|
||
|
|
||
|
By default, EXTRACT does not freeze regions during operation.
|
||
|
|
||
|
-LABEL
|
||
|
-LA[BEL]=text
|
||
|
Specifies a text string which becomes the first record in the
|
||
|
output file. Enclose labels containing punctuation or lowercase
|
||
|
labels in quotes (""). EXTRACT -FORMAT=BINARY truncates the
|
||
|
label text to 32 characters.
|
||
|
|
||
|
By default, EXTRACT uses the label "GT.M MUPIP EXTRACT".
|
||
|
|
||
|
For a description of the -FORMAT=BINARY header label, refer to
|
||
|
the subsequent section on EXTRACT -FORMAT=BINARY.
|
||
|
|
||
|
-LOG
|
||
|
-[NO]LO[G]
|
||
|
Specifies whether or not to display a message on SYS$OUTPUT for
|
||
|
each global extracted. The message shows the number of global
|
||
|
nodes, the maximum subscript length and maximum data length for
|
||
|
each global.
|
||
|
|
||
|
By default, EXTRACT operates -LOG.
|
||
|
|
||
|
1 Global_dir
|
||
|
MUPIP and the Global Directory
|
||
|
Some of the MUPIP commands require information contained in the Global
|
||
|
Directory. Therefore, a process must have access to a valid Global
|
||
|
Directory before using any MUPIP database service commands other than
|
||
|
JOURNAL, RESTORE, and the -FILE options of INTEG and SET.
|
||
|
|
||
|
The environment variable gtmgbldir specifies the Global Directory.
|
||
|
Define gtmgbldir at the shell level. Individual users define gtmgbldir
|
||
|
in their login or other shell scripts.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ gtmgbldir=prod.gld
|
||
|
$ export gtmgbldir
|
||
|
|
||
|
1 HELP
|
||
|
H[ELP]
|
||
|
HELP provides online information about MUPIP commands and qualifiers.
|
||
|
|
||
|
The format of the HELP command is:
|
||
|
|
||
|
H[ELP] [options...]
|
||
|
|
||
|
The HELP command does not accept any qualifiers. Enter the MUPIP
|
||
|
command for which you want information at the Topic prompt. Use
|
||
|
<RETURN> or <CTRL Z> to leave the help facility.
|
||
|
|
||
|
1 INTEG
|
||
|
I[NTEG]
|
||
|
The INTEG command performs an integrity check on a GDS database file.
|
||
|
INTEG operates on one or more regions in the current global directory
|
||
|
by suspending concurrent updates to those regions. INTEG of a single
|
||
|
file database without a Global Directory requires exclusive
|
||
|
(stand-alone) access to that file.
|
||
|
|
||
|
Use INTEG at the following times:
|
||
|
|
||
|
o Periodically - to insure ongoing integrity of database(s); frequent
|
||
|
INTEGs help catch integrity problems before they spread through the
|
||
|
database file
|
||
|
|
||
|
o After a crash - to insure the database was not corrupted
|
||
|
|
||
|
o When database errors are reported - to troubleshoot the problem
|
||
|
|
||
|
The format of the INTEG command is:
|
||
|
|
||
|
I[NTEG][-qualifier[...]] file-spec | region-list
|
||
|
|
||
|
The filename directly identifies the GDS file to INTEG. The
|
||
|
region-list identifies one or more regions that in turn identify GDS
|
||
|
files through the current Global Directory.
|
||
|
|
||
|
Always analyze errors reported by INTEG immediately to prevent further
|
||
|
corruption. Greystone strongly recommends fixing the following errors
|
||
|
as soon as they are discovered:
|
||
|
|
||
|
o Blocks incorrectly marked free - these may cause accelerating
|
||
|
damage when processes make updates to any part of the database
|
||
|
region.
|
||
|
|
||
|
o Integrity errors in an index block - these may cause accelerating
|
||
|
damage when processes make updates to that area of the database
|
||
|
region that uses the faulty index.
|
||
|
|
||
|
INTEG -FAST and the "regular" INTEG both report these errors. Other
|
||
|
database errors do not pose the threat of rapidly spreading problems
|
||
|
in GDS files, but if operations continue the errors may cause the
|
||
|
following:
|
||
|
|
||
|
o Invalid application operation due to "missing" data
|
||
|
|
||
|
o Process errors when a database access encounters an error
|
||
|
|
||
|
o Degrading application level integrity as a result of incomplete
|
||
|
update sequences caused by the prior symptoms
|
||
|
|
||
|
You must assess the type of damage, the risk of continued operations,
|
||
|
and the disruption of stopping normal operation for database repair.
|
||
|
For information on analyzing and correcting database errors, refer to
|
||
|
the "Database Integrity" chapter in the GT.M Administration and
|
||
|
Operations Guide.
|
||
|
|
||
|
<CTRL C> aborts INTEG. Because INTEG does most of its reporting at the
|
||
|
end, aborting the process before it completes may not give you all the
|
||
|
information you need.
|
||
|
|
||
|
2 -FAST
|
||
|
-FA[ST]
|
||
|
Specifies that INTEG checks only index blocks. INTEG -FAST does not
|
||
|
check data blocks. INTEG -FAST produces results dramatically faster
|
||
|
than a full INTEG. While INTEG -FAST is not a replacement for a
|
||
|
full INTEG, it very quickly detects the most dangerous structural
|
||
|
errors in a database.
|
||
|
|
||
|
The -FAST qualifier is incompatible with the -TN_RESET qualifier.
|
||
|
|
||
|
By default, INTEG checks all active index and data blocks in the
|
||
|
database.
|
||
|
|
||
|
2 -REGION
|
||
|
-R[EGION]
|
||
|
Specifies that the INTEG parameter identifies one or more regions
|
||
|
rather than a database file.
|
||
|
|
||
|
INTEG -REGION does not require sole access to databases. Instead,
|
||
|
it freezes updates to the database during the check. The
|
||
|
region-list argument may specify more than one region of the
|
||
|
current Global Directory in a list separated with commas. INTEG
|
||
|
-REGION requires the environment variable gtmgbldir to specify a
|
||
|
valid Global Directory. For more information on defining gtmgbldir,
|
||
|
refer to the "Global Directory Editor" chapter of the GT.M
|
||
|
Administration and Operations Guide.
|
||
|
|
||
|
Note: Because a KILL may briefly defer marking the blocks it
|
||
|
releases "free" in the bit maps, INTEG -REGION may report spurious
|
||
|
block incorrectly marked busy errors. Because block incorrectly
|
||
|
marked busy errors are benign, ignore these errors unless INTEG
|
||
|
consistently reports a block as incorrectly marked busy.
|
||
|
|
||
|
The -REGION qualifier is incompatible with the -FILE and -TN_RESET
|
||
|
qualifiers.
|
||
|
|
||
|
By default, INTEG operates -FILE.
|
||
|
|
||
|
2 -FILE
|
||
|
-FI[LE]
|
||
|
Specifies that the parameter to the INTEG command is a filename.
|
||
|
INTEG -FILE requires exclusive (stand-alone) access to a database
|
||
|
file and does not require a Global Directory. Because it has
|
||
|
stand-alone access to the file, INTEG -FILE is able to check
|
||
|
reference counts.
|
||
|
|
||
|
The -FILE qualifier is incompatible with the -REGION qualifier.
|
||
|
|
||
|
By default, INTEG operates -FILE.
|
||
|
|
||
|
2 -TN_RESET
|
||
|
-TN[_RESET]
|
||
|
Instructs an INTEG -FILE to reset the transaction number to one in
|
||
|
every database block currently holding valid data.
|
||
|
|
||
|
Transaction number overflow back to 0 disrupts the integrity of the
|
||
|
database.
|
||
|
|
||
|
The -TN_RESET qualifier is incompatible with the -BLOCK, -FAST,
|
||
|
-REGION and -SUBSCRIPT qualifiers.
|
||
|
|
||
|
By default, INTEG does not modify the block transaction numbers.
|
||
|
|
||
|
2 -SUBSCRIPT
|
||
|
-S[UBSCRIPT]=subscript
|
||
|
Specifies a global or a range of keys to INTEG. Enclose the global
|
||
|
key in quotes ("") and identify a range by separating two
|
||
|
subscripts with a colon (:). -SUBSCRIPT limits map checking to
|
||
|
incorrectly marked free errors.
|
||
|
|
||
|
Use -SUBSCRIPT only if you know the path to the keys in the
|
||
|
subscript and have reason to believe the path is not damaged. If
|
||
|
the path is questionable or known to be damaged, use DSE to find
|
||
|
the block(s) and INTEG -BLOCK.
|
||
|
|
||
|
The -SUBSCRIPT qualifier is incompatible with the -BLOCK and
|
||
|
-TN_RESET qualifiers.
|
||
|
|
||
|
Use -FULL to have INTEG report all global-names covered by a range.
|
||
|
|
||
|
2 Examples
|
||
|
INTEG -SUBSCRIPT= Examples
|
||
|
|
||
|
Example
|
||
|
|
||
|
MUPIP INTEG -SUBSCRIPT="^a" MUMPS.DAT
|
||
|
|
||
|
This INTEGs the global variable ^a in the database file MUMPS.DAT.
|
||
|
|
||
|
Example
|
||
|
|
||
|
MUPIP INTEG-SUBSCRIPT="^a(100)":"^b(""c"")"-reg DEFAULT
|
||
|
|
||
|
This INTEGs all global variables greater than or equal to ^a(100)
|
||
|
and less than ^b("c") in the default region.
|
||
|
|
||
|
Note: To specify a literal in the command string, use double quotes
|
||
|
e.g., ^b(""c"").
|
||
|
|
||
|
2 -BLOCK
|
||
|
-BL[OCK]=block-number
|
||
|
Specifies the block at which to start checking a sub-tree of the
|
||
|
database. -BLOCK limits map checking to incorrectly marked free
|
||
|
errors.
|
||
|
|
||
|
The -BLOCK qualifier is incompatible with the -SUBSCRIPT and
|
||
|
-TN_RESET qualifiers.
|
||
|
|
||
|
2 -KEYRANGES
|
||
|
-[NO]K[EYRANGES]
|
||
|
Specifies whether or not the INTEG report includes key ranges that
|
||
|
identify the data suspected of problems detected by INTEG.
|
||
|
|
||
|
By default, INTEG displays -KEYRANGES.
|
||
|
|
||
|
2 -MAP
|
||
|
-[NO]MAP[=integer]
|
||
|
Specifies the maximum number of incorrectly marked busy errors that
|
||
|
INTEG reports.
|
||
|
|
||
|
-NOMAP removes limits on incorrectly marked busy reporting, i.e.,
|
||
|
INTEG reports all map errors. -NOMAP does not accept assignment of
|
||
|
an argument.
|
||
|
|
||
|
Because incorrectly marked free errors are very dangerous, INTEG
|
||
|
always reports them, and -MAP does not affect them.
|
||
|
|
||
|
An error in an index block prevents INTEG from processing
|
||
|
potentially large areas of the database. A single "primary" error
|
||
|
may cause large numbers of "secondary" incorrectly marked busy
|
||
|
errors. Because "real" or primary incorrectly marked busy errors
|
||
|
only make "empty" blocks unavailable to the system, they are
|
||
|
relatively benign.
|
||
|
|
||
|
By default, INTEG reports a maximum of 10 map errors (-MAP=10).
|
||
|
|
||
|
2 -MAXKEYSIZE
|
||
|
-[NO]MAX[KEYSIZE][=integer]
|
||
|
Specifies the maximum number of key size too large errors that
|
||
|
INTEG reports.
|
||
|
|
||
|
-NOMAXKEYSIZE removes limits on key size reporting, i.e., INTEG
|
||
|
reports all key size too large errors. -NOMAXKEYSIZE does not
|
||
|
accept assignment of an argument.
|
||
|
|
||
|
Key size too large error should only occur after someone uses DSE
|
||
|
CHANGE -FILEHEADER -KEY_MAX_SIZE to reduce the maximum key-size.
|
||
|
|
||
|
By default, INTEG reports a maximum of 10 key size errors
|
||
|
(-NOMAXKEYSIZE=10).
|
||
|
|
||
|
2 -TRANSACTION
|
||
|
-[NO]TR[ANSACTION][=integer]
|
||
|
Specifies the maximum number of block transaction number too large
|
||
|
errors that INTEG reports.
|
||
|
|
||
|
-NOTRANSACTION removes limits on transaction reporting, i.e.,
|
||
|
INTEG reports all transaction number errors. -NOTRANSACTION does
|
||
|
not accept assignment of an argument.
|
||
|
|
||
|
A system crash may generate many block transaction number too large
|
||
|
errors. These errors can cause problems for BACKUP -INCREMENTAL,
|
||
|
but have no effect on the run-time environment. The DSE CHANGE
|
||
|
-FILEHEADER -BLOCKS_FREE= command quickly fixes block transaction
|
||
|
number too large number errors.
|
||
|
|
||
|
By default, INTEG reports a maximum of 10 block transaction errors
|
||
|
(-TRANSACTION=10).
|
||
|
|
||
|
2 -BRIEF
|
||
|
-BR[IEF]
|
||
|
Specifies an INTEG summary report which displays the total number
|
||
|
of directory, index and data blocks. The -BRIEF qualifier is
|
||
|
incompatible with the -FULL qualifier.
|
||
|
|
||
|
By default, INTEG reports are -BRIEF.
|
||
|
|
||
|
2 -FULL
|
||
|
-FU[LL]
|
||
|
Specifies an expanded INTEG report which displays the number of
|
||
|
index and data blocks in the directory tree and in each global tree
|
||
|
as well as the total number of directory, index and data blocks.
|
||
|
The -FULL qualifier is incompatible with the -BRIEF qualifier.
|
||
|
|
||
|
By default, INTEG reports are -BRIEF.
|
||
|
|
||
|
2 -ADJACENCY
|
||
|
-A[DJACENCY]=integer
|
||
|
Specifies the range of blocks within which INTEG considers a block
|
||
|
adjacent to another database block on the same level. The adjacency
|
||
|
report from INTEG gives an approximation of physical data density
|
||
|
which directly affects efficient database access. Use the
|
||
|
-ADJACENCY qualifier to adjust the reporting to reflect
|
||
|
characteristics of your disks, e.g., pick a factor that matches the
|
||
|
number of sectors on a drive.
|
||
|
|
||
|
By default, INTEG uses -ADJACENCY=10.
|
||
|
|
||
|
1 JOURNAL
|
||
|
J[OURNAL]
|
||
|
|
||
|
The MUPIP JOURNAL command analyzes, extracts from, reports on, and
|
||
|
recovers journal files.
|
||
|
|
||
|
Another MUPIP command, SET, turns journaling on and off, identifies
|
||
|
the type of journaling, and sets some database journaling
|
||
|
characteristics.
|
||
|
|
||
|
The format for the JOURNAL command is:
|
||
|
|
||
|
MUPIP J[OURNAL] -qualifier[...] file-specification[,...]
|
||
|
|
||
|
|
||
|
2 Action_qualifiers
|
||
|
Action Qualifiers
|
||
|
|
||
|
-RECOVER
|
||
|
-REC[OVER]
|
||
|
Instructs the JOURNAL command to replay database updates in the
|
||
|
specified journal file into the appropriate database. -RECOVER
|
||
|
initiates the central JOURNAL operation. JOURNAL commands may
|
||
|
specify -RECOVER alone or with other action qualifiers.
|
||
|
|
||
|
-VERIFY
|
||
|
-[NO]V[ERIFY]
|
||
|
Checks a journal file for proper form. JOURNAL commands may
|
||
|
specify -VERIFY alone or with other action qualifiers. JOURNAL
|
||
|
-RECOVER commands implicitly -VERIFY the file(s) on which they
|
||
|
operate. JOURNAL -RECOVER ignores -NOVERIFY for all qualifier
|
||
|
combinations that do not include -FORWARD and -FENCES=NONE.
|
||
|
|
||
|
-EXTRACT
|
||
|
-EX[TRACT][=file-specification]
|
||
|
Specifies that JOURNAL transfer the contents of one or more
|
||
|
journal files to a single output file in a format intended for
|
||
|
processing by a MUMPS program. For a description of -EXTRACT
|
||
|
output record formats, refer to the section on JOURNAL -EXTRACT
|
||
|
output records. JOURNAL commands may specify -EXTRACT alone or
|
||
|
with other action qualifiers.
|
||
|
|
||
|
-EXTRACT takes an optional argument, which provides an output
|
||
|
file-specification.
|
||
|
|
||
|
By default, MUPIP JOURNAL derives the output file specification
|
||
|
using the name of the original database file associated with the
|
||
|
journal and a file type of .MJF. If the command specifies more
|
||
|
than one journal file, JOURNAL -EXTRACT derives the default
|
||
|
output file specification from the name of the first database.
|
||
|
|
||
|
-SHOW
|
||
|
-SH[OW]=show-option-list
|
||
|
Specifies what information the JOURNAL command displays about a
|
||
|
journal file. JOURNAL commands may specify -SHOW alone or with
|
||
|
other action qualifiers.
|
||
|
|
||
|
For information on the options refer to the show-option-list
|
||
|
topic.
|
||
|
|
||
|
2 show-option-list
|
||
|
show-option-list
|
||
|
|
||
|
The following topics detail the show-option-list elements.
|
||
|
|
||
|
3 ALL
|
||
|
AL[L]
|
||
|
ALL displays every available type of information about the
|
||
|
journal file. For additional information, refer to the
|
||
|
descriptions of each of the other SHOW keywords.
|
||
|
|
||
|
3 HEADER
|
||
|
H[EADER]
|
||
|
HEADER displays the journal file header information.
|
||
|
|
||
|
This includes:
|
||
|
|
||
|
o Database file name
|
||
|
|
||
|
o Journal file name
|
||
|
|
||
|
o Journal file version label (.e.g. GDSJNLnn)
|
||
|
|
||
|
o Whether before-images were captured
|
||
|
|
||
|
o Journal creation time/date
|
||
|
|
||
|
o Journal creator
|
||
|
|
||
|
o The last user to open the journal
|
||
|
|
||
|
o The last time the journal file was opened
|
||
|
|
||
|
The information for the creator and last user includes:
|
||
|
|
||
|
o Process Name
|
||
|
|
||
|
o Process Identification Number
|
||
|
|
||
|
o Node Name
|
||
|
|
||
|
o Terminal Number
|
||
|
|
||
|
3 PROCESSES
|
||
|
P[ROCESSES]
|
||
|
PROCESSES displays all processes active during the period
|
||
|
specified implicitly or explicitly by JOURNAL command time
|
||
|
qualifiers.
|
||
|
|
||
|
3 ACTIVE_PROCESSES
|
||
|
AC[TIVE_PROCESSES]
|
||
|
ACTIVE_PROCESSES displays all processes active at the end of the
|
||
|
period specified implicitly or explicitly by JOURNAL command
|
||
|
time qualifiers.
|
||
|
|
||
|
3 BROKEN_TRANSACTIONS
|
||
|
B[ROKEN_TRANSACTIONS]
|
||
|
BROKEN_TRANSACTIONS displays all processes that had incomplete
|
||
|
fenced transactions at the end of the period covered by the
|
||
|
JOURNAL command.
|
||
|
|
||
|
3 STATISTICS
|
||
|
S[TATISTICS]
|
||
|
STATISTICS displays a count of all journal record types
|
||
|
processed during the period specified implicitly or explicitly
|
||
|
by JOURNAL command time qualifiers.
|
||
|
|
||
|
2 Direction_qualifiers
|
||
|
Direction Qualifiers
|
||
|
|
||
|
-FORWARD
|
||
|
-FO[RWARD]
|
||
|
Specifies that JOURNAL processing should proceed from the
|
||
|
beginning of the given journal files. If the actions include
|
||
|
-RECOVER, the target database file should contain a copy of that
|
||
|
database made at the time when MUPIP SET -JOURNAL= created the
|
||
|
journal files.
|
||
|
|
||
|
-FORWARD is incompatible with -BACKWARD.
|
||
|
|
||
|
-BACKWARD
|
||
|
-BA[CKWARD]
|
||
|
Specifies that JOURNAL processing should proceed from the end of
|
||
|
the journal files. If the actions include -RECOVER, JOURNAL
|
||
|
-BACKWARD starts restoring before-images starting at the end of
|
||
|
the file, back to an explicitly or implicitly specified point
|
||
|
before it "reverses" and processes database updates in the
|
||
|
forward direction. The target database file should "match" the
|
||
|
end of the journal file, i.e., be the same as when GT.M wrote
|
||
|
the last record of the journal.
|
||
|
|
||
|
-BACKWARD is incompatible with -FORWARD.
|
||
|
|
||
|
2 Time_qualifiers
|
||
|
Journal time specifications
|
||
|
Journal qualifiers specifying time take arguments in absolute or
|
||
|
delta time format. Enclose time arguments in quotes ("") and
|
||
|
include all leading delimiters. Absolute format is "day-mm-yyyy
|
||
|
hh:mm:ss:cc" , where cc represents hundredths of a second. Absolute
|
||
|
time may indicate today's date with "--" before the hours. Delta
|
||
|
format is "day hh:mm:ss:cc" , where cc represents hundredths of a
|
||
|
second. If delta time is less than a day, it must start with zero
|
||
|
(0) followed by a space, or just a space, before the hours. Delta
|
||
|
time is always relative to the time of the last record in all
|
||
|
journal file arguments to the MUPIP JOURNAL command. A normal
|
||
|
database closure, caused by the last accessing process leaving
|
||
|
GT.M, also properly closes the associated journal file.
|
||
|
Alternatively, a system failure causes the journal to end in an
|
||
|
abnormal or "disorganized" fashion. JOURNAL processing deals with
|
||
|
both cases.
|
||
|
|
||
|
The time qualifiers perform as follows:
|
||
|
|
||
|
o -AFTER= only applies to JOURNAL -EXTRACT -FORWARD and specifies
|
||
|
a starting time; processing for all other -FORWARD actions must
|
||
|
start at the beginning of the journal files
|
||
|
|
||
|
o -BEFORE= specifies an ending time for any action -FORWARD or
|
||
|
-BACKWARD
|
||
|
|
||
|
o -SINCE= specifies a starting time for any action -BACKWARD
|
||
|
|
||
|
o -LOOKBACK_LIMIT= specifies a "safety zone" for resolving open
|
||
|
fenced transactions when processing any action -BACKWARD; the
|
||
|
-LOOKBACK_LIMIT= argument may be a list of limits: "TIME=time"
|
||
|
and/or "OPERATIONS=integer"
|
||
|
|
||
|
Because GT.M rounds time-stamps within the journal to hundredths of
|
||
|
a second and the JOURNAL processing can only determine time as
|
||
|
exactly as the journal records permit, the JOURNAL command
|
||
|
processes specified times in a "fuzzy" fashion. Because they deal
|
||
|
with processing completed logical transactions, -SINCE= and
|
||
|
-LOOKBACK= times have more "blur" than -AFTER= and -BEFORE= times.
|
||
|
|
||
|
-AFTER
|
||
|
-A[FTER]=time
|
||
|
Specifies the starting time for JOURNAL -EXTRACT -FORWARD to
|
||
|
commence output. The time specified references time stamps in
|
||
|
the journal and identifies the point after which JOURNAL
|
||
|
processing starts extracting information out of the journal
|
||
|
file. -AFTER= specifies time in absolute or delta time formats.
|
||
|
Delta format specifies an offset from the time of the last
|
||
|
record of the journal file. If -AFTER= provides a time following
|
||
|
the last time recorded in the journal file or following any
|
||
|
-BEFORE= time, JOURNAL processing produces no result. Using
|
||
|
-BEFORE= with -AFTER= restricts -EXTRACT to a particular period
|
||
|
of time.
|
||
|
|
||
|
-AFTER= is incompatible with -BACKWARD and with all action
|
||
|
qualifiers except -EXTRACT.
|
||
|
|
||
|
By default, -EXTRACT starts at the beginning of the journal
|
||
|
file.
|
||
|
|
||
|
-BEFORE
|
||
|
-BE[FORE]=time
|
||
|
Specifies the ending time at which JOURNAL processing stops
|
||
|
extracting or recovering data. The time specified references
|
||
|
time stamps in the journal files. -BEFORE= specifies time in
|
||
|
absolute or delta time formats. Delta format specifies an offset
|
||
|
from the time stamp in the last record of each the journal file.
|
||
|
If -BEFORE= provides a time preceding the first time recorded in
|
||
|
the journal file or preceding any -AFTER= or -SINCE= time,
|
||
|
JOURNAL processing produces no result.
|
||
|
|
||
|
-BEFORE= is compatible with all other JOURNAL qualifiers.
|
||
|
|
||
|
By default, JOURNAL processing terminates at the end of the
|
||
|
journal file.
|
||
|
|
||
|
-SINCE
|
||
|
-SI[NCE]=time
|
||
|
Specifies how far back in time JOURNAL -BACKWARD should process
|
||
|
from the end of the journal file, before starting its forward
|
||
|
processing. The time specified references time stamps in the
|
||
|
journal files. -SINCE= specifies time in absolute or delta time
|
||
|
formats. Delta format specifies an offset from the time of the
|
||
|
last record of the journal file. When JOURNAL -BACKWARD locates
|
||
|
the -SINCE= time, if it has open fenced transactions, it
|
||
|
continues processing backward to resolve them unless the command
|
||
|
also specifies -FENCES=NONE. The -LOOKBACK= qualifier controls
|
||
|
the length of processing backward past the -SINCE= time.
|
||
|
|
||
|
If -SINCE= time exceeds the last time recorded in the journal
|
||
|
files, JOURNAL processing effectively ignores the qualifier.
|
||
|
-SINCE= is incompatible with -FORWARD. If -SINCE= provides a
|
||
|
time preceding any -BEFORE= time, JOURNAL processing produces no
|
||
|
result.
|
||
|
|
||
|
By default, JOURNAL -BACKWARD processes the last five (5)
|
||
|
minutes of the journal file(s).
|
||
|
|
||
|
-LOOKBACK_LIMIT
|
||
|
-[NO]LOO[KBACK_LIMIT][=lookback-option-list]
|
||
|
Specifies how far JOURNAL -BACKWARD processes back past the
|
||
|
explicit (-SINCE=) or implicit turn around time while attempting
|
||
|
to resolve open transaction fences. -LOOKBACK= options include
|
||
|
time and transaction counts.
|
||
|
|
||
|
-NOLOOKBACK_LIMIT specifies that JOURNAL -BACKWARD can process
|
||
|
all the way to the beginning of the journal file, if necessary,
|
||
|
to resolve open transaction fences.
|
||
|
|
||
|
-LOOKBACK_LIMIT= is incompatible with -FORWARD. When
|
||
|
-FENCES=NONE, JOURNAL processing ignores -LOOKBACK_LIMIT=.
|
||
|
|
||
|
The lookback-options are:
|
||
|
|
||
|
TIME=time - limits lookback by a specified amount of delta or
|
||
|
absolute journal time.
|
||
|
|
||
|
OPERATIONS=integer - limits lookback to some number of database
|
||
|
updates.
|
||
|
|
||
|
The lookback-option names and values must be enclosed in quotes
|
||
|
(""), e.g., "Time=0 00:05" or "Oper=10." When -LOOKBACK=
|
||
|
specifies both options, they must be enclosed in parentheses ()
|
||
|
and separated by a comma (,). When -LOOKBACK= specifies both
|
||
|
options, the first limit reached terminates the lookback.
|
||
|
|
||
|
By default, MUPIP JOURNAL uses -LOOKBACK_LIMIT="TIME=0 00:05"
|
||
|
providing five minutes of journal time prior to -SINCE= in which
|
||
|
to resolve open fences.
|
||
|
|
||
|
2 Control_qualifiers
|
||
|
Control Qualifiers
|
||
|
|
||
|
-REDIRECT
|
||
|
-RED[IRECT]=file-pair-list
|
||
|
Specifies that JOURNAL -RECOVER replay the journal file to a
|
||
|
database different than the one for which it was created. Use
|
||
|
this qualifier to create or maintain databases for training or
|
||
|
testing.
|
||
|
|
||
|
JOURNAL rejects -REDIRECT unless it appears with -RECOVER.
|
||
|
|
||
|
The file-pair-list consists of one or more pairs of
|
||
|
file-specifications enclosed in parentheses () and separated by
|
||
|
commas (,). The pairs are separated by an equal sign in the
|
||
|
form:
|
||
|
|
||
|
old-file-specification=new-file-specification
|
||
|
|
||
|
where the first file-specification names the original database
|
||
|
file and the second file-specification names the target of the
|
||
|
-RECOVER. When -REDIRECT specifies only one file pair, the
|
||
|
parentheses are optional.
|
||
|
|
||
|
By default, JOURNAL directs -RECOVER to the database file from
|
||
|
which the journal was made.
|
||
|
|
||
|
-FENCES
|
||
|
-FE[NCES]=fence-option
|
||
|
Specifies how JOURNAL processes fenced transactions. Fenced
|
||
|
transactions are logical transactions made up of database
|
||
|
updates preceded in MUMPS by a ZTSTART command and followed by a
|
||
|
ZTCOMMIT command. All updates between a ZTSTART and a ZTCOMMIT
|
||
|
are designed such that they should all occur together, i.e., no
|
||
|
one of them should reach the database unless they all do.
|
||
|
|
||
|
The fence options are:
|
||
|
|
||
|
o NONE, which causes JOURNAL to apply all individual updates as
|
||
|
if transaction fences did not exist
|
||
|
|
||
|
o ALWAYS, which causes JOURNAL to treat any unfenced or
|
||
|
improperly fenced updates as errors
|
||
|
|
||
|
o PROCESS, which causes JOURNAL to accept unfenced database
|
||
|
updates, and also to observe fences when they appear,
|
||
|
generating an error in the case of a ZTSTART with no
|
||
|
corresponding ZTCOMMIT
|
||
|
|
||
|
By default, MUPIP JOURNAL uses -FENCES=PROCESS.
|
||
|
|
||
|
-INTERACTIVE
|
||
|
-[NO]IN[TERACTIVE]
|
||
|
Specifies whether, for each error over the -ERROR_LIMIT, JOURNAL
|
||
|
processing prompts the invoking operator for an answer
|
||
|
controlling continuation of processing. If the operator responds
|
||
|
that processing should not continue, the JOURNAL command
|
||
|
terminates.
|
||
|
|
||
|
-NOINTERACTIVE terminates the journal processing as soon as the
|
||
|
process generates the number of errors specified in
|
||
|
-ERROR_LIMIT.
|
||
|
|
||
|
When processing in INTERACTIVE mode, the default is
|
||
|
-INTERACTIVE, otherwise, e.g., BATCH mode, the default is
|
||
|
-NOINTERACTIVE.
|
||
|
|
||
|
-ERROR_LIMIT
|
||
|
-[NO]ER[ROR_LIMIT][=integer]
|
||
|
Specifies the number of errors that JOURNAL processing treats as
|
||
|
acceptable. When the number of errors exceeds the -ERROR_LIMIT,
|
||
|
the -INTERACTIVE qualifier determines whether JOURNAL processing
|
||
|
halts or defers to the operator.
|
||
|
|
||
|
-NOERROR_LIMIT prevents JOURNAL from stopping because of errors.
|
||
|
Journal processing will continue until it reaches the end of the
|
||
|
journal file, regardless of the number of errors. Note that
|
||
|
-NOERROR_LIMIT is not the same as -ERROR_LIMIT=0.
|
||
|
|
||
|
By default, MUPIP JOURNAL uses -ERROR_LIMIT=0, causing the first
|
||
|
error to initiate the appropriate error action.
|
||
|
|
||
|
-CHECKTN
|
||
|
-[NO]C[HECKTN]
|
||
|
-CHECKTN specifies that JOURNAL -FORWARD must ensure that the
|
||
|
first database update in the journal file has the next
|
||
|
transaction number after the current transaction in the database
|
||
|
file.
|
||
|
|
||
|
-NOCHECKTN suppresses checking of the starting journal
|
||
|
transaction against the ending database transaction number.
|
||
|
|
||
|
-CHECKTN is incompatible with the -BACKWARD qualifier.
|
||
|
|
||
|
By default, JOURNAL -FORWARD uses -CHECKTN.
|
||
|
|
||
|
2 Selection_qualifiers
|
||
|
Selection Qualifiers
|
||
|
|
||
|
-GLOBAL
|
||
|
-G[LOBAL]=global-list
|
||
|
Specifies globals for JOURNAL to include or exclude from
|
||
|
processing. You may find this qualifier useful for extracting
|
||
|
and analyzing specific data.
|
||
|
|
||
|
The global-list contains names of one or more global-names (not
|
||
|
including subscripts) preceded by "^" enclosed in parentheses ()
|
||
|
and separated by commas (,). If -GLOBAL specifies only one item,
|
||
|
the parentheses are optional. The names may include the
|
||
|
wildcards ? and *. The entire list or each name may optionally
|
||
|
be preceded by a minus (-), requiring JOURNAL to exclude
|
||
|
database updates that update the specified global(s). When the
|
||
|
global-list with a JOURNAL -GLOBAL does not start with a minus,
|
||
|
JOURNAL processes only the explicitly named globals.
|
||
|
|
||
|
By default, JOURNAL processes all globals.
|
||
|
|
||
|
-USER
|
||
|
-U[SER]=user-list
|
||
|
Specifies that JOURNAL processing include or exclude database
|
||
|
updates generated by one or more users. You may use this
|
||
|
qualifier to "back-out" database updates erroneously entered by
|
||
|
a specific user.
|
||
|
|
||
|
The user-list contains names of one or more users enclosed in
|
||
|
parentheses () and separated by commas (,). If -USER specifies
|
||
|
only one item, the parentheses are optional. The names may
|
||
|
include the wildcards ? and *. The entire list or each name may
|
||
|
optionally be preceded by a minus (-), requiring JOURNAL to
|
||
|
exclude database updates initiated by the specified user(s).
|
||
|
When the user-list with a JOURNAL -USER does not start with a
|
||
|
minus, JOURNAL processes only database updates generated by the
|
||
|
explicitly named users.
|
||
|
|
||
|
By default, JOURNAL processes database updates regardless of the
|
||
|
user by which they were initiated.
|
||
|
|
||
|
-ID
|
||
|
-ID=pid-list
|
||
|
Specifies that JOURNAL processing include or exclude database
|
||
|
updates generated by one or more processes, identified by
|
||
|
process identification numbers (PIDs) in hexadecimal. You may
|
||
|
use this qualifier for troubleshooting or analysis of data.
|
||
|
|
||
|
The pid-list contains one or more PIDs enclosed in parentheses
|
||
|
() and separated by commas (,). If -ID specifies only one item,
|
||
|
the parentheses are optional. The entire list or each PID may
|
||
|
optionally be preceded by a minus (-), requiring JOURNAL to
|
||
|
exclude database updates associated with the specified PID(s).
|
||
|
When the pid-list with a JOURNAL -ID does not start with a
|
||
|
minus, JOURNAL processes only database updates associated with
|
||
|
the explicitly listed PIDs.
|
||
|
|
||
|
By default, JOURNAL processes database updates regardless of the
|
||
|
process by which they were initiated.
|
||
|
|
||
|
-PROCESS
|
||
|
-P[ROCESS]=process-name-list
|
||
|
Specifies that JOURNAL processing include or exclude database
|
||
|
updates generated by one or more processes, identified by names.
|
||
|
You may use this qualifier to extract specific process-related
|
||
|
data for testing or troubleshooting.
|
||
|
|
||
|
The process-name-list contains names of one or more processes
|
||
|
enclosed in parentheses () and separated by commas (,). If
|
||
|
-PROCESS specifies only one item, the parentheses are optional.
|
||
|
The names may include the wildcards ? and *. The entire list or
|
||
|
each process-name may optionally be preceded by a minus (-)
|
||
|
requiring JOURNAL to exclude database updates associated with
|
||
|
the specified process name(s). When the process-name-list with a
|
||
|
JOURNAL -PROCESS does not start with a minus, JOURNAL processes
|
||
|
only database updates associated with the explicitly named
|
||
|
processes.
|
||
|
|
||
|
By default, JOURNAL processes database updates regardless of the
|
||
|
process by which they were initiated.
|
||
|
|
||
|
-TRANSACTION
|
||
|
-T[RANSACTION]=transaction-type
|
||
|
Specifies transaction-types for JOURNAL to include or exclude
|
||
|
from processing. For example, you may use this qualifier to
|
||
|
exclude KILL transactions and prevent an accidental KILL from
|
||
|
reoccurring during replay.
|
||
|
|
||
|
The transaction-types are:
|
||
|
|
||
|
SET
|
||
|
|
||
|
KILL
|
||
|
|
||
|
These types correspond to the MUMPS commands of the same names.
|
||
|
The transaction-type may optionally be preceded by a minus (-)
|
||
|
requiring JOURNAL to exclude transactions of the specified type.
|
||
|
When the transaction-type with a JOURNAL -TRANSACTION does not
|
||
|
start with a minus, JOURNAL processes only transactions of the
|
||
|
explicitly named type.
|
||
|
|
||
|
By default, JOURNAL processes transactions regardless of type.
|
||
|
|
||
|
2 Examples
|
||
|
Journal Examples
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ cp /dat/cus.cat
|
||
|
$ mupip journal -recover -forward -fences=none cus.mjl
|
||
|
|
||
|
The cp command copies a backup copy of the database for use in
|
||
|
recovery. The MUPIP JOURNAL command recovers the database using the
|
||
|
cus.mjl journal file. The JOURNAL command processes the journal
|
||
|
file in a forward direction (from the beginning of the journal).
|
||
|
The -FENCES=NONE directs JOURNAL to ignore any fences and recover
|
||
|
all individual updates.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ mupip set -file -journal=(before,buff=128) cus.dat
|
||
|
$ mupip set -file -journal=(before,buff=128) acc.dat
|
||
|
...
|
||
|
$ mupip journal -recover -verify -back -error=2 cus.mjl,acc.mjl
|
||
|
|
||
|
The first two command lines initiate journaling for the two
|
||
|
specified database files. MUPIP JOURNAL does not accept wildcards
|
||
|
in database file names. Because the MUPIP SET command specifies
|
||
|
JOURNAL=BEFORE, subsequent JOURNAL -RECOVER may have either
|
||
|
-FORWARD or -BACKWARD direction. The last line contains the command
|
||
|
to recover the two database files using the two specified journal
|
||
|
files. The journal recover processes in a BACKWARD direction using
|
||
|
before-image processing. If JOURNAL processing encounters two or
|
||
|
more errors (-ERROR=2), the recovery process terminates.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ mupip journal -forw -befo="-- 10:30" -glob="^bv%r*" -extr=bv
|
||
|
cus.mjl
|
||
|
|
||
|
This command line extracts database updates that occurred from the
|
||
|
beginning of the journal until 10:30 to global variables with the
|
||
|
prefix ^bv , followed by some character, followed by r, optionally
|
||
|
followed by more characters. The JOURNAL -EXTRACT places the
|
||
|
updates in a file called bv.mjf
|
||
|
|
||
|
Because the command does not specify an extension, JOURNAL assigns
|
||
|
the default extension .mjf to the output file.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ mupip jour -rec -back -befo="-- 10:30" -since="-- 9:30"
|
||
|
-lookback="time=0 00:05" cus.mjl
|
||
|
|
||
|
This command line performs a -RECOVERY -BACKWARD of the database
|
||
|
file that corresponds to the journal file cus.mjl. JOURNAL
|
||
|
-RECOVER processes from the journal time 9:30 to journal time
|
||
|
10:30. If the JOURNAL finds open fenced transactions, it "looks
|
||
|
back" an additional five minutes to resolve them. The -BEFORE= and
|
||
|
-SINCE= qualifiers in this example use absolute time. Because the
|
||
|
time specification omits the date, JOURNAL assumes today's date.
|
||
|
|
||
|
2 extract_formats
|
||
|
JOURNAL -EXTRACT formats
|
||
|
EXTRACT output records are constructed of fields or "pieces"
|
||
|
delimited by back-slashes (\).
|
||
|
|
||
|
The first piece of an EXTRACT output record always contains the
|
||
|
two-digit decimal transaction record type, e.g., 01 for a process
|
||
|
initialization record.
|
||
|
|
||
|
The second piece always contains the full date and time of
|
||
|
operation, represented in $HOROLOG-format, with decimal seconds,
|
||
|
e.g., 54271,44580.55.
|
||
|
|
||
|
The third piece always contains the process id (PID) of the process
|
||
|
that performed the operation, represented as a decimal number. The
|
||
|
remainder of the record depends on the record type.
|
||
|
|
||
|
The fields described as "database transaction number" contain a
|
||
|
GT.M assigned number that is unique within the journal file.
|
||
|
|
||
|
3 proc_initialization
|
||
|
Process Initialization Record
|
||
|
A type 1 record indicates an image-initiated contact with the
|
||
|
GT.M database region for the first time. The format for a
|
||
|
process initialization record is:
|
||
|
|
||
|
01\time\pid\nnam\unam\term
|
||
|
|
||
|
where
|
||
|
|
||
|
time full time/date
|
||
|
|
||
|
pid process id
|
||
|
|
||
|
nnam node name
|
||
|
|
||
|
unam user name
|
||
|
|
||
|
term terminal name
|
||
|
|
||
|
|
||
|
3 proc_termination
|
||
|
Type 2 - Process Termination Record
|
||
|
A type 2 record indicates an image terminated and dropped
|
||
|
interest in the GT.M database region. The format for a process
|
||
|
termination record is:
|
||
|
|
||
|
02\time\pid\nnam\unam\term\tnum
|
||
|
|
||
|
where
|
||
|
|
||
|
time full time/date
|
||
|
|
||
|
pid process id
|
||
|
|
||
|
nnam node name
|
||
|
|
||
|
unam user name
|
||
|
|
||
|
term terminal name
|
||
|
|
||
|
tnum database transaction number
|
||
|
|
||
|
3 end_of_file
|
||
|
Type 3 - End of File Record
|
||
|
A type 3 record indicates all GT.M images dropped interest in
|
||
|
the region and the journal file was closed normally. The format
|
||
|
for an end-of-file record is:
|
||
|
|
||
|
03\time\pid\nnam\unam\term\tnum
|
||
|
|
||
|
where
|
||
|
|
||
|
time full time/date
|
||
|
|
||
|
pid process id
|
||
|
|
||
|
nnam node name
|
||
|
|
||
|
unam user name
|
||
|
|
||
|
term terminal name
|
||
|
|
||
|
tnum database transaction number
|
||
|
|
||
|
3 Kill
|
||
|
Type 4 - Kill Record
|
||
|
A type 4 record indicates a database update caused by a KILL
|
||
|
command. The format for a KILL record is:
|
||
|
|
||
|
04\time\pid\tnum\node
|
||
|
|
||
|
where
|
||
|
|
||
|
time full time/date
|
||
|
|
||
|
pid process id
|
||
|
|
||
|
tnum database transaction number
|
||
|
|
||
|
node a MUMPS node reference in external format
|
||
|
|
||
|
3 Set
|
||
|
Type 5 - Set Record
|
||
|
A type 5 record indicates a database update caused by a SET
|
||
|
command. The format for a SET record is:
|
||
|
|
||
|
05\time\pid\tnum\sarg
|
||
|
|
||
|
where
|
||
|
|
||
|
time full time/date
|
||
|
|
||
|
pid process id
|
||
|
|
||
|
tnum database transaction number
|
||
|
|
||
|
sarg a MUMPS set argument
|
||
|
|
||
|
Note a MUMPS SET argument has a node reference followed by an
|
||
|
equal-sign (=) and MUMPS data string expression.
|
||
|
|
||
|
3 tr_start
|
||
|
Type 6 - Transaction Start Record
|
||
|
A type 6 record indicates a ZTSTART command. The format for a
|
||
|
transaction start record is:
|
||
|
|
||
|
06\time\pid
|
||
|
|
||
|
where
|
||
|
|
||
|
time full time/date
|
||
|
|
||
|
pid process id
|
||
|
|
||
|
3 tr_commit
|
||
|
Type 7 - Transaction Commit Record
|
||
|
A type 7 record indicates a ZTCOMMIT command. The format for a
|
||
|
transaction commit record is:
|
||
|
|
||
|
07\time\pid\tnum\part
|
||
|
|
||
|
where
|
||
|
|
||
|
time full time/date
|
||
|
|
||
|
pid process id
|
||
|
|
||
|
tnum database transaction number
|
||
|
|
||
|
part number of journal entries in the transaction
|
||
|
|
||
|
1 Jrnl_examples
|
||
|
Journaling Examples
|
||
|
The following examples present a typical use of database journaling to
|
||
|
prevent loss of data. In our examples the database consists of three
|
||
|
regions, ACC, MAIN, and TMP, mapped respectively to files
|
||
|
/usr/prod/acc.dat, /usr/prod/mumps.dat and /usr/prod/tmp.dat.
|
||
|
|
||
|
2 Setting_Database_Regions_for_Journaling
|
||
|
We assume that region TMP holds only process-local data, and,
|
||
|
therefore, does not require backups or journaling. We assume, on the
|
||
|
other hand, that regions ACC and MAIN hold production application data
|
||
|
that should be protected by journaling. Moreover, our application
|
||
|
requires a high degree of availability. Therefore, we set up
|
||
|
journaling with BEFORE_IMAGES for regions ACC and MAIN. The
|
||
|
BEFORE_IMAGES allow for JOURNAL RECOVER -BACKWARD, which generally
|
||
|
works faster than JOURNAL RECOVER -FORWARD. Because both our journaled
|
||
|
regions map to the database files on the usr device, we choose a
|
||
|
different disk with a different controller to accommodate the journal
|
||
|
files. This choice improves resiliency against hardware failures.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ mupip set -region -journal=(off,buff=200,file=/jnl/prod/acc) ACC
|
||
|
$ mupip set -region -journal=(off,buff=200,file=/jnl/prod/main) MAIN
|
||
|
|
||
|
These commands must be issued when the database files are available
|
||
|
for exclusive (stand-alone) access. They establish several journal
|
||
|
characteristics. The example increases the journal buffer size from
|
||
|
the default of 128 pages to 200 pages.
|
||
|
|
||
|
2 Journal_Maintenance
|
||
|
First backup the database files. Copy and store your existing journal
|
||
|
files, thencreate and initialize new journal files.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ mupip backup ACC,MAIN /dev/rst8/051590
|
||
|
$ mupip set -region -journal=(on,before) ACC,MAIN
|
||
|
|
||
|
This sequence of commands backs up the database files to disk and
|
||
|
initializes new journal files for each. MUPIP BACKUP can operate
|
||
|
without exclusive access to the database files by freezing all
|
||
|
updates. However, in order to ensure that the BACKUP captures an
|
||
|
application state matching the beginning of the journal files, it
|
||
|
should run stand-alone.
|
||
|
|
||
|
Some applications with high rates of updates may create considerable
|
||
|
amount of journaling data. To save the disk space, you may archive
|
||
|
journal files to magnetic tapes until the next database backup. Before
|
||
|
archiving a journal file, first create a new one.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ mupip set -file -journal=(on,before) ACC.DAT
|
||
|
$ cp /dev/rst8/jnl.bck acc.mjl ~{
|
||
|
$ purge JNL:[PROD]ACC.MJL\
|
||
|
|
||
|
This sequence creates a new journal file and backs up the old journal
|
||
|
file to the tape. Notice that the MUPIP SET requires exclusive access
|
||
|
to the database file to ensure that the old journal stops and the new
|
||
|
journal starts with consistent transaction states.
|
||
|
|
||
|
2 Recovery_from_Journal_Files
|
||
|
Because we set up our databases with BEFORE_IMAGE journaling, when
|
||
|
both the database and journal files are available after a failure
|
||
|
event, we can use JOURNAL -RECOVER -BACKWARD.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ delete /usr/prod/tmp.dat
|
||
|
$ mupip create -region=tmp
|
||
|
$ mupip journal -reco -show -back -nointer
|
||
|
/jnl/prod/acc./jnl/prod/main
|
||
|
$ mupip integ -region *
|
||
|
|
||
|
This first deletes and recreates tmp.dat. The MUPIP JOURNAL command
|
||
|
includes the -SHOW qualifier to generate a report on the status of
|
||
|
activity in the journal files. It also includes the -NOINTERACTIVE
|
||
|
qualifier to prevent operator interaction when JOURNAL processing
|
||
|
encounters an error. By default, this JOURNAL -RECOVER has an implicit
|
||
|
-ERROR_LIMIT=0, which causes the first broken transaction to terminate
|
||
|
processing. In addition to checking database integrity, the MUPIP
|
||
|
INTEG -REGION acts as the first database access after the recovery
|
||
|
and, if the old journal file terminates improperly, creates a new
|
||
|
journal file. Unlike INTEG -REGION, the command MUPIP INTEG -FILE does
|
||
|
not initialize a new journal file. However, if the old journal file
|
||
|
has damage, any other access to the data base creates a new version.
|
||
|
If MUPIP JOURNAL -RECOVER reports broken transactions during recovery,
|
||
|
reenter the transactions.
|
||
|
|
||
|
WARNING: The new journal file created by commands such as mupip integ
|
||
|
-region will overwrite the existing journal file. To preserve the
|
||
|
existing file, save it under a different name before executing any
|
||
|
commands that will cause a new journal file to be created.
|
||
|
|
||
|
If the databases were lost, for instance due to a disk drive failure,
|
||
|
we would have to use JOURNAL -RECOVER -FORWARD after replacing the
|
||
|
drive and retrieving backups of the databases. This recovery may take
|
||
|
much longer than backward recovery, depending on the amount of data in
|
||
|
the journal.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ lprm /usr/prod/*.dat
|
||
|
$ cp /usr/prod /usr/051590/acc.dat
|
||
|
$ cp /usr/prod /usr/051190/mumps.dat
|
||
|
$ mupip journal -reco -forw -err=5 /jnl/jnl/acc,/jnl/jnl/main
|
||
|
$ mupip create -region=TMP
|
||
|
$ mupip integ -region -fast *
|
||
|
|
||
|
This sequence of commands recreates the databases to the point of the
|
||
|
last backup. Then it recovers all updates from the journal files. The
|
||
|
-ERROR_LIMIT= qualifier causes JOURNAL -RECOVER to attempt processing
|
||
|
through up to five (5) errors. By default, when the JOURNAL -RECOVER
|
||
|
executes in batch, processing terminates after five errors. However if
|
||
|
the command executes interactively, after five errors, MUPIP JOURNAL
|
||
|
prompts the the operator at the invoking terminal to choose between
|
||
|
continuing or terminating. Also by default, the JOURNAL -RECOVER
|
||
|
command implies a -VERIFY, causing a check of the journal prior to
|
||
|
-RECOVER processing. The commands up to this point require exclusive
|
||
|
(stand-alone) access to the database files. MUPIP INTEG -REGION
|
||
|
verifies the integrity of the recovered database. If the journal was
|
||
|
not properly closed, the INTEG -REGION also creates a new version of
|
||
|
the journal file, overwriting the existing version. Because the
|
||
|
databases are large, we use the -FAST qualifier on the INTEG. Because
|
||
|
INTEG freezes all updates and we wish to ensure database integrity
|
||
|
before going back into production, we continue to restrict access to
|
||
|
the database until the INTEG completes. Once the database has been
|
||
|
verified, we can resume work. One of the first items of business
|
||
|
should be to reenter any broken transactions.
|
||
|
|
||
|
Should the system crash again and something such as a hard disk
|
||
|
failure prevent backward recovery, we must recover the database
|
||
|
forward, twice. First, restore the database from backup, then recover
|
||
|
to the point of the first crash, then finally, recover from that point
|
||
|
to the point of the second crash.
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ delete *.DAT;*
|
||
|
$ mupip restore acc.dat usr/051590/acc.bck
|
||
|
$ cp /usr/prod /usr/051590/acc.dat
|
||
|
$ cp /usr/prod /usr/051590/mumps.dat
|
||
|
$ mupip journal -reco -veri -forw -err=5 /jnl/acc.mjl
|
||
|
$ mupip journal -reco -veri -forw -err=5 /jnl/acc.mjl
|
||
|
$ mupip create -region=TMP
|
||
|
$ mupip integ -region -fast *
|
||
|
|
||
|
This is similar to the previous example, however, this sequence
|
||
|
recovers the database regions from two consecutive journal files.
|
||
|
|
||
|
1 Jrnl_overview
|
||
|
Journaling overview
|
||
|
Journaling records an extra copy of information during database
|
||
|
updates in order to provide resiliency against hardware and software
|
||
|
failures. Journaling can reduce the "window of exposure" from some of
|
||
|
the most common types of failure: power loss and media loss due to
|
||
|
head-to-disk interference. Journals also provide a valuable tool in
|
||
|
cases of software errors and operational miscues. A journal file has
|
||
|
questionable value only in the case where the database and the journal
|
||
|
share a common point of failure that affects the information in both,
|
||
|
over a significant period of time. Therefore, using different disks
|
||
|
and, when possible, different disk controllers for the journal and the
|
||
|
database files improves the likelihood of the journal serving its
|
||
|
intended purpose.
|
||
|
|
||
|
The database management portion of a MUMPS implementation ensures that
|
||
|
multiple concurrent updates and retrievals of the same information (or
|
||
|
information "close together" in ordered sequence) are handled in a
|
||
|
predictable and logical fashion. The database manager may have to
|
||
|
change multiple records, usually indices, as a result of a single
|
||
|
update. Therefore, interrupting a process performing such a
|
||
|
"multi-point" update violates a design assumption of the MUMPS
|
||
|
implementation and results in a malformed database. Access to a
|
||
|
damaged area of the database does not produce the desired result.
|
||
|
Instead, such an "integrity" problem causes symptoms including system
|
||
|
hangs, misplaced updates, failure to find information that exists,
|
||
|
finding information out of sequence, and run-time errors. If the bad
|
||
|
records contain no valid information or redundant information, the
|
||
|
simplest cures for integrity errors entail deleting incorrectly
|
||
|
formatted records. However, sometimes crashes damage information of
|
||
|
value and, in any case, database repair requires time and skill. GT.M
|
||
|
journaling provides a means to recover or replace databases that have
|
||
|
integrity problems. Use of journaling at this "global" level requires
|
||
|
no MUMPS programming.
|
||
|
|
||
|
MUPIP and its documentation uses the term transaction to mean database
|
||
|
update. In journaling, the term transaction may refer to multiple
|
||
|
related database updates.
|
||
|
|
||
|
2 Forward_Recovery
|
||
|
Forward Recovery
|
||
|
Forward Recovery consists of restoring a backup copy of the
|
||
|
database and applying the journal file to that database file. The
|
||
|
journal file contains copies of each database update. Forward
|
||
|
Recovery reads the entire journal file from beginning to end (in a
|
||
|
"forward" direction) and updates the backup copy of the database.
|
||
|
The optional MUPIP JOURNAL -BEFORE= qualifier specifies a journal
|
||
|
ending time that stops journal processing before the physical end
|
||
|
of the journal file. In general, Forward Recovery takes longer than
|
||
|
Backward Recovery. However, if the current database is somehow
|
||
|
destroyed, you must use Forward Recovery. Also, if a journal file
|
||
|
was created NOBEFORE_IMAGE with a MUPIP SET, that journal only
|
||
|
permits Forward Recovery.
|
||
|
|
||
|
Example of Forward Recovery:
|
||
|
|
||
|
MUPIP JOURNAL -RECOVER -FORWARD
|
||
|
|
||
|
|
||
|
-BEFORE
|
||
|
|
|
||
|
--------------------------------V-----------X--------->time
|
||
|
10:30 10:32
|
||
|
>>+++++++++++++++++++++++++++++>>++++++++++>>
|
||
|
|
||
|
|
||
|
This shows a recovery after a system crash at 10:32, which
|
||
|
processes the entire journal file forward. If we add -BEFORE="--
|
||
|
10:30" to the command, the recovery stops when processing
|
||
|
encounters updates that originally occurred after 10:30.
|
||
|
|
||
|
2 Backward_Recovery
|
||
|
Backward Recovery
|
||
|
Backward Recovery works by processing from the end of the journal
|
||
|
file that contains information for the period just prior to the
|
||
|
failure event, thereby minimizing recovery time. Backward Recovery
|
||
|
uses "before-image" journaling. With "before-image" journaling,
|
||
|
GT.M captures the database updates, as well as "snap-shots" of
|
||
|
portions of the database immediately prior to the change caused by
|
||
|
the update. In effect, MUPIP JOURNAL=BEFORE_IMAGE creates
|
||
|
"mini-backups" preceding each database update. Backward Recovery
|
||
|
uses the mini-backups to restore the database as far back in time
|
||
|
as specified, then it goes forward in time replaying the database
|
||
|
updates. Using Backward Recovery with the MUPIP JOURNAL qualifiers
|
||
|
-BEFORE=, -SINCE=, and -LOOKBACK=, you can specify a block of time
|
||
|
to recover. JOURNAL -RECOVER -BACKWARD only works if the production
|
||
|
database is useable, and if the MUPIP SET command that created the
|
||
|
journal file specified the BEFORE_IMAGE characteristic.
|
||
|
|
||
|
Note: Before-images require more disk I/O and storage space.
|
||
|
|
||
|
Example of Backward Recovery:
|
||
|
|
||
|
MUPIP JOURNAL -RECOVER -BACKWARD -SINCE="-- 9:30"
|
||
|
|
||
|
|
||
|
-LOOKBACK_LIMIT
|
||
|
| -SINCE
|
||
|
| | -BEFORE
|
||
|
| | |
|
||
|
----------------V-------V-------V------X--------->time
|
||
|
9:30 10:30 10:32
|
||
|
<*******<++++++++++++++<<
|
||
|
********++++++++>++++++>>
|
||
|
|
||
|
|
||
|
|
||
|
This shows a recovery after a system crash at 10:32. The recovery
|
||
|
"undoes" the database updates backward to 9:30 and then forward
|
||
|
until the crash. If we add -BEFORE="-- 10:30" to the command, the
|
||
|
recovery stops when forward processing encounters updates that
|
||
|
originally occurred after 10:30. If the application includes
|
||
|
ZTSTART and ZTCOMMIT commands to fence a group of transactions,
|
||
|
backwards processing may continue back prior to 9:30 searching to
|
||
|
resolve fenced transactions that were incomplete at 9:30. The
|
||
|
-LOOKBACK_LIMIT= qualifier controls the maximum amount of
|
||
|
additional backward processing.
|
||
|
|
||
|
2 Fencing_Transactions
|
||
|
Fencing Transactions
|
||
|
Journaling without fences in MUMPS addresses the fact that a system
|
||
|
crash can damage the database integrity. However, sound design
|
||
|
frequently dictates modelling a single "real-world" event in
|
||
|
updates to more than one global variable. Such real-world events
|
||
|
are usually captured in a single data entry session and are
|
||
|
referred to as logical transactions. Therefore, interrupting a
|
||
|
process performing a "multi-node" logical transaction violates a
|
||
|
design assumption of the application and results in logical
|
||
|
inconsistencies in the database. Such logical inconsistencies
|
||
|
produce symptoms including run-time errors, inappropriate branching
|
||
|
and incorrect reports. Sometimes logical inconsistencies are
|
||
|
referred to as application-level database integrity problems.
|
||
|
|
||
|
Standard MUMPS does not yet include a method to identify the fact
|
||
|
that a single logical transaction may be made up of multiple global
|
||
|
updates. Therefore, a journal recovery that corrects database
|
||
|
integrity problems may perform an update that is part of an
|
||
|
incomplete sequence of updates intended as a single logical unit.
|
||
|
|
||
|
GT.M provides the MUMPS commands ZTSTART to mark the beginning of a
|
||
|
logical transaction and ZTCOMMIT to mark the end of a logical
|
||
|
transaction. When ZTSTART and ZTCOMMIT fence a logical transaction,
|
||
|
the journal recovery can refrain from starting an incomplete
|
||
|
update. To take advantage of this additional level of journaling
|
||
|
functionality, the application must use ZTSTART and ZTCOMMIT
|
||
|
commands.
|
||
|
|
||
|
Journaling does not require modification of application programs.
|
||
|
However, using ZTSTART and ZTCOMMIT to add transaction fences
|
||
|
around updates that comprise a logical unit significantly improves
|
||
|
the benefit of journaling. For instance, the logical transaction
|
||
|
"transfer funds between accounts" consists of a debit update to one
|
||
|
account and a credit update to another account. One of the updates
|
||
|
made without the other is not valid. When recovering from journal
|
||
|
files, JOURNAL processing recovers either all updates within the
|
||
|
transaction fences or none of them. MUPIP JOURNAL -RECOVER reports
|
||
|
the latter case during recovery.
|
||
|
|
||
|
1 LOAD
|
||
|
L[OAD]
|
||
|
LOAD enters global variable names and their corresponding data values
|
||
|
into a GT.M database from a sequential file. LOAD uses the Global
|
||
|
Directory to determine which database files to use. LOAD may operate
|
||
|
concurrently with normal GT.M database access. However, a LOAD does
|
||
|
not use MUMPS LOCKs and therefore may produce application-level
|
||
|
integrity problems if run concurrently with many applications.
|
||
|
|
||
|
The format of the LOAD command is:
|
||
|
|
||
|
L[OAD] [qualifier...] file-specification
|
||
|
|
||
|
LOAD takes its input from the file defined by the file-specification.
|
||
|
|
||
|
<CTRL C> produces a status message from LOAD. Entering <CTRL C> twice
|
||
|
in quick succession aborts LOAD. A LOAD terminated abnormally by
|
||
|
operator action or error is incomplete but does not adversely affect
|
||
|
the database structure.
|
||
|
|
||
|
2 -FORMAT
|
||
|
-FO[RMAT]=keyword
|
||
|
Specifies the format of the input file. The format must match the
|
||
|
actual format of the input file for LOAD to operate.
|
||
|
|
||
|
At present, the only available format code is:
|
||
|
|
||
|
GO - Global Output format
|
||
|
|
||
|
3 GO
|
||
|
-FORMAT=GO
|
||
|
-FORMAT=GO stores the data in record pairs. Each global node produces
|
||
|
one record for the key
|
||
|
and one for the data. -FORMAT=GO has two header records, therefore
|
||
|
LOAD -FORMAT=GO
|
||
|
starts active work with record number three (3).
|
||
|
|
||
|
2 -BEGIN
|
||
|
-BE[GIN]=integer
|
||
|
Specifies the record number of the input file with which LOAD should
|
||
|
begin. Directing LOAD to begin
|
||
|
at a point other than the beginning of a valid key causes an error.
|
||
|
|
||
|
It is important to consider the number of header records when choosing a
|
||
|
-BEGIN point. For more
|
||
|
information, refer to the section on -FORMAT.
|
||
|
|
||
|
For -FORMAT=GO input, normally the value should be an odd number.
|
||
|
|
||
|
By default, LOAD starts at the beginning of the input file.
|
||
|
|
||
|
2 -END
|
||
|
-E[ND]=integer
|
||
|
Specifies the record number of the input file at which LOAD should stop.
|
||
|
The -END=integer must be
|
||
|
greater than the -BEGIN=integer for LOAD to operate. LOAD terminates
|
||
|
after processing the record of
|
||
|
the number specified by -END or reaching the end of the input file.
|
||
|
|
||
|
For -FORMAT=GO input, normally the value should be an even number.
|
||
|
|
||
|
By default, LOAD continues to the end of the input file.
|
||
|
|
||
|
2 -FILL_FACTOR
|
||
|
-FI[LL_FACTOR]=integer
|
||
|
Specifies the target fill density for the data blocks updated in the
|
||
|
database file. -FILL_FACTOR must be
|
||
|
an integer between 5 and 100 specifying the percentage fill rate for the
|
||
|
block.
|
||
|
|
||
|
In general, maximum data densities provide the best performance.
|
||
|
However, if you have an
|
||
|
understanding of the update patterns of your application, you may
|
||
|
achieve a performance benefit over
|
||
|
time from lowering the initial fill-factor.
|
||
|
|
||
|
By default, LOAD uses -FILL_FACTOR=100 for maximum data density.
|
||
|
|
||
|
1 Overview
|
||
|
MUPIP overview
|
||
|
The GT.M MUMPS Peripheral Interchange Program, MUPIP, is a utility
|
||
|
that provides an assortment of tools for GT.M database management and
|
||
|
database journaling.
|
||
|
|
||
|
MUPIP provides the following commands:
|
||
|
|
||
|
For stand-alone database services:
|
||
|
|
||
|
o CREATE database files
|
||
|
|
||
|
o EXTEND Mapped Memory database files
|
||
|
|
||
|
o JOURNAL, recover database files and extract journal records
|
||
|
|
||
|
o INTEG, check the integrity of GDS database files
|
||
|
|
||
|
o RESTORE incremental backups to GDS database files
|
||
|
|
||
|
o SET database file characteristics
|
||
|
|
||
|
For concurrent database services:
|
||
|
|
||
|
o BACKUP GDS database files
|
||
|
|
||
|
o BACKUP-INCREMENTAL changes to GDS database files
|
||
|
|
||
|
o EXTEND Buffered Global database files
|
||
|
|
||
|
o EXTRACT data from GDS databases
|
||
|
|
||
|
o INTEG, check the integrity of GDS databases
|
||
|
|
||
|
o LOAD databases from sequential files
|
||
|
|
||
|
o REORGanize database files to optimize performance
|
||
|
|
||
|
o RUNDOWN database files that are not currently accessed
|
||
|
|
||
|
For non-database services:
|
||
|
|
||
|
o HELP for MUPIP commands
|
||
|
|
||
|
o STOP GT.M processes
|
||
|
|
||
|
1 REORG
|
||
|
REO[RG]
|
||
|
MUPIP REORG offers a tool for optimizing your database files for peak
|
||
|
database performance. REORG
|
||
|
requires minimal operator resources, and runs concurrently with other
|
||
|
database activity, including updates.
|
||
|
Competing activity generally increases the time to perform a REORG, as
|
||
|
well as that of the competing
|
||
|
operations. If you use REORG concurrently with normal database access, you
|
||
|
may wish to lower the priority
|
||
|
of the process performing the REORG to minimize its impact on normal
|
||
|
operations.
|
||
|
|
||
|
Note that while REORG optimizes the GDS structure of database files, it
|
||
|
does not deal with native file system
|
||
|
file fragmentation. Because native file fragmentation may significantly
|
||
|
impair database performance, its
|
||
|
prevention and control is still important. Always create files with
|
||
|
appropriate allocations and extensions, on
|
||
|
disks with large contiguous free-space. Use native utilities and,
|
||
|
depending on your procedures, MUPIP
|
||
|
utilities to eliminate file fragmentation when database files have been
|
||
|
extended more than a dozen times.
|
||
|
|
||
|
The format of the REORG command is:
|
||
|
|
||
|
REO[RG] [qualifier...] file-specification
|
||
|
|
||
|
<CTRL C> produces a status message from REORG. Entering <CTRL C> twice in
|
||
|
quick succession
|
||
|
aborts REORG. A REORG terminated abnormally by operator action or error is
|
||
|
incomplete but does not
|
||
|
adversely affect the database structure.
|
||
|
|
||
|
2 Qualifiers
|
||
|
|
||
|
-SELECT
|
||
|
-SELECT=global-name-list
|
||
|
Restricts REORG operation to a subset of specified globals. By
|
||
|
default, REORG operates on all
|
||
|
globals in all database files identified by the current global
|
||
|
directory for the process executing the
|
||
|
MUPIP command.
|
||
|
|
||
|
Arguments to this qualifier may be an individual global name, a prefix
|
||
|
followed by an asterisk (*)
|
||
|
wild-card symbol, or a list of names and/or prefixes followed by the
|
||
|
wild-card symbol. The "^" in
|
||
|
the specification of the global name is optional. Enclose lowercase
|
||
|
global names in quotes ("").
|
||
|
|
||
|
The global-specification can be:
|
||
|
|
||
|
o A global name, such as MEF
|
||
|
|
||
|
o A range of global names, such as A7:B6
|
||
|
|
||
|
o A list, such as A,B,C
|
||
|
|
||
|
o Global names with the same prefix, such as TMP*
|
||
|
|
||
|
In the first case, EXTRACT selects only global ^MEF. In the second
|
||
|
case, EXTRACT selects all
|
||
|
global names between ^A7 and ^B6, inclusive. In the third case,
|
||
|
EXTRACT selects globals ^A, ^B,
|
||
|
and ^C. In the fourth case, EXTRACT selects all global names from ^TMP
|
||
|
through ^TMPzzzzz.
|
||
|
|
||
|
-FILL_FACTOR
|
||
|
-FILL_FACTOR=percent-qualifier
|
||
|
Directs REORG to leave free space within blocks for future updates.
|
||
|
Arguments to this qualifier
|
||
|
must be integers from 5 to 100. REORG uses this figure in deciding
|
||
|
whether to place more
|
||
|
information in a block; currently REORG does not move information out
|
||
|
of a block to make more
|
||
|
room. By default, REORG attempts to fill blocks to their maximum
|
||
|
capacity.
|
||
|
|
||
|
1 RESTORE
|
||
|
RE[STORE]
|
||
|
RESTORE integrates one or more BACKUP -INCREMENTAL files into a
|
||
|
corresponding database. For a
|
||
|
RESTORE to work, the transaction numbers in the incremental file(s) must
|
||
|
sequentially follow those in the
|
||
|
database. Gaps or overlaps in the transaction numbers at RESTORE input
|
||
|
file boundaries cause RESTORE to
|
||
|
issue errors.
|
||
|
|
||
|
The format of the RESTORE command is:
|
||
|
|
||
|
RE[STORE] [qualifier] file-spec file-list
|
||
|
|
||
|
The file-specification identifies the name of the database file that
|
||
|
RESTORE uses as a starting point. The
|
||
|
transaction number in the database must match the starting transaction
|
||
|
number of each successive input to the
|
||
|
RESTORE. If the BACKUP -INCREMENTAL was created using -TRANSACTION=1, set
|
||
|
the database up
|
||
|
with MUPIP CREATE and do not access it with anything except the MUPIP
|
||
|
commands INTEG, EXTEND,
|
||
|
and SET before initiating the RESTORE.
|
||
|
|
||
|
The file list specifies one or more files produced by BACKUP -INCREMENTAL
|
||
|
to RESTORE into the
|
||
|
database. The file-specifications are separated by commas (,) and must be
|
||
|
in sequential order, from the oldest
|
||
|
transaction number to the most recent. RESTORE may take its input from a
|
||
|
UNIX file on any device that
|
||
|
supports such files.
|
||
|
|
||
|
2 Qualifiers
|
||
|
|
||
|
-EXTEND
|
||
|
-[NO]EXTEND
|
||
|
Specifies whether RESTORE should extend automatically if its target
|
||
|
database file is smaller than
|
||
|
the file size identified by the input BACKUP -INCREMENTAL file. MUMPS
|
||
|
activity between
|
||
|
backups may automatically extend a database file. Therefore, the
|
||
|
database file specified as the
|
||
|
starting point for a RESTORE may require an extension before the
|
||
|
RESTORE. If the database needs
|
||
|
an extension, MUPIP displays a message. The message gives the sizes of
|
||
|
the input and output
|
||
|
database files and the number of blocks by which to extend the
|
||
|
database. If the RESTORE specifies
|
||
|
more than one incremental backup with a file list, the database file
|
||
|
may require more than one
|
||
|
extension.
|
||
|
|
||
|
By default, RESTORE automatically extends the database file.
|
||
|
1 RUNDOWN
|
||
|
RU[NDOWN]
|
||
|
When database files have not been properly closed, RUNDOWN closes those
|
||
|
currently inactive databases and
|
||
|
releases the central memory they claim. In normal operation, the last
|
||
|
process to close a database file performs
|
||
|
the RUNDOWN actions.
|
||
|
|
||
|
The format of the RUNDOWN command is:
|
||
|
|
||
|
RU[NDOWN] [-qualifier file-spec or region-list]
|
||
|
|
||
|
The filename or region-list identifies the target of the RUNDOWN. If
|
||
|
RUNDOWN has no parameter, it
|
||
|
ignores any qualifier and flushes the memory associated with all database
|
||
|
files that currently have associated
|
||
|
memory and no active users.
|
||
|
|
||
|
Use RUNDOWN after a system crash or after the last process accessing a
|
||
|
database terminates abnormally.
|
||
|
RUNDOWN ensures that an inactive database is properly closed and ready for
|
||
|
subsequent use. RUNDOWN
|
||
|
has no effect on any database that is actively being accessed at the time
|
||
|
the RUNDOWN is issued.
|
||
|
|
||
|
A RUNDOWN that specifies a target file or region can correct file state
|
||
|
problems which a RUNDOWN with
|
||
|
no parameters does not find.
|
||
|
|
||
|
2 Qualifiers
|
||
|
-FILE
|
||
|
-F[ILE]
|
||
|
Specifies that the argument is a filename for a single database file.
|
||
|
The -FILE qualifier is
|
||
|
incompatible with the -REGION qualifier. If the rundown parameter
|
||
|
consists of a list of files, the
|
||
|
command only operates on the first item in the list.
|
||
|
|
||
|
-REGION
|
||
|
-R[EGION]
|
||
|
Specifies that the argument contains one or more region-names which
|
||
|
identify database files mapped
|
||
|
by the current Global Directory. The -REGION qualifier is incompatible
|
||
|
with the -FILE qualifier.
|
||
|
|
||
|
2 SEt
|
||
|
SET modifies certain database characteristics. SET requires exclusive
|
||
|
(stand-alone) access to the
|
||
|
database file. SET operates on either regions or files.
|
||
|
|
||
|
The format of the SET command is:
|
||
|
|
||
|
SE[T] -qualifier... filename or region-list
|
||
|
|
||
|
The filename or region-list identifies the target of the SET.
|
||
|
|
||
|
The SET command must include one of the following qualifiers:
|
||
|
|
||
|
o -FILE
|
||
|
|
||
|
o -REGION
|
||
|
|
||
|
The optional qualifiers are:
|
||
|
|
||
|
o -G[LOBAL_BUFFERS]=integer
|
||
|
|
||
|
o -[NO]JOURNAL[=journal-option-list]
|
||
|
|
||
|
|
||
|
2 Qualifiers
|
||
|
-FILE
|
||
|
-F[ILE]
|
||
|
Specifies that the argument is a filename for a single database file.
|
||
|
The -FILE qualifier is
|
||
|
incompatible with the -REGION qualifier.
|
||
|
|
||
|
-REGION
|
||
|
-R[EGION]
|
||
|
Specifies that the argument is a region-list which identifies database
|
||
|
file(s) mapped by the current
|
||
|
Global Directory. SET -REGION changes multiple files when the
|
||
|
parameter contains a list and-or
|
||
|
wildcards. The -REGION qualifier is incompatible with the -FILE
|
||
|
qualifier.
|
||
|
|
||
|
The following qualifiers determine the action(s) for the SET.
|
||
|
|
||
|
-GLOBAL_BUFFERS
|
||
|
-G[LOBAL_BUFFERS]=integer
|
||
|
Specifies the number of cache buffers for a BG database. For
|
||
|
information on determining good
|
||
|
working sizes for GLOBAL_BUFFERS, refer to the "Global Directory
|
||
|
Editor" chapter of the GT.M
|
||
|
Administration and Operations Guide.
|
||
|
|
||
|
The minimum is 64 buffers and the maximum is 4096 buffers. By default,
|
||
|
MUPIP CREATE
|
||
|
establishes GLOBAL_BUFFERS using information entered in the Global
|
||
|
Directory with GDE.
|
||
|
|
||
|
-JOURNAL
|
||
|
-[NO]J[OURNAL][=journal-option-list]
|
||
|
Specifies whether the database allows journaling and, if it does,
|
||
|
characteristics for the journal file.
|
||
|
|
||
|
-NOJOURNAL specifies the database does not allow journaling.
|
||
|
-NOJOURNAL does not accept an
|
||
|
argument assignment.
|
||
|
|
||
|
-JOURNAL specifies journaling is allowed. -JOURNAL takes one or more
|
||
|
arguments in a
|
||
|
journal-option-list.
|
||
|
|
||
|
For a full description of the -JOURNAL qualifier and its keywords,
|
||
|
refer the "GT.M Journaling"
|
||
|
chapter in the GT.M Administration and Operations Guide.
|
||
|
|
||
|
1 SET
|
||
|
SE[T]
|
||
|
|
||
|
MUPIP SET -JOURNAL determines whether a specified file or region(s)
|
||
|
have journaling activated. SET requires sole access to the database.
|
||
|
SET operates on either regions or files.
|
||
|
|
||
|
The format for the SET command is:
|
||
|
|
||
|
SE[T] -qualifier... file-spec or region-list
|
||
|
|
||
|
The file-specification or region-list identifies the target of the
|
||
|
SET. Region-names separated by commas (,) make up a region-list. For
|
||
|
a summary table of MUPIP commands and qualifiers including MUPIP SET,
|
||
|
refer to the MUPIP chapter in the GT.M Administration and Operations
|
||
|
Guide.
|
||
|
|
||
|
2 Object_qualifiers
|
||
|
Object Qualifiers
|
||
|
|
||
|
-FILE
|
||
|
-F[ILE]
|
||
|
Specifies that the argument contains a file-specification for a
|
||
|
single database file. The -FILE qualifier is incompatible with
|
||
|
the -REGION qualifier.
|
||
|
|
||
|
-REGION
|
||
|
-R[EGION]
|
||
|
Specifies that the argument contains a region-name which,
|
||
|
through the mapping of the current Global Directory, identifies
|
||
|
a database file. SET -REGION modifies multiple files when the
|
||
|
parameter contains more than one name. The -REGION qualifier is
|
||
|
incompatible with the -FILE qualifier.
|
||
|
|
||
|
2 Action_qualifiers
|
||
|
Action Qualifiers
|
||
|
|
||
|
/GLOBAL_BUFFERS
|
||
|
/G[LOBAL_BUFFERS]=integer
|
||
|
Specifies the number of cache buffers for a BG database. For
|
||
|
information on determining good working sizes of GLOBAL_BUFFERS,
|
||
|
refer to the "Global Directory Editor" chapter of the GT.M
|
||
|
Administration and Operations Guide.
|
||
|
|
||
|
The minimum is 64 buffers and the maximum is 4096 buffers. By
|
||
|
default, MUPIP CREATE establishes GLOBAL_BUFFERS from
|
||
|
information entered in the Global Directory with GDE.
|
||
|
|
||
|
-JOURNAL
|
||
|
-[NO]J[OURNAL][=journal-option-list]
|
||
|
Specifies whether the database allows journaling and, if it
|
||
|
does, characteristics for the journal file.
|
||
|
|
||
|
-NOJOURNAL specifies that the database does not allow
|
||
|
journaling. -NOJOURNAL does not accept an argument assignment.
|
||
|
-NOJOURNAL does not create new journal files. When a database
|
||
|
has been SET -NOJOURNAL, it appears to have no journaling file
|
||
|
name or other characteristics.
|
||
|
|
||
|
-JOURNAL= enables journaling for a database file. -JOURNAL=
|
||
|
takes one or more arguments in a journal-option-list. Except
|
||
|
when used with the OFF option, SET -JOURNAL= always overwrites
|
||
|
any existing versions of the specified journal file(s). The
|
||
|
journal-option-list contains keywords separated with commas (,)
|
||
|
enclosed in parentheses (). When the list contains only one
|
||
|
keyword, the parentheses are optional.
|
||
|
|
||
|
For details on the list refer to the journal-option-list topic.
|
||
|
|
||
|
2 journal-option-list
|
||
|
journal-option-list elements
|
||
|
|
||
|
The following topics detail the journal-option-list elements.
|
||
|
|
||
|
3 ON
|
||
|
ON
|
||
|
ON specifies that MUPIP create a new journal file and that GT.M
|
||
|
record subsequent updates to the database in that journal file.
|
||
|
A SET -JOURNAL=ON must include either BEFORE_IMAGE or
|
||
|
NOBEFORE_IMAGE in the accompanying journal-option-list. When a
|
||
|
database has been SET -JOURNAL=ON, GT.M journals updates to that
|
||
|
file.
|
||
|
|
||
|
By default, SET -JOURNAL= turns journaling on.
|
||
|
|
||
|
3 OFF
|
||
|
OFF
|
||
|
OFF specifies that GT.M not record subsequent updates to the
|
||
|
database in the journal file. OFF may also be used to set up
|
||
|
journaling characteristics without creating a journal file or
|
||
|
starting journaling. When a database has been SET -JOURNAL=OFF,
|
||
|
it has established journal characteristics ready to turn ON, but
|
||
|
GT.M does not journal updates to that file.
|
||
|
|
||
|
By default, SET -JOURNAL= turns journaling on.
|
||
|
|
||
|
3 BEFORE_IMAGE
|
||
|
[NO]BE[FORE_IMAGE]
|
||
|
[NO]BEFORE_IMAGE controls whether the journal should capture
|
||
|
before-images of information that an update is about to modify.
|
||
|
MM databases must use NOBEFORE_IMAGE journaling. A SET
|
||
|
-JOURNAL=ON must include either BEFORE_IMAGE or NOBEFORE_IMAGE
|
||
|
in the accompanying journal-option-list.
|
||
|
|
||
|
A BEFORE_IMAGE journal permits the possibility of performing
|
||
|
"roll-back" recovery (i.e., Backward Recovery) of the associated
|
||
|
database. BEFORE_IMAGE increases the load on I/O and CPU
|
||
|
resources and therefore may affect performance.
|
||
|
|
||
|
3 FILE_NAME
|
||
|
F[ILE_NAME]=file-specification
|
||
|
FILE_NAME=file-specification specifies the name of the journal
|
||
|
file. FILE_NAME is incompatible with SET -REGION.
|
||
|
|
||
|
Journal file-specifications are limited to 55 characters.
|
||
|
|
||
|
By default, MUPIP CREATE establishes the journal
|
||
|
file-specification from the Global Directory. If the Global
|
||
|
Directory does not contain a journal file-specification SET
|
||
|
-JOURNAL derives the journal file-specification from the
|
||
|
database file-specification using a file type of .MJL. Note that
|
||
|
because the default usually places the journal file on the same
|
||
|
disk drive as the database file, it does not protect well
|
||
|
against disk hardware failures.
|
||
|
|
||
|
3 ALLOCATION
|
||
|
A[LLOCATION]=blocks
|
||
|
ALLOCATION=blocks specifies the initial size of the journal file
|
||
|
in blocks. Because frequent journal file extensions degrade
|
||
|
run-time performance, make journal file allocation ample for a
|
||
|
production database.
|
||
|
|
||
|
The minimum ALLOCATION is 10 blocks and the maximum is
|
||
|
16,777,216 blocks.
|
||
|
|
||
|
If journaling characteristics have not been previously
|
||
|
established by GDE or a prior SET -FILE -JOURNAL and a SET
|
||
|
-JOURNAL= specifies ALLOCATION but does not specify EXTENSION,
|
||
|
the command automatically changes EXTENSION to equal 10% of the
|
||
|
new ALLOCATION.
|
||
|
|
||
|
By default, MUPIP CREATE establishes the ALLOCATION from the
|
||
|
Global Directory, where the Greystone supplied default is 100
|
||
|
blocks. If the Global Directory does not contain ALLOCATION
|
||
|
information, SET -JOURNAL uses a default of 100 blocks.
|
||
|
|
||
|
3 EXTENSION=blocks
|
||
|
E[XTENSION]=blocks
|
||
|
EXTENSION=blocks specifies the size by which a journal file
|
||
|
extends when it becomes full. EXTENSION=0 disables automatic
|
||
|
journal file extension. While this technique exerts firm control
|
||
|
over disk space consumption by a journal file, running out of
|
||
|
journal file space terminates journaling for the region. Because
|
||
|
frequent journal file extensions degrade run-time performance,
|
||
|
make the journal file extension ample for a production database.
|
||
|
|
||
|
The minimum EXTENSION is 0 blocks and the maximum is 65,536
|
||
|
blocks.
|
||
|
|
||
|
If journaling characteristics have not been previously
|
||
|
established by GDE or a prior SET -FILE -JOURNAL and a SET
|
||
|
-JOURNAL= specifies ALLOCATION but does not specify EXTENSION,
|
||
|
the command automatically changes EXTENSION to equal 10% of the
|
||
|
new ALLOCATION.
|
||
|
|
||
|
By default, MUPIP CREATE establishes the EXTENSION from the
|
||
|
Global Directory, where the Greystone-supplied default is 100
|
||
|
blocks. If the Global Directory does not contain EXTENSION
|
||
|
information and the SET -JOURNAL does not specify either
|
||
|
ALLOCATION or EXTENSION, MUPIP uses a default of 100 blocks.
|
||
|
|
||
|
3 BUFFER_SIZE=pages
|
||
|
BU[FFER_SIZE]=pages
|
||
|
BUFFER_SIZE=pages specifies the amount of memory used to buffer
|
||
|
journal file output.
|
||
|
|
||
|
A larger BUFFER_SIZE usually smooths and improves run-time
|
||
|
performance by allowing larger, less frequent writes. On the
|
||
|
other hand, a larger BUFFER_SIZE requires more memory resources,
|
||
|
which may be scarce. A larger BUFFER_SIZE provides more room for
|
||
|
journal records in buffered memory and therefore increases the
|
||
|
number of update records that may be lost in a system failure.
|
||
|
|
||
|
The minimum BUFFER_SIZE is enough 512-byte pages to hold two GDS
|
||
|
database blocks and the maximum is 2000 pages.
|
||
|
|
||
|
By default, MUPIP CREATE establishes the BUFFER_SIZE from the
|
||
|
Global Directory, where the Greystone-supplied default is 128
|
||
|
pages. If the Global Directory does not contain BUFFER_SIZE
|
||
|
information, SET -JOURNAL uses a default of 128 pages.
|
||
|
|
||
|
2 Examples
|
||
|
SET -JOURNAL Examples
|
||
|
|
||
|
Example
|
||
|
|
||
|
$ mupip set -file -journal=(nobefore,buff=128) cus.dat
|
||
|
|
||
|
This initiates journaling for the database file cus.dat. Because
|
||
|
the parameters include NOBEFORE, subsequent JOURNAL commands to
|
||
|
-RECOVER the database updates in the journal must specify -FORWARD.
|
||
|
The journal file created has the name cus.mjl.
|
||
|
|
||
|
Example
|
||
|
|
||
|
mupip set -region -journal=(before,alloc=50000,ext=5000)
|
||
|
|
||
|
This enables journaling with BEFORE_IMAGES on all regions of the
|
||
|
current Global Directory and gives each journal an ALLOCATION of
|
||
|
50000 blocks and an EXTENSION of 5000 blocks. If the regions have
|
||
|
significantly different levels of update, either set the ALLOCATION
|
||
|
and EXTENSION in the Global Directory before the MUPIP CREATE(s)
|
||
|
or use several MUPIP SET -FILE commands.
|
||
|
|
||
|
Example
|
||
|
|
||
|
mupip set -region -journal=before joel.dat
|
||
|
|
||
|
This declares journaling active with before-images for all regions
|
||
|
of the current Global Directory when they are next opened.
|
||
|
|
||
|
Example
|
||
|
|
||
|
mupip set -file -nojournal MUMPS.DAT
|
||
|
|
||
|
This disables journaling on the database file MUMPS.DAT in the
|
||
|
current default directory.
|
||
|
|
||
|
1 STOP
|
||
|
ST[OP]
|
||
|
STOP terminates a GT.M image. The image executes an orderly rundown of all
|
||
|
databases in which it
|
||
|
currently has an interest and then exits. A MUPIP STOP may also be used to
|
||
|
stop non-GT.M images.
|
||
|
|
||
|
The format of the STOP command is:
|
||
|
|
||
|
ST[OP] process-id
|
||
|
|
||
|
Use the shell command ps to display a list of active process names and
|
||
|
process identifiers (PIDs).
|
||
|
|
||
|
|