FirebirdSQL logo

Exemples

Example 1. Création d’une base de données dans un système d’exploitation Windows

Création d’une base de données sur un système d’exploitation Windows situé sur le lecteur D avec une taille de page de 8192.Le propriétaire de la base de données sera l’utilisateur assistant.La base de données sera en dialecte 1, et utilisera le jeu de caractères par défaut WIN1251.

SET SQL DIALECT 1;
CREATE DATABASE 'D:\test.fdb'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET WIN1251;
Example 2. Création d’une base de données dans un système d’exploitation Linux

Création d’une base de données sur un système d’exploitation Linux avec une taille de page de 4096.Le propriétaire de la base de données sera l’utilisateur assistant.La base de données sera en dialecte 3, et utilisera le jeu de caractères par défaut UTF8 avec un tri diminué UNICODE_CI_AI.

CREATE DATABASE '/home/firebird/test.fdb'
USER "wizard" PASSWORD 'player' ROLE 'RDB$ADMIN'
PAGE_SIZE = 4096
DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI_AI;
Important

Dans ce cas, la base de données sera sensible à la casse pour le nom d’utilisateur car il est spécifié entre guillemets.

Example 3. Création d’une base de données sur un serveur distant

Création d’une base de données sur le serveur de base distant situé au niveau du chemin référencé par l’alias test décrit dans le fichier databases.conf.Le protocole utilisé est le TCP.Le propriétaire de la base de données sera l’assistant utilisateur.

CREATE DATABASE 'baseserver:test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;

Il en va de même pour l’utilisation d’une syntaxe unifiée de type URL pour spécifier un serveur distant.

CREATE DATABASE 'inet://baseserver:3050/test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;

ou

CREATE DATABASE 'inet://baseserver:gds_db/test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;

Lorsque vous utilisez des noms de domaine, il peut être utile de préciser quel protocole IP v4 ou IP v6 vous souhaitez utiliser.

CREATE DATABASE 'inet4://baseserver/test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;

ou

CREATE DATABASE 'inet6://baseserver/test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;

Création d’une base de données avec une adresse IP (IPv4) au lieu d’un nom de serveur.

CREATE DATABASE '127:0:0:1:test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;

Création d’une base de données avec une adresse IP (IPv6) au lieu d’un nom de serveur.

CREATE DATABASE '[::1]:test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;
Example 4. Création d’une base de données multi-fichiers

Création d’une base de données en dialecte 3 avec le jeu de caractères par défaut UTF8.Le fichier primaire contiendra 10000 pages avec une taille de page de 8192.Dès que le processus de base de données remplit le fichier primaire, le SGBD place de nouvelles données dans le fichier secondaire test.fdb2.Les mêmes actions se produiront avec le deuxième fichier secondaire.La taille du dernier fichier augmentera tant que le système d’exploitation le permettra ou tant que la mémoire du périphérique de stockage externe ne sera pas épuisée.

SET SQL DIALECT 3;
CREATE DATABASE 'baseserver:D:\test.fdb'
USER wizard PASSWORD 'player' ROLE 'RDB$ADMIN'
PAGE_SIZE = 8192
DEFAULT CHARACTER SET UTF8
FILE 'D:\test.fdb2'
STARTING AT PAGE 10001
FILE 'D:\test.fdb3'
STARTING AT PAGE 20001;
Example 5. Création d’une base de données multi-fichiers 2

Création d’une base de données en dialecte 3 avec le jeu de caractères par défaut UTF8.Le fichier primaire contiendra 10000 pages avec une taille de page de 8192.Dès que le processus de base de données remplit le fichier primaire, le SGBD place de nouvelles données dans le fichier secondaire test.fdb2.Des actions similaires auront lieu avec le deuxième fichier secondaire.

SET SQL DIALECT 3;
CREATE DATABASE 'baseserver:D:\test.fdb'
USER wizard PASSWORD 'player' ROLE 'RDB$ADMIN'
PAGE_SIZE = 8192
LENGTH 10000 PAGES
DEFAULT CHARACTER SET UTF8
FILE 'D:\test.fdb2'
FILE 'D:\test.fdb3'
STARTING AT PAGE 20001;

ALTER DATABASE

Objectif

Pour modifier la structure des fichiers de la base de données, la mettre en "sécurité pour la copie" ou modifier certaines propriétés de la base de données.

Disponible en

DSQL, ESQL

