org.h2.tools

## Class Recover

- java.lang.Object
- - org.h2.util.Tool
  - - org.h2.tools.Recover

All Implemented Interfaces:
  DataHandler

    public class Recover
    extends Tool
    implements DataHandler

Helps recovering a corrupted database.

### Field Summary

### Fields inherited from class org.h2.util.Tool

`out`

### Constructor Summary

Constructors
Constructor and Description
`Recover()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `checkPowerOff()` INTERNAL
`void` `checkWritingAllowed()` INTERNAL
`static void` `execute(java.lang.String dir, java.lang.String db)` Dumps the contents of a database to a SQL script file.
`CompareMode` `getCompareMode()` Return compare mode.
`java.lang.String` `getDatabasePath()` INTERNAL
`SmallLRUCache<java.lang.String,java.lang.String[]>` `getLobFileListCache()` INTERNAL
`LobStorageInterface` `getLobStorage()` INTERNAL
`java.lang.Object` `getLobSyncObject()` INTERNAL
`int` `getMaxLengthInplaceLob()` INTERNAL
`TempFileDeleter` `getTempFileDeleter()` INTERNAL
`static void` `main(java.lang.String... args)` Options are case sensitive.
`FileStore` `openFile(java.lang.String name, java.lang.String mode, boolean mustExist)` INTERNAL
`static java.io.InputStream` `readBlobMap(java.sql.Connection conn, long lobId, long precision)` INTERNAL
`static java.io.Reader` `readClobMap(java.sql.Connection conn, long lobId, long precision)` INTERNAL
`int` `readLob(long lobId, byte[] hmac, long offset, byte[] buff, int off, int length)` INTERNAL
`void` `runTool(java.lang.String... args)` Dumps the contents of a database file to a human readable text file.

### Methods inherited from class org.h2.util.Tool

`isOption, printNoDatabaseFilesFound, setOut, showUsage, showUsageAndThrowUnsupportedOption, throwUnsupportedOption`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Recover

    public Recover()

### Method Detail

#### main

    public static void main(java.lang.String... args)
                     throws java.sql.SQLException

Options are case sensitive.

Supported options
[-help] or [-?] | Print the list of options
[-dir <dir>] | The directory (default: .)
[-db <database>] | The database name (all databases if not set)
[-trace] | Print additional trace information
[-transactionLog] | Print the transaction log

Encrypted databases need to be decrypted first.

Parameters:
  `args` - the command line arguments
Throws:
  `java.sql.SQLException` - on failure

#### runTool

    public void runTool(java.lang.String... args)
                 throws java.sql.SQLException

Dumps the contents of a database file to a human readable text file. This text file can be used to recover most of the data. This tool does not open the database and can be used even if the database files are corrupted. A database can get corrupted if there is a bug in the database engine or file system software, or if an application writes into the database file that doesn't understand the file format, or if there is a hardware problem.

Specified by:
  `runTool` in class `Tool`
Parameters:
  `args` - the command line arguments
Throws:
  `java.sql.SQLException` - on failure

#### readBlobMap

    public static java.io.InputStream readBlobMap(java.sql.Connection conn,
                                                  long lobId,
                                                  long precision)
                                           throws java.sql.SQLException

INTERNAL

Parameters:
  `conn` - to use
  `lobId` - id of the LOB stream
  `precision` - not used
Returns:
  InputStream to read LOB content from
Throws:
  `java.sql.SQLException` - on failure

#### readClobMap

    public static java.io.Reader readClobMap(java.sql.Connection conn,
                                             long lobId,
                                             long precision)
                                      throws java.lang.Exception

INTERNAL

Parameters:
  `conn` - to use
  `lobId` - id of the LOB stream
  `precision` - not used
Returns:
  Reader to read LOB content from
Throws:
  `java.sql.SQLException` - on failure
  `java.lang.Exception`

#### execute

    public static void execute(java.lang.String dir,
                               java.lang.String db)
                        throws java.sql.SQLException

Dumps the contents of a database to a SQL script file.

Parameters:
  `dir` - the directory
  `db` - the database name (null for all databases)
Throws:
  `java.sql.SQLException` - on failure

#### getDatabasePath

    public java.lang.String getDatabasePath()

INTERNAL

Specified by:
  `getDatabasePath` in interface `DataHandler`
Returns:
  the database path

#### openFile

    public FileStore openFile(java.lang.String name,
                              java.lang.String mode,
                              boolean mustExist)

INTERNAL

Specified by:
  `openFile` in interface `DataHandler`
Parameters:
  `name` - the file name
  `mode` - the mode
  `mustExist` - whether the file must already exist
Returns:
  the file

#### checkPowerOff

    public void checkPowerOff()

INTERNAL

Specified by:
  `checkPowerOff` in interface `DataHandler`

#### checkWritingAllowed

    public void checkWritingAllowed()

INTERNAL

Specified by:
  `checkWritingAllowed` in interface `DataHandler`

#### getMaxLengthInplaceLob

    public int getMaxLengthInplaceLob()

INTERNAL

Specified by:
  `getMaxLengthInplaceLob` in interface `DataHandler`
Returns:
  the maximum size

#### getLobSyncObject

    public java.lang.Object getLobSyncObject()

INTERNAL

Specified by:
  `getLobSyncObject` in interface `DataHandler`
Returns:
  the synchronization object

#### getLobFileListCache

    public SmallLRUCache<java.lang.String,java.lang.String[]> getLobFileListCache()

INTERNAL

Specified by:
  `getLobFileListCache` in interface `DataHandler`
Returns:
  the cache or null

#### getTempFileDeleter

    public TempFileDeleter getTempFileDeleter()

INTERNAL

Specified by:
  `getTempFileDeleter` in interface `DataHandler`
Returns:
  the temp file deleter

#### getLobStorage

    public LobStorageInterface getLobStorage()

INTERNAL

Specified by:
  `getLobStorage` in interface `DataHandler`
Returns:
  the lob storage mechanism

#### readLob

    public int readLob(long lobId,
                       byte[] hmac,
                       long offset,
                       byte[] buff,
                       int off,
                       int length)

INTERNAL

Specified by:
  `readLob` in interface `DataHandler`
Parameters:
  `lobId` - the lob id
  `hmac` - the message authentication code
  `offset` - the offset within the lob
  `buff` - the target buffer
  `off` - the offset within the target buffer
  `length` - the number of bytes to read
Returns:
  the number of bytes read

#### getCompareMode

    public CompareMode getCompareMode()

Description copied from interface: `DataHandler`
Return compare mode.

Specified by:
  `getCompareMode` in interface `DataHandler`
Returns:
  Compare mode.