DB2 - Bases de données

Ce chapitre décrit la création, l'activation et la désactivation des bases de données avec la syntaxe associée.

Architecture de base de données

Une base de données est un ensemble de tables, de schémas, de pools de mémoire tampon, de journaux, de groupes de stockage et d'espaces de table travaillant ensemble pour gérer efficacement les opérations de base de données.

Répertoire de base de données

Le répertoire de base de données est un référentiel organisé de bases de données. Lorsque vous créez une base de données, tous les détails sur la base de données sont stockés dans un répertoire de base de données, tels que les détails des périphériques de stockage par défaut, les fichiers de configuration et la liste des tables temporaires, etc.

Le répertoire global de la partition est créé dans le dossier d'instance. Ce répertoire contient toutes les informations globales relatives à la base de données. Ce répertoire global de partition est nommé NODExxxx / SQLyyy, où xxxx est le numéro de partition de données et yyy est le jeton de base de données.

Dans le répertoire global de partition, un répertoire spécifique au membre est créé. Ce répertoire contient des informations sur la base de données locale. Le répertoire spécifique au membre est nommé MEMBERxxxx où xxxx est un numéro de membre. L'environnement DB2 Enterprise Server Edition s'exécute sur un seul membre et ne possède qu'un seul annuaire spécifique à un membre. Ce répertoire spécifique à un membre est nommé de manière unique MEMBER0000.

Répertoire global partitionné

Emplacement du répertoire: <instance> / NODExxx / SQLxxx

Le répertoire partition-global contient les fichiers liés à la base de données répertoriés ci-dessous.

  • Fichiers de surveillance des événements d'écriture dans un fichier de blocage global
  • Fichiers d'informations sur l'espace table [SQLSPCS.1, SQLSPCS.2]
  • Fichiers de contrôle du groupe de stockage [SQLSGF.1, SQLSGF.2]
  • Fichiers de conteneur d'espace table temporaires. [/ chemin de stockage / /T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]
  • Fichier de configuration globale [SQLDBCONF]
  • Fichiers d'historique [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
  • Fichiers liés à la journalisation [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
  • Verrouillage des fichiers [SQLINSLK, SQLTMPLK]
  • Conteneurs de stockage automatique

Annuaire spécifique aux membres

Emplacement du répertoire: / NODExxxx / SQLxxxx / MEMBER0000

Ce répertoire contient:

  • Objets associés aux bases de données
  • Fichiers d’informations sur le pool de mémoire tampon [SQLBP.1, SQLBP.2]
  • Fichiers de surveillance des événements locaux
  • Fichiers liés à la journalisation [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH].
  • Fichiers de configuration locaux
  • Fichier de surveillance des événements de blocage. Les fichiers de surveillance détaillés des événements de blocage sont stockés dans le répertoire de base de données du nœud de catalogue en cas d'ESE et d'environnement de base de données partitionnée.

Créer une base de données

Vous pouvez créer une base de données en instance à l'aide de la commande "CREATE DATABASE". Toutes les bases de données sont créées avec le groupe de stockage par défaut «IBMSTOGROUP», qui est créé au moment de la création d'une instance. Dans DB2, toutes les tables de la base de données sont stockées dans des «tablespace», qui utilisent leurs groupes de stockage respectifs.

Les privilèges de la base de données sont automatiquement définis comme PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA et SELECT], cependant, si l'option RESTRICTIVE est présente, les privilèges ne sont pas accordés comme PUBLIC.

Créer une base de données non restrictive

Cette commande permet de créer une base de données non restrictive.

Syntax: [Pour créer une nouvelle base de données. 'nom_base_de_données' indique un nouveau nom de base de données que vous souhaitez créer.]

db2 create database <database name>

Example: [Pour créer une nouvelle base de données non restrictive avec le nom «un»]

db2 create database one

Output:

DB20000I The CREATE DATABASE command completed successfully.

Créer une base de données restrictive

Une base de données restrictive est créée lors de l'appel de cette commande.

Syntax: [Dans la syntaxe ci-dessous, "nom_base" indique le nom de la base de données.]

db2 create database <db_name> restrictive

Example: [Pour créer une nouvelle base de données restrictive avec le nom «deux»]

db2 create database two restrictive

Création d'une base de données avec un emplacement différent défini par l'utilisateur

