Module org.firebirdsql.jaybird
Package org.firebirdsql.management

# Class FBNBackupManager

java.lang.Object
org.firebirdsql.management.FBServiceManager
org.firebirdsql.management.FBNBackupManager

All Implemented Interfaces:
  `AttachmentProperties`, `BaseProperties`, `ServiceConnectionProperties`, `NBackupManager`, `ServiceManager`

public class FBNBackupManager extends FBServiceManager implements NBackupManager
Implements the incremental backup and restore functionality of NBackup via the Firebird Services API.

Author:
  Thomas Steinmaurer, Mark Rotteveel

## Field Summary

### Fields inherited from class org.firebirdsql.management.FBServiceManager

`BUFFER_SIZE`

## Constructor Summary

Constructors
Constructor
Description
`FBNBackupManager()`
Create a new instance of `FBNBackupManager` based on the default GDSType.
`FBNBackupManager(String gdsType)`
Create a new instance of `FBNBackupManager` based on a given GDSType name.
`FBNBackupManager(GDSType gdsType)`
Create a new instance of `FBNBackupManager` based on a given GDSType.

## Method Summary

Modifier and Type
Method
Description
`void`
`addBackupFile(String backupFile)`
Add additional backup files.
`void`
`backupDatabase()`
Perform the backup operation.
`void`
`clearBackupFiles()`
Clear the information about backup files.
`void`
`fixupDatabase()`
Perform the nbackup fixup operation.
`void`
`restoreDatabase()`
Perform the restore operation.
`void`
`setBackupFile(String backupFile)`
Sets the location of the backup file.
`void`
`setBackupGuid(String guid)`
Sets the backup GUID (Firebird 4 and higher only).
`void`
`setBackupLevel(int backupLevel)`
Sets the backup level (0 = full, 1..n = incremental)
`void`
`setCleanHistory(boolean cleanHistory)`
Enables clean history on backup.
`void`
`setInPlaceRestore(boolean inPlaceRestore)`
Enables in-place restore.
`void`
`setKeepDays(int days)`
Sets the number of days of backup history to keep.
`void`
`setKeepRows(int rows)`
Sets the number of rows of backup history to keep (this includes the row created by the backup).
`void`
`setNoDBTriggers(boolean noDBTriggers)`
Sets the option no database triggers when connecting at backup or in-place restore.
`void`
`setPreserveSequence(boolean preserveSequence)`
Enables preserve sequence (for fixup or restore).

### Methods inherited from class org.firebirdsql.management.FBServiceManager

`attachDatabase, attachServiceManager, connectionPropertyValues, createRequestBuffer, executeServicesOperation, getAuthPlugins, getBooleanProperty, getCharSet, getDatabase, getDbCryptConfig, getExpectedDb, getHost, getIntProperty, getLogger, getPassword, getPort, getPortNumber, getProperty, getServerName, getServerVersion, getServiceName, getUser, getWireCrypt, getWireCryptAsEnum, isWireCompression, queueService, setAuthPlugins, setBooleanProperty, setCharSet, setDatabase, setDbCryptConfig, setExpectedDb, setHost, setIntProperty, setLogger, setPassword, setPort, setPortNumber, setProperty, setServerName, setServiceName, setType, setUser, setWireCompression, setWireCryptAsEnum`

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

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

### Methods inherited from interface org.firebirdsql.jaybird.props.AttachmentProperties

`getAuthPlugins, getCharSet, getConnectTimeout, getDbCryptConfig, getEnableProtocol, getEncoding, getParallelWorkers, getPassword, getPortNumber, getProcessId, getProcessName, getRoleName, getServerName, getSocketBufferSize, getSoTimeout, getType, getUser, getWireCrypt, isWireCompression, setAuthPlugins, setCharSet, setConnectTimeout, setDbCryptConfig, setEnableProtocol, setEncoding, setParallelWorkers, setPassword, setPortNumber, setProcessId, setProcessName, setRoleName, setServerName, setSocketBufferSize, setSoTimeout, setType, setUser, setWireCompression, setWireCrypt`

### Methods inherited from interface org.firebirdsql.jaybird.props.BaseProperties

`connectionPropertyValues, getBooleanProperty, getBooleanProperty, getIntProperty, getIntProperty, getProperty, getProperty, setBooleanProperty, setIntProperty, setProperty`

### Methods inherited from interface org.firebirdsql.management.NBackupManager

`setDatabase`

### Methods inherited from interface org.firebirdsql.jaybird.props.ServiceConnectionProperties

`getExpectedDb, getServiceName, setExpectedDb, setServiceName`

### Methods inherited from interface org.firebirdsql.management.ServiceManager

`getDatabase, getHost, getLogger, getPort, getServerVersion, getWireCryptAsEnum, setHost, setLogger, setPort, setWireCryptAsEnum`

## Constructor Details

### FBNBackupManager

public FBNBackupManager()
Create a new instance of `FBNBackupManager` based on the default GDSType.

### FBNBackupManager

public FBNBackupManager(String gdsType)
Create a new instance of `FBNBackupManager` based on a given GDSType name.

Parameters:
  `gdsType` - type must be PURE_JAVA, EMBEDDED, or NATIVE

### FBNBackupManager

public FBNBackupManager(GDSType gdsType)
Create a new instance of `FBNBackupManager` based on a given GDSType.

Parameters:
  `gdsType` - type must be PURE_JAVA, EMBEDDED, or NATIVE

## Method Details

### setBackupFile

public void setBackupFile(String backupFile)
Description copied from interface: `NBackupManager`
Sets the location of the backup file.

Warning: this method behaves identical to `NBackupManager.addBackupFile(String)`.

Specified by:
  `setBackupFile` in interface `NBackupManager`
