DB2 - Bases de datos

Este capítulo describe la creación, activación y desactivación de bases de datos con la sintaxis asociada.

Arquitectura de base de datos

Una base de datos es una colección de tablas, esquemas, agrupaciones de búfer, registros, grupos de almacenamiento y espacios de tabla que trabajan juntos para manejar las operaciones de la base de datos de manera eficiente.

Directorio de la base de datos

El directorio de bases de datos es un repositorio organizado de bases de datos. Cuando crea una base de datos, todos los detalles sobre la base de datos se almacenan en un directorio de la base de datos, como los detalles de los dispositivos de almacenamiento predeterminados, los archivos de configuración y la lista de tablas temporales, etc.

El directorio global de la partición se crea en la carpeta de la instancia. Este directorio contiene toda la información global relacionada con la base de datos. Este directorio global de la partición se denomina NODExxxx / SQLyyy, donde xxxx es el número de partición de datos e yyy es el token de la base de datos.

En el directorio global de la partición, se crea un directorio específico de miembro. Este directorio contiene información de la base de datos local. El directorio específico del miembro se denomina MEMBERxxxx, donde xxxx es un número de miembro. El entorno DB2 Enterprise Server Edition se ejecuta en un solo miembro y tiene solo un directorio específico de miembro. Este directorio específico de miembros tiene un nombre exclusivo como MEMBER0000.

Directorio global particionado

Ubicación del directorio: <instancia> / NODExxx / SQLxxx

El directorio de partición global contiene archivos relacionados con la base de datos que se enumeran a continuación.

  • Archivos de supervisión de eventos de escritura en archivo de interbloqueo global
  • Archivos de información de espacio de tabla [SQLSPCS.1, SQLSPCS.2]
  • Archivos de control de grupos de almacenamiento [SQLSGF.1, SQLSGF.2]
  • Archivos contenedores de espacio de tabla temporal. [/ ruta de almacenamiento / /T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]
  • Archivo de configuración global [SQLDBCONF]
  • Archivos de historial [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
  • Archivos relacionados con el registro [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
  • Bloquear archivos [SQLINSLK, SQLTMPLK]
  • Contenedores de almacenamiento automático

Directorio específico de miembros

Ubicación del directorio: / NODExxxx / SQLxxxx / MEMBER0000

Este directorio contiene:

  • Objetos asociados a bases de datos
  • Archivos de información del grupo de búfer [SQLBP.1, SQLBP.2]
  • Archivos de monitoreo de eventos locales
  • Archivos relacionados con el registro [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH].
  • Archivos de configuración local
  • Archivo de monitor de eventos de interbloqueo. Los archivos de monitoreo de eventos de interbloqueo detallados se almacenan en el directorio de la base de datos del nodo del catálogo en el caso de ESE y el entorno de base de datos particionada.

Creando base de datos

Puede crear una base de datos en una instancia utilizando el comando "CREATE DATABASE". Todas las bases de datos se crean con el grupo de almacenamiento predeterminado “IBMSTOGROUP”, que se crea en el momento de crear una instancia. En DB2, todas las tablas de la base de datos se almacenan en "tablespace", que utilizan sus respectivos grupos de almacenamiento.

Los privilegios para la base de datos se establecen automáticamente como PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA y SELECT]; sin embargo, si la opción RESTRICTIVE está presente, los privilegios no se otorgan como PUBLIC.

Creando una base de datos no restrictiva

Este comando se utiliza para crear una base de datos no restrictiva.

Syntax: [Para crear una nueva base de datos. 'database_name' indica un nuevo nombre de base de datos, que desea crear.]

db2 create database <database name>

Example: [Para crear una nueva base de datos no restrictiva con el nombre 'uno']

db2 create database one

Output:

DB20000I The CREATE DATABASE command completed successfully.

Creando una base de datos restrictiva

La base de datos restrictiva se crea al invocar este comando.

Syntax: [En la sintaxis siguiente, "db_name" indica el nombre de la base de datos.]

db2 create database <db_name> restrictive

Example: [Para crear una nueva base de datos restrictiva con el nombre 'dos']

db2 create database two restrictive

Creando una base de datos con una ubicación diferente definida por el usuario

Cree una base de datos con el grupo de almacenamiento predeterminado "IBMSTOGROUP" en una ruta diferente. Anteriormente, invocó el comando "crear base de datos" sin ninguna ubicación definida por el usuario para almacenar o crear una base de datos en una ubicación particular. Para crear la base de datos utilizando la ubicación de la base de datos definida por el usuario, se sigue el siguiente procedimiento:

Syntax: [En la siguiente sintaxis, 'db_name' indica el 'nombre de la base de datos' y 'data_location' indica dónde se deben almacenar los datos en carpetas y 'db_path_location' indica la ubicación del controlador de 'data_location'.]

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

Example: [Para crear una base de datos llamada 'cuatro', donde los datos se almacenan en 'data1' y esta carpeta se almacena en 'dbpath1']

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

Ver archivos de directorio de bases de datos locales o del sistema

Ejecuta este comando para ver la lista de directorios disponibles en la instancia actual.

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         =

Activando base de datos

Este comando inicia todos los servicios necesarios para una base de datos en particular para que la base de datos esté disponible para su aplicación.

Syntax: ['db_name' indica el nombre de la base de datos]

db2 activate db <db_name>

Example: [Activando la base de datos 'uno']

db2 activate db one

Desactivando la base de datos

Con este comando, puede detener los servicios de la base de datos.

Syntax:

db2 deactivate db <db_name>

Example: [Para desactivar la base de datos 'uno']

db2 deactivate db one

Conectando a la base de datos

Después de crear una base de datos, para ponerla en uso, debe conectarse o iniciar la base de datos.

Syntax:

db2 connect to <database name>

Example: [Para conectar la base de datos uno a la CLI actual]

db2 connect to one

Output:

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

Verificando si la base de datos es restrictiva

Para comprobar si esta base de datos es restrictiva o no, aquí está la sintaxis:

Syntax: [En la siguiente sintaxis, 'db' indica Base de datos, 'cfg' indica configuración, 'db_name' indica el nombre de la base de datos]

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

Example: [Para comprobar si la base de datos 'una' está restringida o no]

db2 get db cfg for one | grep -i restrict

Output:

Restrict access                       = NO

Configurar el administrador de bases de datos y la base de datos

La configuración de la instancia (configuración del gestor de bases de datos) se almacena en un archivo denominado 'db2system' y la configuración relacionada con la base de datos se almacena en un archivo denominado 'SQLDBCON'. Estos archivos no se pueden editar directamente. Puede editar estos archivos utilizando herramientas que llaman a API. Con el procesador de línea de comandos, puede utilizar estos comandos.

Parámetros de configuración del administrador de base de datos

Syntax: [Para obtener la información del administrador de la base de datos de instancias]

db2 get database manager configuration
O
db2 get dbm cfg

Syntax: [Para actualizar el administrador de la base de datos de la instancia]

db2 update database manager configuration
O
db2 update dbm cfg

Syntax: [Para restablecer configuraciones anteriores]

db2 reset database manager configuration
O
db2 reset dbm cfg

Parámetros de configuración de la base de datos

Syntax: [Para obtener la información de la base de datos]

db2 get database configuration
O
db2 get db cfg

Syntax: [Para actualizar la configuración de la base de datos]

db2 update database configuration
O
db2 update db cfg

Syntax: [Para restablecer los valores configurados previamente en la configuración de la base de datos

db2 reset database configuration
O
db2 reset db cfg

Syntax: [Para comprobar el tamaño de la base de datos activa actual]

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

Example: [Para verificar el tamaño de la base de datos activada actualmente]

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

Estimación del espacio requerido para la base de datos

Para estimar el tamaño de una base de datos, se debe considerar la contribución de los siguientes factores:

  • Tablas de catálogo del sistema
  • Datos de la tabla de usuario
  • Datos de campo largo
  • Datos de objetos grandes (LOB)
  • Espacio de índice
  • Espacio de trabajo temporal
  • Datos XML
  • Espacio de archivo de registro
  • Directorio de base de datos local
  • Archivos del sistema

Verificación de las autoridades de la base de datos

Puede utilizar la siguiente sintaxis para comprobar qué autorizaciones de base de datos se otorgan a PUBLIC en la base de datos no restrictiva.

Step 1: conectarse a la base de datos con identificación de usuario de autenticación y contraseña de instancia.

Syntax: [Para conectarse a la base de datos con nombre de usuario y contraseña]

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

Example: [Para conectar “una” base de datos con el ID de usuario 'db2inst4' y la contraseña '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: Para verificar las autoridades de la base de datos.

Syntax: [La siguiente sintaxis muestra el resultado de los servicios de autoridad para la base de datos actual]

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.

Descartar base de datos

Usando el comando Drop, puede eliminar nuestra base de datos del directorio de la base de datos de la instancia. Este comando puede eliminar todos sus objetos, tablas, espacios, contenedores y archivos asociados.

Syntax: [Para eliminar cualquier base de datos de una instancia]

db2 drop database <db_name>

Example: [Para eliminar la base de datos "seis" de la instancia]

db2  drop database six

Output:

DB20000I The DROP DATABASE command completed successfully