Créez une base de données avec le groupe de stockage par défaut «IBMSTOGROUP» sur un chemin différent. Auparavant, vous avez appelé la commande «créer une base de données» sans aucun emplacement défini par l'utilisateur pour stocker ou créer une base de données à un emplacement particulier. Pour créer la base de données à l'aide de l'emplacement de base de données défini par l'utilisateur, la procédure suivante est suivie:

Syntax: [Dans la syntaxe ci-dessous, 'db_name' indique le 'nom de la base de données' et 'data_location' indique où stocker les données dans les dossiers et 'db_path_location' indique l'emplacement du pilote de 'data_location'.]

db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>'

Example: [Pour créer une base de données nommée 'four', où les données sont stockées dans 'data1' et ce dossier est stocké dans 'dbpath1']

db2 create database four on '/data1' dbpath on '/dbpath1'

Affichage des fichiers de répertoire de base de données locale ou système

Vous exécutez cette commande pour voir la liste des répertoires disponibles dans l'instance actuelle.

Syntax:

db2 list database directory

Example:

db2 list database directory

Output:

System Database Directory  
 Number of entries in the directory = 6  
 Database 1 entry:  
 Database alias                       = FOUR  
 Database name                        = FOUR  
 Local database directory             = 
 /home/db2inst4/Desktop/dbpath  
 Database release level               = f.00  
 Comment                              =  
 Directory entry type                 = Indirect  
 Catalog database partition number    = 0  
 Alternate server hostname            =  
 Alternate server port number         =  
Database 2 entry: 
Database alias                       = SIX  
Database name                        = SIX  
Local database directory             = /home/db2inst4  
Database release level               = f.00  
Comment                              =  
Directory entry type                 = Indirect  
Catalog database partition number    = 0  
Alternate server hostname            =  
Alternate server port number         =

Activation de la base de données

Cette commande démarre tous les services nécessaires pour une base de données particulière afin que la base de données soit disponible pour l'application.

Syntax: ['db_name' indique le nom de la base de données]

db2 activate db <db_name>

Example: [Activation de la base de données 'one']

db2 activate db one

Désactiver la base de données

À l'aide de cette commande, vous pouvez arrêter les services de base de données.

Syntax:

db2 deactivate db <db_name>

Example: [Pour désactiver la base de données 'one']

db2 deactivate db one

Connexion à la base de données

Après avoir créé une base de données, pour la mettre en service, vous devez vous connecter ou démarrer la base de données.

Syntax:

db2 connect to <database name>

Example: [Pour connecter la base de données 1 à la CLI actuelle]

db2 connect to one

Output:

Database Connection Information  
 Database server        = DB2/LINUXX8664 10.1.0  
 SQL authorization ID   = DB2INST4  
 Local database alias   = ONE

Vérifier si la base de données est restrictive

Pour vérifier si cette base de données est restrictive ou non, voici la syntaxe:

Syntax: [Dans la syntaxe suivante, 'db' indique la base de données, 'cfg' indique la configuration, 'db_name' indique le nom de la base de données]

db2 get db cfg for <db_name> | grep -i restrict

Example: [Pour vérifier si 'une' base de données est restreinte ou non]

db2 get db cfg for one | grep -i restrict

Output:

Restrict access                       = NO

Configuration du gestionnaire de base de données et de la base de données

La configuration de l'instance (configuration du gestionnaire de base de données) est stockée dans un fichier nommé «db2system» et la configuration relative à la base de données est stockée dans un fichier nommé «SQLDBCON». Ces fichiers ne peuvent pas être modifiés directement. Vous pouvez modifier ces fichiers à l'aide d'outils qui appellent l'API. En utilisant le processeur de ligne de commande, vous pouvez utiliser ces commandes.

Paramètres de configuration du gestionnaire de base de données

Syntax: [Pour obtenir les informations du gestionnaire de base de données d'instance]

db2 get database manager configuration
OU
db2 get dbm cfg

Syntax: [Pour mettre à jour le gestionnaire de base de données d'instance]

db2 update database manager configuration
OU
db2 update dbm cfg

Syntax: [Pour réinitialiser les configurations précédentes]

db2 reset database manager configuration
OU
db2 reset dbm cfg

Paramètres de configuration de la base de données

Syntax: [Pour obtenir les informations de la base de données]

db2 get database configuration
OU
db2 get db cfg

Syntax: [Pour mettre à jour la configuration de la base de données]

db2 update database configuration
OU
db2 update db cfg

Syntax: [Pour réinitialiser les valeurs précédemment configurées dans la configuration de la base de données

db2 reset database configuration
OU
db2 reset db cfg

Syntax: [Pour vérifier la taille de la base de données active actuelle]

db2 "call get_dbsize_info(?,?,?,-1)"

Example: [Pour vérifier la taille de la base de données actuellement activée]

db2 "call get_dbsize_info(?,?,?,-1)"

Output:

Value of output parameters   
--------------------------   
Parameter Name  : SNAPSHOTTIMESTAMP   
Parameter Value : 2014-07-02-10.27.15.556775  
Parameter Name  : DATABASESIZE   
Parameter Value : 105795584  
Parameter Name  : DATABASECAPACITY   
Parameter Value : 396784705536  
Return Status = 0

Estimation de l'espace requis pour la base de données

Pour estimer la taille d'une base de données, la contribution des facteurs suivants doit être considérée:

  • Tables du catalogue système
  • Données de la table utilisateur
  • Données de champ long
  • Données d'objets volumineux (LOB)
  • Espace d'index
  • Espace de travail temporaire
  • Données XML
  • Espace fichier journal
  • Répertoire de la base de données locale
  • Fichiers système

Vérification des autorités de base de données

Vous pouvez utiliser la syntaxe suivante pour vérifier quelles autorités de base de données sont accordées à PUBLIC sur la base de données non restrictive.

Step 1: connectez-vous à la base de données avec l'ID utilisateur d'authentification et le mot de passe de l'instance.

Syntax: [Pour se connecter à la base de données avec un nom d'utilisateur et un mot de passe]

db2 connect to <db_name> user <userid> using <password>

Example: [Pour connecter «une» base de données avec l'ID utilisateur «db2inst4» et le mot de passe «db2inst4»]

db2 connect to one user db2inst4 using db2inst4

Output:

Database Connection Information  
 Database server        = DB2/LINUXX8664 10.1.0  
 SQL authorization ID   = DB2INST4  
 Local database alias   = ONE

Step2: Vérifier les autorités de la base de données.

Syntax: [La syntaxe ci-dessous montre le résultat des services d'autorité pour la base de données actuelle]

db2 "select substr(authority,1,25) as authority, d_user, d_group, 
d_public, role_user, role_group, role_public,d_role from table( 
sysproc.auth_list_authorities_for_authid ('public','g'))as t 
order by authority"

Example:

db2 "select substr(authority,1,25) as authority, d_user, d_group, 
d_public, role_user, role_group, role_public,d_role from table( 
sysproc.auth_list_authorities_for_authid ('PUBLIC','G'))as t 
order by authority"

Output:

AUTHORITY                 D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE  
------------------------- ------ ------- -------- --------- ---------- ----------- ------  
ACCESSCTRL                *      *       N        *         *          N           *       
BINDADD                   *      *       Y        *         *          N           *       
CONNECT                   *      *       Y        *         *          N           *       
CREATETAB                 *      *       Y        *         *          N           *       
CREATE_EXTERNAL_ROUTINE   *      *       N        *         *          N           *       
CREATE_NOT_FENCED_ROUTINE *      *       N        *         *          N           *       
CREATE_SECURE_OBJECT      *      *       N        *         *          N           *       
DATAACCESS                *      *       N        *         *          N           *       
DBADM                     *      *       N        *         *          N           *       
EXPLAIN                   *      *       N        *         *          N           *       
IMPLICIT_SCHEMA           *      *       Y        *         *          N           *       
LOAD                      *      *       N        *         *          N           *       
QUIESCE_CONNECT           *      *       N        *         *          N           *       
SECADM                    *      *       N        *         *          N           *       
SQLADM                    *      *       N        *         *          N           *       
SYSADM                    *      *       *        *         *          *           *       
SYSCTRL                   *      *       *        *         *          *           *       
SYSMAINT                  *      *       *        *         *          *           *       
SYSMON                    *      *       *        *         *          *           *       
WLMADM                    *      *       N        *         *          N           *         
20 record(s) selected.

Suppression de la base de données

À l'aide de la commande Drop, vous pouvez supprimer notre base de données du répertoire de la base de données d'instance. Cette commande peut supprimer tous ses objets, table, espaces, conteneurs et fichiers associés.

Syntax: [Pour supprimer une base de données d'une instance]

db2 drop database <db_name>

Example: [Pour supprimer la base de données 'six' de l'instance]

db2  drop database six

Output:

DB20000I The DROP DATABASE command completed successfully