Parameters:
  `backupFile` - the location of the backup file.

### addBackupFile

public void addBackupFile(String backupFile)
Description copied from interface: `NBackupManager`
Add additional backup files.

Specifying multiple backup files is only valid for restore, for backup only the first file is used.

Use `NBackupManager.clearBackupFiles()` to clear earlier backup files.

Specified by:
  `addBackupFile` in interface `NBackupManager`
Parameters:
  `backupFile` - the location of the backup file.

### clearBackupFiles

public void clearBackupFiles()
Description copied from interface: `NBackupManager`
Clear the information about backup files. This method undoes all parameters set in the `NBackupManager.addBackupFile(String)` method.

Specified by:
  `clearBackupFiles` in interface `NBackupManager`

### backupDatabase

public void backupDatabase() throws SQLException
Description copied from interface: `NBackupManager`
Perform the backup operation.

Specified by:
  `backupDatabase` in interface `NBackupManager`
Throws:
  `SQLException` - if a database error occurs during the backup

### restoreDatabase

public void restoreDatabase() throws SQLException
Description copied from interface: `NBackupManager`
Perform the restore operation.

Set `NBackupManager.setPreserveSequence(boolean)` to preserve the original database GUID and replication sequence.

Specified by:
  `restoreDatabase` in interface `NBackupManager`
Throws:
  `SQLException` - if a database error occurs during the restore
See Also:
  - `NBackupManager.restoreDatabase()`

### fixupDatabase

public void fixupDatabase() throws SQLException
Description copied from interface: `NBackupManager`
Perform the nbackup fixup operation.

A fixup will switch a locked database to 'normal' state without merging the delta, so this is a potentially destructive action. The normal use-case of this option is to unlock a copy of a database file where the source database file was locked with `nbackup -L` or `ALTER DATABASE BEGIN BACKUP`.

Set `NBackupManager.setPreserveSequence(boolean)` to preserve the original database GUID and replication sequence.

Specified by:
  `fixupDatabase` in interface `NBackupManager`
Throws:
  `SQLException` - if a database error occurs during the fixup

### setBackupLevel

public void setBackupLevel(int backupLevel)
Description copied from interface: `NBackupManager`
Sets the backup level (0 = full, 1..n = incremental)

Specified by:
  `setBackupLevel` in interface `NBackupManager`
Parameters:
  `backupLevel` - backup level (e.g. 0 = full backup, 1 = level 1 incremental backup based on level 0 backup

### setBackupGuid

public void setBackupGuid(String guid)
Description copied from interface: `NBackupManager`
Sets the backup GUID (Firebird 4 and higher only).

The backup GUID is the GUID of a previous backup of the (source) database. This is used by Firebird to backup the pages modified since that backup.

This setting is mutually exclusive with `NBackupManager.setBackupLevel(int)`, but this is only checked server-side.

Specified by:
  `setBackupGuid` in interface `NBackupManager`
Parameters:
  `guid` - A GUID string of a previous backup, enclosed in braces.

### setNoDBTriggers

public void setNoDBTriggers(boolean noDBTriggers)
Description copied from interface: `NBackupManager`
Sets the option no database triggers when connecting at backup or in-place restore.

Specified by:
  `setNoDBTriggers` in interface `NBackupManager`
Parameters:
  `noDBTriggers` - `true` disable db triggers during backup or in-place restore.

### setInPlaceRestore

public void setInPlaceRestore(boolean inPlaceRestore)
Description copied from interface: `NBackupManager`
Enables in-place restore.

Specified by:
  `setInPlaceRestore` in interface `NBackupManager`
Parameters:
  `inPlaceRestore` - `true` to enable in-place restore

### setPreserveSequence

public void setPreserveSequence(boolean preserveSequence)
Description copied from interface: `NBackupManager`
Enables preserve sequence (for fixup or restore).

This preserves the existing GUID and replication sequence of the original database (they are reset otherwise).

Specified by:
  `setPreserveSequence` in interface `NBackupManager`
Parameters:
  `preserveSequence` - `true` to enable preserve sequence

### setCleanHistory

public void setCleanHistory(boolean cleanHistory)
Description copied from interface: `NBackupManager`
Enables clean history on backup.

The backup will fail if `NBackupManager.setKeepDays(int)` or `NBackupManager.setKeepRows(int)` has not been called.

Specified by:
  `setCleanHistory` in interface `NBackupManager`
Parameters:
  `cleanHistory` - `true` to enable clean history

### setKeepDays

public void setKeepDays(int days)
Description copied from interface: `NBackupManager`
Sets the number of days of backup history to keep.

Server-side, this option is mutually exclusive with `NBackupManager.setKeepRows(int)`, this is not enforced by the Java code.

This option only has effect when `setCleanHistory(true)` has been called.

Specified by:
  `setKeepDays` in interface `NBackupManager`
Parameters:
  `days` - number of days to keep history when cleaning, or `-1` to clear current value
See Also:
  - `NBackupManager.setCleanHistory(boolean)`
  - `NBackupManager.setKeepRows(int)`

### setKeepRows

public void setKeepRows(int rows)
Description copied from interface: `NBackupManager`
Sets the number of rows of backup history to keep (this includes the row created by the backup).

Server-side, this option is mutually exclusive with `NBackupManager.setKeepDays(int)`, this is not enforced by the Java code.

This option only has effect when `setCleanHistory(true)` has been called.

Specified by:
  `setKeepRows` in interface `NBackupManager`
Parameters:
  `rows` - number of rows to keep history when cleaning, or `-1` to clear current value
See Also:
  - `NBackupManager.setCleanHistory(boolean)`
  - `NBackupManager.setKeepDays(int)`