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