The NexusDB NXRecover Tool
NXRecover is a commandline/gui tool that will run a recover table procedure for
the given table. It is a free tool and we very strongly advise to run this
procedure for every table on upgrading to new releases of NexusDB server.
Please download NXRecover 2.07 here.
While we're taking every care we can, bugs are natural and happen. Some of the bugs that
are fixed for every version of NexusDB can potentially have left some of your tables in
a fragile state that can lead to follow up problems even though the cause of the problem
is not present in the current version anymore.
A very good example of that is the infamous heap engine bug that plagued a small few of our customers and which has left some of their tables in a partly corrupted state without them noticing it:
All versions of NexusDB prior to 2.07 could cause under certain rare circumstances a subtle corruption in the management information in heap blocks. Heap blocks are used by both the blob engine and the variable length record engine. The initial corruption itself is not obvious as it doesn't directly cause any data corruption or error messages. But if the heap block is modified after the initial corruption in certain ways the corruption can escalate and result in actual data corruption and memory overwrites inside the server. The fixes in 2.07 can prevent this initial corruption, but not the escalation if the corruption is already present. Using EM to recover their tables (after applying the appropriate fixes to the code of course) solved all these problems.
To make this task easier we have created NXRecover which is included in source in every release from 2.07 onwards. On this site we also always link to the newest version of the tool which also includes a simple batch file that can be used to run the recovery process for every table of a certain directory.
How to use?
NXREcover is very simple to use. It takes one command line parameter being the name of the table. So you e.g. start it with:
NXRecover will upon start create a backup of your table and then run a recover process and replace the old table with the recovered one. After that it will add an entry to the nxRecover.log file and close.
You can of course run it from a batch file, the following is included in the binary downloads and runs NXRecover for all tables in the either the given directory (param %1) or the current director (if no param specified):
@echo off cls echo ---------------------------------- echo -- NexusDB Batch Table Recovery -- echo ---------------------------------- set dir=%1 if /%1 == / set dir=%CD% set /A count = 0 for %%i in (%dir%\*.nx1) do set /A count += 1 echo. echo Selected Directory: %dir% (%count% tables to recover) echo. for %%i in (%dir%\*.nx1) do ( echo Recovering %%i start /wait /min nxRecover.exe %%i) echo. echo. echo Recovery done. Please check log file. echo. pause