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, getSocketFactory, getSoTimeout, getType, getUser, getWireCrypt, isWireCompression, setAuthPlugins, setCharSet, setConnectTimeout, setDbCryptConfig, setEnableProtocol, setEncoding, setParallelWorkers, setPassword, setPortNumber, setProcessId, setProcessName, setRoleName, setServerName, setSocketBufferSize, setSocketFactory, 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)`