Active Directory automatically performs online defragmentation of the database at certain intervals as part of the Garbage Collection process. (By default, this occurs every 12 hours.) Online defragmentation does not reduce the size of the database file (Ntds.dit) but instead optimizes data storage in the database and reclaims space in the directory for new objects.
Performing an offline defragmentation creates a new version of the database file without internal fragmentation. It also re-creates all indexes. Depending on how fragmented the original database file was, the new file may be much smaller.
To perform offline defragmentation of the Active Directory database:
Back up Active Directory. Windows Server Backup natively supports backing up Active Directory while online. This occurs automatically when you select the option to back up everything on the computer in the Backup Wizard, or independently by selecting to back up the "System State" in the wizard.
For Windows 2000 Server and Windows Server 2003 Restart the domain controller, select the appropriate installation from the boot menu, and then press F8 to display the Windows 2000 Server Advanced Options menu. Select Directory Services Restore Mode, and then press Enter. Press Enter again to restart.
For Windows Server 2008 and later versions Take one of the following actions:
Stop the "Active Directory Domain Services" or LDS instance.
Start "msconfig," and go to the boot pane. Select the OS installation that you want to configure. Select Safe Boot in the Boot options section, and also select the Active Directory repair item. After you click OK, the tool asks you to restart. Restart the computer.
Log on to the administrator account by using the password that is defined for the local administrator account in the Directory Service Restore Mode SAM. For more information about how to use the offline SAM database, click the following article number to view the article in the Microsoft Knowledge Base:
223301 Protection of the administrator account in the offline SAM
Click Start, point to Programs, point to Accessories, and then click Command Prompt.
At the command prompt, type cmd, and then press Enter.
NTDSUTIL uses the TEMP and TMP environment variables to create a temporary database during defragmentation. If the free space on your standard volume used is less than the size of the compacted database, you receive the following error:
..........................Operation terminated with error -1808( JET_errDiskFull, No space left on disk ).
In the Application log, you see an event that resembles the following:
Log Name: Application Source: ESENT Event ID: 482 Task Category: General Level: Error Keywords: Classic Description:NTDS (12852) An attempt to write to the file "C:\Users\administrator\AppData\Local\Temp\tmp.edb" at offset 49315536896 (0x0000000b7b6f6000) for 0 (0x00000000) bytes failed after 0.015 seconds with system error 112 (0x00000070): "There is not enough space on the disk. ". The write operation will fail with error -1808 (0xfffff8f0). If this error persists then the file may be damaged and may need to be restored from a previous backup.
In this case, set the environment variables TMP and TEMP to a volume that has enough free space for the task. For example, use the following settings:
Note This problem can also occur during an integrity check of the database.
For Windows 2008 and later versions Type activate instance ntds to select the Active Directory database instance. Use the LDS instance name if you want to compact an LDS database.
Type files, and then press Enter.
Type info, and then press Enter. This displays current information about the path and size of the Active Directory database and its log files. Note the path.
Establish a location that has sufficient drive space for the compacted database to be stored.
Type compact to drive:\directory, and then press Enter. Note, in this command, the placeholders drive and directory represent the path of the location that you established in the previous step.
Note You must specify a directory path. If the path contains any spaces, the whole path must be enclosed in quotation marks. For example, type:
compact to "c:\new folder"
A new database that is named Ntds.dit or AdamNtds.dit is created in the path that you specified.
Type quit, and then press Enter. Type quit again to return to the command prompt.
If defragmentation succeeds without errors, follow the Ntdsutil.exe on-screen instructions. Delete all the log files in the log directory by typing the following command:
del drive :\ pathToLogFiles \*.log
Copy the new Ntds.dit or AdamNtds.dit file over the old database file in the current database path that you noted in step 5.
Note You do not have delete the Edb.chk file.
For Windows 2000 Server and Windows Server 2003 Restart the computer.
For Windows Server 2008 and later versions If you stopped Active Directory Domain Services or LDS instance, you can restart it now.
For Windows Server 2008 and later versions If you are working in the Active Directory Restore mode, start msconfig and go to the boot pane. Select the operating system installation that you want to configure. Click to clear Safe Boot in the Boot options section. When you click OK, the tool asks you to restart. Restart the computer.