DB2 - Database
Questo capitolo descrive la creazione, l'attivazione e la disattivazione dei database con la sintassi associata.
Architettura del database
Un database è una raccolta di tabelle, schemi, pool di buffer, registri, gruppi di archiviazione e spazi tabelle che lavorano insieme per gestire le operazioni del database in modo efficiente.
Directory del database
La directory del database è un repository organizzato di database. Quando si crea un database, tutti i dettagli sul database vengono memorizzati in una directory del database, come i dettagli dei dispositivi di archiviazione predefiniti, i file di configurazione e l'elenco delle tabelle temporanee ecc.
La directory globale della partizione viene creata nella cartella dell'istanza. Questa directory contiene tutte le informazioni globali relative al database. Questa directory globale della partizione è denominata NODExxxx / SQLyyy, dove xxxx è il numero della partizione dati e yyy è il token del database.
Nella directory globale della partizione, viene creata una directory specifica del membro. Questa directory contiene informazioni sul database locale. La directory specifica del membro è denominata MEMBERxxxx dove xxxx è un numero di membro. L'ambiente DB2 Enterprise Server Edition viene eseguito su un singolo membro e ha solo una directory specifica del membro. Questa directory specifica del membro è denominata in modo univoco MEMBER0000.
Directory globale partizionata
Posizione directory: <istanza> / NODExxx / SQLxxx
La directory globale della partizione contiene i file relativi al database come elencato di seguito.
- File di monitoraggio degli eventi di deadlock di scrittura su file globali
- File di informazioni sullo spazio tabella [SQLSPCS.1, SQLSPCS.2]
- File di controllo del gruppo di archiviazione [SQLSGF.1, SQLSGF.2]
- File contenitori temporanei del tablespace. [/ percorso di archiviazione /
/T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA] - File di configurazione globale [SQLDBCONF]
- File di cronologia [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
- File relativi alla registrazione [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
- Blocco dei file [SQLINSLK, SQLTMPLK]
- Contenitori di stoccaggio automatici
Directory specifica del membro
Posizione della directory: / NODExxxx / SQLxxxx / MEMBER0000
Questa directory contiene:
- Oggetti associati ai database
- File di informazioni sul pool di buffer [SQLBP.1, SQLBP.2]
- File di monitoraggio degli eventi locali
- File relativi alla registrazione [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH].
- File di configurazione locali
- File di monitoraggio eventi deadlock. I file di monitoraggio degli eventi deadlock dettagliati vengono archiviati nella directory del database del nodo del catalogo in caso di ambiente ESE e database con partizioni.
Creazione del database
È possibile creare un database in istanza utilizzando il comando "CREATE DATABASE". Tutti i database vengono creati con il gruppo di archiviazione predefinito "IBMSTOGROUP", creato al momento della creazione di un'istanza. In DB2, tutte le tabelle del database sono memorizzate in "tablespace", che utilizzano i rispettivi gruppi di archiviazione.
I privilegi per il database vengono impostati automaticamente come PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA e SELECT], tuttavia, se è presente l'opzione RESTRICTIVE, i privilegi non vengono concessi come PUBLIC.
Creazione di database non restrittivi
Questo comando viene utilizzato per creare un database non restrittivo.
Syntax: [Per creare un nuovo database. "database_name" indica un nuovo nome di database, che desideri creare.]
db2 create database <database name>
Example: [Per creare un nuovo database non restrittivo con il nome "uno"]
db2 create database one
Output:
DB20000I The CREATE DATABASE command completed successfully.
Creazione di database restrittivi
Il database restrittivo viene creato invocando questo comando.
Syntax: [Nella sintassi seguente, "db_name" indica il nome del database.]
db2 create database <db_name> restrictive
Example: [Per creare un nuovo database restrittivo con il nome "due"]
db2 create database two restrictive
Creazione di database con una posizione definita dall'utente diversa
Creare un database con il gruppo di archiviazione predefinito "IBMSTOGROUP" su un percorso diverso. In precedenza, hai richiamato il comando "crea database" senza alcuna posizione definita dall'utente per archiviare o creare database in una posizione particolare. Per creare il database utilizzando la posizione del database definita dall'utente, viene seguita la seguente procedura:
Syntax: [Nella sintassi seguente, "db_name" indica il "nome database" e "data_location" indica dove memorizzare i dati nelle cartelle e "db_path_location" indica il percorso del driver di "data_location".
db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>'
Example: [Per creare un database denominato "quattro", in cui i dati vengono archiviati in "dati1" e questa cartella in "dbpath1"]
db2 create database four on '/data1' dbpath on '/dbpath1'
Visualizzazione dei file di directory del database locale o di sistema
Esegui questo comando per vedere l'elenco delle directory disponibili nell'istanza corrente.
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 =
Attivazione del database
Questo comando avvia tutti i servizi necessari per un database particolare in modo che il database sia disponibile per l'applicazione.
Syntax: ["db_name" indica il nome del database]
db2 activate db <db_name>
Example: [Attivazione del database "uno"]
db2 activate db one
Disattivazione del database
Utilizzando questo comando, è possibile arrestare i servizi di database.
Syntax:
db2 deactivate db <db_name>
Example: [Per disattivare il database "uno"]
db2 deactivate db one
Connessione al database
Dopo aver creato un database, per metterlo in uso, è necessario connettersi o avviare il database.
Syntax:
db2 connect to <database name>
Example: [Per collegare il database uno alla CLI corrente]
db2 connect to one
Output:
Database Connection Information
Database server = DB2/LINUXX8664 10.1.0
SQL authorization ID = DB2INST4
Local database alias = ONE
Verifica se il database è restrittivo
Per verificare se questo database è restrittivo o meno, ecco la sintassi:
Syntax: [Nella seguente sintassi, "db" indica il database, "cfg" indica la configurazione, "db_name" indica il nome del database]
db2 get db cfg for <db_name> | grep -i restrict
Example: [Per verificare se "uno" database è limitato o meno]
db2 get db cfg for one | grep -i restrict
Output:
Restrict access = NO
Configurazione del database manager e del database
La configurazione dell'istanza (configurazione del gestore database) è archiviata in un file denominato "db2system" e la configurazione relativa al database è archiviata in un file denominato "SQLDBCON". Questi file non possono essere modificati direttamente. Puoi modificare questi file utilizzando strumenti che chiamano API. Utilizzando il processore della riga di comando, è possibile utilizzare questi comandi.
Parametri di configurazione del gestore database
Syntax: [Per ottenere le informazioni del gestore del database delle istanze]
db2 get database manager configuration
O
db2 get dbm cfg
Syntax: [Per aggiornare il gestore del database dell'istanza]
db2 update database manager configuration
O
db2 update dbm cfg
Syntax: [Per ripristinare le configurazioni precedenti]
db2 reset database manager configuration
O
db2 reset dbm cfg
Parametri di configurazione del database
Syntax: [Per ottenere le informazioni del database]
db2 get database configuration
O
db2 get db cfg
Syntax: [Per aggiornare la configurazione del database]
db2 update database configuration
O
db2 update db cfg
Syntax: [Per ripristinare i valori precedentemente configurati nella configurazione del database
db2 reset database configuration
O
db2 reset db cfg
Syntax: [Per controllare la dimensione del database attivo corrente]
db2 "call get_dbsize_info(?,?,?,-1)"
Example: [Per verificare la dimensione di Attiva database attualmente]
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
Stima dello spazio richiesto per il database
Per stimare la dimensione di un database, è necessario considerare il contributo dei seguenti fattori:
- Tabelle del catalogo di sistema
- Dati della tabella utente
- Dati sul campo lungo
- Dati LOB (Large Object)
- Spazio indice
- Spazio di lavoro temporaneo
- Dati XML
- Spazio per i file di registro
- Directory del database locale
- File di sistema
Verifica delle autorità del database
È possibile utilizzare la seguente sintassi per verificare quali autorizzazioni database sono concesse a PUBLIC sul database non restrittivo.
Step 1: connettersi al database con autenticazione user-id e password dell'istanza.
Syntax: [Per connettersi al database con nome utente e password]
db2 connect to <db_name> user <userid> using <password>
Example: [Per collegare "uno" database con l'ID utente "db2inst4" e la password "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: Per verificare le autorità del database.
Syntax: [La sintassi seguente mostra il risultato dei servizi di autorità per il database corrente]
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.
Database in caduta
Utilizzando il comando Drop, è possibile rimuovere il nostro database dalla directory del database dell'istanza. Questo comando può eliminare tutti i suoi oggetti, tabelle, spazi, contenitori e file associati.
Syntax: [Per eliminare qualsiasi database da un'istanza]
db2 drop database <db_name>
Example: [Per eliminare il database "sei" dall'istanza]
db2 drop database six
Output:
DB20000I The DROP DATABASE command completed successfully