After you change an index configuration, or when you find that
an index is corrupt, you can rebuild the index. When you rebuild indexes,
you specify the base DN of the data to index, and either the list of indexes
to rebuild or --rebuildAll. You can rebuild indexes while
the server is offline, or while the server is online. If you rebuild the
index while the server is online, then you must schedule the rebuild process
as a task.
Example 8.4. Rebuild Index
The following example rebuilds the cn index
immediately with the server online.
$ rebuild-index --port 4444 --hostname opendj.example.com --bindDN "cn=Directory Manager" --bindPassword password --baseDN dc=example,dc=com --index cn --start 0 Rebuild Index task 20110607171639867 scheduled to start Jun 7, 2011 5:16:39 PM
Example 8.5. Rebuild Degraded Indexes
The following example rebuilds degraded indexes immediately with the server online.
$ rebuild-index --port 4444 --hostname opendj.example.com --bindDN "cn=Directory Manager" --bindPassword password --baseDN dc=example,dc=com --rebuildDegraded ... [31/Jan/2012:16:43:25 +0100] severity="NOTICE" msgCount=7 msgID=8847510 message="Due to changes in the configuration, index dc_example_dc_com_description is currently operating in a degraded state and must be rebuilt before it can be used" [31/Jan/2012:16:43:25 +0100] severity="NOTICE" msgCount=8 msgID=8847591 message="Rebuild of all degraded indexes started with 160 total entries to process" ... [31/Jan/2012:16:43:25 +0100] severity="NOTICE" msgCount=10 msgID=8847493 message="Rebuild complete. Processed 160 entries in 0 seconds (average rate 1860.5/sec)" ... Rebuild Index task 20120131164324838 has been successfully completed
Example 8.6. Clear New, Unused, "Degraded" Indexes
When you add a new attribute as described in Updating Directory Schema, and then create indexes for the new attribute, the new indexes appear as degraded, even though the attribute has not yet been used, and so indexes are sure to be empty, rather than degraded.
In this special case, you can safely use the
rebuild-index command
--clearDegradedState option to avoid having to scan
the entire directory backend to rebuild the new, unused index. This
is shown in the following example, where an index has just been created
for newUnusedAttribute.
$ dbtest list-index-status --backendID userRoot --baseDN dc=example,dc=com | grep newUnusedAttribute newUnusedAttribute.equality Index ...newUnusedAttribute.equality false... newUnusedAttribute.presence Index ...newUnusedAttribute.presence false... newUnusedAttribute.substring Index ...newUnusedAttribute.substring false... $ rebuild-index --port 4444 --hostname opendj.example.com --bindDN "cn=Directory Manager" --bindPassword password --baseDN dc=example,dc=com --clearDegradedState --index newUnusedAttribute --start 0 Rebuild Index task 20130211175925012 scheduled to start Feb 11, 2013 5:59:25 PM CET $ dbtest list-index-status --backendID userRoot --baseDN dc=example,dc=com | grep newUnusedAttribute newUnusedAttribute.equality Index ...newUnusedAttribute.equality true... newUnusedAttribute.presence Index ...newUnusedAttribute.presence true... newUnusedAttribute.substring Index ...newUnusedAttribute.substring true...
If the newly indexed attribute has already been used, rebuild indexes instead.