Syntaxe
ALTER {DATABASE | SCHEMA}
    {<add_sec_clause> [<add_sec_clausee> ...]}
  | {ADD DIFFERENCE FILE 'diff_file' | DROP DIFFERENCE FILE}
  | {{BEGIN | END} BACKUP}
  | {SET DEFAULT CHARACTER SET charset}
  | {SET DEFAULT SQL SECURITY {DEFINER | INVOKER}}
  | {SET LINGER TO linger_duration | DROP LINGER}
  | {ENCRYPT WITH plugin_name [KEY key_name] | DECRYPT}
  | {ENABLE | DISABLE} PUBLICATION
  | INCLUDE {TABLE <table_list> | ALL} TO PUBLICATION
  | EXCLUDE {TABLE <table_list> | ALL} FROM PUBLICATION

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

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

<table_list> ::= tablename [, tablename ...]
Table 1. Paramètres de l’opérateur ALTER DATABASE
Paramètre Description

add_sec_clause

sec_file pour ajouter un fichier de base de données secondaire.

sec_file

Spécifier le fichier secondaire.

filepath

Chemin et nom du fichier delta ou du fichier de base de données secondaire.

pagenum

Le numéro de la page à partir de laquelle le fichier de la base de données secondaire commence.

num

num Taille maximale du fichier secondaire en pages.

diff_file

diff_file chemin et nom du fichier delta.

charset

jeu de caractères par défaut pour la base de données.

linger_duration

délai en secondes.

plugin_name

nom du plugin de cryptage.

key_name

Nom de la clé de cryptage.

table_list

Liste des tableaux à activer ou à désactiver pour lespour la réplication.

tablename

nom de la base de donnée.

L’instruction ALTER DATABASE modifie la structure des fichiers de la base de données ou la fait passer à l’état copy-safe.

docnext count = 12

Ajout d’un fichier secondaire

La phrase ADD FILE ajoute un fichier secondaire à la base de données.Pour le fichier secondaire, le chemin d’accès complet au fichier et le nom du fichier secondaire doivent être spécifiés.La description du fichier secondaire est la même que dans l’instruction CREATE DATABASE.

Example 1. Ajout d’un fichier secondaire à la base de données

Dès que le fichier primaire ou secondaire précédent est rempli de 30 000 pages, le SGBD place les données dans le fichier secondaire test4.fdb.

ALTER DATABASE
ADD FILE 'D:\test.fdb4'
STARTING PAGE 30001;

Modification du chemin et du nom du fichier delta

La phrase ADD DIFFERENCE FILE spécifie le chemin et le nom du fichier delta dans lequel seront écrites les modifications apportées à la base de données après l’avoir mise en mode copy-safe (“copy-safe”). Cette déclaration n’ajoute pas réellement un fichier.Il remplace simplement le nom et le chemin du fichier delta silencieux.Pour modifier les paramètres existants, vous devez d’abord supprimer la description du fichier delta précédemment spécifiée à l’aide de l’opérateur DROP DIFFERENCE FILE, puis spécifier une nouvelle description du fichier delta.Si vous ne modifiez pas le chemin d’accès et le nom du fichier delta, il aura le même chemin d’accès et le même nom que la base de données, mais avec l’extension .delta.

Note

Si un chemin relatif ou un nom de fichier delta seulement est spécifié, il sera créé dans le répertoire actuel du serveur.Pour les systèmes d’exploitation Windows, il s’agit du répertoire système.

La phrase DROP DIFFERENCE FILE supprime la description (chemin et nom) du fichier delta donnée précédemment par la commande ADD DIFFERENCE FILE.Cette déclaration ne supprime pas réellement le fichier.Il supprime le chemin d’accès et le nom du fichier delta et les valeurs par défaut seront utilisées lorsque la base de données sera ensuite configurée en mode safe copy (i.e.le même chemin et le même nom que le fichier de la base de données, mais avec l’extension .delta).

Example 1. Définir le chemin et le nom du fichier delta
ALTER DATABASE
ADD DIFFERENCE FILE 'D:\test.diff';
Example 2. Suppression de la description du fichier delta
ALTER DATABASE
DROP DIFFERENCE FILE;

Mise en mode "copie sécurisée" de la base de données

L’instruction `BEGIN BACKUP' est destinée à mettre la base de données en mode `copy-safe'. Cette instruction "gèle" le fichier principal de la base de données, ce qui permet d’effectuer une sauvegarde sûre en utilisant le système de fichiers, même si des utilisateurs sont connectés et effectuent des opérations sur les données.Toutes les modifications apportées par les utilisateurs à la base de données seront écrites dans un fichier séparé, appelé fichier delta (delta file).

Note

