DB2 - Datenbanken

In diesem Kapitel wird das Erstellen, Aktivieren und Deaktivieren der Datenbanken mit der zugehörigen Syntax beschrieben.

Datenbankarchitektur

Eine Datenbank ist eine Sammlung von Tabellen, Schemata, Pufferpools, Protokollen, Speichergruppen und Tabellenbereichen, die zusammenarbeiten, um Datenbankoperationen effizient abzuwickeln.

Datenbankverzeichnis

Das Datenbankverzeichnis ist ein organisiertes Repository von Datenbanken. Wenn Sie eine Datenbank erstellen, werden alle Details zur Datenbank in einem Datenbankverzeichnis gespeichert, z. B. Details zu Standardspeichergeräten, Konfigurationsdateien und Liste temporärer Tabellen usw.

Das globale Partitionsverzeichnis wird im Instanzordner erstellt. Dieses Verzeichnis enthält alle globalen Informationen zur Datenbank. Dieses globale Partitionsverzeichnis heißt NODExxxx / SQLyyy, wobei xxxx die Datenpartitionsnummer und yyy das Datenbanktoken ist.

Im partition-globalen Verzeichnis wird ein mitgliederspezifisches Verzeichnis erstellt. Dieses Verzeichnis enthält lokale Datenbankinformationen. Das mitgliederspezifische Verzeichnis heißt MEMBERxxxx, wobei xxxx eine Mitgliedsnummer ist. Die DB2 Enterprise Server Edition-Umgebung wird auf einem einzelnen Mitglied ausgeführt und verfügt nur über ein mitgliederspezifisches Verzeichnis. Dieses mitgliederspezifische Verzeichnis hat den eindeutigen Namen MEMBER0000.

Partitioniertes globales Verzeichnis

Verzeichnisverzeichnis: <Instanz> / NODExxx / SQLxxx

Das partition-globale Verzeichnis enthält datenbankbezogene Dateien, wie unten aufgeführt.

  • Globale Deadlock-Ereignisüberwachungsdateien zum Schreiben in eine Datei
  • Tabellenbereichsinformationsdateien [SQLSPCS.1, SQLSPCS.2]
  • Speichergruppen-Steuerdateien [SQLSGF.1, SQLSGF.2]
  • Temporäre Tabellenbereichscontainerdateien. [/ Speicherpfad / /T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]
  • Globale Konfigurationsdatei [SQLDBCONF]
  • Verlaufsdateien [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
  • Protokollierungsbezogene Dateien [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
  • Dateien sperren [SQLINSLK, SQLTMPLK]
  • Automatische Lagerbehälter

Mitgliedsspezifisches Verzeichnis

Verzeichnisverzeichnis: / NODExxxx / SQLxxxx / MEMBER0000

Dieses Verzeichnis enthält:

  • Mit Datenbanken verknüpfte Objekte
  • Pufferpool-Informationsdateien [SQLBP.1, SQLBP.2]
  • Lokale Ereignisüberwachungsdateien
  • Protokollierungsbezogene Dateien [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH].
  • Lokale Konfigurationsdateien
  • Deadlocks-Ereignismonitordatei. Die detaillierten Überwachungsdateien für Deadlock-Ereignisse werden im Falle einer ESE- und einer partitionierten Datenbankumgebung im Datenbankverzeichnis des Katalogknotens gespeichert.

Datenbank erstellen

Sie können eine Datenbank beispielsweise mit dem Befehl "CREATE DATABASE" erstellen. Alle Datenbanken werden mit der Standardspeichergruppe „IBMSTOGROUP“ erstellt, die zum Zeitpunkt der Erstellung einer Instanz erstellt wird. In DB2 werden alle Datenbanktabellen im "Tablespace" gespeichert, der ihre jeweiligen Speichergruppen verwendet.

Die Berechtigungen für die Datenbank werden automatisch als PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA und SELECT] festgelegt. Wenn jedoch die Option RESTRICTIVE vorhanden ist, werden die Berechtigungen nicht als PUBLIC gewährt.

Erstellen einer nicht einschränkenden Datenbank

Mit diesem Befehl wird eine nicht einschränkende Datenbank erstellt.

Syntax: [So erstellen Sie eine neue Datenbank. 'Datenbankname' gibt einen neuen Datenbanknamen an, den Sie erstellen möchten.]

db2 create database <database name>

Example: [So erstellen Sie eine neue nicht einschränkende Datenbank mit dem Namen 'eins']

db2 create database one

Output:

DB20000I The CREATE DATABASE command completed successfully.

Restriktive Datenbank erstellen

Beim Aufrufen dieses Befehls wird eine restriktive Datenbank erstellt.

Syntax: [In der folgenden Syntax gibt "Datenbankname" den Datenbanknamen an.]

db2 create database <db_name> restrictive

Example: [So erstellen Sie eine neue restriktive Datenbank mit dem Namen 'zwei']

db2 create database two restrictive

Erstellen einer Datenbank mit einem anderen benutzerdefinierten Speicherort

Erstellen Sie eine Datenbank mit der Standardspeichergruppe "IBMSTOGROUP" auf einem anderen Pfad. Zuvor haben Sie den Befehl "Datenbank erstellen" ohne benutzerdefinierten Speicherort aufgerufen, um die Datenbank an einem bestimmten Speicherort zu speichern oder zu erstellen. Gehen Sie wie folgt vor, um die Datenbank unter Verwendung eines benutzerdefinierten Datenbankspeicherorts zu erstellen:

Syntax: [In der folgenden Syntax gibt 'db_name' den 'Datenbanknamen' und 'data_location' an, wo Daten in Ordnern gespeichert werden müssen, und 'db_path_location' gibt den Treiberspeicherort von 'data_location' an.]

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

Example: [So erstellen Sie eine Datenbank mit dem Namen 'four', in der Daten in 'data1' und dieser Ordner in 'dbpath1' gespeichert sind]

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

Anzeigen lokaler oder Systemdatenbankverzeichnisdateien

Sie führen diesen Befehl aus, um die Liste der in der aktuellen Instanz verfügbaren Verzeichnisse anzuzeigen.

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         =

Datenbank aktivieren

Dieser Befehl startet alle erforderlichen Dienste für eine bestimmte Datenbank, damit die Datenbank für die Anwendung verfügbar ist.

Syntax: ['Datenbankname' gibt den Datenbanknamen an]

db2 activate db <db_name>

Example: [Aktivierung der Datenbank 'one']

db2 activate db one

Datenbank deaktivieren

Mit diesem Befehl können Sie die Datenbankdienste stoppen.

Syntax:

db2 deactivate db <db_name>

Example: [Datenbank 'eins' deaktivieren]

db2 deactivate db one

Verbindung zur Datenbank herstellen

Nach dem Erstellen einer Datenbank müssen Sie eine Verbindung herstellen oder die Datenbank starten, um sie verwenden zu können.

Syntax:

db2 connect to <database name>

Example: [So verbinden Sie die erste Datenbank mit der aktuellen CLI]

db2 connect to one

Output:

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

Überprüfen, ob die Datenbank restriktiv ist

Um zu überprüfen, ob diese Datenbank restriktiv ist oder nicht, ist hier die Syntax:

Syntax: [In der folgenden Syntax gibt 'db' Datenbank an, 'cfg' Konfiguration an, 'Datenbankname' Datenbankname an]

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

Example: [Um zu überprüfen, ob 'eine' Datenbank eingeschränkt ist oder nicht]

db2 get db cfg for one | grep -i restrict

Output:

Restrict access                       = NO

Konfigurieren des Datenbankmanagers und der Datenbank

Die Instanzkonfiguration (Datenbankmanagerkonfiguration) wird in einer Datei mit dem Namen 'db2system' und die datenbankbezogene Konfiguration in einer Datei mit dem Namen 'SQLDBCON' gespeichert. Diese Dateien können nicht direkt bearbeitet werden. Sie können diese Dateien mit Tools bearbeiten, die die API aufrufen. Mit dem Befehlszeilenprozessor können Sie diese Befehle verwenden.

Konfigurationsparameter des Datenbankmanagers

Syntax: [Um die Informationen des Instance Database Managers zu erhalten]

db2 get database manager configuration
ODER
db2 get dbm cfg

Syntax: [So aktualisieren Sie den Instanzdatenbankmanager]

db2 update database manager configuration
ODER
db2 update dbm cfg

Syntax: [Zurücksetzen früherer Konfigurationen]

db2 reset database manager configuration
ODER
db2 reset dbm cfg

Datenbankkonfigurationsparameter

Syntax: [Um die Informationen der Datenbank zu erhalten]

db2 get database configuration
ODER
db2 get db cfg

Syntax: [So aktualisieren Sie die Datenbankkonfiguration]

db2 update database configuration
ODER
db2 update db cfg

Syntax: [Zum Zurücksetzen der zuvor konfigurierten Werte in der Datenbankkonfiguration

db2 reset database configuration
ODER
db2 reset db cfg

Syntax: [So überprüfen Sie die Größe der aktuell aktiven Datenbank]

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

Example: [So überprüfen Sie die Größe der aktuell aktivierten Datenbank]

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

Schätzung des für die Datenbank erforderlichen Speicherplatzes

Um die Größe einer Datenbank abzuschätzen, muss der Beitrag der folgenden Faktoren berücksichtigt werden:

  • Systemkatalogtabellen
  • Benutzertabellendaten
  • Langfelddaten
  • LOB-Daten (Large Object)
  • Indexraum
  • Temporärer Arbeitsbereich
  • XML-Daten
  • Speicherplatz der Protokolldatei
  • Lokales Datenbankverzeichnis
  • Systemdateien

Überprüfen der Datenbankberechtigungen

Mit der folgenden Syntax können Sie überprüfen, welche Datenbankberechtigungen PUBLIC für die nicht einschränkende Datenbank erteilt wurden.

Step 1: Stellen Sie mit der Authentifizierungsbenutzer-ID und dem Kennwort der Instanz eine Verbindung zur Datenbank her.

Syntax: [So stellen Sie mit Benutzername und Passwort eine Verbindung zur Datenbank her]

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

Example: [So verbinden Sie eine Datenbank mit der Benutzer-ID 'db2inst4' und dem Kennwort '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: Um die Berechtigungen der Datenbank zu überprüfen.

Syntax: [Die folgende Syntax zeigt das Ergebnis der Berechtigungsdienste für die aktuelle Datenbank]

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.

Datenbank löschen

Mit dem Befehl Löschen können Sie unsere Datenbank aus dem Instanzdatenbankverzeichnis entfernen. Dieser Befehl kann alle Objekte, Tabellen, Leerzeichen, Container und zugehörigen Dateien löschen.

Syntax: [So löschen Sie eine Datenbank aus einer Instanz]

db2 drop database <db_name>

Example: [So löschen Sie die 'Sechs'-Datenbank von der Instanz]

db2  drop database six

Output:

DB20000I The DROP DATABASE command completed successfully