OpenNTF.org - DominoDefrag

My Links (Not logged in)
User Name Password
Rate This Project
5 - brilliant stuff
4 - very nice
3 - average
2 - needs work
1 - bad
Advert: Your ad here

Hosted by Prominic.NET

   Project: DominoDefrag (Managed by Andrew Luder)
Actions:

Project Overview

Introduction
Categories
Defrag Lotus Domino databases and their associated full text indexes, transaction logs and DAOS files using the DominoDefrag server task (calls contig.exe).
Rating:
Rating: 5 , Number of votes: 6 
Project Category:
Admin Utilities, Server Add-in 
Target Release:
R 5.x, R 6.0.x, R 6.5.x, R 6.x, R 7.0.x, R 8.0.x, R 8.5.1+, R 8.5.x 
Primary Contact:
Andrew Luder 
Team
Releases (last 3)
Chef(s):
Andrew Luder
12/03/2009 - DominoDefrag (2.1)
12/01/2009 - DominoDefrag (2.0)
11/11/2009 - DominoDefrag (1.9)

Total downloads (all releases): 1243

Details
Overview
••••••••••••
In early 2009 I was trialling one of the free Windows Sysinternals tools called "contig.exe" (v1.55) on my home Windows 2003 Domino server to see if I could defragment my NSFs while the Domino server was running and it worked fine.

I have since incorporated it with a C++ Lotus Domino server task I developed called DominoDefrag using Visual Studio 2005/2008 and together they've defragged successfully on the R5x (NT4 and Windows 2000), R6x-R7x-R8x (Windows 2003), and R85x (Windows 2008) Domino servers trialled on.

It has grown to defrag a full-text index associated with a Notes database and can now also defrag a Domino server’s transaction log and DAOS files.

The output is recorded to the Domino server console and miscellaneous events log. The first couple of figures in the "DominoDefrag v2.1 Feature Screen Shots" PDF shows an example of the Domino server console output and summary e-mail resulting from use of the command "load DominoDefrag mail".

Important Notice for 32bit DominoDefrag
•••••••••••••••••••••••••••••••••••••••••••••••••••••••
Starting with version 2.0 the 32bit compiled code now uses "lcppn80.dll" rather than "lcppn30i.dll", because DBCOMPACT definitions are contained within the header file “nsfdb.h” associated with the Lotus C++ API Toolkit for Notes/Domino 8.0 toolkit. See Annex A in the Release Notes on how to get the new "lcppn80.dll" file.

Important Notice for version 2.2
••••••••••••••••••••••••••••••••••••••••••
Will not be released till after Lotusphere 2010

Files
••••••
The DominoDefrag 32bit server task requires the following files installed in the Domino program directory on a Windows 2000/2003/2008 32 bit server:

contig.exe <<<<<<<<<<<< (see Mark Russinovich web reference below to download)
lcppn80.dll <<<<<<<<<< (provided in Lotus C++ API Toolkit for Notes/Domino 8.0 Windows English (C99N6EN.zip) )
DominoDefrag.exe <<<<<< (3-12-2009 13:45) <<< 32 bit version

The DominoDefrag 64bit server task requires the following files installed in the Domino program directory on a Windows 2003/2008 64bit server:

contig.exe <<<<<<<<<<<< (see Mark Russinovich web reference below to download)
lcppn801.dll <<<<<<<<<< (provided in Lotus C++ API Toolkit for Notes/Domino 8.0.1 for Windows 64 Bit (C19PBEN.zip) )
DominoDefrag.exe <<<<<< (3-12-2009 13:45) <<< 64 bit version

Run Information
••••••••••••••••••••••
The DominoDefrag server task can be run from the Domino server console, a program document, or the Notes INI servertask line

Domino server Notes INI parameters are:

DominoDefrag_Directory= <<<<< Defaults to root data directory if not specified
DominoDefrag_Directory=mail <<<<< same as c:\lotus\domino\data\mail<<<<< exits if not found
DominoDefrag_Directory=names.nsf <<<<< same as c:\lotus\domino\data\names.nsf <<<<< exits if not found
DominoDefrag_MinuteInterval=60 <<<<< Server task will run once if 0 or not specified
DominoDefrag_FTIndex=1 <<<<< Will defrag associated full text index folder's file(s). Will default to 0 (off) if not specified
DominoDefrag_StartPoint=10 <<<<< specifies the average number of fragments required before a database or full-text index is defragged. Will default to 2 if not specified
DominoDefrag_VerboseLogging=1 <<<<< controls amount of server console information. Will default to 0 (off) if not specified
DominoDefrag_Compact=1 <<<<< allows in-place style compact before defrag. Will default to 0 (off) if not specified
DominoDefrag_SummaryEmailAddress= <<<<< sends summary e-mail for server to specified address. Will not send email if not specified
DominoDefrag_TransactionLog=1 <<<<< Will defrag transaction log files under the Notes INI "TRANSLOG_Path" directory value. Will default to 0 (off) if not specified
DominoDefrag_DAOS=1 <<<<< Will defrag DAOS files under the Notes INI "DAOSBasePath" directory value. Will default to 0 (off) if not specified

Server task parameter is:

DominoDefrag.exe <DominoDefrag_Directory> <<<<< Overrides Notes INI equivalent

Changes version 2.1
••••••••••••••••••••••••••••
• Fixed serious bug "is not recognized as an internal or external command" when “contig.exe” has spaces in its file path (thanks DL)

Changes version 2.0
••••••••••••••••••••••••••••
• DominoDefrag_DAOS Notes INI parameter allows defragging of files defined by the Notes INI "DAOSBasePath" directory value
• Compiled 32bit code now uses "lcppn80.dll" rather than "lcppn30i.dll" because DBCOMPACT definitions contained in header file “nsfdb.h” with associated 8.0 toolkit
• Fixed bug to stop transaction log processing when Notes INI "TRANSLOG_Path" value not specified
• Fixed bug where didn't defrag full-text index for ".box" file
• Fixed bug where Compact summary information was shown when DominoDefrag_Compact=0 (turned off)
• Fixed bug where was reporting DominoDefrag_MinuteInterval not found when it was specified

Changes version 1.9
••••••••••••••••••••••••••••
• Fixed bug NOSS-7XFBPW by changing compact style to -b when Transactional logging is enabled
• Changed compact style from copy (-c) to full recovery in-place (-B) to reduce fragmentation
• DominoDefrag_TransactionLog Notes INI parameter allows defragging of files defined by the Notes INI "TRANSLOG_Path" directory value

Changes version 1.8
••••••••••••••••••••••••••••
• DominoDefrag_SummaryEmailAddress Notes INI parameter sends summary e-mail for server
• Included summary information for not enough disk space for full-text indexes
• Included summary information for partial defrag of databases and full-text indexes
• Changed contig.exe call execution to not use cmd.exe
• Fixed bug where not reporting platform 32/64bit version correctly

Changes version 1.7
••••••••••••••••••••••••••••
• Fixed bug "problem executing command" when using the Lotus Domino Console (-jc) with R7x and R8x
• Replaced "DominoDefrag.log" file and system() function with _popen() function
• Report Domino server version

Changes version 1.6
••••••••••••••••••••••••••••
• DominoDefrag_Compact Notes INI parameter allows copy style compact before defrag
• Fixed bug which stops Appcrash STATUS_HEAP_CORRUPTION (0xC0000374) from occurring on Windows 2008 64bit version
• Fixed bug which stops access violation reading error from occurring on Windows 2003 64bit version
• Fixed bug where DominoDefrag_StartPoint not rounding up the average number of fragments for full-text index to a whole number
• Provides summary information to server console for not enough disk space
• Fixed bug where didn't recognise ".box" file as database

Changes version 1.5
••••••••••••••••••••••••••••
• Supports Folder and Database Links
• DominoDefrag_StartPoint Notes INI parameter specifies the average number of fragments required before a database or full-text index is defragged
• DominoDefrag_VerboseLogging Notes INI parameter controls amount of server console information
• Provides summary information to server console when completed defragging
• Redirects DominoDefrag.log file to server's %TEMP% directory
• Fixed bug where not terminating session cleanly in Windows 2008 causing a debug dialog box
• Fixed bug where didn't recognise ".ns•" file as database

Changes version 1.4
••••••••••••••••••••••••••••
• Supports Windows 64bit platforms (2003 and 2008)
• Reports DominoDefrag and platform 32/64bit version to server console
• Fixed bug where didn't display short path on "show tasks" processing full text index folder

Changes version 1.3
••••••••••••••••••••••••••••
• DominoDefrag_FTIndex Notes INI parameter allows defragmentation of associated Full Text Index
• Fixed bug where didn't display where defragging on "show tasks" server console command

