FirebirdSQL logo

ALTER DATABASE

Verwendet für

Ändern der Dateiorganisation einer Datenbank, Umschalten ihres "kopiersicheren" Zustands, Verwalten der Verschlüsselung und anderer datenbankweiter Konfigurationen

Verfügbar in

DSQL, ESQL — eingeschränkter Funktionsumfang

Syntax
ALTER {DATABASE | SCHEMA} <alter_db_option> [<alter_db_option> ...]

<alter_db_option> :==
    <add_sec_clause>
  | {ADD DIFFERENCE FILE 'diff_file' | DROP DIFFERENCE FILE}
  | {BEGIN | END} BACKUP
  | SET DEFAULT CHARACTER SET charset
  | {ENCRYPT WITH plugin_name [KEY key_name] | DECRYPT}
  | SET LINGER TO linger_duration
  | DROP LINGER
  | SET DEFAULT SQL SECURITY {INVOKER | DEFINER}
  | {ENABLE | DISABLE} PUBLICATION
  | INCLUDE <pub_table_filter> TO PUBLICATION
  | EXCLUDE <pub_table_filter> FROM PUBLICATION

<add_sec_clause> ::= ADD <sec_file> [<sec_file> ...]

<sec_file> ::=
  FILE 'filepath'
  [STARTING [AT [PAGE]] pagenum]
  [LENGTH [=] num [PAGE[S]]

<pub_table_filter> ::=
    ALL
  | TABLE table_name [, table_name ...]
Note

Mehrere Dateien können in einer ADD-Klausel hinzugefügt werden:

ALTER DATABASE
  ADD FILE x LENGTH 8000
    FILE y LENGTH 8000
    FILE z

Mehrfaches Vorkommen von add_sec_clause (ADD FILE-Klauseln) ist erlaubt;eine ADD FILE-Klausel, die mehrere Dateien hinzufügt (wie im obigen Beispiel), kann mit anderen gemischt werden, die nur eine Datei hinzufügen.Die Anweisung wurde in der alten InterBase 6 Language Reference falsch dokumentiert.

Table 1. ALTER DATABASE-Anweisungsparameter
Parameter Beschreibung

add_sec_clause

Hinzufügen einer sekundären Datenbankdatei

sec_file

Dateispezifikation für Sekundärdatei

filepath

Vollständiger Pfad und Dateiname der Deltadatei oder sekundären Datenbankdatei

pagenum

Seitennummer, ab der die sekundäre Datenbankdatei beginnen soll

num

Maximale Größe der Sekundärdatei in Seiten

diff_file

Dateipfad und Name der .delta-Datei (Differenzdatei)

charset

Neuer Standardzeichensatz der Datenbank

linger_duration

Dauer der linger Verzögerung in Sekunden;muss größer oder gleich 0 (null) sein

plugin_name

Der Name des Verschlüsselungs-Plugins

key_name

Der Name des Verschlüsselungsschlüssels

pub_table_filter

Filter of tables to include to or exclude from publication

table_name

Name (identifier) of a table

Die ALTER DATABASE-Anweisung kann:

  • Sekundärdateien zu einer Datenbank hinzufügen

  • Umschalten einer Einzeldatei-Datenbank in den “copy-safe”-Modus (nur DSQL)

  • Pfad und Name der Delta-Datei für physische Backups setzen oder aufheben (nur DSQL)

Note

SCHEMA ist derzeit ein Synonym für DATABASE;dies kann sich in einer zukünftigen Version ändern, daher empfehlen wir immer DATABASE zu verwenden

Wer kann die Datenbank ändern?

Die ALTER DATABASE-Anweisung kann ausgeführt werden durch:

docnext count = 5

Paramter für ALTER DATABASE

ADD (FILE)

Fügt der Datenbank sekundäre Dateien hinzu.Es ist notwendig, den vollständigen Pfad zur Datei und den Namen der Sekundärdatei anzugeben.Die Beschreibung für die Sekundärdatei ähnelt der für die Anweisung CREATE DATABASE.

ADD DIFFERENCE FILE

Gibt den Pfad und den Namen der Delta-Datei an, die alle Mutationen in der Datenbank speichert, wenn sie in den "kopiersicheren" Modus geschaltet wird.Diese Klausel fügt tatsächlich keine Datei hinzu.Es überschreibt nur den Standardnamen und -pfad der .delta-Datei.Um die bestehenden Einstellungen zu ändern, sollten Sie die zuvor angegebene Beschreibung der .delta-Datei mit der DROP DIFFERENCE FILE-Klausel löschen, bevor Sie die neue Beschreibung der Delta-Datei angeben.Wenn Pfad und Name der .delta-Datei nicht überschrieben werden, hat die Datei denselben Pfad und Namen wie die Datenbank, jedoch mit der Dateierweiterung .delta.

Caution

Wird nur ein Dateiname angegeben, wird die .delta-Datei im aktuellen Verzeichnis des Servers erstellt.Unter Windows ist dies das Systemverzeichnis – ein sehr unkluger Ort, um flüchtige Benutzerdateien zu speichern und im Gegensatz zu den Windows-Dateisystemregeln.

DROP DIFFERENCE FILE

Löscht die Beschreibung (Pfad und Name) der .delta-Datei, die zuvor in der Klausel ADD DIFFERENCE FILE angegeben wurde.Die Datei wird nicht wirklich gelöscht.DROP DIFFERENCE FILE löscht den Pfad und den Namen der .delta-Datei aus dem Datenbank-Header.Wenn die Datenbank das nächste Mal in den “copy-safe”-Modus geschaltet wird, werden die Standardwerte verwendet (d. h. der gleiche Pfad und Name wie die der Datenbank, aber mit der Erweiterung .delta).

BEGIN BACKUP

Schaltet die Datenbank in den “kopiersicher” Modus. ALTER DATABASE mit dieser Klausel friert die Hauptdatenbankdatei ein, sodass sie mit Dateisystemtools sicher gesichert werden kann, selbst wenn Benutzer verbunden sind und Operationen mit Daten ausführen.Bis der Sicherungsstatus der Datenbank auf NORMAL zurückgesetzt wird, werden alle an der Datenbank vorgenommenen Änderungen in die .delta (Differenz)-Datei geschrieben.

Important

Trotz ihrer Syntax startet eine Anweisung mit der BEGIN BACKUP-Klausel keinen Backup-Prozess, sondern schafft lediglich die Bedingungen für die Ausführung einer Aufgabe, die erfordert, dass die Datenbankdatei temporär schreibgeschützt ist.

END BACKUP

Schaltet die Datenbank vom “kopiersicheren” Modus in den normalen Modus um.Eine Anweisung mit dieser Klausel führt die .delta-Datei mit der Hauptdatenbankdatei zusammen und stellt den normalen Betrieb der Datenbank wieder her.Nach dem Start des Prozesses END BACKUP sind die Voraussetzungen für die Erstellung sicherer Backups mittels Dateisystemtools nicht mehr gegeben.

Warning

Die Verwendung von BEGIN BACKUP und END BACKUP und das Kopieren der Datenbankdateien mit Dateisystemtools ist bei Mehrdateidatenbanken nicht sicher!Verwenden Sie diese Methode nur für Datenbanken mit einer einzigen Datei.

Eine sichere Sicherung mit dem Dienstprogramm gbak ist jederzeit möglich, es wird jedoch nicht empfohlen, gbak auszuführen, während sich die Datenbank im Status LOCKED oder MERGE befindet.

SET DEFAULT CHARACTER SET

Ändert den Standardzeichensatz der Datenbank.Diese Änderung wirkt sich nicht auf vorhandene Daten oder Spalten aus.Der neue Standardzeichensatz wird nur in nachfolgenden DDL-Befehlen verwendet.

ENCRYPT WITH

Siehe auch Verschlüsselung einer Datenbank im Sicherheitskapitel.

DECRYPT

Siehe auch Entschlüsselung einer Datenbank im Sicherheitskapitel.

SET LINGER TO

Setzt die linger-Verzögerung.Die linger-Verzögerung gilt nur für Firebird SuperServer und gibt an, wie viele Sekunden der Server eine Datenbankdatei (und ihre Caches) geöffnet hält, nachdem die letzte Verbindung zu dieser Datenbank geschlossen wurde.Dies kann dazu beitragen, die Leistung kostengünstig zu verbessern, wenn die Datenbank häufig geöffnet und geschlossen wird, indem Ressourcen für die nächste Verbindung "warm" gehalten werden.

Note

Dieser Modus kann für Webanwendungen - ohne Verbindungspool - nützlich sein, bei denen die Verbindung zur Datenbank normalerweise nur für sehr kurze Zeit "lebt".

Warning

Die Klauseln SET LINGER TO und DROP LINGER können in einer einzigen Anweisung kombiniert werden, aber die letzte Klausel "gewinnt".Zum Beispiel setzt ALTER DATABASE SET LINGER TO 5 DROP LINGER die linger-Verzögerung auf 0 (kein linger), während ALTER DATABASE DROP LINGER SET LINGER to 5 die linger-Verzögerung auf 5 Sekunden setzt.

DROP LINGER

Löscht die linger-Verzögerung (setzt sie auf Null).Die Verwendung von DROP LINGER entspricht der Verwendung von SET LINGER TO 0.

Note

Das Löschen von 'LINGER' ist keine ideale Lösung für die gelegentliche Notwendigkeit, es für einen einmaligen Zustand auszuschalten, in dem der Server erzwungenes Herunterfahren benötigt.Das Dienstprogramm gfix hat jetzt den Schalter -NoLinger, der die angegebene Datenbank sofort schließt, nachdem der letzte Anhang verschwunden ist, unabhängig von der LINGER-Einstellung in der Datenbank.Die Einstellung 'LINGER' wird beibehalten und funktioniert beim nächsten Mal normal.

Dieselbe einmalige Überschreibung ist auch über die Dienste-API unter Verwendung des Tags isc_spb_prp_nolinger verfügbar, z. (in einer Zeile):

fbsvcmgr host:service_mgr user sysdba password xxx
       action_properties dbname employee prp_nolinger
Warning

Die Klauseln DROP LINGER und SET LINGER TO können in einer einzigen Anweisung kombiniert werden, aber die letzte Klausel "gewinnt".

SET DEFAULT SQL SECURITY

Gibt die Standardoption SQL SECURITY an, die zur Laufzeit für Objekte ohne den Eigenschaftssatz SQL-Sicherheit angewendet wird.Siehe auch SQL-Sicherheit im Kapitel Sicherheit.

ENABLE PUBLICATION

Aktiviert die Veröffentlichung dieser Datenbank für die Replikation.Die Replikation beginnt (oder wird fortgesetzt) mit der nächsten Transaktion, die gestartet wird, nachdem diese Transaktion festgeschrieben wurde.

DISABLE PUBLICATION

Aktiviert die Veröffentlichung dieser Datenbank für die Replikation.Die Replikation wird sofort nach dem Commit deaktiviert.

EXCLUDE …​ FROM PUBLICATION

Schließt Tabellen von der Veröffentlichung aus.Wenn die INCLUDE ALL TO PUBLICATION-Klausel verwendet wird, werden alle danach erstellten Tabellen ebenfalls repliziert, sofern sie nicht explizit in der CREATE TABLE-Anweisung überschrieben werden.

INCLUDE …​ TO PUBLICATION

Enthält Tabellen zur Veröffentlichung.Wenn die INCLUDE ALL TO PUBLICATION-Klausel verwendet wird, werden alle danach erstellten Tabellen ebenfalls repliziert, sofern sie nicht explizit in der CREATE TABLE-Anweisung überschrieben werden.

Note
Replikation
  • Abgesehen von der Syntax wird die Konfiguration von Firebird für die Replikation in dieser Sprachreferenz nicht behandelt.

  • Alle Replikationsverwaltungsbefehle sind DDL-Anweisungen und werden daher zur Transaktions-Commit-Zeit effektiv ausgeführt.

Beispiele zur Verwendung von ALTER DATABASE

  1. Hinzufügen einer sekundären Datei zur Datenbank.Sobald 30000 Seiten in der vorherigen Primär- oder Sekundärdatei gefüllt sind, beginnt die Firebird-Engine, Daten in die Sekundärdatei test4.fdb hinzuzufügen.

    ALTER DATABASE
      ADD FILE 'D:\test4.fdb'
        STARTING AT PAGE 30001;
  2. Angabe von Pfad und Name der Delta-Datei:

    ALTER DATABASE
      ADD DIFFERENCE FILE 'D:\test.diff';
  3. Löschen der Beschreibung der Delta-Datei:

    ALTER DATABASE
      DROP DIFFERENCE FILE;
  4. Umschalten der Datenbank in den “kopiersicher” Modus:

    ALTER DATABASE
      BEGIN BACKUP;
  5. Zurückschalten der Datenbank vom “copy-safe”-Modus in den normalen Betriebsmodus:

    ALTER DATABASE
      END BACKUP;
  6. Ändern des Standardzeichensatzes für eine Datenbank in WIN1251

    ALTER DATABASE
      SET DEFAULT CHARACTER SET WIN1252;
  7. Einstellen einer linger-Verzögerung von 30 Sekunden

    ALTER DATABASE
      SET LINGER TO 30;
  8. Verschlüsseln der Datenbank mit einem Plugin namens DbCrypt

    ALTER DATABASE
      ENCRYPT WITH DbCrypt;
  9. Entschlüsseln der Datenbank

    ALTER DATABASE
      DECRYPT;

DROP DATABASE

Verwendet für

Löschen der Datenbank, mit der Sie gerade verbunden sind

Verfügbar in

DSQL, ESQL

Syntax
DROP DATABASE

Die Anweisung DROP DATABASE löscht die aktuelle Datenbank.Bevor Sie eine Datenbank löschen, müssen Sie sich mit ihr verbinden.Die Anweisung löscht die Primärdatei, alle Sekundärdateien und alle Shadow-Dateien.

Note

Im Gegensatz zu CREATE DATABASE und ALTER DATABASE ist DROP SCHEMA kein gültiger Alias für DROP DATABASE.Dies ist beabsichtigt.

Wer kann eine Datenbank löschen?

Die DROP DATABASE-Anweisung kann ausgeführt werden durch:

Beispiel zur Verwendung von DROP DATABASE

Löschen der aktuellen Datenbank
DROP DATABASE;