L’instruction `BEGIN BACKUP', malgré sa syntaxe, ne démarre pas une sauvegarde de base de données, mais crée seulement les conditions pour qu’elle ait lieu.

La proposition FEND BACKUP est conçue pour faire passer la base de données du mode copy-safe au fonctionnement normal.Cette instruction fusionne le fichier delta avec le fichier principal de la base de données et rétablit le fonctionnement normal, ce qui ferme la possibilité de créer des sauvegardes sûres en utilisant le système de fichiers.(Une sauvegarde sûre utilisant l’utilitaire [app]``gbak'' reste disponible).

Example 1. Mise en mode "copie sécurisée" de la base de données
ALTER DATABASE
BEGIN BACKUP;
Example 2. Remettre la base de données en fonctionnement normal à partir du mode "copie sécurisée".
ALTER DATABASE
END BACKUP;

Modifier le jeu de caractères par défaut

La phrase SET DEFAULT CHARACTER SET modifie le jeu de caractères par défaut de la base de données.Ce changement n’affecte pas les données existantes.Le nouveau jeu de caractères par défaut ne sera utilisé que dans les commandes DDL suivantes, qui utiliseront en outre le tri par défaut pour le nouveau jeu de caractères.

Example 1. Modification du jeu de caractères par défaut de la base de données
ALTER DATABASE SET DEFAULT CHARACTER SET WIN1251;

Modification des privilèges d’exécution par défaut

Depuis Firebird 4.0, il est maintenant possible de spécifier les objets de métadonnées avec quels privilèges ils seront exécutés : appelant ou utilisateur définissant.Ceci est fait en utilisant l’option SQL SECURITY, qui peut être spécifiée pour une table, un trigger, une procédure, une fonction ou un package.Si l’option INVOKER est sélectionnée, l’objet de métadonnées sera exécuté avec les privilèges de l’utilisateur appelant.Si l’option DEFINER est sélectionnée, l’objet de métadonnées sera exécuté avec les privilèges de l’utilisateur qui le définit (propriétaire). Si la clause SQL SECURITY n’est pas spécifiée lors de la création d’un module ou d’une table PSQL, l’option INVOKER est utilisée par défaut.

La clause SET DEFAULT SQL SECURITY modifie les privilèges d’exécution avec lesquels les modules PSQL (procédures stockées, fonctions et packages) sont exécutés par défaut.

Example 1. Modification des privilèges d’exécution par défaut

Après avoir exécuté cette déclaration, les modules PSQL seront exécutés par défaut avec l’option `SQL SECURITY DEFINER'.

ALTER DATABASE SET DEFAULT SQL SECURITY DEFINER;

LINGER

La proposition SET LINGER vous permet de définir un délai de fermeture de la base de données.Ce mécanisme permet à Firebird, en mode SuperServer, de garder la base de données ouverte pendant un certain temps après la fermeture de la dernière connexion.disposent d’un mécanisme de fermeture différée de la base de données.Cela peut contribuer à améliorer les performances et à réduire les coûts dans les cas où la base de données est fréquemment ouverte et fermée, tout en gardant les ressources "réchauffées" jusqu’à la prochaine ouverture.

Tip

Ce mode peut être utile pour les applications Web où la connexion à la base de données ne dure généralement que très peu de temps.

La phrase DROP LINGER supprime le délai et ramène la base de données à son état normal (sans délai). Cette commande équivaut à mettre le délai à 0.

Tip

La suppression de "LINGER" n’est pas la meilleure solution pour répondre au besoin temporaire de le désactiver pour une action ponctuelle qui nécessite de forcer un arrêt du serveur.L’utilitaire gfix'' dispose maintenant d’un commutateur [option]NoLinger'' qui fermera immédiatement la base de données spécifiée après la disparition de la dernière connexion, indépendamment des paramètres LINGER de la base de données.Le réglage "LINGER" sera sauvegardé et fonctionnera normalement la prochaine fois.

En outre, le remplacement ponctuel est également disponible via les services API, en utilisant le tag isc_spb_prp_nolinger, par exemple (dans une ligne comme celle-ci) :

fbsvcmgr host:service_mgr user sysdba password xxx
action_properties dbname employee prp_nolinger
Example 1. Réglage d’un délai de 30 secondes
ALTER DATABASE SET LINGER 30;
Example 2. Suppression du délai
ALTER DATABASE DROP LINGER;

ou

ALTER DATABASE SET LINGER 0;

Cryptage des bases de données

L’instruction ALTER DATABASE avec la phrase ENCRYPT WITH crypte la base de données avec le plugin de cryptage spécifié.Le chiffrement commence immédiatement après cette déclaration et s’exécute en arrière-plan.Le fonctionnement normal de la base de données n’est pas perturbé pendant le cryptage.