Changes version 1.2
••••••••••••••••••••••••••••
• DominoDefrag_Directory parameter supports file name or directory path
• DominoDefrag_Directory parameter supports short path (e.g. just use names.nsf or mail)
• DominoDefrag_Directory parameter behaviour changed to exit when can't find file or folder
• Reports Windows and Contig.exe versions
• Fixed bug where not reporting file already defragmented using contig.exe v1.55
• Fixed bug where not reporting not enough disk space to defrag file
• Fixed bug where /accepteula flag not valid for versions of contig.exe < 1.55

Changes version 1.1
••••••••••••••••••••••••••••
• Supports NT4 and versions of contig.exe < 1.55
• Reports to server console when already defragmented
• Fixed bug where contig.exe would not process file name with spaces

To Work with 64bit
•••••••••••••••••••••••••
• Compile with Visual Studio 2008 with x64 compiler support

To work with NT4
•••••••••••••••••••••••
• Compile with Visual Studio 2005
• Use contig.exe version < 1.55

Other Related Information
•••••••••••••••••••••••••••••••••••
• Contig.exe (v1.55) By Mark Russinovich - http://technet.microsoft.com/en-us/sysinternals/bb897428.aspx

• Lotus C++ API toolkits - http://www.ibm.com/developerworks/lotus/downloads/toolkits.html

• IBM technote 1229817 - "Slow response from a Domino server due to fragmentation of the data drive" - http://www-01.ibm.com/support/docview.wss?rs=899&uid=swg21229817

• Lotus Notes and Domino wiki article - "IBM Lotus Domino Server performance: Hard disk fragmentation" - http://www-10.lotus.com/ldd/dominowiki.nsf/dx/01152009062114PMWEBVDT.htm

• Greyhawk's Meanderings Blog - "The great defrag debate. Defrag Domino or No" -
http://www.greyhawk68.com/greyhawk68/home.nsf/d6plinks/JROG-7F8TZS

• The Weird World of Eknori - "Database Defragmentation - Poor Man’s Solution" - http://www.eknori.de/2008-11-29/database-defragmentation-poor-mans-solution/

• Visual Studio 2008 C++ Express Edition - see http://www.microsoft.com/express/download/

Usage and Copyright Disclaimer
•••••••••••••••••••••••••••••••••••••••••••••
This program is free software: you can redistribute it and/or modify it under the terms
of the GNU Affero General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Please read more about the details of the GNU Affero General Public License @ http://www.gnu.org/licenses/.

Copyright (c) 3 December 2009
Andrew Luder



Latest activity

Screenshots
Documentation
12/03/2009 - DominoDefrag v2.1 Feature Screen Shots
12/01/2009 - DominoDefrag Visual Studio 2008 64bit Setup
12/01/2009 - DominoDefrag Visual Studio C++ 2008 Express Edition 32bit Setup
12/01/2009 - DominoDefrag Visual Studio 2005 32bit Setup

Feature Requests
Bugs
02/06/2010 - Give control over compact options when running compact before defrag
02/05/2010 - INI parameter to change FROM value
02/05/2010 - Report e-mail won't sync to BlackBerry as it has no PostedDate field

From the Project discussion
Testimonials
02/09/2010 - Exception Thrown (DominoDefrag)
02/08/2010 - Confirmation of Diagnostic
02/06/2010 - Quick Additional Note
02/05/2010 - Not a bad idea - can you please add as a request
02/05/2010 - Compact Options
01/30/2010 - Install VS your workstation
01/29/2010 - Happens when structural changes are required

Project News
01/11/2010 - DominoDefrag comprehensive presentation by Spanish Lotus User Group (ESLUG). Over a period of 7 months ESLUG blogger Albert Buendia road tested DominoDefrag (versions 1.4-2.1) and presents his findings in PDF files @ English version -> http://www.sl (DominoDefrag)
12/12/2009 - In the "DominoDefrag v2.1.zip" distribution file have replaced the "DominoDefrag v2.1 Release Notes.pdf" file with the following minor admendments: * Fixed "contig.exe" URL source references on page 3 * Changed "DominoDefrag v2.0.zip" references to (DominoDefrag)
04/12/2009 - New Project Announcement! (DominoDefrag)


Check out other projects
Switch to project: