The “compact” IBM Domino server command received a significant overhaul in version 8.5. To unlock the new features, it was necessary to set the “Debug_Enable_Compact_8_5=1” ini setting.
Compact continues to evolve in IBM Domino 9 and no longer requires the ini setting to unlock new features. However, with version 9, the command no longer accepts the “/?” switch to provide help with the options/switches. Furthermore, IBM Documentation (even for 9.0.1) fails to list many of these and most of the newer options avaialble.
Here are the options as of 8.5.x:
l compact /?
Purpose: Compacts one or more database(s).
Usage: Load COMPACT [path] [options]…
[path]: One database, one folder (recurses), or omitted (all, recurses).
-A Archive and delete documents without compacting.
-a Archive and delete documents, then compact database.
-B Recover space and reduce file size (inplace-style).
-b Recover space without reducing file size (inplace-style).
-C Copy-style compaction.
-D Discard view indexes (copy-style).
-daos on Enable ‘Use Domino Attachment and Object Service’ database property. (Use with -C to move current objects into DAOS)
-daos off Disable ‘Use Domino Attachment and Object Service’ database property. (Use with -C to move current objects out of DAOS)
-e No-execute: Show effective arguments only, since some arguments affect others.
-F Enable ‘Document table bitmap optimization’ database property (copy-style).
-f Disable ‘Document table bitmap optimization’ database property (copy-style).
-g Copy-style compact the DB2 group associated with this database or databases (for directories). Recovers disk space in DB2.
-G Copy-style compact the DB2 group name passed in as a parameter. Recovers disk space in DB2.
-H Enable ‘Don’t support specialized response hierarchy’ database property (copy-style).
-h Disable ‘Don’t support specialized response hierarchy’ database property (copy-style).
-i Ignore errors (for copy-style only).
-j Just Delete (must specify -a or -A to be valid).
-K Enable large UNK table (>64 KB).
-k Disable large UNK table (>64 KB).
-L Don’t lock users out during compaction (for copy-style only).
-M Set maximum database size to 4 GB.
-N Disable ‘Compress database design’ database property. (Use -C with -N to uncompress current database design documents)
-n Enable ‘Compress database design’ database property. (Use -C with -n to compress current database design documents)
-o Check for overlapping objects.
-p Convert to an NSFDB2 database.
-pirc on Enable ‘Purge Interval Replication Control’ on database.
-pirc off Disable ‘Purge Interval Replication Control’ on database.
-r Revert to previous ODS format (e.g. on an R8 system, keep/convert back to R7 format).
-R Revert one ODS based on the current ODS of the database. (e.g. Converts an R8 (ODS48) database to R7 (ODS43) format)
-S nnnK Compact database if unused space estimate >= nnn KB.
-S nnnM Compact database if unused space estimate >= nnn MB.
-S nn Compact database if unused space estimate >= nn percent.
-T Enable transaction logging.
-t Disable transaction logging.
-U Enable ‘Don’t maintain unread marks’ database property.
-u Disable ‘Don’t maintain unread marks’ database property.
-V Disable ‘Compress document data’ database property. (Use -C with -V to uncompress current document data)
-v Enable ‘Compress document data’ database property. (Use -C with -v to compress current document data)
-W nn Only compact databases which haven’t been compacted successfully in last nn days.
-w Exclude system databases (e.g. log.nsf, names.nsf).
-X nn Limit each database compaction to no more than nn minutes. (applies to in-place compaction only)
-x nn Limit total compaction time to no more than nn minutes.
-Y Recurse through subdirectories (default).
-y Do not recurse through subdirectories.
-ZU Enable ‘Use LZ1 compression for attachments’ database property. (Use -C with -ZU to compress existing attachments using LZ1.)
-0 Process NSFDB2 databases only. This will ignore NSF databases and is to be used with other switches.
-* Include *.ntf and *.box when processing a directory
-# nn Execute up to nn compactions in parallel using different threads.
-ODS Perform a copy-style compact only if the current ODS is less than desired default ODS.
A collection of Other Options and related information posted since 9.x.
-c -nifnsf on|off When set as on, stores view indexes separately from the NSF file to improve database performance. View indexes are moved to the location defined by the NIFBasePath setting in the NOTES.INI file. When set as off, moves views back into the database NSF file.
-REPLICA Creates a new replica in the background while compacting. The new replica is automatically renamed, and the source application remains accessible except during actual renaming and a final resync. Also applies any of the three optional parameters specified in this table. If the database is open or in use by local accessors <sic> at the time of the rename/resync, the rename/resync is deferred until the next time the database is opened.
Note that “Thibaud Maes” reported the following in the Knowledge Center in approximately September 2017:
One caveat regarding the -REPLICA option: It internally reorganizes the IDs in the new replica; thus, does not maintain NoteIDs (So compact -Replica will change original NoteID which Full Text Index is based on. So, full text index should be rebuilt after database running “compact – replica”, ex: have to use updall -X.
Otherwise, search result will be incorrect and list the new docs which occupying original NoteID.
-IDS_FULL Perform replication-style compaction only if a specified nn percentage of IDs in application has been reached.
Example: -IDS FULL 80 creates replica only after 80% of space for IDs in original application is full.
-REN_WAIT When performing replication-style compaction, attempts for nn minutes to rename the replica before the compact operation defers the rename until a restart or reopen of the database.
Example: -REN_WAIT 10 allows 10 minutes for compact process to complete replication and synchronization to attempt renaming.
-RESTART When performing replication-style compaction, if automatic renaming of replica does not succeed due to other accessors to the database, restarts the server and completes the renaming of the replica after server startup.
Daniel Nashed’s Blog also announced a new compact switch “-upgrade”.
-upgrade Upgrade databases created with older DB classes to the most recent class.
However, I haven’t had any luck running compact with -upgrade. To test, I submitted the following:
load compact -e -upgrade
The 9.0.1FP8 server interpreted the command as “Database compactor: Effective arguments: -C -ODS -Y
It also failed to find over 1000 ODS 43:0 (ODS6) databases while the CREATE_R9_DATABASES=1 is set, saying, “0 databases had an older NSF ODS version. 0 of those databases were successfully upgraded to a later NSF ODS.”
An example of one of the problem applications is creation-class “65296.”