Note

Le processus de cryptage peut être surveillé en utilisant le champ MON$CRYPT_PAGE dans la pseudo-table MON$DATABASE ou visualisé sur la page d’en-tête de la base de données en utilisant gstat -e.

gstat -h fournira également des informations limitées sur l’état du cryptage.

Par exemple, la requête suivante

select MON$CRYPT_PAGE * 100 / MON$PAGES from MON$DATABASE

affichera le pourcentage d’achèvement du processus de cryptage.

La clause optionnelle KEY permet de passer un nom de clé au plugin de cryptage.Le plugin décide de ce qu’il faut faire avec ce nom de clé.

L’instruction ALTER DATABASE avec la clause DECRYPT décrypte la base de données.

Example 1. Cryptage des bases de données
ALTER DATABASE ENCRYPT WITH DbCrypt;
Example 2. Décryptage de la base de données
ALTER DATABASE DECRYPT;

Gestion de la réplication

L’instruction ALTER DATABASE avec la phrase ENABLE PUBLICATION active la réplication de la base de données.

ALTER DATABASE ENABLE PUBLICATION

Pour désactiver la réplication de la base de données, exécutez l’opérateur

ALTER DATABASE DISABLE PUBLICATION

Les modifications seront appliquées dès que la transaction sera confirmée.

Un ensemble de réplication (ou publication) doit être défini lorsque la réplication est activée. Il comprend les tables à répliquer.Cela se fait également à l’aide de la commande DDL :

ALTER DATABASE INCLUDE {TABLE <table_list> | ALL} TO PUBLICATION

<table_list> ::= tablename [, tablename ...]

Si le mot-clé ALL est utilisé, le jeu de réplication inclura toutes les tables, y compris celles qui seront créées ultérieurement.La commande se présentera comme suit :

ALTER DATABASE INCLUDE ALL TO PUBLICATION

Vous pouvez spécifier un ensemble spécifique de tables pour la réplication.Pour ce faire, spécifiez une liste de tables séparées par des virgules après le mot-clé TABLE.Dans l’exemple suivant, nous autorisons la réplication pour les tables t1 et t2 :

ALTER DATABASE INCLUDE TABLE t1, t2 TO PUBLICATION

L’opérateur suivant est utilisé pour exclure des tables d’un ensemble de réplication (publication) :

ALTER DATABASE EXCLUDE {TABLE <table_list> | ALL} FROM PUBLICATION

<table_list> ::= tablename [, tablename ...]

L’utilisation du mot-clé ALL exclura toutes les tables du jeu de réplication.Si toutes les tables ont été précédemment ajoutées à la publication à l’aide du mot-clé ALL, cet opérateur désactivera la publication automatique pour les tables nouvellement créées.La commande se présentera comme suit :

ALTER DATABASE EXCLUDE ALL FROM PUBLICATION

Vous pouvez spécifier un ensemble spécifique de tables à exclure de la réplication.Pour ce faire, spécifiez une liste de tables séparées par des virgules après le mot-clé TABLE.Dans l’exemple suivant, nous excluons les tables t1 et t2 du jeu de réplication :

ALTER DATABASE EXCLUDE TABLE t1, t2 FROM PUBLICATION

Les tables activées pour la réplication peuvent être davantage filtrées en utilisant deux paramètres dans le fichier de configuration replication.conf : include_filter et exclude_filter.Il s’agit d’expressions régulières qui sont appliquées aux noms de tables et définissent des règles pour inclure des tables dans le jeu de réplication ou les exclure du jeu de réplication.

Qui peut faire un `ALTER DATABASE' ?

Qui peut exécuter l’opérateur ALTER DATABASE :

  • Administrateurs ;

  • Propriétaire de la base de données ;

  • Utilisateurs avec le privilège `ALTER DATABASE'.

DROP DATABASE

affectation

Suppression de la base de données actuelle.

Disponible en

DSQL, ESQL

Syntaxe
DROP DATABASE

L’instruction DROP DATABASE supprime la base de données actuelle.Avant que la base de données soit supprimée, elle doit être jointe.L’opérateur supprime le primaire, tous les fichiers secondaires et tous les fichiers de la copie fantôme.

Qui peut supprimer la base de données ?

Qui peut exécuter l’opérateur DROP DATABASE :

  • Administrateurs ;

  • Propriétaire de la base de données ;

  • Utilisateurs avec le privilège `DROP DATABASE'.

Exemples

Example 1. Suppression d’une base de données

Suppression de la base de données à laquelle le client est connecté.

DROP DATABASE;