0% encontró este documento útil (0 votos)
156 vistas536 páginas

CL285SL Course Guide

Cargado por

edenfray
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
156 vistas536 páginas

CL285SL Course Guide

Cargado por

edenfray
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

®

Guía del estudiante


Aspectos básicos de DB2 10.5
Administration for Windows (v1.0)
Código del curso CL285SL ERC 1.0

IBM Training
Prefacio

Edición de noviembre de 2015


AVISOS
Esta información se ha desarrollado para productos y servicios ofrecidos en EE.UU.
Es posible que IBM no ofrezca en otros países los productos, servicios o características que se describen en este documento. Póngase en
contacto con el representante local de IBM para obtener información sobre los productos y servicios disponibles actualmente en su área. Las
referencias a programas, productos o servicios de IBM no pretenden establecer ni implicar que sólo puedan utilizarse dichos productos, programas
o servicios de IBM. En su lugar, se puede utilizar cualquier producto, programa o servicio funcionalmente equivalente que no infrinja ninguno de
los derechos de propiedad intelectual de IBM. Sin embargo, es responsabilidad del cliente evaluar y verificar el funcionamiento de cualquier
producto, programa o servicio que no sea de IBM. IBM puede tener patentes o solicitudes de patentes pendientes que cubran el tema principal
descrito en este documento. La entrega de este documento no le otorga ninguna licencia sobre dichas patentes. Puede enviar consultas sobre
licencias, por escrito, a:
IBM Director of Licensing
IBM Corporation
North Castle Drive, MD-NC119
Armonk, NY 10504-1785
Estados Unidos de América
El párrafo siguiente no se aplica al Reino Unido ni a ningún otro país donde estas disposiciones sean incompatibles con la legislación vigente:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONA ESTA PUBLICACIÓN "TAL CUAL", SIN GARANTÍAS DE NINGÚN
TIPO, NI EXPLÍCITAS NI IMPLÍCITAS, INCLUYENDO PERO NO LIMITÁNDOSE A ELLAS, LAS GARANTÍAS IMPLÍCITAS DE NO
VULNERACIÓN, COMERCIALIZACIÓN O IDONEIDAD PARA UN FIN CONCRETO. Algunos países no permiten la renuncia a garantías explícitas
o implícitas en determinadas transacciones, por lo que puede que esta declaración no sea aplicable en su caso.
Esta información puede incluir imprecisiones técnicas o errores tipográficos. Periódicamente se efectúan cambios en la información aquí
contenida; estos cambios se incorporarán en nuevas ediciones de la publicación. IBM puede realizar en cualquier momento mejoras o cambios en
los productos o programas descritos en esta publicación sin previo aviso.
Cualquier referencia incluida en esta información a sitios web que no sean de IBM sólo se proporciona para su comodidad y en ningún modo
constituye una aprobación de dichos sitios web. Los materiales de dichos sitios web no forman parte de los materiales para este producto de IBM,
y el uso de dichos sitios web se hace bajo responsabilidad del Cliente.
IBM puede utilizar o distribuir cualquier información que se le proporcione en la forma que considere adecuada, sin incurrir por ello en ninguna
obligación para con el remitente. La información relacionada con productos que no son de IBM se ha obtenido de los proveedores de dichos
productos, de sus anuncios publicados o de otras fuentes de disponibilidad pública. IBM no ha comprobado estos productos y no puede confirmar
la precisión de su rendimiento, compatibilidad, ni contemplar ninguna otra reclamación relacionada con los productos que no son de IBM. Las
preguntas relacionadas con las funciones de los productos que no son de IBM deberán dirigirse a los proveedores de estos productos.
Esta información contiene ejemplos de datos e informes utilizados en el funcionamiento diario de la empresa. Para ilustrarlos de la forma más
completa posible, en los ejemplos se incluye el nombre de personas, empresas, marcas y productos. Todos los nombres son ficticios y cualquier
parecido con los nombres y direcciones utilizados por cualquier empresa real es una mera coincidencia.
MARCAS REGISTRADAS
IBM, el logotipo de IBM e ibm.com son marcas registradas o marcas comerciales registradas de International Business Machines Corp., en
muchas jurisdicciones en todo el mundo. Otros nombres de producto o servicio pueden ser marcas registradas de IBM u otras compañías.
Encontrará una lista actualizada de las marcas registradas de IBM disponibles en el sitio web www.ibm.com/legal/copytrade.shtml en el apartado
“Información sobre copyright y marcas registradas”.
Adobe y el logotipo de Adobe son marcas registradas o marcas comerciales registradas de Adobe Systems Incorporated en los Estados Unidos o
en otros países.
Java y todas las marcas registradas y logotipos basados en Java son marcas registradas y marcas comerciales registradas de Oracle y sus
filiales.
Linux es una marca registrada de Linus Torvalds en Estados Unidos o en otros países.
Microsoft, Windows y el logotipo de Windows son marcas registradas de Microsoft Corporation en Estados Unidos o en otros países.
UNIX es una marca registrada de The Open Group en Estados Unidos y en otros países.
© Copyright International Business Machines Corporation 2015.
Este documento no se puede reproducir, total o parcialmente, sin el permiso previo por escrito de IBM.
Derechos restringidos para los usuarios del Gobierno de EE.UU. - Uso, duplicación o revelación restringidos por el contrato GSA ADP Schedule con IBM
Corp.

© Copyright IBM Corp. 2015 P-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Contenido
Prefacio ............................................................................................................... P-1
Contenido ........................................................................................................... P-3
Visión general del curso ................................................................................... P-10
Convenciones utilizadas en este documento .................................................... P-12
Demostraciones ............................................................................................... P-13
Recursos de formación adicionales .................................................................. P-14
Ayuda del producto IBM ................................................................................... P-15
Unidad 1. Visión general de DB2 10 en Linux, UNIX y Windows .................. 1-1
Objetivos de la unidad ........................................................................................ 1-3
Plataformas de producto de la familia DB2 ......................................................... 1-4
DB2: la base de datos escalable ........................................................................ 1-5
Ejemplos de características y funciones de DB2 LUW Editions .......................... 1-9
Sistemas operativos compatibles con servidores DB2 10.5.............................. 1-10
Opciones de conectividad del servidor DB2 ..................................................... 1-11
Actualizaciones a la versión 10.5 desde versiones anteriores de DB2 LUW .... 1-15
Preparación para la instalación de servidores de bases de datos DB2 ............ 1-16
Métodos de instalación del software DB2 ......................................................... 1-17
Resumen de la unidad...................................................................................... 1-21
Unidad 2. Herramientas de la interfaz gráfica de usuario (GUI) y el
procesador de línea de mandatos (CLP) de DB2 .............................................. 2-1
Objetivos de la unidad ........................................................................................ 2-3
Procesador de línea de mandatos (CLP) de DB2 ............................................... 2-4
Modalidades de uso del CLP de DB2 ................................................................. 2-6
Uso de un archivo de entrada con el procesador de línea de mandatos ............ 2-9
Procesador de línea de mandatos CLPPlus ..................................................... 2-11
Ejemplo de ejecución de SQL interactivo con CLPPlus .................................... 2-13
Herramientas de la interfaz gráfica de usuario de DB2..................................... 2-14
Data Studio: perfiles de conexión a base de datos ........................................... 2-16
Data Studio: establecimiento de las opciones de configuración ....................... 2-17
Data Studio: selección de tareas para un objeto .............................................. 2-18
Data Studio: ejecución de scripts SQL ............................................................. 2-19
Data Server Manager: ejecución y ajuste de consultas SQL ............................ 2-20
Data Studio: Visual Explain para consultas SQL .............................................. 2-21
Resumen de la unidad...................................................................................... 2-22
Unidad 3. Instancia del gestor de bases de datos DB2 ................................. 3-1
Objetivos de la unidad ........................................................................................ 3-3
¿Qué es una instancia?...................................................................................... 3-4

© Copyright IBM Corp. 2015 P-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Instancia de gestor de bases de datos ............................................................... 3-6


Crear y descartar una instancia .......................................................................... 3-7
Inicio y detención de una instancia ..................................................................... 3-9
Variables de entorno y registro de DB2 ............................................................ 3-11
El mandato db2set ........................................................................................... 3-14
Comprobar las variables de registro de DB2 con SQL ..................................... 3-16
Configuración del gestor de bases de datos ..................................................... 3-17
Demostración 1: crear una nueva instancia de DB2 ......................................... 3-19
Resumen de la unidad...................................................................................... 3-28
Unidad 4. Creación de bases de datos y ubicación de los datos ................. 4-1
Objetivos de la unidad ........................................................................................ 4-3
Visión general de la creación de bases de datos ................................................ 4-4
Espacio de tabla, contenedor, extensión, página ............................................... 4-5
Grabación en contenedores ............................................................................... 4-6
Requisitos de almacenamiento de la base de datos ........................................... 4-8
Alternativas de la gestión de almacenamiento.................................................. 4-10
Sintaxis de CREATE DATABASE .................................................................... 4-14
Ejemplos de CREATE DATABASE .................................................................. 4-16
Cifrado nativo de DB2 ...................................................................................... 4-18
Completado por DB2 durante la creación de la base de datos ......................... 4-21
Almacenamiento de la vía de acceso de base de datos ................................... 4-27
Contenedores predeterminados de espacio de tabla con almacenamiento
automático........................................................................................................ 4-31
Tablas y vistas del catálogo de sistema ........................................................... 4-32
Límites del diseño de espacio de tabla: identificadores de fila.......................... 4-33
Sintaxis de CREATE TABLESPACE ................................................................ 4-35
Depósitos de almacenamiento (almacenamiento a distintas temperaturas) ..... 4-39
Creación de un depósito de almacenamiento ................................................... 4-41
Asignar un espacio de tabla a un depósito de almacenamiento ....................... 4-42
Gestionar depósitos de almacenamiento mediante ALTER STOGROUP......... 4-44
Realizar consultas en depósitos de almacenamiento con SQL mediante la
función de tabla ADMIN_GET_STORAGE_PATHS ......................................... 4-45
Listar depósitos de almacenamiento con el mandato db2pd ............................ 4-47
Alternativas de la gestión de almacenamiento: automática .............................. 4-48
ALTER TABLESPACE ..................................................................................... 4-50
Añadir o descartar vías de acceso al almacenamiento automático .................. 4-52
Uso de la vista SYSCAT.TABLESPACES ........................................................ 4-54
Cómo usar el mandato db2pd para listar las estadísticas y el estado del
espacio de tabla ............................................................................................... 4-55
Cómo usar la función MON_GET_TABLESPACE ............................................ 4-56
Mantener o listar el directorio de base de datos del sistema ............................ 4-57

© Copyright IBM Corp. 2015 P-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Configuración de base de datos ....................................................................... 4-58


Activar y desactivar la base de datos ............................................................... 4-59
Demostración 1: crear bases de datos y ubicación de los datos ...................... 4-61
Resumen de la unidad...................................................................................... 4-77
Unidad 5. Creación de objetos de base de datos........................................... 5-1
Objetivos de la unidad ........................................................................................ 5-3
Jerarquía de objetos DB2 ................................................................................... 5-4
CREATE SCHEMA ............................................................................................ 5-6
Definir esquema actual ....................................................................................... 5-9
Utilización de la sentencia Create Table........................................................... 5-10
Tablas temporales de aplicaciones .................................................................. 5-13
Ejemplo de una tabla temporal declarada ........................................................ 5-15
Ejemplo de una tabla temporal creada ............................................................. 5-17
Partición de tabla.............................................................................................. 5-19
Ejemplo de una tabla particionada por rangos.................................................. 5-21
¿Qué es DB2 con aceleración BLU? ................................................................ 5-22
Aceleración BLU: almacenamiento en columnas .............................................. 5-24
Ahorros de almacenamiento con la aceleración BLU ....................................... 5-25
Aceleración BLU: fácil de implementar y utilizar ............................................... 5-27
¿Qué sucede cuándo se crea una nueva tabla organizada en columnas? ....... 5-29
Aceleración BLU: asesor de carga de trabajo................................................... 5-30
Sentencia Create View ..................................................................................... 5-31
Sentencia Create Alias ..................................................................................... 5-33
Sentencias Create index .................................................................................. 5-35
Visión general de la integridad referencial ........................................................ 5-37
Integridad referencial: sentencia CREATE TABLE ........................................... 5-38
Consideraciones sobre la clave exclusiva ........................................................ 5-40
Restricciones de comprobación: definición ....................................................... 5-42
Creación de una sentencia desencadenante .................................................... 5-44
Gestión y consulta de datos de duración definida mediante tablas
temporales ....................................................................................................... 5-46
Cómo definir una tabla temporal de periodo de sistema ................................... 5-48
Consulta que utiliza una tabla temporal de periodo de sistema ........................ 5-50
Ejemplo de una tabla temporal de periodo de aplicación .................................. 5-52
Uso de una tabla temporal de periodo de aplicación ........................................ 5-54
Resumen de compresión de la fila de datos ..................................................... 5-56
Compresión adaptativa con DB2 10.1 .............................................................. 5-59
Ejemplos de db2look ........................................................................................ 5-61
Demostración 1: creación de objetos de base de datos ................................... 5-64
Resumen de la unidad...................................................................................... 5-78

© Copyright IBM Corp. 2015 P-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Unidad 6. Traslado de datos ............................................................................ 6-1


Objetivos de la unidad ........................................................................................ 6-3
Analizar sentencia INSERT ................................................................................ 6-4
Sintaxis del mandato EXPORT (básica) ............................................................. 6-5
Ejemplo de mandato EXPORT ........................................................................... 6-8
Sintaxis del mandato IMPORT (básica) .............................................................. 6-9
Ejemplo del programa de utilidad de importación ............................................. 6-11
Diferencias entre IMPORT y LOAD .................................................................. 6-12
Fases del procesamiento de carga ................................................................... 6-14
Proceso de carga en tablas organizadas en columnas..................................... 6-16
Sintaxis del mandato LOAD (básica) ................................................................ 6-17
Escenario LOAD............................................................................................... 6-21
Reglas y métodos para crear tablas de excepciones........................................ 6-25
Carga fuera de línea y carga en línea............................................................... 6-27
Estados de tabla............................................................................................... 6-30
Comprobar estado de carga: LOAD QUERY .................................................... 6-32
Supervisar carga: LIST UTILITIES ................................................................... 6-33
Estado Load Pending: recuperación de un error de LOAD ............................... 6-34
Estado Backup Pending: opciones COPY ........................................................ 6-36
Estado de tabla Set Integrity Pending............................................................... 6-39
Sintaxis del mandato SET INTEGRITY (básica) ............................................... 6-41
Pasos relevantes para LOAD ........................................................................... 6-43
Opción COPY de db2move .............................................................................. 6-44
Ejemplos del esquema COPY de db2move ...................................................... 6-46
Procedimiento almacenado Mover tabla en línea ............................................. 6-47
ADMIN_MOVE_TABLE: fases de procesamiento ............................................ 6-48
Métodos de procedimiento de ADMIN_MOVE_TABLE .................................... 6-49
Ejemplo: trasladar una tabla a un nuevo espacio de tabla ................................ 6-50
Uso de ADMIN_MOVE_TABLE para convertir las tablas organizadas en filas
en una tabla organizada en columnas .............................................................. 6-51
Programa de utilidad Ingest: para la introducción de datos continua ................ 6-55
Ejemplos de mandato de Ingest: Insert ............................................................ 6-58
Ejemplos de mandato de Ingest: Update .......................................................... 6-59
Cuándo es preferible utilizar INGEST y no LOAD ............................................ 6-60
Cuándo es preferible utilizar LOAD y no INGEST ............................................ 6-61
Demostración 1: traslado de datos ................................................................... 6-62
Resumen de la unidad...................................................................................... 6-73
Unidad 7. Copia de seguridad y recuperación ............................................... 7-1
Objetivos de la unidad ........................................................................................ 7-3
Métodos de recuperación de las bases de datos DB2 ........................................ 7-4

© Copyright IBM Corp. 2015 P-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Introducción al registro ....................................................................................... 7-6


Registro circular: base de datos no recuperable................................................. 7-8
Registro archivístico: base de datos recuperable ............................................. 7-10
Configurar registros de base de datos: parámetros .......................................... 7-13
Archivos del sistema relacionados con la recuperación de DB2 ....................... 7-18
Opciones del programa de utilidad de copia de seguridad (parcial).................. 7-21
Archivos de copia de seguridad........................................................................ 7-23
Sintaxis del mandato RESTORE (parcial) ........................................................ 7-25
Consideraciones sobre el espacio de tabla de copia de seguridad/
restauración ..................................................................................................... 7-27
Estado Rollforward Pending ............................................................................. 7-29
Sintaxis del mandato ROLLFORWARD............................................................ 7-30
ROLLFORWARD: ¿hasta dónde? .................................................................... 7-32
ROLLFORWARD: espacio de tabla .................................................................. 7-34
Mandato RECOVER de DB2 ............................................................................ 7-36
High Availability Disaster Recovery (HADR) ..................................................... 7-38
Soporte a varias bases de datos en espera activas.......................................... 7-40
Arquitectura de la característica DB2 pureScale .............................................. 7-44
Recursos de recuperación adicionales de DB2 ................................................ 7-46
Formación disponible sobre la recuperación avanzada en DB2 LUW .............. 7-48
Demostración 1: Copia de seguridad y recuperación ....................................... 7-49
Resumen de la unidad...................................................................................... 7-61
Unidad 8. Bloqueo y simultaneidad ................................................................ 8-1
Objetivos de la unidad ........................................................................................ 8-3
¿Por qué ejecutar un bloqueo? .......................................................................... 8-4
Objetos que pueden estar bloqueados ............................................................... 8-6
Modalidades de bloqueo de tablas ..................................................................... 8-8
Modalidades de bloqueo de filas ...................................................................... 8-11
Compatibilidad de modalidad de bloqueo ......................................................... 8-13
Selección de niveles de aislamiento ................................................................. 8-16
Niveles de aislamiento de DB2 y ANSI: cómo permitir o impedir anomalías..... 8-20
Bloqueo para disponer de acceso de solo lectura ............................................ 8-21
Cómo funciona el método "Currently Committed" (Actualmente confirmado)
para el aislamiento de CS ................................................................................ 8-23
Sentencia LOCK TABLE .................................................................................. 8-25
Establecimiento de LOCKLIST y MAXLOCKS para controlar los
escalamientos de bloqueo ................................................................................ 8-27
Espera y tiempo de espera de bloqueo ............................................................ 8-29
Utilizar db2pd para buscar las condiciones de la espera de bloqueo activa ..... 8-31
Causas y detección de puntos muertos ............................................................ 8-32
Resumen de la unidad...................................................................................... 8-34

© Copyright IBM Corp. 2015 P-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Unidad 9. Mantenimiento de bases de datos, supervisión y determinación


de problemas ...................................................................................................... 9-1
Objetivos de la unidad ........................................................................................ 9-3
Actividades de mantenimiento de la base de datos ............................................ 9-4
Ejemplos del mandato RUNSTATS .................................................................... 9-5
Utilizar REORGCHK para encontrar tablas que se beneficiarían de la
reorganización .................................................................................................... 9-7
Utilizar REORGCHK para encontrar índices que se beneficiarían de la
reorganización .................................................................................................... 9-8
Ejemplos del programa de utilidad Reorg ........................................................... 9-9
Programas de utilidad autónomos .................................................................... 9-11
Supervisión de una base de datos DB2............................................................ 9-14
db2pd: supervisar DB2 y resolver los problemas relacionados......................... 9-16
Utilizar db2pd para comprobar las estadísticas de Reorg cuando Reorg no
se puede completar .......................................................................................... 9-18
Utilizar las funciones de tabla de DB2 en sentencias SQL para la supervisión. 9-19
Utilizar la función MON_GET_TABLE para ver las estadísticas de
rendimiento de la tabla ..................................................................................... 9-22
Supervisar tiempos de espera de conexiones activas con
MON_GET_CONNECTION .............................................................................. 9-23
Mandato LIST APPLICATIONS ........................................................................ 9-24
Supervisores de sucesos de DB2..................................................................... 9-25
Crear y utilizar un supervisor de sucesos de actividad ..................................... 9-27
Informe de ejemplo del supervisor de actividad ................................................ 9-28
Optimizador de DB2 ......................................................................................... 9-29
Design Advisor ................................................................................................. 9-31
Utilizar Infosphere Optim Query Workload Tuner para realizar una estimación
de las ventajas de rendimiento de la aceleración BLU ..................................... 9-33
Herramientas del recurso EXPLAIN ................................................................. 9-35
Plan de acceso de Visual Explain para SQL..................................................... 9-37
Gestión de memoria de base de datos automática ........................................... 9-38
Configuración para archivos de diagnóstico ..................................................... 9-40
Ejemplos del mensaje db2diag.log ................................................................... 9-43
First Occurrence Data Capture (FODC) ........................................................... 9-44
db2fodc: mandato de FOCD de DB2 ................................................................ 9-46
Obtener un rastreo de DB2 mediante db2trc .................................................... 9-48
¿Necesita más información? ............................................................................ 9-49
Demostración 1: investigación del bloqueo de DB2 .......................................... 9-50
Resumen de la unidad...................................................................................... 9-63

© Copyright IBM Corp. 2015 P-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Unidad 10. Seguridad .................................................................................... 10-1


Objetivos de la unidad ...................................................................................... 10-3
Autenticación y autorización ............................................................................. 10-4
Autorización SYSADM...................................................................................... 10-8
Autorización DBADM ...................................................................................... 10-10
Autorización SECADM ................................................................................... 10-12
Otras autorizaciones de seguridad limitadas .................................................. 10-14
Métodos para administrar la seguridad en DB2 .............................................. 10-20
Separar los privilegios de seguridad de la base de datos ............................... 10-22
Jerarquías de los privilegios de seguridad de DB2 ......................................... 10-24
Sentencia GRANT: sintaxis de privilegios de tabla / vista ............................... 10-25
Utilizar los roles de base de datos en cuestiones de seguridad...................... 10-26
Utilizar grupos de sistemas en cuestiones de seguridad ................................ 10-27
Ejemplo del uso de roles para gestionar las autorizaciones ........................... 10-28
Controlar el uso de esquemas ........................................................................ 10-30
Proteger los recursos mediante programas .................................................... 10-32
Privilegios otorgados durante CREATE DATABASE ...................................... 10-33
Privilegios otorgados implícitamente .............................................................. 10-35
Vistas del catálogo de sistema para autorizaciones ....................................... 10-36
Resumen del control de accesos a filas y columnas....................................... 10-38
Ejemplo de CREATE PERMISSION ............................................................... 10-40
Crear máscara de columna ............................................................................ 10-42
Ejemplo de CREATE MASK para una columna.............................................. 10-43
Seguridad para conexiones a bases de datos ................................................ 10-44
Cómo se utiliza SSL para conexiones a bases de datos DB2 ........................ 10-46
Configuración SSL para servidores DB2 ........................................................ 10-47
Seguridad de bases de datos para sistemas de aplicaciones de tres niveles . 10-52
¿Qué es un contexto de confianza? ............................................................... 10-53
Contexto de confianza: ejemplo ..................................................................... 10-55
Resumen de la unidad.................................................................................... 10-56

© Copyright IBM Corp. 2015 P-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Visión general del curso


Visión general del prefacio
El objetivo de este curso es enseñarle a ejecutar tareas administrativas básicas en la
base de datos mediante DB2 10.5 for Linux, UNIX and Windows. Entre estas tareas, se
incluyen la creación de objetos de base de datos, como tablas, índices y vistas, y la
carga de datos en la base de datos con utilidades de DB2 como INGEST y LOAD. Se
presentarán distintos métodos de diagnóstico, como el uso de las opciones del
mandato db2pd y la supervisión mediante sentencias SQL con funciones de
supervisión de DB2. Los estudiantes aprenderán a implementar el archivado
automático de registros de bases de datos y a restaurar una base de datos a un punto
en el tiempo específico con los registros de archivado. Trataremos el bloqueo
ejecutado por DB2 y el efecto que tiene el nivel de aislamiento de aplicaciones sobre el
bloqueo y las condiciones de espera de bloqueo. Este curso ofrece un inicio rápido a
las prestaciones de administración de bases de datos DB2 para administradores con
experiencia en bases de datos relacionales.
Las demostraciones se ejecutan utilizando DB2 LUW 10.5 para Windows. En algunas
tareas de la demostración, los estudiantes tendrán la opción de completar la tarea
utilizando un procesador de línea de mandatos de DB2 o la interfaz gráfica que
proporciona IBM Data Server Manager.
Público al que va dirigido
Este es un curso de nivel intermedio para administradores de bases de datos y
personal técnico, con experiencia en otras plataformas de bases de datos relacionales
y que planifiquen, implementen y mantengan bases de datos DB2 10.5 for Linux, UNIX
and Windows.
Temas que se incluyen
Los temas que se incluyen en este curso son:
• Visión general de DB2 10 en Linux, UNIX y Windows
• Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de
mandatos (CLP) de DB2
• Instancia del gestor de bases de datos DB2
• Creación de bases de datos y ubicación de los datos
• Creación de objetos de base de datos
• Traslado de datos
• Copia de seguridad y recuperación

© Copyright IBM Corp. 2015 P-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

• Bloqueo y simultaneidad
• Mantenimiento de bases de datos, supervisión y determinación de problemas
• Seguridad
Requisitos previos del curso
Los participantes deben estar capacitados para:
• Ejecutar tareas básicas de administración de bases de datos en un sistema de
base de datos relacional
• Utilizar funciones básicas del sistema operativo, como utilidades, permisos de
archivo, sistemas de archivos jerárquicos, mandatos y editores
• Establecer las funciones del lenguaje de consulta estructurado (SQL) y crear
lenguajes de definición de datos (DDL), lenguajes de manipulación de datos
(DML) y sentencias de autorización
• Examinar conceptos y objetos básicos de las bases de datos relacionales, como
tablas, índices, vistas y uniones
• Para desarrollar estos conocimientos, consulte lo siguiente:
• Taller de SQL para DB2
• Aspectos básicos de DB2

© Copyright IBM Corp. 2015 P-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Convenciones utilizadas en este documento


Los convenios utilizados en esta guía siguen los estándares de aplicación de Microsoft
Windows, siempre que sea aplicable. Asimismo, se utilizan los siguientes convenios:
• Negrita: el estilo en negrita se utiliza en las soluciones paso a paso de las
demostraciones y los ejercicios para indicar un elemento de la interfaz de usuario
que se ha seleccionado activamente o texto que debe escribir el participante.
• Cursiva: se utiliza para hacer referencias a títulos de publicaciones.
• MAYÚSCULAS: Todos los nombres de archivos, nombres de tabla, nombres de
columna y nombres de carpeta aparecen en esta guía exactamente como
aparecen en la aplicación.
Para mantener las mayúsculas coherentes con esta guía, escriba el texto
exactamente como aparece.

© Copyright IBM Corp. 2015 P-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Demostraciones
Formato de las demostraciones
Las demostraciones se han diseñado con el objetivo de proporcionar experiencia
práctica en algunos de los conceptos y conocimientos clave incluidos en el
contenido de la clase.
Entre las demostraciones de este curso se incluyen las siguientes:
• Creación de una nueva instancia de DB2
• Creación de una nueva base de datos DB2 y un conjunto de objetos de
almacenamiento para dar soporte a las tablas de muestra utilizadas en este
curso
• Creación de un conjunto de objetos de bases de datos, como tablas, índices,
vistas, integridad referencial y restricciones de comprobación
• Carga de datos de ejemplo en tablas mediante utilidades de DB2 como INGEST
y LOAD.
• Configuración de una base de datos de DB2 para archivar los archivos de
registro y dar soporte a la recuperación de la base de datos utilizando mandatos
como BACKUP y RECOVER.
• Uso de mandatos de diagnóstico de DB2, como db2pd, para observar los
bloqueos adquiridos por las sentencias SQL e investigar una condición de
espera de bloqueo entre dos aplicaciones simultáneas.
Las demostraciones utilizan DB2 LUW 10.5 en Windows. En muchas de las tareas de
la demostración, los estudiantes pueden utilizar una interfaz de línea de mandatos de
DB2 o la interfaz gráfica proporcionada por el software IBM Data Server Manager
1.1.1.

© Copyright IBM Corp. 2015 P-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Recursos de formación adicionales


• Visite el apartado de Formación y certificaciones del producto IBM Analytics en el
sitio web de IBM para obtener más información:
• Formación guiada por un instructor en una clase o en línea
• Formación de autoaprendizaje, según sus necesidades y planificación
• Un programa de estudios completo y caminos de formación que le permitirán
identificar los cursos que más se adapten a sus necesidades
• Programa de certificación de IBM Analytics
• Otros recursos que mejorarán su éxito con el software de IBM Analytics
• Con respecto al URL relacionado con los requisitos de formación señalados
antes, añada los siguientes marcadores:
• Cartera de productos Information Management:
http://www-01.ibm.com/software/data/education/
• Cartera de productos de Inteligencia predictiva y empresarial/Gestión del
rendimiento/Riesgos:
http://www-01.ibm.com/software/analytics/training-and-certification/

© Copyright IBM Corp. 2015 P-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

Ayuda del producto IBM


Tipo de Cuándo se utiliza Ubicación
ayuda

Orientada a Está trabajando con el producto y Producto IBM - Enlace de ayuda


las tareas necesita ayuda específica orientada
a las tareas.

Manuales Desea utilizar motores de búsqueda Inicio/Programas/Producto


para imprimir para encontrar información. A IBM/Documentación
(.pdf) continuación, puede imprimir
páginas seleccionadas, una sección
o todo el manual.
Utilice los manuales en línea paso a
paso (.pdf) si desea aprender a
completar una tarea, pero prefiere
leerlo en un manual.
Los manuales en línea paso a paso
contienen la misma información que
la ayuda en línea, pero el método de
presentación es diferente.

IBM en la Si desea acceder a lo siguiente:


web
• IBM - Formación y certificaciones • http://www-01.ibm.com/
software/analytics/training-
and-certification/
• Soporte en línea • http://www-947.ibm.com/
support/entry/portal/
Overview/Software
• Sitio web de IBM • http://www.ibm.com

© Copyright IBM Corp. 2015 P-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Prefacio

© Copyright IBM Corp. 2015 P-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 1. Visión general de DB2 10 en Linux, UNIX y Windows

Visión general de DB2 10 en


Linux, UNIX y Windows

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

© Copyright IBM Corp. 2015 1-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Objetivos de la unidad
• Describir las plataformas del sistema compatibles con la familia de
productos DB2
• Comparar las características disponibles con las distintas ediciones del
producto DB2 LUW
• Seleccionar el software de cliente de DB2 adecuado para dar soporte
al cliente de aplicaciones o a los sistemas de servidor
• Elegir un método para instalar su edición del producto DB2 LUW y
planificar las migraciones de los servidores DB2 LUW existentes a la
última versión

Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 1-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Plataformas de producto de la familia DB2

DB2 for Linux, UNIX and Windows


Sistemas operativos
• AIX
• Linux

DB2
• Windows
DB2
• Solaris
• HP

DB2 para z/OS DB2 for i

DB2 DB2

Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

Plataformas de producto de la familia DB2


El software de base de datos DB2 ofrece el mejor rendimiento del sector y total
fiabilidad con la plataforma que elija, sea Linux, UNIX, Windows o z/OS.
DB2 for Linux, UNIX and Windows: el producto DB2 LUW proporciona el mejor
rendimiento del sector para cargas de trabajo mixtas en sistemas distribuidos, por lo
que ofrece una eficacia única en dotación de plantilla y almacenamiento.
DB2 for z/OS: el software de base de datos DB2 for z/OS es el modelo de referencia
en fiabilidad, disponibilidad y escalabilidad. Se ha optimizado para SOA, CRM y
depósito de datos.
DB2 for i (antes denominado DB2 for i5/OS): es un sistema de gestión de bases de
datos relacionales (RDBMS) avanzado de 64 bits que utiliza las características de alto
rendimiento, virtualización y eficiencia energética de IBM Power Systems. Miembro de
la innovadora familia de productos de DB2 de IBM, DB2 for i es compatible con una
amplia gama de aplicaciones y entornos de desarrollo y ofrece un coste de propiedad
bajo debido a sus exclusivas funciones de informática autónoma (autogestión).
Este curso se centra en el producto DB2 LUW para servidores de bases de datos
Linux, UNIX y Windows.

© Copyright IBM Corp. 2015 1-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

DB2: la base de datos escalable


DB2 Advanced Enterprise Server Edition Sin límites
Adecuado para cargas de trabajo transaccionales, de almacén y mixtas. de CPU
Esta edición se proporciona también con un juego completo de o memoria
herramientas de almacén, herramientas Optim™ e IBM® Data Studio.
DB2 Enterprise Server
Adecuado para cargas de trabajo transaccionales y mixtas.
DB2 Advanced Workgroup Edition Límites de
Esta edición presenta un servidor de datos adecuado para el despliegue 16 núcleos
en un entorno de departamentos, grupos de trabajo o mediana empresa. de CPU,
Esta edición se proporciona también con un juego completo de 128 GB
herramientas de almacén, herramientas Optim™ e IBM® Data Studio. de memoria
DB2 Workgroup Server
Ideal para entornos de departamentos, grupos de trabajo o medianas
empresas.
DB2 Express 8 núcleos
Servidor de datos DB2, precio de nivel de entrada, pymes de CPU
64 GB
DB2 Express-C 2 núcleos
Proporciona todas las prestaciones principales de DB2 sin cargos. Es de CPU
fácil de utilizar e integrar. 16 GB
Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

DB2: la base de datos escalable


Existen muchas ediciones de los productos de bases de datos DB2, cada una de ellas
con una combinación única de características y funcionalidades.
DB2 Advanced Enterprise Server Edition
DB2 Advanced Enterprise Server Edition es adecuado para cargas de trabajo
transaccionales, de almacén y mixtas. Esta edición no marca límites de tamaño para el
procesador, la memoria o las bases de datos, lo que la convierte en la opción ideal
para cargas de trabajo de cualquier tamaño. Esta edición incluye todas las funciones
que se encuentran en DB2 Enterprise Server Edition, junto con tablas organizadas en
columnas, bases de datos en memoria, compresión de datos, gestión de cargas de
trabajo, réplica y funcionalidad de particionamiento distribuido. Esta edición se
proporciona también con un juego completo de herramientas de almacén,
herramientas Optim™ e IBM® Data Studio. Esta opción solo instala el servidor DB2.
Las herramientas incluidas deben instalarse por separado.
DB2 Advanced Enterprise Server Edition está disponible con los modelos de precio por
unidad de valor de procesador o por instalación única de usuario autorizado. Es
necesario adquirir una licencia de usuario independiente para cada usuario autorizado
del producto, con una compra mínima de 25 usuarios por cada 100 unidades de valor
de procesador.

© Copyright IBM Corp. 2015 1-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

DB2 Advanced Workgroup Server Edition


DB2 Advanced Workgroup Server Edition es parecido a DB2 Advanced Enterprise
Server Edition, salvo en que sí establece límites en el tamaño del procesador, la
memoria y la base de datos. Esta edición presenta un servidor de datos adecuado para
el despliegue en un entorno de departamentos, grupos de trabajo o mediana empresa.
DB2 Advanced Workgroup Server Edition está disponible con los modelos de precio
por unidad de valor de procesador o por instalación única de usuario autorizado. Es
necesario adquirir una licencia de usuario independiente para cada usuario autorizado
del producto, con una compra mínima de 25 usuarios por cada 100 unidades de valor
de procesador. DB2 Advanced Workgroup Server Edition se puede desplegar en
entornos de servidor de Linux, UNIX y Windows y utiliza hasta 16 núcleos y 128 GB de
memoria.
DB2 Enterprise Server Edition
DB2 Enterprise Server Edition es adecuado para cargas de trabajo transaccionales y
mixtas. Esta edición no marca límites de tamaño para el procesador, la memoria o las
bases de datos, lo que la convierte en la opción ideal para cargas de trabajo de
cualquier tamaño. Esta edición incluye todas las funciones que se encuentran en DB2
Workgroup Server Edition, además de almacenamiento a distintas temperaturas, tablas
de consulta materializadas, clúster multidimensional, paralelismo de consulta,
concentrador de conexión, reutilización del plan de acceso y uso compartido de la
exploración. Esta edición se proporciona también con herramientas de
almacenamiento y herramientas de IBM Data Studio. Es necesario instalarlas todas por
separado.
DB2 Enterprise Server Edition está disponible con los modelos de precio por unidad de
valor de procesador o por instalación única de usuario autorizado. Es necesario
adquirir una licencia de usuario independiente para cada usuario autorizado del
producto, con una compra mínima de 25 usuarios por cada 100 unidades de valor de
procesador.
DB2 Workgroup Server Edition
Ideal para entornos de departamentos, grupos de trabajo o medianas empresas.
DB2 Workgroup Server Edition contiene todas las funcionalidades necesarias para
procesar las cargas de trabajo transaccionales con eficacia. Esta edición establece
límites para el tamaño del procesador, la memoria y la base de datos, lo que hace que
sea ideal para cargas de trabajo de tamaño medio, como las que se encuentran en un
departamento. Esta edición incluye la herramienta IBM Data Studio, que requiere una
instalación independiente.

© Copyright IBM Corp. 2015 1-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

DB2 Workgroup Server Edition se puede desplegar en entornos de servidor de Linux,


UNIX y Windows y utiliza hasta 16 núcleos y 128 GB de memoria. DB2 Workgroup
Server Edition está restringido a un servidor físico autónomo con un número máximo
específico de unidades de valor de procesador en función de la cantidad total de
núcleos de procesador, y su tipo, según determina la Guía de licencias de IBM
Express® Middleware™ disponible en
ftp://ftp.software.ibm.com/software/smb/pdfs/LicensingGuide.pdf. Si se ha otorgado al
producto una licencia por socket de uso limitado, puede realizar el despliegue en
servidores de hasta cuatro sockets. Es necesario adquirir una licencia de usuario
independiente para cada usuario autorizado de este producto, con una compra mínima
de cinco usuarios por servidor.
DB2 Express Server Edition
Edición totalmente funcional de DB2 con un atractivo precio de nivel de entrada para
pequeñas y medianas empresas.
DB2 Express Server Edition es un servidor de datos DB2 totalmente funcional que
proporciona unos atractivos precios de nivel de entrada para el mercado de la pequeña
y mediana empresa (pyme). Se ofrece con modelos de precio por usuario autorizado,
por unidad de valor o por servidor virtual de uso limitado, a fin de proporcionar
opciones que satisfagan las necesidades de las pymes. Se entrega con un
empaquetado sencillo y resulta fácil de instalar, de manera transparente, en una
aplicación. DB2 Express Server Edition también puede disponer de una licencia de
servidor virtual de uso limitado con un plazo fijo de un año. Aunque resulta fácil de
actualizar a otras ediciones de productos de base de datos DB2, DB2 Express Server
Edition incluye las mismas características de gestionabilidad autónomas que las
ediciones más escalables. No es necesario cambiar el código de aplicación para
actualizarlo, solo tiene que instalar el certificado de licencia que se va a actualizar.
Cargos del programa: DB2 Express Server Edition se puede desplegar en los sistemas
operativos más habituales en las pymes, como Linux, Windows o Solaris, e incluye
pureXML®, federación de servicios web, federación homogénea DB2, replicación
homogénea SQL y compresión de copia de seguridad. Si la licencia es una suscripción
de un año (DB2 Express Server Edition FTL), incluirá también una característica de
alta disponibilidad, siempre que se disponga de licencias tanto para el servidor principal
como para el secundario en el clúster de alta disponibilidad. Si la licencia se obtiene
bajo la métrica de servidor virtual de uso limitado, DB2 Express Server Edition utiliza
hasta ocho núcleos en el servidor. El servidor de datos DB2 no puede utilizar más de
64 GB de memoria por servidor. Es necesario adquirir una licencia de usuario
independiente para cada usuario autorizado de este producto, con una compra mínima
de cinco usuarios por servidor.

© Copyright IBM Corp. 2015 1-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

DB2 Express-C
Proporciona todas las prestaciones principales de DB2 sin cargos. Es fácil de utilizar e
integrar.
DB2 Express-C es una edición gratuita, de nivel de entrada, del servidor de datos DB2
para la comunidad de desarrolladores y socios. Se ha diseñado para activarse en
cuestión de minutos, es fácil de utilizar e integrar, incluye características de gestión
automática e incorpora todas las prestaciones principales de DB2 for Linux, UNIX and
Windows, como pureXML. Las soluciones que se han desarrollado utilizando DB2
Express-C se pueden desplegar fácilmente utilizando ediciones de DB2 más
escalables sin realizar modificaciones en el código de aplicación.
Cargos del programa: DB2 Express-C se puede utilizar para las tareas de desarrollo y
despliegue sin cargo alguno, además de poder distribuirse con soluciones de terceros
sin necesidad de pagar derechos a IBM. Se puede instalar en sistemas físicos o
virtuales sin CPU ni RAM y se ha optimizado para utilizar un máximo de 2 núcleos y 16
GB de memoria. DB2 Express-C se ha renovado para incluir los principales objetivos
de la versión y se acompaña de asistencia basada en la comunidad en línea. Los
usuarios que necesiten un soporte más formal, acceso a fixpacks o prestaciones
adicionales, como prestaciones de réplica y agrupación en clúster de alta
disponibilidad, pueden adquirir una suscripción anual opcional para DB2 Express
Server Edition (FTL), o bien actualizar a otras ediciones de DB2.

© Copyright IBM Corp. 2015 1-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Ejemplos de características y funciones de DB2 LUW


Editions
Express C Express Workgroup Advanced Enterprise Advanced
Workgroup Server Enterprise

Optimización de
No No No Sí No Sí
almacenamiento

DB2 pureScale No No Orientado a Sí Orientado a Sí

HADR No Sí Sí Sí Sí Sí

Tablas organizadas
No No Orientado a Sí Orientado a Sí
en columnas (BLU)

Almacenamiento a
No No No Sí Sí Sí
distintas temperaturas

Tablas temporales Sí Sí Sí Sí Sí Sí

Tablas particionadas
No No Sí Sí Sí Sí
por rangos

Gestión de carga de
trabajo de DB2 No No No Sí No Sí

IBM Data Studio Sí Sí Sí Sí Sí Sí

Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

Ejemplos de características y funciones de DB2 LUW Editions


En la tabla, se muestran algunas de las características y funciones clave para los
servidores DB2, que indican cuáles están disponibles con las distintas ediciones de
DB2.
La característica de soporte para tablas organizadas en columnas de la aceleración
BLU está incluida en la edición Advanced Workgroup Server y la edición Advanced
Enterprise Server. Se puede añadir aceleración BLU a Workgroup Server Edition o
Enterprise Server Edition añadiendo la oferta IBM DB2 BLU Acceleration In-Memory.
Las ediciones Advanced Workgroup Server y Advanced Enterprise Server incluyen
soporte para el clúster DB2 pureScale. La funcionalidad DB2 pureScale se puede
añadir a Workgroup Server Edition o Enterprise Server Edition añadiendo la oferta IBM
DB2 Business Application Continuity.
Si quiere obtener más información sobre estos productos y ver la información
relacionada sobre marketing y licencias, consulte la página de productos de DB2 en
http://www.ibm.com/software/data/db2/linux-unix-windows.

© Copyright IBM Corp. 2015 1-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Sistemas operativos compatibles con servidores DB2 10.5


Sistemas operativos AIX Sistemas operativos Windows
• AIX V6.1 • Plataformas de la estación de trabajo
• AIX V7.1 Windows
 Windows 7 (32 bits y 64 bits)
 Windows 8 (32 bits y 64 bits)
• Plataformas de Windows Server
Sistemas operativos Linux  Windows 2008 (64 bits)
• Red Hat Enterprise Linux (RHEL) 5,6,7  Windows 2012 (64 bits)
• SUSE Linux Enterprise Server (SLES) 10, 11, 12
• Ubuntu 12.0.4 & 14.04 LTS

Sistemas operativos HP-UX


• HP-UX 11i v3 para HP

Sistemas operativos Solaris


• Solaris 10 y 11 para servidores UltraSPARC o SPARC64
• Solaris 10 para servidores x64
Consulte el IBM Knowledge Center para ver los listados detallados y los niveles
de servicio necesarios

Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

Sistemas operativos compatibles con servidores DB2 10.5


En la imagen, se muestran los sistemas operativos compatibles con los servidores de
bases de datos DB2 10.5.
A partir de DB2 versión 10.5, se ha interrumpido el soporte de algunos sistemas
operativos.
Ya no se admiten los siguientes sistemas operativos ni las distribuciones Linux:
• Red Hat Enterprise Linux 5.6
• Ubuntu 10.4 LTS
• Windows 2003
• Windows 2003 R2
• Windows 2008
• Windows XP
• Windows Vista
Ya no se admite la siguiente arquitectura:
• Sistemas basados en el procesador POWER4 (clientes de datos y servidores
DB2)

© Copyright IBM Corp. 2015 1-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Opciones de conectividad del servidor DB2

Servidores
Administración de IBM Data Server Client DB2
bases de datos Visual Tools (Data Studio)

y Desarrollo de Herramienta de administración


de réplica
aplicaciones CLP
Todas las aplicaciones

IBM Data Server Runtime


Client
Línea de mandato de réplica
CLP
Todas las aplicaciones

Usuarios de IBM Data Server


la aplicación Driver Package
Todas las aplicaciones
IBM Data Server Driver
DB2 CLPPlus
for JDBC and SQLJ
IBM Data Server Driver Aplicaciones Java
for ODBC and CLI

Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

Opciones de conectividad del servidor DB2


Tipos de controlador y cliente de servidor de datos de IBM
Hay varios tipos de controladores y clientes de IBM® disponibles para el servidor de
datos. Cada cliente y cada controlador proporcionan un tipo de soporte concreto.
Los controladores y clientes de IBM son los siguientes:
• IBM Data Server Driver Package (controlador DS)
• IBM Data Server Driver for JDBC and SQLJ
• IBM Data Server Driver for ODBC and CLI
• IBM Data Server Runtime Client
• IBM Data Server Client
Puede añadir la funcionalidad DB2 Connect™ a cualquier cliente o controlador.

© Copyright IBM Corp. 2015 1-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

IBM Data Server Driver Package


IBM Data Server Driver Package es una solución de despliegue ligero que proporciona
soporte de tiempo de ejecución a las aplicaciones sin que sea necesario instalar Data
Server Runtime Client o Data Server Client. Este controlador tiene una ocupación muy
pequeña y se ha diseñado para que lo redistribuyan distribuidores de software
independientes (ISV) y para ser utilizado en la distribución de aplicaciones en
escenarios de despliegue en masa, habituales en las grandes empresas.
IBM Data Server Driver Package incluye las prestaciones siguientes:
• DB2® Command Line Processor Plus (CLPPlus) para la creación, edición y
ejecución dinámicas de scripts y sentencias SQL.
• Soporte para aplicaciones que utilizan ODBC, CLI, PHP o Ruby para acceder a
las bases de datos.
• En sistemas operativos Windows, soporte para aplicaciones que utilizan OLE DB
o .NET para acceder a las bases de datos. Además, este paquete de controlador
está disponible como imagen instalable. Hay módulos de fusión disponibles que
se pueden utilizar para incluir con facilidad el controlador en una instalación
basada en Windows Installer.
• Soporte para applets y aplicaciones cliente escritas en lenguaje Java™ utilizando
JDBC y para SQL incorporado para Java (SQLJ).
• Soporte para ejecutar aplicaciones SQL incorporadas. No se proporcionan
prestaciones de precompilador ni enlace.
• Archivos de cabecera de aplicaciones para reconstruir los controladores PHP,
Ruby, Python y Perl. Los controladores Python y Perl no están disponibles en
IBM Data Server Driver Package; pero puede descargar y compilar estos
controladores mediante archivos de cabecera.
• Soporte para la CLI interactiva de DB2, con el mandato db2cli. Soporte para
rastreos DRDA®, con el mandato db2drdat.
• Soporte para servidores IBM Informix®.

© Copyright IBM Corp. 2015 1-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

IBM Data Server Driver for JDBC and SQLJ


IBM Data Server Driver for JDBC and SQLJ es el controlador predeterminado para las
funciones definidas por el usuario y los procedimientos almacenados de Java. Este
controlador proporciona soporte a los applets y las aplicaciones de cliente Java que
utilizan JDBC para acceder a servidores locales o remotos y que utilizan SQLJ para el
SQL estático incluido en aplicaciones Java. Este controlador es un requisito previo para
IBM InfoSphere® Optim™ pureQuery® Runtime. Este producto proporciona soporte
estático para los applets y las aplicaciones de cliente Java, además de habilitar el
acceso optimizado a los datos utilizando la API pureQuery. Además, este producto es
compatible con un entorno de desarrollo integrado (IDE) completo para el desarrollo de
aplicaciones de base de datos Java mediante IBM Data Studio.
IBM Data Server Driver for ODBC and CLI
Data Server Driver for ODBC and CLI es una solución ligera diseñada para
despliegues de ISV. Este controlador, denominado también controlador CLI,
proporciona soporte de tiempo de ejecución a las aplicaciones utilizando la API de
ODBC o la API de CLI, sin que sea necesario instalar Data Server Client o Data Server
Runtime Client. Este controlador solo está disponible como archivo tar, no como
imagen instalable. Los mensajes solo están en inglés.
IBM Data Server Runtime Client
A fin de obtener soporte de procesador de línea de mandatos (CLP) y soporte de
cliente básico para ejecutar y desplegar aplicaciones, utilice IBM Data Server Runtime
Client. IBM Data Server Runtime Client ofrece una forma de ejecutar aplicaciones en
bases de datos remotas. No se proporcionan herramientas de interfaz gráfica de
usuario con IBM Data Server Runtime Client.
Entre las prestaciones, se incluyen las siguientes:
• Todas las funcionalidades de IBM Data Server Driver Package, excepto las
bibliotecas y las herramientas de desarrollo.
• El procesador de línea de mandatos de DB2 para emitir mandatos. El CLP ofrece
también un método sencillo para administrar servidores de forma remota.
• El programa de línea de mandatos ASNCLP, para configurar y administrar todos
los programas de réplica para la duplicación de Q y la duplicación SQL.
• Compatibilidad con protocolos comunes de comunicación de red: TCP/IP y
canales de comunicación designados.

© Copyright IBM Corp. 2015 1-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

• Una ocupación de despliegue más pequeña que requiere un tamaño de imagen


de instalación más pequeño y menos espacio en disco que IBM Data Server
Client.
• Un catálogo que almacena información para conectarse a bases de datos y
servidores.
IBM Data Server Client
En el caso de aplicaciones que utilizan DB2CI, use IBM Data Server Client. IBM Data
Server Client incluye todas las funcionalidades de IBM Data Server Runtime Client,
además de funcionalidades para administrar la base de datos, desarrollo de
aplicaciones mediante una API como ODBC, CLI, .NET o JDBC y una configuración
cliente/servidor.
Entre las prestaciones, se incluyen las siguientes:
• Capacidad para borrar la imagen de IBM Data Server Client y, así, reducir el
tamaño de la imagen de instalación del sistema operativo Windows.
• Herramientas de réplica para configurar y administrar todos los programas de
réplica para la duplicación de Q y la duplicación SQL. Estas herramientas son el
Centro de duplicación, el programa de línea de mandatos ASNCLP y la
herramienta Supervisor de alerta de duplicación. El Centro de duplicación solo
está disponible en sistemas operativos Linux y Windows.
• Documentación introductoria para nuevos usuarios.
• Herramientas de Visual Studio.
• Archivos de cabecera de aplicaciones.
• Precompiladores para distintos lenguajes de programación.
• Soporte para enlaces.
• Ejemplos y guías de aprendizaje.

© Copyright IBM Corp. 2015 1-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Actualizaciones a la versión 10.5 desde versiones


anteriores de DB2 LUW
• Actualizar desde DB2 9.7, 9.8 o 10.1 directamente a DB2 10.5
• Para cualquier versión anterior a DB2 9.7, se recomienda actualizar al
fixpack más reciente de DB2 9.7 y, luego, a 10.5

DB2 LUW anterior


a 9.7

DB2 LUW 9.8


DB2 LUW 9.7 DB2 LUW 10.1
pureScale

DB2 LUW 10.5

Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

Actualizaciones a la versión 10.5 desde versiones anteriores de DB2 LUW


La actualización a DB2 versión 10.5 requiere que se actualicen los servidores DB2
existentes. La actualización del servidor DB2 requiere que se instale una copia de DB2
versión 10.5 y que, a continuación, se actualicen todas las instancias y las bases de
datos para poder ejecutarlas en la misma copia de DB2 versión 10.5.
Puede actualizar directamente las instancias y bases de datos existentes de DB2
versión 9.7, DB2 versión 9.8 o DB2 versión 10.1 a DB2 versión 10.5.
En los sistemas operativos Windows, tiene la opción de actualizar automáticamente
una copia existente anterior a DB2 versión 10.5. Si decide actualizar la copia existente
de DB2 durante la instalación, solo tiene que actualizar las bases de datos tras la
instalación.
Si los servidores DB2 se están ejecutando en una versión anterior a DB2 versión 9.7,
en primer lugar actualícelos a DB2 versión 9.7 o DB2 versión 10.1 y, a continuación,
actualícelos a DB2 versión 10.5. Se recomienda actualizar al último fixpack de DB2
versión 9.7.
Para pasar a un entorno DB2 pureScale, actualice a DB2 versión 9.7 y, a continuación,
a DB2 versión 10.5. Para actualizar a DB2 versión 9.8 como versión intermedia, es
necesario que antes actualice a DB2 versión 9.7.

© Copyright IBM Corp. 2015 1-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Preparación para la instalación de servidores de bases de


datos DB2
• Utilice el mandato db2prereqcheck para comprobar los requisitos previos
de software y firmware de una versión específica de DB2
• Requisitos previos de instalación:
 Asegúrese de que el sistema cumpla con los requisitos necesarios de sistema
operativo, hardware, software, comunicaciones, disco y memoria
 Existen distintos requisitos previos para los sistemas operativos AIX, HP-UX, Linux,
Solaris y Windows
• Requisitos de disco y memoria:
 Asegúrese de que contar con la cantidad de espacio en disco adecuada para un
entorno de DB2
 El asistente para la configuración de DB2 proporciona una estimación del tamaño
dinámico en función de los componentes seleccionados durante una instalación
típica, compacta o personalizada
 En sistemas operativos Linux y UNIX, se recomienda contar con 2 GB de espacio
libre en el directorio /tmp
 Los requisitos de memoria dependen del tamaño y la complejidad del sistema de
base de datos, la actividad de la base de datos y el número de clientes
 Como mínimo, un sistema de base de datos DB2 requiere 256 MB de RAM, se
recomienda 1 GB de RAM para conseguir un mejor rendimiento.
Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

Preparación para la instalación de servidores de bases de datos DB2


Antes de instalar el servidor de bases de datos DB2, asegúrese de que se cumplan los
requisitos previos necesarios, como los de espacio de paginación, memoria y disco.
Hay otros requisitos que dependen del sistema operativo.
También puede instalar varias copias de DB2 en el mismo sistema.
En el caso de sistemas Windows, es distinto instalar una o varias copias de DB2. Cada
copia de DB2 se puede encontrar en el mismo nivel de código o en niveles de código
distintos. Una copia de DB2 es un grupo de productos de DB2 instalados en la misma
ubicación.
En sistemas Linux y UNIX, cada copia de DB2 se puede encontrar en el mismo nivel
de código o en niveles de código distintos. La instalación de usuario root de productos
DB2 se puede efectuar en la vía de acceso de instalación que prefiera.
En IBM Knowledge Center for DB2 LUW, se ofrecen pasos de planificación detallados
previos a la instalación para cada uno de los tipos de sistema operativo admitidos.

© Copyright IBM Corp. 2015 1-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Métodos de instalación del software DB2

Método de instalación Windows UNIX / Linux


Asistente para la configuración de DB2 Sí Sí
Instalación utilizando el archivo de Sí Sí
respuestas
Mandato db2_install No Sí
Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

Métodos de instalación del software DB2


Con DB2 10.5, puede instalar distintas ediciones de producto de DB2 utilizando los
mismos archivos de soporte de instalación. Puede actualizar algunas ediciones de
DB2 a otra edición con solo actualizar el archivo de licencia. No es necesario que
vuelva a instalar el producto de base de datos DB2.
En la lista siguiente, se describen los métodos de instalación de DB2.
• Asistente para la configuración de DB2
El asistente para la configuración de DB2 es un instalador de la GUI disponible
en sistemas operativos Linux, UNIX y Windows. El asistente para la
configuración de DB2 ofrece una interfaz fácil de utilizar para instalar productos
de base de datos DB2 y para ejecutar las tareas iniciales de configuración.
El asistente para la configuración de DB2 también puede crear instancias de
DB2 y archivos de respuesta que se pueden utilizar para duplicar esta instalación
en otras máquinas.
En sistemas operativos Linux y UNIX, se necesita un servidor X para visualizar el
asistente para la configuración de DB2.

© Copyright IBM Corp. 2015 1-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Nota: en el caso de instalaciones no root en sistemas operativos Linux y


UNIX, solo puede existir una instancia de DB2. El asistente para la
configuración de DB2 crea automáticamente la instancia como usuario no
root.
• Instalación del archivo de respuestas
Un archivo de respuestas es un archivo de texto que contiene valores de
configuración. El programa de configuración de DB2 lee el archivo y la
instalación se realiza según los valores especificados.
La instalación del archivo de respuestas también se denomina instalación
silenciosa.
Otra ventaja de los archivos de respuesta es que ofrecen acceso a parámetros
que no se pueden definir utilizando el asistente de instalación de DB2.
En el caso de los sistemas operativos Linux y UNIX, es posible que, si incluye la
imagen de instalación de DB2 en su propia aplicación, esta reciba información
sobre el progreso de la instalación y solicitudes del instalador en un formato
legible por ordenador. Este comportamiento lo controla la palabra clave del
archivo de respuestas INTERACTIVE.
Existen distintas formas de crear un archivo de respuestas:
• Mediante el generador de archivos de respuestas
Puede utilizar el generador de archivos de respuestas para crear un archivo
de respuestas que replique una instalación existente. Por ejemplo, puede
instalar un cliente de servidor de datos de IBM y configurar al cliente en su
totalidad y, a continuación, generar un archivo de respuestas para replicar la
instalación y la configuración del cliente en otros sistemas.
• Mediante el asistente para la configuración de DB2
El asistente para la configuración de DB2 puede crear un archivo de
respuestas basado en las selecciones efectuadas mientras avanza en el
asistente para la configuración de DB2. Sus selecciones se registran en un
archivo de respuestas que se puede guardar en una ubicación del sistema. Si
selecciona una instalación de base de datos particionada, se generarán dos
archivos de respuesta, uno para el sistema propietario de la instancia y otro
para los sistemas participantes.

© Copyright IBM Corp. 2015 1-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Una ventana de este método de instalación es que puede crear un archivo de


respuestas sin efectuar una instalación. Esta característica puede resultar útil
para capturar las opciones requeridas para instalar el producto de base de
datos DB2. El archivo de respuestas se puede utilizar más adelante para
instalar el producto de base de datos DB2 en función de las opciones
especificadas.
Puede exportar un perfil de cliente o servidor con el mandato db2cfexp para
guardar la configuración de cliente o servidor. Importe el perfil utilizando el
mandato db2cfimp. Un perfil de cliente o servidor exportado con el mandato
db2cfexp también se puede importar durante la instalación del archivo de
respuestas si se utiliza la palabra clave CLIENT_IMPORT_PROFILE.
Tiene que exportar el perfil de cliente o servidor tras ejecutar la instalación y
catalogar los orígenes de datos.
• Mediante la personalización de los archivos de respuestas de ejemplo
proporcionados para cada producto de base de datos DB2
Una alternativa al uso del generador de archivos de respuestas o el asistente
para la configuración de DB2 para crear un archivo de respuestas pasa por
modificar manualmente un archivo de respuestas de ejemplo. Los archivos de
respuestas de ejemplo se proporcionan en el DVD del producto de base de
datos DB2. Los archivos de respuestas de ejemplo proporcionan información
sobre todas las palabras clave válidas de cada producto.
• Mandato db2_install (solo para sistemas operativos Linux y UNIX)
El mandato db2_install instala todos los componentes del producto de base de
datos DB2 que se haya especificado, con soporte para la interfaz en inglés.
Para seleccionar otros idiomas para el soporte, utilice el parámetro -L. No
puede seleccionar ni borrar componentes.
Aunque el mandato db2_install instala todos los componentes del producto de
base de datos DB2 especificado, no crea grupos o usuarios, ni instancias, ni
configuraciones. Este método de instalación podría ser el preferido en
aquellos casos en los que la configuración se efectúa tras la instalación. Para
configurar el producto de base de datos DB2 mientras lo instala, puede utilizar
el asistente para la configuración de DB2.
En el caso de los sistemas operativos Linux y UNIX, es posible que, si incluye
la imagen de instalación de DB2 en su propia aplicación, esta reciba
información sobre el progreso de la instalación y solicitudes del instalador en
un formato legible por ordenador.

© Copyright IBM Corp. 2015 1-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Este método de instalación requiere configuración manual después del


despliegue de los archivos de producto.
Información: el mandato db2_install está en desuso y es posible que se
elimine en próximas versiones.

© Copyright IBM Corp. 2015 1-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
U n i d a d 1 V i s i ó n g e n e r a l d e D B 2 1 0 e n L i n u x , U N I X y W i n d o ws

Resumen de la unidad
• Describir las plataformas del sistema compatibles con la familia de
productos DB2
• Comparar las características disponibles con las distintas ediciones del
producto DB2 LUW
• Seleccionar el software de cliente de DB2 adecuado para dar soporte
al cliente de aplicaciones o a los sistemas de servidor
• Elegir un método para instalar su edición del producto DB2 LUW y
planificar las migraciones de los servidores DB2 LUW existentes a la
última versión

Visión general de DB2 10 en Linux, UNIX y Windows © Copyright IBM Corporation 2015

Resumen de la unidad

© Copyright IBM Corp. 2015 1-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2. Herramientas de la interfaz gráfica de usuario (GUI) y el
procesador de línea de mandatos (CLP) de DB2

Herramientas de la interfaz
gráfica de usuario (GUI) y el
procesador de línea de
mandatos (CLP) de DB2

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

© Copyright IBM Corp. 2015 2-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Objetivos de la unidad
• Utilizar el procesador de línea de mandatos de DB2 para ejecutar
mandatos de DB2, sentencias SQL y scripts de mandato
• Invocar el procesador de línea de mandatos CLPPlus para conectar
las bases de datos y para definir, editar y ejecutar sentencias, scripts y
mandatos
• Describir las herramientas de la interfaz gráfica de usuario disponibles
compatibles con la administración de bases de datos DB2 y la
ejecución SQL con servidores DB2 LUW

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 2-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Procesador de línea de mandatos (CLP) de DB2

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Procesador de línea de mandatos (CLP) de DB2


Con el procesador de línea de mandatos, puede emitir:
• Sentencias SQL
• Sentencias XQuery (con el prefijo XQUERY)
• Mandatos de DB2
• Mandatos del sistema operativo
El procesador de línea de mandatos funciona así:
• El mandato del procesador de línea de mandatos (en cualquier caso) se escribe
en el indicador de mandatos.
• El mandato se envía al shell de mandatos pulsando la tecla ENTER.
• La salida se dirige automáticamente al dispositivo de salida estándar.
• Se admiten tanto la conexión como la redirección.
• Se envía al usuario una notificación que indica si se ha finalizado correctamente
o no.
• Tras la ejecución del mandato, el control vuelve al indicador de mandatos del
sistema operativo y el usuario puede seguir introduciendo mandatos.

© Copyright IBM Corp. 2015 2-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

• Si se llama al procesador de línea de mandatos con una opción de entrada de


archivos, establecerá automáticamente el registro especial CLIENT APPLNAME
en nombre de archivo de CLP.

© Copyright IBM Corp. 2015 2-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Modalidades de uso del CLP de DB2

Modalidad no
interactiva
db2 connect to musicdb
db2 "select * from syscat.tables" more
(las comillas podrían ser necesarias)

Modalidad interactiva

db2
db2=> connect to musicdb
db2=> select * from syscat.tables
Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Modalidades de uso del CLP de DB2


Añada a todos los mandatos o solicitudes del CLP el prefijo db2, o bien utilice el
CLP en modalidad interactiva escribiendo db2 y pulse Intro. En la modalidad
interactiva, el usuario puede escribir los mandatos del CLP sin necesidad de
añadirles el prefijo db2.
Sugerencia: Si utiliza el CLP sin estar en modalidad interactiva en una
plataforma Linux/UNIX, acuérdese de colocar entre comillas la sentencia o el
mandato, en caso de que contengan caracteres especiales.
Para emitir sentencias XQuery en el CLP, añada a las sentencias la palabra clave
XQUERY como prefijo.
La modalidad interactiva no le permite utilizar la función de conexión (piping) ni otras
funciones del sistema operativo en el nivel de mandato del CLP interactivo. Para
ejecutar los mandatos del sistema operativo sin salir de la modalidad interactiva, emita
!<operating-system-command>.

© Copyright IBM Corp. 2015 2-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

En la modalidad interactiva, el historial de mandatos se visualiza al especificar history


(o la forma abreviada h). Se permiten dos variaciones:
• reverse (r) crea una lista en orden inverso, es decir, con lo más reciente
primero
• num (como 5) limita la lista, por ejemplo, a las últimas cinco entradas del historial
En estos ejemplos, se presupone que ha especificado primero db2start, luego un
mandato “list active databases” y, por último, ? sql11111:
db2 => h
1 db2start
2 list active databases
3 ? sql11111
4 h
db2 => h r
5 h r
4 h
3 ? sql11111
2 list active databases
1 db2start
db2 => h r 3
6 h r 3
5 h r
4 h
También existe un mandato edit (e) que habilita la edición de un mandato anterior.
Puede editar el mandato utilizando el número de la lista del historial, por ejemplo, e 2.
Si no se especifica ningún número, se edita el último mandato.
Tras editar el mandato y cerrar el editor, el mandato editado se visualiza en la ventana
del CLP y se pregunta al usuario:
Do you want to execute the above command? (y/n)
Si indica y, se ejecutará el mandato tal y como se ha editado.
Con runcmd (r) puede volver a ejecutar un mandato ya ejecutado. Puede hacerlo
utilizando el número de la lista del historial, por ejemplo, r 3. Si no se especifica
ningún número, se vuelve a ejecutar el último mandato.

© Copyright IBM Corp. 2015 2-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Si un mandato que está introduciendo supera el límite permitido en el indicador de


mandatos, utilice una \ (barra inclinada invertida) (en Linux/UNIX) como carácter de
continuación de línea. Si quiere un espacio en blanco entre el último carácter de la
siguiente línea y el primer carácter de la siguiente, no se olvide de codificar un espacio
en blanco antes de la barra inclinada invertida. Puede que prefiera utilizar el distintivo
del CLP -t, en lugar de la \ (barra inclinada invertida). Indica que la sentencia del CLP
termina con un ; (punto y coma).
En su salida, el CLP representa el valor nulo de SQL en forma de guion (-). Si la
columna es numérica, el guion se coloca a la derecha de la columna. Si la columna no
es numérica, el guion se coloca a la izquierda.
Nota: en la modalidad interactiva, no se pueden utilizar mandatos del sistema
operativo debido al prefijo db2 =>.

© Copyright IBM Corp. 2015 2-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Uso de un archivo de entrada con el procesador de línea de


mandatos
Editar create.tab

--comment: db2 -svtf create.tab

connect to sample;

create table tab3


(name varchar(20) not null,
phone char(40),
salary dec(7,2));

select * from tab3;

commit work;

connect reset;

db2 -svtf create.tab f: leer sentencias del archivo


v: repetir el texto de mandato
t: el archivo contiene la terminación(;)
de la sentencia
s: detener ejecución de errores
Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Uso de un archivo de entrada con el procesador de línea de mandatos


En la imagen, se aprecia cómo se podría utilizar el procesador de línea de mandatos
de DB2 para ejecutar una serie de mandatos de DB2 o sentencias SQL. Imagine que
tiene un gran conjunto de sentencias DDL en un archivo que puede incluir muchos
objetos de bases de datos, como tablas, índices y vistas. El procesador de línea de
mandatos de DB2 se puede utilizar para ejecutar estas sentencias utilizando el archivo
de texto.
Por ejemplo, podría utilizar un editor para crear un archivo denominado create.tab.
Los comentarios se señalan con una línea que empieza con dos guiones (--).

© Copyright IBM Corp. 2015 2-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Se puede utilizar un punto y coma para señalar el final de una sentencia SQL si el
archivo se ejecuta con la opción de mandato -t.
• En la modalidad no interactiva, ejecute el archivo con db2 -svtf create.tab. Dado
que db2 no aparece codificado en el archivo de entrada, solo se podrán codificar
mandatos DB2 en el archivo de entrada.
• En la modalidad no interactiva, el mandato para ejecutar los mandatos en el
archivo de entrada debe empezar por db2.
• La opción -s indica que se detenga la ejecución si se produce un error.
• La opción -v indica que se debe repetir el mandato actual en la pantalla del
supervisor.
• La opción -t indica que las sentencias acaban con un punto y coma.
• La opción -f indica que la entrada del mandato se lee de un archivo de
entrada denominado create.tab.

© Copyright IBM Corp. 2015 2-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Procesador de línea de mandatos CLPPlus


• Soporte para establecer conexiones con bases de datos si se proporcionan
un ID y una contraseña de usuario de base de datos.
• Almacenamiento intermedio que se puede utilizar para almacenar scripts,
fragmentos de script, sentencias SQL, sentencias SQL PL o sentencias
PL/SQL para su edición y ejecución. El texto del almacenamiento intermedio
se puede listar, imprimir, editar o ejecutar como script por lotes.
• Se puede utilizar un completo conjunto de mandatos de procesador para
definir las variables y las cadenas que se pueden almacenar en el
almacenamiento intermedio.
• Conjunto de mandatos que recuperan información sobre la base de datos y
los objetos de base de datos.
• Capacidad para almacenar la salida de los almacenamientos intermedios o el
almacenamiento intermedio en un archivo.
• Varias opciones para formatear la salida de scripts y consultas.
• Soporte para ejecutar rutinas definidas por el sistema.
• Soporte para ejecutar mandatos de sistema operativo.
• Opción para grabar la salida de mandatos ejecutados, sentencias o scripts.
Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Procesador de línea de mandatos CLPPlus


El procesador de línea de mandatos plus (CLPPlus) proporciona una interfaz de
usuario de línea de mandatos que se puede utilizar para conectar las bases de datos y
para definir, editar y ejecutar sentencias, scripts y mandatos.
CLPPlus incluye las siguientes características:
• Soporte para establecer conexiones con bases de datos si se proporcionan un ID
y una contraseña de usuario de base de datos.
• Un almacenamiento intermedio que se puede utilizar para almacenar scripts,
fragmentos de script, sentencias SQL, sentencias SQL PL o sentencias PL/SQL
para su edición y ejecución. El texto del almacenamiento intermedio se puede
listar, imprimir, editar o ejecutar como script por lotes.
• Se puede utilizar un completo conjunto de mandatos de procesador para definir
las variables y las cadenas que se pueden almacenar en el almacenamiento
intermedio.
• Un conjunto de mandatos que recuperan información sobre la base de datos y
los objetos de base de datos.
• Capacidad para almacenar la salida de los almacenamientos intermedios o el
almacenamiento intermedio en un archivo.

© Copyright IBM Corp. 2015 2-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

• Varias opciones para formatear la salida de scripts y consultas.


• Soporte para ejecutar rutinas incorporadas.
• Soporte para ejecutar mandatos de sistema operativo.
• Opción para grabar la salida de mandatos ejecutados, sentencias o scripts.
• El CLPPlus complementa las funciones proporcionadas por el procesador de
línea de mandatos (CLP).
El CLPPlus solo admite la autenticación SERVER, SERVER_ENCRYPT y
KERBEROS.

© Copyright IBM Corp. 2015 2-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Ejemplo de ejecución de SQL interactivo con CLPPlus

Las sentencias de la columna


pueden definir el formato
de salida

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Ejemplo de ejecución de SQL interactivo con CLPPlus


En la imagen, se muestra un ejemplo de una sesión de línea de mandatos de CLPPlus.
La conexión a base de datos se ha establecido a través de una serie de símbolos del
sistema. Las sentencias de la columna se utilizan para limitar el tamaño de la salida de
varias columnas de la tabla del catálogo de DB2 que son mucho más grandes que los
resultados que es necesario visualizar.
El texto inicial de la sentencia SQL contenía un error que genera un código SQL y un
mensaje de error.
Se ejecuta una versión corregida del texto SQL, que produce un resultado.

© Copyright IBM Corp. 2015 2-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Herramientas de la interfaz gráfica de usuario de DB2

IBM Data Studio 4.1.1 se ha ampliado IBM Data Server Manager


para dar soporte a DB2 V10.5 Data Server Manager Enterprise Edition ofrece
El cliente de Data Studio simplifica la prestaciones avanzadas, como las siguientes:
administración de bases de datos DB2 con • Supervisión ampliada
asistentes de tarea para ejecutar tareas de
administración de bases de datos.
• Gestión de la configuración centralizada
• Inicio o detención de una instancia o base • Gestión del rendimiento refinada
de datos • Ajuste de consultas con consejo experto
• Configuración de una instancia o base de
datos
• Copia de seguridad, restauración, IBM InfoSphere Optim Query Workload
recuperación de una base de datos o Tuner
espacio de tabla
Ayuda a los administradores de bases de datos y
• Descarga y carga de datos en una tabla los desarrolladores de SQL optimizar el
• Creación y ejecución de scripts SQL rendimiento de las sentencias SQL.
• Conversión de tablas organizadas en filas • Análisis de las cargas de trabajo de SQL para
en tablas organizadas en columnas con hacer una estimación de las ventajas de
aceleración BLU rendimiento derivadas de convertir las tablas
• Últimas prestaciones BLU, incluidas las organizadas en filas y pasarlas a aceleración
tablas duplicadas BLU

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Herramientas de la interfaz gráfica de usuario de DB2


Hay varias herramientas que trabajan de manera conjunta para proporcionar diversas
funciones de desarrollo y de administración de bases de datos.
IBM Data Studio sustituye a DB2 Control Center e incluye prestaciones nuevas:
• Aplicación de cambios en objetos de base de datos con un plan de cambios y
gestión de cambios utilizando la ingeniería avanzada a partir de un modelo
• Desarrollo de aplicaciones Java que utilice métodos anotados de pureQuery
• Copia de objetos de una base de datos a otra.
• Ejecución de mandatos en distintos objetos y gestión de miembros de clúster en
entornos DB2 pureScale.
• Creación y gestión de trabajos, y planificación de scripts de mandato que
configuren notificaciones de correo electrónico para informar sobre la finalización
de los trabajos.
• Supervisión del estado y la disponibilidad de las bases de datos, así como del
estado de los programas de utilidades que operan en bases de datos utilizando
la consola web a la que acceden desde el cliente completo de Data Studio.

© Copyright IBM Corp. 2015 2-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

• Data Studio 4.1.1 incluye soporte para las funciones más recientes de DB2 LUW,
como:
• Soporte para aceleración BLU, como conversión de tablas organizadas en
filas en tablas organizadas en columnas.
• Soporte para tablas duplicadas (MQT mantenidas mediante réplicas)
InfoSphere Optim Query Workload Tuner for DB2 for Linux, UNIX, and Windows
reduce los costes y mejora el rendimiento, ya que ofrece consejo experto acerca de la
redacción de consultas de alta calidad y la mejora del diseño de la base de datos. Sus
asesores, muy fáciles de utilizar, ayudan a los desarrolladores a escribir consultas SQL
más eficaces.
• Reduce los costes y los riesgos, ya que permite a los desarrolladores ajustar el
SQL durante el desarrollo, mientras los problemas todavía se pueden solucionar
sin incurrir en grandes gastos y antes de que se generen costosos problemas de
rendimiento o paradas.
• Se puede utilizar para recomendar el pase de tablas organizadas en filas a
aceleración BLU y así reducir los costes de la carga de trabajo SQL.
• Opera en un entorno de desarrollo conocido de Eclipse y presenta una
integración sencilla y puntos de lanzamiento naturales en IBM Data Studio.
• Agiliza el análisis de ajuste de consultas proporcionando recomendaciones y
consejo experto.
• Fomenta la colaboración entre desarrolladores y administradores de bases de
datos.

IBM Data Server Manager es una plataforma integrada de herramientas de gestión


de bases de datos para DB2 for Linux, UNIX and Windows. Data Server Manager
está disponible en dos ediciones:

• IBM Data Server Manager Base Edition


Data Server Manager Base Edition ofrece prestaciones de supervisión de
rendimiento básicas y administración de bases de datos sin coste alguno.
• IBM Data Server Manager Enterprise Edition
Data Server Manager Enterprise Edition ofrece prestaciones avanzadas,
como supervisión ampliada, gestión de configuración centralizada, gestión de
rendimiento refinada y ajuste de consultas con consejo experto. Data Server
Manager Enterprise Edition se ofrece de manera conjunta con las ediciones
avanzadas de DB2 o DB2 Performance Management Offering para ediciones
no avanzadas de DB2.

© Copyright IBM Corp. 2015 2-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Data Studio: perfiles de conexión a base de datos

Definir conexión
a base de datos
Definir nombre
de usuario y
contraseña

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Data Studio: perfiles de conexión a base de datos


El producto Data Studio utiliza perfiles de conexión para efectuar tareas de
administración de base de datos.
Cuando se crea una base de datos DB2, se crea un nuevo perfil de conexión. Puede
definir nuevos perfiles de conexión para acceder a las bases de datos existentes de
DB2.
El perfil de conexión incluye la información de red necesaria para acceder a los
servidores de bases de datos DB2, como nombres de host TCP/IP y números de
puerto. El perfil de conexión también puede incluir el ID de usuario y, si se quiere, la
contraseña que se utilizará para la conexión con la base de datos.

© Copyright IBM Corp. 2015 2-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Data Studio: establecimiento de las opciones de


configuración

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Data Studio: establecimiento de las opciones de configuración


La vista Administration Explorer de Data Studio se puede utilizar para revisar y
actualizar el valor de configuración de una base de datos DB2 o una instancia de DB2.
Las aplicaciones muestran el valor activo y actual para cada opción y también los
cambios pendientes que entrarán en vigor cuando se reinicie la base de datos o la
instancia. Puede ver si el parámetro puede entrar en vigor de inmediato o si el cambio
se aplazará al siguiente reinicio.
Puede obtener una vista previa del mandato DB2 UPDATE generado y, a
continuación, decidir si quiere continuar y ejecutar el mandato para cambiar los valores
de configuración.

© Copyright IBM Corp. 2015 2-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Data Studio: selección de tareas para un objeto

Seleccionar la tarea
para un objeto de
base de datos

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Data Studio: selección de tareas para un objeto


Una vez se haya conectado a la base de datos, la vista Administration Explorer de
Data Studio le permitirá seleccionar una categoría de objetos de base de datos que
gestionar, como tablas, índices o espacios de tabla.
Al efectuar la selección, se genera una lista de los objetos de base de datos actuales
de este tipo.
Después de seleccionar un objeto concreto, como una tabla, puede utilizar los menús
para seleccionar la tarea que se va a realizar. En el caso de una tabla, tiene la opción
de examinar los contenidos. Puede optar por cargar datos nuevos, descargar datos o
seleccionar ALTER para realizar cambios en la definición de tabla.
La opción MANAGE proporciona acceso a funciones como RUNSTATS y SET
INTEGRITY.

© Copyright IBM Corp. 2015 2-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Data Studio: ejecución de scripts SQL

Se selecciona un Iniciar la ejecución


perfil de conexión
para la ejecución

Es posible editar
las sentencias
SQL y comprobar
su sintaxis

Script SQL Los


resultados se
pueden visualizar

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Data Studio: ejecución de scripts SQL


Con Data Studio, puede crear con facilidad nuevos scripts SQL o abrir los archivos de
script SQL previamente guardados.
Se asignan perfiles de conexión para decidir qué base de datos se va a utilizar para
procesar el script SQL. Esto hace que resulte más sencillo ejecutar un script SQL en
varias bases de datos, ya que es posible que quiera probar el script con una base de
datos de prueba antes de utilizarlo con datos de producción.
Puede iniciar la ejecución del script SQL utilizando el icono Run SQL.
Data Studio ofrece un método sencillo para revisar los resultados de la ejecución de
script.
Esta función puede utilizarse para sustituir muchas de las tareas que se han utilizado
previamente con la aplicación Command Editor, ahora en desuso.

© Copyright IBM Corp. 2015 2-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Data Server Manager: ejecución y ajuste de consultas SQL


Se selecciona un perfil de
conexión a base de datos
Iniciar la ejecución para la ejecución

Es posible editar
las sentencias SQL
y comprobar su
Script SQL Los sintaxis
resultados se
pueden visualizar

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Data Server Manager: ejecución y ajuste de consultas SQL


Los archivos que contienen sentencias SQL se pueden cargar en el editor SQL de
Data Server Manager. También puede especificar una o varias sentencias SQL en el
editor. La opción Run se puede utilizar para empezar la ejecución de las sentencias
SQL.
La herramienta le permite ver los resultados generados por las sentencias ejecutadas.
El editor SQL también permite efectuar una comprobación de sintaxis para sentencias
SQL.

© Copyright IBM Corp. 2015 2-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Data Server Manager: Visual Explain para consultas SQL

Visual Explain muestra los pasos del plan de acceso,


la secuencia y los costes estimados de la ejecución

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Data Studio: Visual Explain para consultas SQL


Si una sentencia SQL se encuentra en el editor SQL de Data Server Manager, puede
pulsar el botón Explain para ver la sentencia utilizando un informe Visual Explain, que
muestra el plan de acceso seleccionado por el optimizador de DB2 para procesar una
sentencia SQL.
También existe un icono de botón Tune que proporciona asistencia al ajuste de
rendimiento para sentencias SQL.
La vista de ejemplo de Visual Explain muestra tres tablas que se unen utilizando
operaciones de unión HASH.

© Copyright IBM Corp. 2015 2-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 2 Herramientas de la interfaz gráfica de usuario (GUI)
y el procesador de línea de mandatos de DB2

Resumen de la unidad
• Utilizar el procesador de línea de mandatos de DB2 para ejecutar
mandatos de DB2, sentencias SQL y scripts de mandato
• Invocar el procesador de línea de mandatos CLPPlus para conectar
las bases de datos y para definir, editar y ejecutar sentencias, scripts y
mandatos
• Describir las herramientas de la interfaz gráfica de usuario disponibles
compatibles con la administración de bases de datos DB2 y la
ejecución SQL con servidores DB2 LUW

Herramientas de la interfaz gráfica de usuario (GUI) y el procesador de línea de mandatos (CLP) de DB2 © Copyright IBM Corporation 2015

Resumen de la unidad

© Copyright IBM Corp. 2015 2-22


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3. Instancia del gestor de bases de datos DB2

Instancia del gestor de bases


de datos DB2

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

© Copyright IBM Corp. 2015 3-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Objetivos de la unidad
• Especificar las características clave de una instancia
• Crear y descartar una instancia de DB2
• Utilizar los mandatos db2start y db2stop para gestionar una instancia
de DB2
• Visualizar y definir las variables de registro de DB2
• Describir y modificar la configuración del gestor de bases de datos

Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 3-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

¿Qué es una instancia?


PRODUCTO DB2
Instancia_1 Instancia_2

DBM CFG DBM CFG

DB CFG DB CFG

Catálogo DB_1 REGISTRO Catálogo DB_3 REGISTRO

DB CFG

Catálogo DB_2 REGISTRO

Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

¿Qué es una instancia?


Una instancia es un entorno de gestión de bases de datos lógicas en el que catalogar
las bases de datos y establecer parámetros de configuración. Según sus necesidades,
puede crear más de una instancia en el mismo servidor físico y proporcionar un
entorno de servidor de base de datos exclusivo a cada instancia.
En el caso de instalaciones no root en sistemas operativos UNIX y Linux, se crea una
sola instancia durante la instalación del producto de DB2. No se pueden crear
instancias adicionales.
Si utiliza varias instancias, podrá:
• Utilizar una instancia para un entorno de desarrollo y otra para un entorno de
producción.
• Adecuar una instancia a un entorno concreto.
• Restringir el acceso a la información confidencial.
• Controlar la asignación de autoridades SYSADM, SYSCTRL y SYSMAINT a
cada instancia.

© Copyright IBM Corp. 2015 3-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

• Optimizar la configuración del gestor de base de datos para cada instancia.


• Limitar el impacto en caso de que se produzca un error en una instancia. Si esto
sucediese, solo se verá afectada una instancia. Las otras seguirán funcionando
con normalidad.
Si utiliza varias instancias, necesitará:
• Recursos del sistema (memoria virtual y espacio en disco) adicionales para cada
instancia.
• Más administración, debido a las instancias adicionales que gestionar.
El directorio de instancia almacena toda la información que pertenece a una instancia
de base de datos. No puede cambiar la ubicación del directorio de instancia una vez
creado. El directorio contiene:
• El archivo de configuración del gestor de base de datos
• El directorio de base de datos del sistema
• El directorio de nodos
• El archivo de configuración de nodo (db2nodes.cfg)
• Cualquier otro archivo que contenga información de depuración, como el volcado
de registros o excepciones o la pila de llamadas para los procesos de bases de
datos DB2.
En la imagen, se muestra que una instancia proporciona la base necesaria para dar
soporte a una base de datos DB2. Una instancia puede dar soporte a una base de
datos o a varias. La instancia proporciona gestión de bases de datos, mientras que la
base de datos proporciona la gestión de datos. Cada base de datos tiene su propia
configuración, un conjunto de tablas de catálogo y un conjunto de registros de
transacciones.

© Copyright IBM Corp. 2015 3-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Instancia de gestor de bases de datos


Un servidor de bases de
datos podría dar soporte a Servidor de base de datos
varias instancias de DB2

Una instancia de DB2 Una instancia de DB2 puede


podría gestionar una sola gestionar varias bases de
base de datos datos

Gestor de bases de datos inst1 Gestor de bases de datos inst2


Base de datos 1 Base de datos 1 Base de datos 2

Espacio de tabla A Espacio de


tabla B
Tabla 1 Tabla 2 Tabla 3 Tabla 4

conexión con
Aplicación de usuario
localde acceso+...
Vía
DB2INSTANCE designa la
DB2INSTANCE=inst1 instancia "actual"
Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

Instancia de gestor de bases de datos


En esta diapositiva, se muestra el uso de varias instancias de DB2 y cómo se define
una tabla en una única base de datos DB2, que se define en una única instancia de
DB2.
Un servidor de bases de datos DB2 puede dar soporte a varias instancias de DB2.
Cada base de datos DB2 pertenece a una instancia específica de DB2. En DB2 LUW,
cada tabla relacional está definida en uno o varios espacios de tabla, que pertenecen a
una única base de datos DB2.
Puede utilizar una única instancia de DB2 para dar soporte a una aplicación de
producción y utilizar otra instancia de DB2 para dar soporte al desarrollo o las pruebas.
Las instancias se pueden ejecutar en distintas versiones o niveles de fixpack de DB2
LUW.
El nombre de una base de datos debe ser exclusivo en una instancia, pero el mismo
nombre podría utilizarse en otra instancia de DB2 del mismo servidor de base de
datos.
Existe el concepto de instancia "actual". La variable DB2INSTANCE define la instancia
de DB2 actual. Esto afecta al proceso de mandatos. Por ejemplo, el mandato GET
DBM CFG de DB2 devolverá la configuración de la instancia actual, mientras que el
mandato UPDATE DBM CFG cambiará las opciones de la instancia actual.

© Copyright IBM Corp. 2015 3-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Crear y descartar una instancia


• CREATE (distinto en Linux/UNIX y Windows):
 ¿Se cumplen los requisitos previos?
 Crea la instancia
 Crea el subdirectorio SQLLIB
 Crea los directorios necesarios en el subdirectorio SQLLIB
 Crea DBM CFG con los valores predeterminados
db2icrt –u <ID_delimitado> <nombre_instancia> (UNIX/Linux)
db2icrt <nombre_instancia> (Windows)

• DESCARTAR:
 Es necesario detener la instancia y no está permitido que las aplicaciones se
conecten a las bases de datos de esta instancia
 No elimina (descarta) las bases de datos
 Elimina la instancia
db2idrop <nombre_instancia>

Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

Crear y descartar una instancia


Aunque se haya creado una instancia como parte de la instalación del gestor de base
de datos, es posible que las necesidades del negocio le exijan crear instancias
adicionales.
Si pertenece al grupo administrativo en Windows, o si tiene autorización de usuario root
en sistemas operativos Linux o UNIX, puede añadir instancias adicionales. El sistema
donde añada la instancia se convertirá en el sistema propietario de la instancia (nodo
cero). Asegúrese de añadir instancias en un sistema donde resida un servidor de
administración de DB2. Los ID de instancia no deben ser de root ni tener una
contraseña caducada.
Restricciones:
• En sistemas operativos UNIX y Linux, no se pueden crear instancias adicionales
para instalaciones no root.
• Si se utilizan ID de usuario existentes para crear instancias de DB2, será
necesario asegurarse de que los ID de usuario:
• No estén bloqueados
• No tengan contraseñas caducadas

© Copyright IBM Corp. 2015 3-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Para añadir una instancia utilizando la línea de mandatos: especifique el mandato


db2icrt nombre_instancia.
Si crea una instancia en un servidor AIX, tiene que proporcionar el ID de usuario
delimitado, por ejemplo:
DB2DIR/instance/db2icrt -u db2fenc1 db2inst1
Si utiliza el mandato db2icrt para añadir otra instancia de DB2, tiene que proporcionar
el nombre de inicio de sesión del propietario de instancia y especificar, si lo desea, el
tipo de autenticación de la instancia. El tipo de autenticación se aplica a todas las
bases de datos creadas bajo dicha instancia. El tipo de autenticación es una sentencia
que indica dónde se realizará la autenticación de los usuarios.
Para descartar una instancia root, emita el mandato db2idrop. Para descartar
instancias no root, tiene que desinstalar el producto de base de datos DB2.
Para eliminar una instancia root utilizando la línea de mandatos:
1. Detenga todas las aplicaciones que estén utilizando la instancia en ese
momento.
2. Detenga el procesador de línea de mandatos ejecutando los mandatos de
finalización en cada ventana de mandato.
3. Detenga la instancia ejecutando el mandato db2stop.
4. Realice una copia de seguridad del directorio de instancia indicado por la
variable de registro DB2INSTPROF.
En los sistemas operativos UNIX y Linux, puede realizar una copia de
seguridad de los archivos en el directorio INSTHOME/sqllib (donde INSTHOME
es el directorio de inicio del propietario de la instancia). Por ejemplo, podría
querer guardar el archivo de configuración del gestor de base de datos,
db2systm, el archivo db2nodes.cfg, las funciones definidas por el usuario (UDF)
o aplicaciones de procedimiento almacenado delimitadas.
5. Solo en el caso de sistemas operativos UNIX y Linux, cierre la sesión como
propietario de la instancia e iníciela como usuario con autoridad de usuario root.
6. Emita el mandato db2idrop. Por ejemplo:
db2idrop NombreInst
donde NombreInst es el nombre de la instancia que se va a descartar.
El mandato db2idrop elimina la entrada de la instancia de la lista de instancias y el
subdirectorio sqllib que se encuentra debajo del directorio de inicio del propietario de la
instancia.

© Copyright IBM Corp. 2015 3-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Inicio y detención de una instancia


• Para conectarse a una base de datos, la instancia de DB2 debe
haberse iniciado.
• Si se detiene una instancia de DB2, todas las bases de datos de la
instancia dejarán de estar disponibles para las conexiones de la
aplicación.

db2start db2stop

Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

Inicio y detención de una instancia


Inicio de la instancia en sistemas UNIX y Linux:
Es posible que tenga que iniciar o detener una base de datos DB2 mientras realiza
operaciones de negocio habituales. Por ejemplo, tiene que iniciar una instancia para
poder ejecutar las tareas siguientes: conectarse a una base de datos de la instancia,
precompilar una aplicación, enlazar un paquete a una base de datos o acceder a
bases de datos del host.
Antes de iniciar una instancia en su sistema operativo Linux o UNIX:
1. Inicie la sesión con un nombre o ID de usuario que tenga autoridad SYSADM,
SYSCTRL o SYSMAINT en la instancia. También puede iniciarla como
propietario de la instancia.
2. Ejecute el script de inicio como se indica a continuación. INSTHOME es el
directorio de inicio de la instancia que quiere utilizar:
. INSTHOME/sqllib/db2profile (para Bourne o Korn shell)
source INSTHOME/sqllib/db2cshrc (para C shell)Procedimiento

© Copyright IBM Corp. 2015 3-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Para iniciar la instancia:


• En la línea de mandatos, especifique el mandato db2start. El gestor de bases de
datos DB2 aplica el mandato a la instancia actual.
• Desde IBM Data Studio, abra el asistente de tareas para iniciar la instancia.
En el caso de servidores DB2 basados en Windows, el usuario tiene que tener el
privilegio correcto, según lo definido por el sistema operativo Windows para iniciar un
servicio Windows, para poder iniciar correctamente la instancia de base de datos DB2
como servicio. La cuenta de usuario puede formar parte del grupo de Administradores,
Operadores de servidor o Usuarios experimentados. Si la seguridad ampliada está
habilitada, solo los miembros de los grupos DB2ADMNS y Administradores pueden
iniciar la base de datos de forma predeterminada.
De forma predeterminada, el mandato db2start inicia la instancia de la base de datos
DB2 como servicio Windows. Para ejecutar la instancia de base de datos DB2 en
Windows como proceso, solo hay que especificar el parámetro /D en el mandato
db2start. La instancia de base de datos DB2 también se puede iniciar como servicio si
se utiliza el panel de control o el mandato NET START.
Detención de instancias con db2stop:
Es posible que tenga que detener la instancia actual del gestor de bases de
datos.
1. Inicie la sesión o conéctese a una instancia con un nombre o ID de usuario que
tenga autoridad SYSADM, SYSCTRL o SYSMAINT en la instancia. También
puede iniciar sesión como propietario de la instancia.
2. Visualice todas las aplicaciones y usuarios que estén conectados a la base de
datos que quiere detener. Para asegurarse de que no hay ninguna aplicación
vital o crítica en ejecución, utilice el mandato list applications. Necesitará tener
autoridad SYSADM, SYSCTRL o SYSMAINT para esta actividad.
3. Desconecte todas las aplicaciones y usuarios de la base de datos. Necesitará
autoridad SYSADM o SYSCTRL para ello.
4. Si las sesiones del procesador de línea de mandatos están conectadas a una
instancia, tiene que ejecutar el mandato TERMINATE para finalizar cada sesión
antes de ejecutar el mandato db2stop.
5. Desde la línea de mandatos, especifique el mandato db2stop. El gestor de
bases de datos DB2 aplica el mandato a la instancia actual.

© Copyright IBM Corp. 2015 3-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Variables de entorno y registro de DB2


• Las variables permiten la personalización del proceso de tiempo de ejecución
de DB2 para que se adecúe a las necesidades específicas de la aplicación
• Variables para una configuración común básica
 DB2COMM: se debe definir como TCPIP para habilitar la comunicación de
cliente tcp/ip
db2set db2comm=tcpip
 DB2FODC: esta variable de registro controla un conjunto de parámetros
relacionados con la resolución de problemas utilizados en FODC
• Algunas variables modifican el procesamiento interno de DB2
 DB2_REDUCED_OPTIMIZATION puede ajustar el proceso de optimización
de DB2
• DB2_WORKLOAD se puede definir para proporciona una agrupación
específica de varias variables de registro con valores predefinidos
 Valores de DB2_WORKLOAD: 1C, CM, COGNOS_CS, FILENET_CM,
INFOR_ERP_LN, MAXIMO, MDM, SAP, TPM, WAS, WC o WP
 Si DB2_WORKLOAD se ha definido en ANALYTICS, DB2 configurará
bases de datos para los procesos de aceleración BLU con tablas
organizadas en columnas
Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

Variables de entorno y registro de DB2


DB2 proporciona varias variables de registro y variables de entorno que debería saber
activar. Las opciones se pueden establecer a nivel Global (servidor) o de instancia de
DB2.
Normalmente, la instancia tiene que reiniciarse tras cambiar las variables de registro.
Utilice los registros de perfil para controlar las variables de entorno desde un sistema.
Se proporcionan distintos niveles de soporte a través de los diferentes perfiles.
Una base de datos DB2 se ve afectada por los siguientes registros de perfil:
• El registro de perfil a nivel de instancia de DB2 contiene las variables de registro
para una instancia. Los valores definidos en este registro alteran temporalmente
su configuración en el registro global.
• El registro de perfil a nivel global de DB2 contiene los valores que se utilizan si no
se ha definido una variable de registro para una instancia. Todas las instancias
que pertenecen a una copia concreta de DB2 Enterprise Server Edition pueden
acceder a este registro.
La mayoría de las variables de entorno se establecen en los registros de perfil de base
de datos DB2 mediante el mandato db2set. Las pocas variables que quedan fuera de
los registros de perfil requieren distintos mandatos, según el sistema operativo.

© Copyright IBM Corp. 2015 3-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Para utilizar el mandato db2set, asegúrese de disponer de los privilegios necesarios


para definir las variables de registro.
• En sistemas operativos Linux y UNIX, tiene que contar con los privilegios
siguientes:
• Autoridad SYSADM para definir las variables en el registro a nivel de instancia
• Autoridad root para definir las variables en el registro a nivel global
• En los sistemas operativos Windows, tiene que contar con uno de estos
privilegios:
• Autoridad de administrador local
• Autoridad SYSADM con las condiciones siguientes:
• Si la seguridad ampliada está habilitada, los usuarios SYSADM tienen que
pertenecer al grupo DB2ADMNS.
• Si la seguridad ampliada no está habilitada, los usuarios SYSADM podrán
realizar actualizaciones si se les otorgan los permisos adecuados en el
registro de Windows.
Si utiliza el mandato db2set para definir las variables en los registros de perfil, no tiene
que reiniciar el sistema para que los valores de las variables entren en vigor. Sin
embargo, los cambios no afectarán a las aplicaciones de DB2 que ya estén en
ejecución o a los usuarios que estén activos. El registro de DB2 aplica la información
actualizada a las instancias de servidor DB2 y las aplicaciones DB2 que se inician
después de realizar los cambios.
Puede definir una variable en uno o varios de estos cuatro niveles: entorno de sistema
operativo, instancia de nodo, instancia y global. El sistema de base de datos DB2
utiliza este orden de prelación para acceder a la configuración de la variable y
resolverlas. Si ya ha definido el valor de una variable en el nivel del entorno del sistema
operativo, la actualización sobre el valor de la variable no entrará en vigor de
inmediato, aunque utilice el parámetro -immediate, dado que el nivel del entorno del
sistema operativo tendrá prioridad sobre los registros.
Variables de registro agregadas
Utilice una variable de registro agregada para agrupar distintas variables de registro en
una configuración identificada con otro nombre de variable de registro. Cada variable
de registro que forme parte del grupo tendrá un valor predefinido. A la variable de
registro agregada se le da un valor que se interpreta como declaración de distintas
variables de registro.
La intención de una variable de registro agregada es facilitar la configuración de
registro para dar servicio a un amplio abanico de objetivos operativos.

© Copyright IBM Corp. 2015 3-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

La única variable de registro agregada válida es DB2_WORKLOAD.


Los valores válidos para esta variable son:
• 1C
• ANALYTICS
• CM
• COGNOS_CS
• FILENET_CM
• INFOR_ERP_LN
• MAXIMO
• MDM
• SAP
• TPM
• WAS
• WC
• WP
A partir de DB2 LUW 10.5, si la mayoría de las tablas de la base de datos van a ser
tablas organizadas en columnas, defina la variable de registro DB2_WORKLOAD en
ANALYTICS antes de crear la base de datos. Al hacerlo, facilitará la configuración de la
memoria, de la organización de tablas, del tamaño de página y del tamaño de la
extensión. Además, se habilitará la gestión de cargas de trabajo.

© Copyright IBM Corp. 2015 3-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

El mandato db2set
Comando Resultado
db2set -lr Visualizar todas las variables de registro admitidas.
db2set -all Visualizar todos los valores definidos para la
instancia actual.

db2set -g DB2COMM=TCPIP Definir la variable de registro DB2COMM en TCPIP


para todas las instancias que pertenecen a una
instalación concreta.

db2set -i MYINST DB2COMM=TCPIP Definir la variable de registro DB2COMM en TCPIP


solo para la instancia MYINST.

db2set -null DB2COMM Definir la variable de registro DB2COMM en null en


el nivel predeterminado. El nivel predeterminado es
el nivel de instancia.

db2set DB2_ANTIJOIN= -immediate Suprimir el valor actual de la variable de registro


DB2_ANTIJOIN para que entre en vigor la próxima
vez que se compile la sentencia SQL.

Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

El mandato db2set
En la imagen, se muestran ejemplos de cómo utilizar el mandato db2set para
visualizar, definir y restablecer las variables de registro de DB2.
En los ejemplos siguientes, se muestra cómo emitir los distintos parámetros con el
mandato db2set:
• Visualizar todos los perfiles instantáneos definidos que pertenezcan a una
instalación concreta: db2set -l
• Visualizar todas las variables de registro admitidas: db2set -lr
• Visualizar todas las variables globales definidas que resulten visibles para todas
las instancias que pertenezcan a una instalación concreta: db2set -g
• Visualizar todas las variables definidas para la instancia actual: db2set
• Visualizar todos los valores definidos para la instancia actual: db2set -all
• Visualizar todos los valores definidos de la variable de registro DB2COMM para
la instancia actual: db2set -all DB2COMM
• Restablecer todas las variables definidas para la instancia INST en el miembro 3:
• db2set -r -i INST 3

© Copyright IBM Corp. 2015 3-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

• Definir la variable de registro DB2COMM en TCPIP para todas las instancias que
pertenezcan a una instalación concreta: db2set -g DB2COMM=TCPIP
• Definir la variable de registro DB2COMM en TCPIP solo para la instancia
MYINST:
• db2set -i MYINST DB2COMM=TCPIP
• Definir la variable de registro DB2COMM en null en el nivel predeterminado. El
nivel predeterminado es el nivel de instancia: db2set -null DB2COMM
• Suprimir el valor actual de la variable de registro DB2_ANTIJOIN para que entre
en vigor la próxima vez que se compile la sentencia SQL:
db2set DB2_ANTIJOIN= -immediate

© Copyright IBM Corp. 2015 3-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Comprobar las variables de registro de DB2 con SQL


• La función de tabla ENV_GET_REG_VARIABLES devuelve los valores de
registro de DB2. Sintaxis:
>>-ENV_GET_REG_VARIABLES--(--member--)------------><
• Por ejemplo, la variable de registro DB2DBDFT, que especifica el nombre
de alias de la base de datos que se va a utilizar para conexiones
implícitas, se establece en CORP_1.
db2set db2dbdft=CORP_1
db2start
• Puede emitir una consulta que muestra el valor de dicha variable de
registro:
select substr(reg_var_value,1,20) as VALUE, substr(reg_var_on_disk_value,1,20)
as ON_DISK_VALUE
from table(env_get_reg_variables(-1)) as T1
where reg_var_name = 'DB2DBDFT‘

 Esta consulta devuelve el resultado siguiente:


VALUE ON_DISK_VALUE
-------------------- --------------------
CORP_1 CORP_1
Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

Comprobar las variables de registro de DB2 con SQL


Estos son ejemplos del uso de la función de tabla ENV_GET_REG_VARIABLES en
una sentencia SQL para listar el valor activo y en disco de las variables de registro de
DB2.
La función de tabla ENV_GET_REG_VARIABLES devuelve los valores de registro de
DB2 de uno o todos los miembros de la base de datos.
La función de tabla ENV_GET_REG_VARIABLES sustituye a la vista administrativa
REG_VARIABLES, en desuso. La función ENV_GET_REG_VARIABLES difiere en el
hecho de que permite que un solo valor de parámetro señale a un miembro específico
al que realizar la consulta, y devuelve un resultado adicional para el valor de registro
que se encuentra almacenado actualmente en el disco.
Sintaxis
>>-ENV_GET_REG_VARIABLES--(--member--)----------><

© Copyright IBM Corp. 2015 3-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Configuración del gestor de bases de datos

Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

Configuración del gestor de bases de datos


Cuando se crea una instancia de DB2, se crea un nuevo archivo de configuración del
gestor de bases de datos con valores predeterminados para la instancia. La
configuración de la instancia se puede listar utilizando el mandato GET DBM CFG de
DB2.
La configuración del gestor de bases de datos se puede actualizar utilizando el
mandato UPDATE DBM CFG de DB2.
Por ejemplo, el siguiente mandato podría utilizarse para definir la opción de
configuración de la instancia SVCENAME, que define el número de puerto TCPIP para
las conexiones de cliente:
db2 update dbm cfg using svcename 5023
Algunas herramientas, como Data Studio, son compatibles con el listado y la definición
de las opciones de configuración del gestor de bases de datos. La herramienta se
puede utilizar también para detener y reiniciar la instancia de DB2 de un sistema
cliente, a fin de implementar en la instancia cambios que requieran reiniciarla.

© Copyright IBM Corp. 2015 3-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Ejemplo:
C:\IBM\SQLLIB\BIN>db2 get dbm cfg

Database Manager Configuration


Node type = Enterprise Server Edition with local and remote clients
Database manager configuration release level = 0x0d00
Maximum total of files open (MAXTOTFILOP) = 16000
CPU speed (millisec/instruction) (CPUSPEED) = 4.605357e-007
Communications bandwidth (MB/sec) (COMM_BANDWIDTH) = 1.000000e+002
Max number of concurrently active databases (NUMDB) = 8
Federated Database System Support (FEDERATED) = NO
Transaction processor monitor name (TP_MON_NAME) =
Default charge-back account (DFT_ACCOUNT_STR) =
Java Development Kit installation path (JDK_PATH) = C:\IBM\SQLLIB\java\jdk
Diagnostic error capture level (DIAGLEVEL) = 3
Notify Level (NOTIFYLEVEL) = 3
Diagnostic data directory path (DIAGPATH) =
Size of rotating db2diag & notify logs (MB) (DIAGSIZE) = 0

© Copyright IBM Corp. 2015 3-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Demostración 1
Crear una nueva instancia de DB2

• Ejecute el mandato db2icrt para crear una nueva instancia de gestor


de bases de datos de DB2
• Emita los mandatos db2set y db2 update para configurar la instancia
de DB2
• Utilice los mandatos db2start y db2stop para iniciar y detener una
instancia de DB2
• Ejecute los mandatos db2pd para comprobar el estado y la
configuración de la instancia de DB2

Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

Demostración 1: crear una nueva instancia de DB2

© Copyright IBM Corp. 2015 3-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Demostración 1:
crear una nueva instancia de DB2
Objetivo:
En esta demostración, crearemos una nueva instancia de DB2 que dé soporte
a la base de datos que crearemos y gestionaremos en las demostraciones
siguientes. Utilizaremos el procesador de línea de mandatos de DB2 para
crear la nueva instancia, configurar algunas de las opciones de nivel de
instancia y emitir mandatos para iniciar y detener la instancia.

Tarea 1. Iniciar la sesión en el sistema Windows y cree la


instancia de DB2, inst23.
En esta demostración, crearemos una nueva instancia de DB2 con el nombre inst23.
Los sistemas Windows utilizados para la demostración tienen un usuario predefinido
denominado inst23.
En los sistemas Windows, DB2 no requiere un "propietario de instancia", pero
utilizaremos el nombre de usuario de inicio de sesión inst23 para crear y gestionar la
base de datos y la instancia de DB2 para las demostraciones.
1. Inicie la sesión en el sistema Windows con el ID de usuario inst23 y la
contraseña ibm2blue.
El procesador de línea de mandatos de DB2 se utilizará para emitir los
mandatos de sistema y de DB2. Tendrá que iniciar la ventana de mandato de
DB2 en modalidad de administrador para emitir estos mandatos de DB2.
2. Para iniciar la ventana de mandatos de DB2, pulse el icono Inicio de Windows y
luego vaya a Todos los programas > IBM DB2 DB2COPY1 > DB2
Command Window - Administrator. Cuando aparezca la pregunta "¿Desea
permitir que este programa realice cambios en el equipo?", seleccione Sí.
Al instalar el software DB2, se seleccionó la opción de crear una instancia de
DB2 denominada DB2. Esta instancia se ha utilizado para crear una base de
datos de ejemplo denominada SAMPLE.
El software IBM Data Server Manager se puede configurar para almacenar
datos en una base de datos de DB2 que se supervisará durante un periodo de
tiempo. Se ha creado una segunda base de datos denominada DSMDATA,
configurada para dar soporte a la herramienta DSM.
3. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• db2 get instance
• db2 list db directory

© Copyright IBM Corp. 2015 3-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

La instancia actual debería ser DB2. Tendrían que aparecer las dos bases de
datos: SAMPLE y DSMDATA.
Ahora, utilizaremos el mandato db2icrt para crear una nueva instancia de
gestor de bases de datos DB2 denominada inst23. Podemos utilizar el
mandato SET de Windows para cambiar la variable de instancia actual a la
nueva instancia.
Utilizaremos el mandato db2set para cambiar la instancia predeterminada a
inst23. Al cambiar la variable de registro de instancia predeterminada,
db2instdef, la actividad del mandato de dirigirá, de forma predeterminada, a
esta instancia predeterminada. Siempre puede cambiar la instancia de DB2
actual de la ventana de mandato utilizando el mandato SET para modificar la
variable DB2INSTANCE.
4. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2:
• db2icrt inst23
• set db2instance=inst23
• db2set db2instdef=inst23
• db2set -all
Tarea 2. Configurar la nueva instancia de DB2, inst23, para que
permita conexiones de aplicación tcpip y defina una
vía de acceso específica para los datos de
diagnóstico.
La nueva instancia de DB2 tiene una configuración de gestor de bases de
datos con valores predeterminados.
Tendremos que habilitar las conexiones de la aplicación tcpip en la nueva
instancia de DB2. Será necesario asignar un número de puerto tcpip para
aquellas conexiones de la aplicación con la instancia que se efectúan mediante
la opción SVCENAME en la configuración del gestor de bases de datos.
Asignaremos el número de puerto 50230, que no puede utilizar ninguna otra
instancia de DB2 ni otra aplicación del mismo servidor.
El mandato db2set se utilizará para definir la variable de registro DB2COMM
de DB2 en 'tcpip'.

© Copyright IBM Corp. 2015 3-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2:
• db2 get instance
• db2set db2comm=tcpip
• db2set -all
• db2 update dbm cfg using svcename 50230
Es necesario emitir el mandato db2start para activar la nueva instancia de DB2.
Se puede utilizar el mandato db2pd con la opción -edus para listar las hebras y
procesos activos de una instancia de DB2.
2. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• db2start
• db2pd -edus
La salida de este mandato tendrá un aspecto parecido al siguiente:
Database Member 0 -- Active -- Up 0 days 00:01:31 -- Date 2015-08-03-
15.15.45.266000

List of all EDUs for database member 0

db2sysc PID: 5620


db2acd PID: 1252

EDU ID TID EDU Name


===========================================================================
================
0 0 db2pdbe
6188 6188 db2spmlw
6548 6548 db2spmrsy
4936 4936 db2resync
7136 7136 db2tcpcm
4220 4220 db2ipccm
6848 6848 db2wlmtm
3980 3980 db2wlmt
4652 4652 db2licc
7012 7012 db2aiothr
5620 5620 db2sysc

© Copyright IBM Corp. 2015 3-22


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Podemos definir una ubicación de disco específica para almacenar los archivos
de diagnóstico generados por la nueva instancia utilizando la opción de
configuración DIAGPATH. Podemos limitar la cantidad de datos de diagnóstico
que utilizan una serie de archivos de registro de diagnóstico rotatorio con la
opción de configuración DIAGSIZE. Tendremos que reiniciar la instancia de
DB2 para implementar los cambios. Se puede utilizar el mandato db2pd para
verificar los valores de configuración.
3. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2:
• md c:\inst23\diag
• db2 update dbm cfg using diagpath c:\inst23\diag diagsize 20
• db2stop force
• db2start
• db2pd -dbmcfg | more
La salida de este mandato tendrá un aspecto parecido al siguiente:

Database Member 0 -- Active -- Up 0 days 00:00:40 -- Date 2015-08-03-


15.28.55.657000

Database Manager Configuration Settings:


Description Memory Value Disk Value
RELEASE 0x1000 0x1000
CPUSPEED(millisec/instruction) 2.519169e-007 2.519169e-007
NUMDB 32 32
NUMDB_INT NEEDS RECOMPUTE(32) NEEDS RECOMPUTE(32)
FEDERATED NO NO
TP_MON_NAME
DFT_ACCOUNT_STR
JDK_PATH (memory) C:\PROGRA~1\IBM\SQLLIB\java\jdk
JDK_PATH (disk) C:\PROGRA~1\IBM\SQLLIB\java\jdk
DIAGLEVEL 3 3
NOTIFYLEVEL 3 3
DIAGPATH (memory) c:\inst23\diag\
DIAGPATH (disk) c:\inst23\diag\
DIAGPATH_RESOLVED (memory) c:\inst23\diag\
DIAGPATH_RESOLVED (disk) c:\inst23\diag\

© Copyright IBM Corp. 2015 3-23


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

ALT_DIAGPATH (memory)
ALT_DIAGPATH (disk)
ALT_DIAGPATH_RESOLVED (memory)
ALT_DIAGPATH_RESOLVED (disk)
DIAGSIZE (MB) 20 20
DFT_MON_BUFPOOL OFF OFF
DFT_MON_LOCK OFF OFF
DFT_MON_SORT OFF OFF
DFT_MON_STMT OFF OFF
DFT_MON_TABLE OFF OFF
DFT_MON_TIMESTAMP ON ON
DFT_MON_UOW OFF OFF
HEALTH_MON OFF OFF
SYSADM_GROUP (memory)
SYSADM_GROUP (disk)
SYSCTRL_GROUP (memory)
SYSCTRL_GROUP (disk)
SYSMAINT_GROUP (memory)
SYSMAINT_GROUP (disk)
SYSMON_GROUP (memory)
SYSMON_GROUP (disk)
CLNT_PW_PLUGIN
CLNT_KRB_PLUGIN IBMkrb5 IBMkrb5
GROUP_PLUGIN
LOCAL_GSSPLUGIN
SRV_PLUGIN_MODE UNFENCED UNFENCED
SRVCON_GSSPLUGIN_LIST
SRVCON_PW_PLUGIN
SRVCON_AUTH
AUTHENTICATION SERVER SERVER
ALTERNATE_AUTH_ENC
CATALOG_NOAUTH NO NO
TRUST_ALLCLNTS YES YES
TRUST_CLNTAUTH CLIENT CLIENT
FED_NOAUTH NO NO
DFTDBPATH (memory) C:

© Copyright IBM Corp. 2015 3-24


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

DFTDBPATH (disk) C:
MON_HEAP_SZ (4KB) AUTOMATIC(66) AUTOMATIC(66)
JAVA_HEAP_SZ (4KB) 2048 2048
AUDIT_BUF_SZ (4KB) 0 0
INSTANCE_MEMORY (4KB) AUTOMATIC(838861) AUTOMATIC(838861)
RSTRT_LIGHT_MEM (4KB) AUTOMATIC(10) AUTOMATIC(10)
RSTRT_LIGHT_MEM_INT (4KB) NEEDS RECOMPUTE(0) NEEDS RECOMPUTE(0)
AGENT_STACK_SZ 16 16
BACKBUFSZ (4KB) 1024 1024
RESTBUFSZ (4KB) 1024 1024
SHEAPTHRES (4KB) 0 0
DIR_CACHE YES YES
ASLHEAPSZ (4KB) 15 15
RQRIOBLK (bytes) 65535 65535
UTIL_IMPACT_LIM 10 10
AGENTPRI SYSTEM SYSTEM
NUM_POOLAGENTS AUTOMATIC(100) AUTOMATIC(100)
NUM_INITAGENTS 0 0
MAX_COORDAGENTS AUTOMATIC(200) AUTOMATIC(200)
MAX_CONNECTIONS AUTOMATIC(MAX_COORDAGENTS)
AUTOMATIC(MAX_COORDAGENTS)
KEEPFENCED YES YES
FENCED_POOL AUTOMATIC(MAX_COORDAGENTS)
AUTOMATIC(MAX_COORDAGENTS)
NUM_INITFENCED 0 0
INDEXREC RESTART RESTART
TM_DATABASE 1ST_CONN 1ST_CONN
RESYNC_INTERVAL (secs) 180 180
SPM_NAME IBMCLAS1 IBMCLAS1
SPM_LOG_FILE_SZ 256 256
SPM_MAX_RESYNC 20 20
SPM_LOG_PATH
SVCENAME 50230 50230
DISCOVER SEARCH SEARCH
DISCOVER_INST ENABLE ENABLE
SSL_SVR_KEYDB (memory)
SSL_SVR_KEYDB (disk)

© Copyright IBM Corp. 2015 3-25


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

SSL_SVR_STASH (memory)
SSL_SVR_STASH (disk)
SSL_SVR_LABEL (memory)
SSL_SVR_LABEL (disk)
SSL_SVCENAME
SSL_CIPHERSPECS (memory)
SSL_CIPHERSPECS (disk)
SSL_VERSIONS (memory)
SSL_VERSIONS (disk)
SSL_CLNT_KEYDB (memory)
SSL_CLNT_KEYDB (disk)
SSL_CLNT_STASH (memory)
SSL_CLNT_STASH (disk)
MAX_QUERYDEGREE ANY ANY
INTRA_PARALLEL NO NO
FCM_NUM_BUFFERS (4KB) AUTOMATIC(1024) AUTOMATIC(1024)
FCM_NUM_CHANNELS AUTOMATIC(512) AUTOMATIC(512)
FCM_PARALLELISM 1 1
FCM_PARALLELISM_INT 1 1
WLM_DISPATCHER NO NO
WLM_DISP_CONCUR COMPUTED(4) COMPUTED
WLM_DISP_CPU_SHARES NO NO
WLM_DISP_MIN_UTIL 5 5
KCFD_CFG_SIGNATURE 5 5
COMM_EXIT_LIST (memory)
COMM_EXIT_LIST (disk)
KEYSTORE_TYPE NONE NONE
KEYSTORE_LOCATION (memory)
KEYSTORE_LOCATION (disk)

La configuración del gestor de bases de datos contiene información de estado y


configuración de la instancia de DB2. Se puede utilizar el mandato GET DBM
CFG de DB2 para listar esta información. Compruebe la vía de acceso de base
de datos predeterminada actual, el valor DFTDBPATH, para ver la vía de
acceso de base de datos predeterminada que se utilizaría si se crease una
nueva base de datos.

© Copyright IBM Corp. 2015 3-26


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

4. Emita el siguiente mandato con el procesador de línea de mandatos de DB2.


• db2 get dbm cfg | find "path"
La salida de este mandato tendrá un aspecto parecido al siguiente:
Java Development Kit installation path (JDK_PATH) =
C:\PROGRA~1\IBM\SQLLIB\java\jdk
Diagnostic data directory path (DIAGPATH) = c:\inst23\diag\
Alternate diagnostic data directory path (ALT_DIAGPATH) =
Default database path (DFTDBPATH) = C:
SPM log path (SPM_LOG_PATH) =

Ahora que hemos creado y configurado la nueva instancia de DB2, inst23, la


utilizaremos para crear una nueva base de datos.
Resultados:
En esta demostración, ha creado una nueva instancia de DB2 que dará
soporte a la base de datos que creará y gestionará en las demostraciones
siguientes. Ha utilizado el procesador de línea de mandatos de DB2 para crear
la nueva instancia, ha configurado algunas de las opciones de nivel de
instancia y ha emitido mandatos para iniciar y detener la instancia.

© Copyright IBM Corp. 2015 3-27


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 3 Instancia del gestor de bases de datos DB2

Resumen de la unidad
• Especificar las características clave de una instancia
• Crear y descartar una instancia de DB2
• Utilizar los mandatos db2start y db2stop para gestionar una instancia
de DB2
• Visualizar y definir las variables de registro de DB2
• Describir y modificar la configuración del gestor de bases de datos

Instancia del gestor de bases de datos DB2 © Copyright IBM Corporation 2015

Resumen de la unidad

© Copyright IBM Corp. 2015 3-28


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4. Creación de bases de datos y ubicación de los datos

Creación de bases de datos y


ubicación de los datos

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

© Copyright IBM Corp. 2015 4-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Objetivos de la unidad
• Planificar las asignaciones de almacenamiento iniciales para una base de
datos, incluidas las tablas de catálogo y los archivos de registro
• Explorar las tablas y vistas del catálogo de sistema
• Comprobar y actualizar los valores de los parámetros de configuración de
base de datos
• Comparar el DMS y la gestión de almacenamiento automático para
espacios de tabla
• Describir cómo configurar y gestionar una base de datos DB2 con el
almacenamiento automático habilitado
• Definir depósitos de almacenamiento para gestionar bases de datos con
distintos tipos de almacenamiento disponibles
• Diferenciar entre espacios de tabla, contenedores, ampliaciones y páginas
• Crear y modificar espacios de tabla
• Utilizar mandatos de DB2 y sentencias SQL para visualizar las
estadísticas actuales del espacio de tabla y la información de estado

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 4-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Visión general de la creación de bases de datos

• Las bases de datos se crean en una instancia de gestor de bases de datos


• Los espacios de tabla son una capa lógica creada en una base de datos
• Las tablas se crean en espacios de tabla

Instancia de gestor de bases de datos


base de datos 1 base de datos 2

Espacio de tabla A Espacio de Espacio de tabla A


tabla B
Tabla 1 Tabla 2 Tabla 3 Tabla 4 Tabla 1 Tabla 2

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Visión general de la creación de bases de datos


Cada instancia de gestor de bases de datos de DB2 puede contener la definición de
una o varias bases de datos.
Cada base de datos puede tener tres o más espacios de tabla asociados. Los espacios
de tabla son un nivel lógico entre la base de datos y las tablas almacenadas en dicha
base de datos. Los espacios de tabla se crean en una base de datos y las tablas se
crean en los espacios de tabla.
Como se ha debatido antes, una o varias bases de datos pueden residir en una
instancia. DB2 crea tres espacios de tabla predeterminados en una base de datos
cuando esta se crea, y el usuario puede crear espacios de tabla adicionales para
almacenar la tabla, el índice y objetos long.

© Copyright IBM Corp. 2015 4-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Espacio de tabla, contenedor, ampliación, página


• Los objetos de base de datos, como las tablas, se asignan a espacios
de tabla
• Cuando se crea un nuevo espacio de tabla:
 se define un tamaño de página fijo
 el tamaño de la extensión se define
como número fijo de páginas Espacio de tabla

• Las ampliaciones se asignan


desde los contenedores Contenedor
• Cada contenedor está asociado
a un espacio de tabla Extensión
• A los objetos de base de datos
se les asignan extensiones de Página
páginas de
datos

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Espacio de tabla, contenedor, extensión, página


Con DB2 LUW, la definición de los espacios de tabla implica que tengan uno o
varios contenedores.
Una extensión es un bloque de almacenamiento en un contenedor de espacio de
tabla. Representa el número de páginas de datos que se grabarán en un
contenedor antes de realizar la grabación en el contenedor siguiente. Cuando cree
un espacio de tabla, elija el tamaño de la extensión en función de sus requisitos de
rendimiento y gestión de almacenamiento.
Cuando seleccione un tamaño de la extensión, tenga en cuenta el tamaño y el tipo de
tablas del espacio de tabla. Las asignaciones de espacio en disco en los espacios de
tabla se realizan extensión a extensión. Cuando una tabla se llene de datos, se
asignarán nuevas asignaciones según sea necesario. La asignación inicial de las
extensiones para el almacenamiento del contenedor de espacio de tabla se produce
cuando se crea el espacio de tabla. Las extensiones se asignan a objetos de base de
datos asignados al espacio de tabla.

© Copyright IBM Corp. 2015 4-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Grabación en contenedores
• DFT_EXTENT_SZ definido al nivel de la base de datos
• EXTENTSIZE definido al nivel del espacio de tabla (2 – 256 páginas)
• Datos grabados en modalidad de rueda

Contenedor 0 Contenedor 1

0 2

Extensión 1 3

Espacio de tabla TBS

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Grabación en contenedores
DB2 utiliza extensiones y distintos contenedores para almacenar y recuperar datos.
Una extensión es una asignación de espacio contiguo en el contenedor de un espacio
de tabla. Las extensiones se asignan a un único objeto de base de datos y constan de
varias páginas. El tamaño predeterminado de la extensión es de 32 páginas, pero se
puede especificar un valor distinto cuando se crea un espacio de tabla.
Los datos de un objeto se almacenan en un contenedor en extensiones. Cuando los
datos de un objeto se graban, el sistema de base de datos divide los datos entre todos
los contenedores del espacio de tablas, en función del tamaño de la extensión.
DFT_EXTENT_SZ es un parámetro de configuración de la base de datos. Si no
especifica un tamaño de la extensión al crear el espacio de tabla, se utilizará
DFT_EXTENT_SZ. El tamaño predeterminado para DFT_EXTENT_SZ es de 32
páginas. Si no modifica este valor ni indica explícitamente un tamaño para la extensión
al crear un espacio de tabla, todos los espacios de tabla de la base de datos tendrán
este valor predeterminado. El rango de valores para DFT_EXTENT_SZ es de entre 2 y
256 páginas.

© Copyright IBM Corp. 2015 4-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Puede especificar el tamaño de la extensión al nivel del espacio de tabla. Esto se


puede hacer durante la creación del espacio de tabla, con el parámetro EXTENTSIZE.
Determine con precisión el tamaño correcto, ya que una vez definido para un espacio
de tabla, no se puede modificar. Este tamaño puede afectar al rendimiento y la
utilización del espacio.
El gestor de bases de datos intentará distribuir de forma uniforme la tabla entre los
contenedores. Al hacerlo, el gestor de bases de datos graba una extensión de las
páginas en cada contenedor antes de grabar en el siguiente contenedor. Después de
que el gestor de bases de datos haya grabado una extensión en todos los
contenedores asignados a un espacio de tabla, grabará la siguiente extensión en el
primer contenedor en el que se grabe de dicho espacio de tabla. Este proceso en
turnos de grabación en los contenedores se ha diseñado para equilibrar la carga de
trabajo entre los contenedores del espacio de tabla.
Los programas de utilidad de DB2, como BACKUP y LOAD, se han diseñado para
ejecutar la entrada/salida al nivel de la extensión, de manera que extensiones más
grandes requerirán menos operaciones de entrada/salida.
DB2 puede utilizar la extensión como un eficaz conjunto de datos de páginas para leer
grupos de páginas al explorar una tabla o un índice. DB2 puede captar previamente
extensiones de páginas durante las exploraciones para reducir los tiempos de espera
del disco.

© Copyright IBM Corp. 2015 4-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Requisitos de almacenamiento de la base de datos


• Vía de acceso de base de datos:
 Archivos de control de bases de datos para cada base de datos
− Archivo de configuración de base de datos, historial de recuperación, archivos de control de registro,
archivo de control de espacio de tabla, archivo de control de agrupación de almacenamiento
intermedio y otros
 Ubicación inicial para los archivos de registro de base de datos; la ubicación
predeterminada es dftdbpath en DBM CFG, en el sistema de archivos local
• Vías de acceso de almacenamiento automático:
 Permita la gestión de grupos de espacios de tabla, en lugar de gestionarlos
individualmente
 Si se ha habilitado el almacenamiento automático, se definirá al menos una vía de acceso
 Se pueden definir vías de acceso de almacenamiento iniciales al crear una base de datos
• Espacios de tabla de sistema predeterminados:
 Utilice la gestión de almacenamiento automático predeterminada, si está habilitada,
aunque la puede definir para utilizar tipos de espacios de tabla compatibles
 SYSCATSPACE
 TEMPSPACE1
 USERSPACE1
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Requisitos de almacenamiento de la base de datos


Cuando se crea una base de datos, se necesitan varios tipos de almacenamiento
para dar soporte a la nueva base de datos.
• Vía de acceso de base de datos
• Se necesita un conjunto de archivos de control de bases de datos para cada
base de datos. Los archivos de control incluyen, entre otros, el archivo de
configuración de la base de datos, el historial de recuperación, un conjunto de
archivos de control de registro, archivos del control de espacio de tabla y
archivos del control de agrupación de almacenamiento intermedio.
• Se necesita un conjunto de archivos de registro de base de datos para dar
soporte a cada base de datos
• La ubicación predeterminada para la vía de acceso de base de datos viene
definida por la opción de configuración dftdbpath de la DBM CFG.
• La vía de acceso de base de datos tiene que ser un sistema de archivos local.

© Copyright IBM Corp. 2015 4-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• Las vías de acceso de almacenamiento automático se pueden definir cuando se


crea una base de datos para habilitar la gestión automática del almacenamiento
de los espacios de tabla. Antes de DB2 10, se podía asignar un único conjunto
de vías de acceso de almacenamiento a una base de datos. A partir de DB2
10.1, se pueden asignar varias vías de acceso de almacenamiento a los
depósitos de almacenamiento. Esto permite que el almacenamiento del espacio
de tabla se gestione en un nivel superior al de la tabla individual. Las vías de
acceso de almacenamiento automático iniciales se definen cuando se crea una
base de datos que se convertirá en el depósito de almacenamiento
predeterminado inicial de la base de datos.
• Cada base de datos se crea con tres espacios de tabla del sistema
predeterminados. Si se habilita el almacenamiento automático, DB2 utilizará la
gestión de almacenamiento automático, pero dichos espacios de tabla se
pueden definir para utilizar cualquier tipo admitido de gestión de espacios de
tabla. Los tres espacios de tabla son:
• SYSCATSPACE: tablas de catálogo de DB2
• TEMPSPACE1: tablas temporales del sistema, que proporcionan espacio de
trabajo para ordenar y procesar programas de utilidad
• USERSPACE1: espacio de tabla inicial para definir tablas de usuario e
índices
Si no especifica una vía de acceso diferente para la base de datos, utilizará el
parámetro de configuración dftdbpath del gestor de bases de datos, que toma como
valor predeterminado el directorio de inicio del propietario de instancia en sistemas
Linux y UNIX, y la unidad si se ha instalado DB2 en Windows.

© Copyright IBM Corp. 2015 4-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Alternativas de gestión de almacenamiento (1 de 2)


• Gestionado por almacenamiento automático:
 La administración tiene una definición automática de los contenedores con nombres
estándar
 Espacio en disco asignado desde vías de acceso de disco para un depósito de
almacenamiento
 Seguimiento del espacio disponible por depósito de almacenamiento, no por cada espacio
de tabla
 Varios contenedores creados utilizando todas las vías de acceso disponibles para el
depósito de almacenamiento
 El almacenamiento automático se habilita de forma predeterminada cuando se crea una
nueva base de datos o se añade a una base de datos existente
 Se pueden añadir o eliminar vías de acceso de almacenamiento con el mandato ALTER
STOGROUP
 Utiliza DMS y SMS estándar a un nivel más profundo:
− DMS se utiliza con espacios de tabla regulares y grandes
− SMS se utiliza con espacios de tabla SYSTEM y USER TEMPORARY
 Asignación de espacios de tabla controlada por las opciones CREATE/ALTER:
− INITIALSIZE: toma como valor predeterminado 32 MB
− AUTORESIZE: se puede establecer en YES o NO
− INCREASESIZE: se puede definir en un incremento de porcentaje o cantidad
− MAXSIZE: puede definir los límites de crecimiento
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Alternativas de la gestión de almacenamiento


La administración de espacios de tabla resulta muy sencilla con el almacenamiento
automático. La sintaxis CREATE TABLESPACE no requiere los nombres de los
contenedores ni el número de contenedores que se van a definir. En el caso de los
espacios de tabla de almacenamiento automático, el espacio en disco se asigna desde
un depósito de almacenamiento. Si no se ha especificado ningún depósito de
almacenamiento, se utilizará uno predeterminado.
Así, el administrador de base de datos podrá supervisar el espacio disponible en todo
el depósito de almacenamiento, sin necesidad de supervisar cada espacio de tabla
individual. Siempre que haya espacio disponible en una de las vías de acceso de
almacenamiento, DB2 podrá ampliar automáticamente un espacio de tabla. Es posible
que las bases de datos más pequeñas necesiten un único depósito de
almacenamiento para la base de datos.
Al crear un espacio de tabla, DB2 puede crear varios contenedores utilizando todas las
vías de acceso de almacenamiento disponibles, lo que ayuda a mejorar el rendimiento
de exploraciones de tablas e índices.
Se pueden añadir vías de acceso de almacenamiento adicionales utilizando una
sentencia ALTER STOGROUP, con el fin de dar soporte a un posible crecimiento en el
futuro.

© Copyright IBM Corp. 2015 4-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

La gestión de almacenamiento automático utiliza espacios de tabla DMS y SMS a un


nivel más profundo. Se utiliza un espacio de tabla DMS para los espacios de tabla
REGULAR y LARGE, mientras que el SMS se utiliza para los espacios de tabla
SYSTEM y USER TEMPORARY.
La asignación de espacios de tabla de almacenamiento automático se puede controlar
utilizando las opciones de CREATE y ALTER TABLESPACE, incluidas las siguientes:
• INITIALSIZE: toma 32 MB como valor predeterminado, si no se concreta.
• AUTORESIZE: se puede definir en YES o NO. YES es el valor predeterminado
para espacios de tabla regulares y grandes.
• INCREASESIZE: se puede definir en una cantidad específica o un incremento
en porcentajes.
• MAXSIZE: se puede utilizar para definir un límite en el crecimiento del espacio
de tabla.

© Copyright IBM Corp. 2015 4-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Alternativas de la gestión de almacenamiento (2 de 2)


• DMS – Gestionado por base de datos:
 Se puede ajustar el espacio asignado de forma manual para el espacio de
tabla, una vez creado, añadiendo contenedores o agrandándolos, así como
reduciéndolos o suprimiéndolos
 AUTORESIZE se puede definir para gestionar la creciente demanda de
espacio
− DB2 solo puede añadir automáticamente espacio al último conjunto de bandas
 Los objetos de cada tabla de almacenamiento se pueden dividir en distintos
espacios de tabla
 Se puede convertir a una gestión de almacenamiento automático
 Tamaño máximo (8 TB, páginas de 4 K; 64 TB, páginas de 32 K) por espacio
de tabla (por partición) utilizando un espacio de tabla grande
• SMS – Gestionado por el sistema:
 Eficaz para gestionar tablas temporales pequeñas
 Los espacios de tabla temporales deberían definirse utilizando el
almacenamiento automático para conseguir una gestión más flexible
 SMS dejó de utilizarse para tablas no temporales en la versión 10.1

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

En el caso de la gestión de DMS, las características son las siguientes:


• Se puede ajustar el espacio en disco para el espacio de tabla, una vez creado,
añadiendo contenedores o agrandándolos, así como reduciéndolos o
suprimiéndolos, con el mandato ALTER TABLESPACE.
• Se puede habilitar la opción AUTORESIZE para espacios de tabla DMS, a fin de
incrementar de manera dinámica el espacio en disco asignado y así gestionar
unas necesidades mayores de las esperadas para las aplicaciones.
• Los objetos de una tabla se pueden dividir en distintos espacios de tabla. Los
componentes de índice y los objetos grandes de una tabla se pueden dirigir a
otros espacios de tabla cuando se crea la tabla.
• DB2 tiene un control más directo sobre la asignación de almacenamiento. Se
puede reservar espacio para el crecimiento de índices y tablas de aplicaciones
críticas.

© Copyright IBM Corp. 2015 4-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• Tamaño máximo (8 TB, páginas de 4 K; 64 TB, páginas de 32 K) por espacio de


tabla (por partición) utilizando un espacio de tabla DMS grande que utiliza ID de
fila de 6 bytes. Los espacios de tabla DMS habituales utilizan identificadores de
fila de 4 bytes, que pueden encargarse de hasta 16 millones de páginas. Los ID
de fila de 6 bytes utilizados para los espacios de tabla grandes proporcionan una
dirección de página de 4 bytes y dos de ellos se utilizan para el desplazamiento
de fila en una página de datos. Los índices basados en tablas en espacios de
tabla grandes requieren de 6 bytes por entrada de índice para encargarse de las
filas de datos.
Almacenamiento gestionado por el sistema
En un espacio de tablas SMS (almacenamiento gestionado por el sistema), el gestor
del sistema de archivos del sistema operativo asigna y gestiona el espacio en el que
está almacenada la tabla. El modelo de almacenamiento suele constar de varios
archivos que representan objetos de tabla almacenados en el espacio del sistema de
archivos. El usuario decide la ubicación de los archivos, DB2 Database for Linux, UNIX
and Windows controla sus nombres y el sistema de archivos es responsable de
gestionarlos. Al controlar la cantidad de datos que se graban en cada archivo, el gestor
de bases de datos distribuye los datos de manera uniforme en los contenedores del
espacio de tabla. Cada tabla tiene al menos un archivo físico SMS asociado. Cuando
una tabla se descarta, los archivos asociados se suprimen, con lo que se libera
espacio en disco. Los espacios de tabla SMS no tienen un límite de tamaño definido.
Tenga en cuenta que el tipo de espacio de tabla SMS ha quedado en desuso en la
versión 10.1, en favor de espacios de tabla permanentes definidos por el usuario, y
podría eliminarse en futuras versiones. El tipo de espacio de tabla SMS no ha quedado
en desuso en los espacios de tabla temporales o de catálogo.
Dado que los espacios de tabla temporales del usuario y del sistema se pueden
gestionar con la gestión de almacenamiento automático, deberían definirse espacios
de tabla temporales como almacenamiento automático gestionado, en lugar de SMS
estándar gestionado.

© Copyright IBM Corp. 2015 4-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Sintaxis de CREATE DATABASE


CREATE DATABASE database-name
DB AT DBPARTIONNUM
|Crear opciones de base
de datos|
Crear opciones de base de datos:

AUTOMATIC STORAGE YES ON path DBPATH path


NO drive ON drive
,
ALIAS db-alias USING CODESET codeset TERRITORY territory

COLLATE USING PAGESIZE 4096 DFT_EXTENT_SZ dft-extentsize


IDENTITY n K

RESTRICTIVE CATALOG TABLESPACE |tblspace-defn|

USER TABLESPACE |tblspace-defn| TEMPORARY TABLESPACE |tblspace-defn|

WITH "comment-string" |autoconfigure-settings|


tblspace-defn: ,
| MANAGED BY SYSTEM USING ( 'container-string' )
,
DATABASE USING ( FILE 'container-string' num-pages )
DEVICE

EXTENTSIZE num-pages PREFETCHSIZE num-pages

OVERHEAD number-of-milliseconds TRANSFERRATE number-of-milliseconds


Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Sintaxis de CREATE DATABASE


El mandato CREATE DATABASE inicializa una nueva base de datos con una
secuencia de clasificación opcional definida por el usuario, crea los tres espacios de
tabla iniciales, crea las tablas del sistema y asigna el archivo de registro de
recuperación. Al inicializar una nueva base de datos, el mandato AUTOCONFIGURE
se emite de forma predeterminada.
Nota: si la instancia y los directorios de bases de datos los crea el gestor de bases de
datos de DB2, los permisos serán precisos y no será necesario modificarlos.
Cuando se emita el mandato CREATE DATABASE, también se ejecutará
automáticamente el asesor de configuración. Esto significa que los parámetros de
configuración de la base de datos se ajustarán automáticamente a los recursos del
sistema. Además, se habilita la opción Automated Runstats. Para impedir que se
ejecute el asesor de configuración durante la creación de la base de datos, consulte la
variable de registro DB2_ENABLE_AUTOCONFIG_DEFAULT. Para inhabilitar
Automated Runstats, consulte el parámetro de configuración de base de datos
auto_runstats.

© Copyright IBM Corp. 2015 4-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

La opción Adaptive Self Tuning Memory también está habilitada de forma


predeterminada para bases de datos de partición única. Para inhabilitar la opción
Adaptive Self Tuning Memory de forma predeterminada, consulte el parámetro de
configuración de base de datos self_tuning_mem. En el caso de las bases de datos
con varias particiones, la opción Adaptive Self Tuning Memory está inhabilitada de
forma predeterminada.
Si no se ha especificado ningún conjunto de códigos en el mandato CREATE
DATABASE, las ordenaciones permitidas serán: SYSTEM, IDENTITY_16BIT,
language-aware-collation y locale-sensistive-collation (SQLCODE -1083). El conjunto
de códigos predeterminado para una base de datos es UTF-8. Si una base de datos
necesita un conjunto de códigos y un territorio concretos para la base de datos, tanto el
conjunto de códigos como el territorio necesarios tienen que especificarse en el
mandato CREATE DATABASE.
Ejemplo 1: creación de una base de datos en un sistema operativo UNIX o Linux:
Para crear una base de datos denominada TESTDB1 en la vía de acceso /DPATH1
utilizando /DATA1 y /DATA2 como vías de acceso de almacenamiento definidas en el
depósito de almacenamiento predeterminado IBMSTOGROUP, utilice el mandato
siguiente:
CREATE DATABASE TESTDB1 ON '/DATA1','/DATA2' DBPATH ON
'/DPATH1'
Ejemplo 2: creación de una base de datos en un sistema operativo Windows
especificando las vías de acceso de almacenamiento y de base de datos:
Para crear una base de datos denominada TESTDB2 en la unidad D:, con el
almacenamiento en E:\DATA, utilice el mandato siguiente:
CREATE DATABASE TESTDB2 ON 'E:\DATA' DBPATH ON 'D:'
En este ejemplo, se utiliza E:\DATA como vía de acceso de almacenamiento definida
en el depósito de almacenamiento predeterminado IBMSTOGROUP.

© Copyright IBM Corp. 2015 4-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Ejemplos de CREATE DATABASE


create database sales1 on /dbsales1
 Vía de acceso de base de datos: /dbsales1
 Vía de acceso de almacenamiento automático: /dbsales1
create database sales2 automatic storage no on /dbsales2
 Vía de acceso de base de datos: /dbsales2
 Almacenamiento automático no habilitado
create database sales3 on /dbauto3 dbpath on /dbsales3
 Vía de acceso de base de datos: /dbsales3
 Vía de acceso de almacenamiento automático: /dbauto3
create database sales4 automatic storage yes
on /dbauto41,/dbauto42,/dbauto43
dbpath on /dbsales4
 Vía de acceso de base de datos: /dbsales4
 Vías de acceso de almacenamiento automático: /dbauto41, /dbauto42 y /dbauto43

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Ejemplos de CREATE DATABASE


En la diapositiva, se muestran distintos ejemplos de los mandatos CREATE
DATABASE, con o sin el almacenamiento automático habilitado.
• create database sales1 on /dbsales1
La vía de acceso de base de datos de esta base de datos sería /dbsales1. La
base de datos tendría el almacenamiento automático habilitado con una vía de
acceso de almacenamiento automático, /dbsales1, la misma que la vía de
acceso de base de datos.
• create database sales2 automatic storage no on /dbsales2
La vía de acceso de base de datos de esta base de datos sería /dbsales2. La
base de datos tendría el almacenamiento automático inhabilitado. Se utilizaría la
gestión del espacio de tabla SMS para los tres espacios de tabla del sistema y
los contenedores utilizarían la vía de acceso de base de datos.
• create database sales3 on /dbauto3 dbpath on /dbsales3
La vía de acceso de base de datos de esta base de datos sería /dbsales3. La
base de datos tendría el almacenamiento automático habilitado con una vía de
acceso de almacenamiento automático, /dbauto3.

© Copyright IBM Corp. 2015 4-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• create database sales4 automatic storage yes on


/dbauto41,/dbauto42,/dbauto43 dbpath on /dbsales4
La vía de acceso de base de datos de esta base de datos sería /dbsales4. La
base de datos tendría el almacenamiento automático habilitado con tres vías de
acceso de almacenamiento automático, /dbauto41, /dbauto42 y /dbauto43.

© Copyright IBM Corp. 2015 4-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Cifrado nativo de DB2


Se puede solicitar el cifrado con una opción del mandato CREATE DATABASE
CREATE DATABASE mydb ENCRYPT;

• Proporciona cifrado de datos inactivos para mejorar la seguridad de


las empresas y ayudarles a cumplir la normativa
• Fácil de desplegar en cloud, software o dispositivos
• Cifra datos en línea y copias de seguridad
 Las copias de seguridad también se pueden comprimir
• Transparente
• Gestión de claves incorporada, segura y transparente
• Cumplimiento
 Algoritmos criptográficos que cumplen el estándar NIST SP 800-131
 Utiliza el cifrado certificar FIPS 140-2
• Se ejecuta siempre que se ejecuta DB2.
 Utiliza la aceleración de hardware disponible
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Cifrado nativo de DB2


El cifrado nativo de DB2 cifra la base de datos de DB2, no requiere modificaciones en
el hardware, el software, la aplicación o el esquema y proporciona una gestión de
claves transparente y segura.
El cifrado es el proceso de transformar datos para darles un formato ininteligible de tal
manera que los datos originales no se puedan obtener, o bien se puedan obtener solo
mediante un proceso de descifrado. Se trata de un modo eficaz de proteger la
información confidencial almacenada en cualquier soporte o transmitida a través de
canales de comunicación que no son de confianza. El cifrado es obligatorio para
mantener la conformidad con muchos estándares del sector y relaciones
gubernamentales.
En un esquema de cifrado, los datos que necesitan protección se transforman para
darles un formato ilegible. Eso se hace aplicando un algoritmo criptográfico y una clave
de cifrado. Un algoritmo criptográfico es una función matemática que se utiliza en los
procesos de cifrado y descifrado. Una clave de cifrado es una secuencia que controla
el funcionamiento de un algoritmo criptográfico y habilita un proceso fiable de cifrado y
descifrado de datos.

© Copyright IBM Corp. 2015 4-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Algunas soluciones de cifrado de datos para proteger los datos inactivos son
adecuadas en caso de robo físico de dispositivos de disco, mientras que otras pueden
protegernos frente al abuso de usuarios privilegiados. Con el cifrado de base de datos
nativo, el propio sistema de base de datos cifra los datos antes de llamar al sistema de
archivos subyacente para grabar dichos datos en el disco. Esto implica que no solo se
protegen los datos actuales, sino también los datos de los nuevos contenedores de
espacio de tabla o los espacios de tabla que se añadan en el futuro. El cifrado de base
de datos nativo es el adecuado para proteger los datos en casos de robo físico de
dispositivos de disco o abuso de usuarios privilegiados.
Normalmente, se utiliza para gestionar las claves un gestor de claves local o externo.
Una clave de cifrado de datos es la clave de cifrado con la que se cifran los datos
reales del usuario. Una clave maestra es una "clave de cifrado por clave": se utiliza
para proteger la clave de cifrado de datos. Si bien es la base de datos la que almacena
y gestiona la clave de cifrado de datos, la clave maestra se almacena y se gestiona
fuera de la base de datos.
DB2 versión 10.5, fixpack 5 añade cifrado de base de datos nativo al servidor de bases
de datos DB2. Esta mejora resulta fácil de implementar y proporciona gestión de clave
local segura basada en el estándar de criptografía de claves públicas n. º 12
(PKCS#12). El cifrado nativo de DB2 le permite cumplir los requisitos de conformidad
de una forma rentable.
• El cifrado nativo de DB2 no afecta a las aplicaciones ni los esquemas
El cifrado nativo de DB2 cifra los datos a medida que se graban en el disco. Se
implementa en el propio kernel de DB2. Esto significa que el cifrado no produce
ningún impacto sobre las aplicaciones ni los esquemas de base de datos
• La gestión de claves es segura y transparente
El cifrado nativo de DB2 utiliza un modelo estándar de dos niveles para la
gestión de claves. La clave de cifrado de datos (DEK) constituye el primer nivel.
La DEK es la clave real utilizada para ejecutar el cifrado de datos. A
continuación, la DEK se cifra con una segunda clave y se almacena en la base
de datos (o en la imagen de copia de seguridad). La segunda clave se denomina
clave maestra (MK) y constituye el segundo nivel. En el sector, se llama cifrado
de sobre a este modelo. La MK se almacena fuera de la base de datos, en un
almacén de claves compatible con un estándar de criptografía de claves públicas
(PKCS#12)

© Copyright IBM Corp. 2015 4-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• El cifrado nativo de DB2 cifra tanto los datos en línea como las imágenes
de copia de seguridad
Para cifrar los datos en línea, tiene que crear su base de datos con la nueva
opción ENCRYPT del mandato CREATE DATABASE. De forma
predeterminada, el cifrado de base de datos utiliza Advanced Encryption
Standard (AES) en modalidad Encadenamiento de bloques de cifrado (CBC) con
una clave de 256 bits. Hay otros algoritmos de cifrado y tamaños de clave
disponibles. Cada base de datos tiene su propia clave de cifrado de datos (DEK).
El cifrado para imágenes de copias de seguridad es independiente del cifrado de
base de datos online
• El cifrado nativo de DB2 utiliza criptografía certificada y respetuosa con la
normativa, y utiliza la aceleración de hardware para operaciones
criptográficas.
La certificación y la conformidad resultan fundamentales en lo que se refiere a las
soluciones de cifrado. El cifrado nativo de DB2 utiliza módulos criptográficos
certificados por FIPS 140-2. Además, el cifrado nativo de DB2 solo utiliza
algoritmos criptográficos que cumplen el estándar NIST SP 800 - 131. Del mismo
modo, el rendimiento resulta fundamental para las cargas de trabajo de bases de
datos. El cifrado nativo de DB2 es capaz de utilizar innovaciones recientes en
tecnología de procesador, como Intel AES-NI. Este uso se detecta
automáticamente y el cifrado nativo de DB2 lo utiliza de manera transparente
• El cifrado nativo de DB2 admite el cifrado de las bases de datos DB2
existentes
Es posible convertir una base de datos sin cifrar existente en una base de datos
cifrada.

© Copyright IBM Corp. 2015 4-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Completado por DB2 durante la creación de la base de


datos (1 de 2)
1. Crea la base de datos en el subdirectorio especificado (vía de acceso de
base de datos)
2. Si el almacenamiento automático está habilitado, se crea un grupo de
almacenamiento automático predeterminado denominado IBMSTOGROUP
3. Crea espacios de tabla SYSCATSPACE, TEMPSPACE1 y USERSPACE1
4. Crea las tablas de catálogo de sistema y los registros de recuperación
5. Cataloga la base de datos en el directorio de bases de datos local y el
directorio de base de datos del sistema
6. Almacena el conjunto de códigos, el territorio y la secuencia de clasificación
que se hayan especificado.
7. Crea los esquemas SYSCAT, SYSFUN, SYSIBM y SYSSTAT
8. Enlaza los archivos de enlace del gestor de bases de datos con la base de
datos (db2ubind.lst)
 Los paquetes CLI de DB2 se enlazan automáticamente con las bases de datos
cuando estas se crean o migran. Si un usuario descarta intencionadamente un
paquete, tendrá que volver a enlazar db2cli.lst.
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Completado por DB2 durante la creación de la base de datos


Al crear una base de datos, el gestor de bases de datos:
1. Crea la base de datos en la vía de acceso especificada (o la vía de acceso
predeterminada)
2. Si se habilita el almacenamiento automático, las vías de acceso de
almacenamiento definidas se asignarán a un depósito de almacenamiento
denominado IBMSTOGROUP.
3. Crea espacios de tabla SYSCATSPACE, TEMPSPACE1 y USERSPACE1.
4. Crea el registro de recuperación y las tablas de catálogo de sistema.
5. Cataloga la base de datos en los siguientes directorios de bases de datos:
• El directorio de bases de datos local del servidor en la vía de acceso
señalada por path o, si no se ha especificado el valor path, la vía de
acceso de base de datos predeterminada definida en el archivo de
configuración del sistema del gestor de bases de datos. Hay un directorio de
bases de datos local en cada sistema de archivos del sistema operativo
(Linux/UNIX) o unidad (Windows) que contenga una base de datos.

© Copyright IBM Corp. 2015 4-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• El directorio de base de datos del sistema del servidor de la instancia


adjunta. La entrada de directorio resultante contendrá el nombre de la base
de datos y un alias de base de datos. Si el mandato se ha emitido desde un
cliente remoto, el directorio de base de datos del sistema cliente también se
actualizará con el alias y el nombre de la base de datos.
Crea un sistema o un directorio de base de datos local si no existe ninguno
de los dos. Si se han especificado, los valores de comentario y conjunto de
códigos se colocarán en ambos directorios.
6. Almacena el conjunto de códigos, el territorio y la secuencia de clasificación
que se hayan especificado. Si la secuencia de clasificación consta de
ponderaciones exclusivas, o si se trata de la secuencia de identidad, se definirá
un indicador en el archivo de configuración de base de datos.
7. Crea esquemas SYSCAT, SYSFUN, SYSIBM y SYSSTAT con SYSIBM como
propietario.
8. Enlaza los archivos de enlace del gestor de bases de datos previamente
definido con la base de datos (se muestran en el archivo de enlace
db2ubind.lst).
Los paquetes CLI de DB2 se enlazan automáticamente con las bases de datos
cuando estas se crean o migran. Si un usuario descarta intencionadamente un
paquete, tendrá que volver a enlazar db2cli.lst.

© Copyright IBM Corp. 2015 4-22


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Completado por DB2 durante la creación de la base de


datos (2 de 2)
9. Otorga los privilegios siguientes:
 Privilegios ACCESSCTRL, DATAACCESS, DBADM y SECADM al
creador de la base de datos
 Privilegio SELECT en vistas y tablas de catálogo de sistema definido en
PUBLIC
 Acceso UPDATE a las vistas del catálogo SYSSTAT
 Privilegio BIND y EXECUTE definido en PUBLIC para cada programa
de utilidad de enlace correctamente enlazado
 Autoridades CREATETAB, BINDADD, IMPLICIT_SCHEMA y
CONNECT definidas en PUBLIC
 Privilegios USE del espacio de tabla USERSPACE1 definidos en
PUBLIC
 Uso de la carga de trabajo WLM para la clase de usuario
SYSDEFAULTUSERCLASS definido en PUBLIC
• Si se utiliza la opción RESTRICTIVE, no se otorga automáticamente
ningún privilegio a PUBLIC.
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Si crea una base de datos, se le otorgarán, en dicha base de datos, autoridades


predeterminadas a nivel de base de datos y privilegios predeterminados a nivel de
objeto.
9. Las autoridades y los privilegios que se le otorguen se mostrarán de acuerdo a
las vistas del catálogo del sistema donde se graben:
SYSCAT.DBAUTH
Al creador de la base de datos se le otorgan las autoridades siguientes:
• ACCESSCTRL
• DATAACCESS
• DBADM
• SECADM

© Copyright IBM Corp. 2015 4-23


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

En una base de datos no restrictiva, al grupo especial PUBLIC se le otorgan las


autoridades siguientes:
• CREATETAB
• BINDADD
• CONNECT
• IMPLICIT_SCHEMA
SYSCAT.TABAUTH
En una base de datos no restrictiva, al grupo especial PUBLIC se le otorgan los
privilegios siguientes:
• SELECT en todas las tablas SYSCAT y SYSIBM
• SELECT y UPDATE en todas las tablas SYSSTAT
• SELECT en las vistas siguientes del esquema SYSIBMADM:
• ALL_*
• USER_*
• ROLE_*
• SESSION_*
• DICTIONARY
• TAB
SYSCAT.ROUTINEAUTH
En una base de datos no restrictiva, al grupo especial PUBLIC se le otorgan los
privilegios siguientes:
• EXECUTE con GRANT en todos los procedimientos del esquema SQLJ
• EXECUTE con GRANT en todas las funciones y procedimientos del
esquema SYSFUN
• EXECUTE con GRANT en todas las funciones y procedimientos del
esquema SYSPROC (excepto las rutinas de auditoría)
• EXECUTE en todas las funciones de tabla del esquema SYSIBM
• EXECUTE en los procedimientos restantes del esquema SYSIBM

© Copyright IBM Corp. 2015 4-24


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

SYSCAT.MODULEAUTH
En una base de datos no restrictiva, al grupo especial PUBLIC se le otorgan los
privilegios siguientes:
• EXECUTE en los siguientes módulos del esquema SYSIBMADM:
• DBMS_DDL
• DBMS_JOB
• DBMS_LOB
• DBMS_OUTPUT
• DBMS_SQL
• DBMS_STANDARD
• DBMS_UTILITY
SYSCAT.PACKAGEAUTH
Al creador de la base de datos se le otorgan los privilegios siguientes:
• CONTROL en todos los paquetes creados en el esquema NULLID
• BIND con GRANT en todos los paquetes creados en el esquema NULLID
• EXECUTE con GRANT en todos los paquetes creados en el esquema
NULLID
En una base de datos no restrictiva, al grupo especial PUBLIC se le otorgan los
privilegios siguientes:
• BIND en todos los paquetes creados en el esquema NULLID
• EXECUTE en todos los paquetes creados en el esquema NULLID
SYSCAT.SCHEMAAUTH
En una base de datos no restrictiva, al grupo especial PUBLIC se le otorgan los
privilegios siguientes:
• CREATEIN en el esquema SQLJ
• CREATEIN en el esquema NULLID
SYSCAT.TBSPACEAUTH
En una base de datos no restrictiva, al grupo especial PUBLIC se le otorga el
privilegio USE en el espacio de tabla USERSPACE1.

© Copyright IBM Corp. 2015 4-25


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

SYSCAT.WORKLOADAUTH
En una base de datos no restrictiva, al grupo especial PUBLIC se le otorga el
privilegio USAGE en SYSDEFAULTUSERWORKLOAD.
SYSCAT.VARIABLEAUTH
En una base de datos no restrictiva, al grupo especial PUBLIC se le otorga el
privilegio READ en las variables globales del esquema SYSIBM, salvo por las
variables siguientes:
• SYSIBM.CLIENT_ORIGUSERID
• SYSIBM.CLIENT_USRSECTOKEN

© Copyright IBM Corp. 2015 4-26


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Almacenamiento de la vía de acceso de base de datos


Directorio partición-global Directorio específico del miembro
 El directorio partición-global tiene la vía de  El directorio específico del miembro tiene la vía
acceso: your_instance/NODExxxx⁄SQLxxxxx de acceso: your_instance/NODExxxx/SQLxxxx/
MEMBERxxxx
 /database/inst481/NODE0000/SQL00001:
 db2rhist.asc  /database/inst481/NODE0000/SQL00001
 db2rhist.bak /MEMBER0000:
 db2rhist.lock  db2event
 HADR  DB2TSCHG.HIS
 load  HADR
 LOGSTREAM0000 (registros de base de datos  SQLBP.1
predeterminada)  SQLBP.2
 MEMBER0000  SQLDBCONF
 SQLDBCONF  SQLINSLK
 SQLOGAB  SQLOGCTL.LFH.1
 SQLOGCTL.GLFH.1  SQLOGCTL.LFH.2
 SQLOGCTL.GLFH.2  SQLOGMIR.LFH
 SQLOGCTL.GLFH.LCK  SQLTMPLK
 SQLSGF.1
 SQLSGF.2  Directorio de bases de datos local
 SQLSPCS.1  /database/inst481/NODE0000/sqldbdir:
 SQLSPCS.2  sqldbbak
 /database/inst481/NODE0000/SQL00001  sqldbdir
/LOGSTREAM0000:  sqldbins
 S0000000.LOG
 S0000001.LOG
 S0000002.LOG
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Almacenamiento de la vía de acceso de base de datos


Directorios y archivos de la base de datos
Al crear la base de datos, la información relacionada con ella, incluida la
predeterminada, se almacena en una jerarquía de directorios.
La estructura de directorios jerárquica se crea automáticamente. Puede especificar la
ubicación de la estructura indicando una vía de acceso del directorio o una unidad para
el mandato CREATE DATABASE. Si no especifica una ubicación, se utilizará una
predeterminada.
En el directorio especificado como vía de acceso de base de datos en el mandato
CREATE DATABASE, se crea un subdirectorio que utiliza el nombre de la instancia.
En el subdirectorio nombre-instancia, se crea el directorio partición-global. El directorio
partición-global contiene información global asociada a la nueva base de datos. El
directorio partición-global se denomina NODExxxx/SQLyyyyy, donde xxxx es el
número de partición de datos e yyyyy es el token de la base de datos (numerado >=1).
En el directorio partición-global, se crea el directorio específico del miembro. El
directorio específico del miembro contiene información sobre la base de datos local. El
directorio específico del miembro se denomina MEMBERxxxx donde xxxx es el
número de miembro.

© Copyright IBM Corp. 2015 4-27


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

En un entorno pureScale de DB2, hay un directorio específico del miembro para cada
miembro, denominados MEMBER0000, MEMBER0001, etc.
En un entorno de bases de datos particionado, los números de los miembros
presentan una correlación uno a uno con su número de partición correspondiente. Por
lo tanto, hay un directorio NODExxxx por miembro y partición. Los directorios
específicos del miembro siempre se denominan MEMBERxxxx y se encuentran en el
directorio partición-global.
El entorno de Enterprise Server Edition se ejecuta en un único miembro y tiene un
directorio específico del miembro denominado MEMBER0000.
Directorio partición-global
El directorio partición-global tiene la vía de acceso:
your_instance/NODExxxx/SQLxxxxx
Este directorio contiene los archivos siguientes:
• Archivos del supervisor de sucesos de escritura en archivos de punto muerto
global que especifican una vía de acceso relativa o ninguna vía de acceso.
• Archivos de información del espacio de tabla. Los archivos SQLSPCS.1 y
SQLSPCS.2 contienen información del espacio de tabla. Estos archivos son
duplicados de cada uno a efectos de copia de seguridad.
• Archivos de control del depósito de almacenamiento. Los archivos SQLSGF.1 y
SQLSGF.2 contienen información del depósito de almacenamiento asociada a la
característica de almacenamiento automático de una base de datos. Estos
archivos son duplicados de cada uno a efectos de copia de seguridad y
mantenimiento. Se crean archivos para una base de datos cuando la base de
datos se crea utilizando el mandato CREATE DATABASE o cuando se actualiza
una base de datos de almacenamiento nonautomatic a DB2 Versión 10.1 o
posterior.
• Archivos del contenedor de espacio de tabla temporal. La ubicación
predeterminada para los nuevos contenedores se encuentra en el directorio
<instance/NODExxxx/<db-name>. Cada miembro gestiona de manera local los
archivos. Los nombres de archivo del espacio de tabla se personalizan en
exclusiva para cada miembro insertando el número de miembro en el nombre de
archivo, por ejemplo: /storage
path/SAMPLEDB/T0000011/C0000000.TMP/SQL00002.MEMBER0001.TDA

© Copyright IBM Corp. 2015 4-28


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• Archivo de configuración global. El archivo de configuración global,


SQLDBCONF, contiene parámetros de configuración de la base de datos que se
refieren a los recursos únicos y compartidos que deben mantener la coherencia
en toda la base de datos. No edite este archivo. Para cambiar los parámetros de
configuración, utilice los mandatos UPDATE DATABASE CONFIGURATION y
RESET DATABASE CONFIGURATION.
• Archivos de historial. El archivo de historial DB2RHIST.ASC y su copia de
seguridad DB2RHIST.BAK contienen información histórica sobre copias de
seguridad, restauraciones, cargas de tablas, reorganizaciones de tablas,
modificaciones de espacios de tablas y otros cambios efectuados en las bases
de datos.
• El archivo DB2TSCHG.HIS contiene un historial de los cambios realizados en el
espacio de tabla a nivel de archivo de registro. Para cada archivo de registro,
DB2TSCHG.HIS contiene información que permite identificar qué espacios de
tabla se ven afectados por el archivo de registro. La recuperación del espacio de
tabla utiliza información de este archivo para determinar los archivos de registro
que se deben procesar durante la recuperación del espacio de tabla. Puede
examinar el contenido de los archivos del historial en un editor de texto.
• Archivos relacionados con el registro. Los archivos de control de registro
globales, SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2, contienen información de
recuperación a nivel de base de datos como, por ejemplo, información
relacionada con la adición de nuevos miembros mientras la base de datos está
fuera de línea y el mantenimiento de una cadena de registro común entre los
miembros. Los propios archivos de registro están almacenados en los directorios
LOGSTREAMxxxx (uno por miembro) en el directorio partición-global.
• Archivos de bloqueo. Los archivos de bloqueo de base de datos de instancia,
SQLINSLK y SQLTMPLK, permiten garantizar que solo una instancia del gestor
de base de datos utilice una base de datos. Contenedores de almacenamiento
automático
Directorio específico del miembro
Esta es la vía de acceso del directorio específico del miembro:
/NODExxxx/SQLxxxx/MEMBERxxxx
Este directorio contiene objetos asociados a la primera base de datos creada. A las
bases de datos siguientes se les dan números más altos: SQL00002, etc. Estos
subdirectorios diferencian las bases de datos creadas en esta instancia en el directorio
especificado en el mandato CREATE DATABASE.

© Copyright IBM Corp. 2015 4-29


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

El directorio de bases de datos contiene los archivos siguientes:


• Archivos de información de la agrupación de almacenamiento intermedio. Los
archivos SQLBP.1 y SQLBP.2 contienen información de la agrupación de
almacenamiento intermedio. Estos archivos son duplicados de cada uno a
efectos de copia de seguridad.
• Archivos del supervisor de sucesos local.
• Archivos relacionados con el registro. Los archivos de control de registro,
SQLOGCTL.LFH.1, su copia de duplicación SQLOGCTL.LFH.2, y
SQLOGMIR.LFH, contienen información sobre los registros activos. En un
entorno pureScale de DB2, cada miembro tiene su propia secuencia de registro y
su conjunto de archivos LFH locales, que se almacenan en el directorio
específico de cada miembro.
Nota: correlacione el subdirectorio de registro con discos que no esté utilizando
para los datos. Si lo hace, es posible que restrinja los problemas de disco a los
datos o los registros, en lugar de tener problemas de disco tanto en los datos
como en los registros. Si correlaciona el subdirectorio de registro con los discos
que no está utilizando para los datos, obtendrá una ventaja de rendimiento
sustancial, dado que los contenedores de la base de datos y los archivos de
registro no competirán para mover las mismas cabeceras de disco. Para cambiar
la ubicación del subdirectorio de registro, utilice el parámetro de configuración de
base de datos newlogpath.
• Archivo de configuración local. El archivo local SQLDBCONF contiene
información de configuración de la base de datos. No edite este archivo. Para
cambiar los parámetros de configuración, utilice los mandatos UPDATE
DATABASE CONFIGURATION y RESET DATABASE CONFIGURATION.

© Copyright IBM Corp. 2015 4-30


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Contenedores predeterminados de espacio de tabla con


almacenamiento automático
CREATE DATABASE DSS ON /dbauto DBPATH ON /database

dbauto

inst20 DB2INSTANCE=inst20

NODE0000

DSS
T0000000 SYSCATSPACE
C0000000.CAT

T0000001 TEMPSPACE1
C0000000.TMP

T0000002 USERSPACE1
C0000000.LRG

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Contenedores predeterminados de espacio de tabla con almacenamiento automático


Si se habilita el almacenamiento automático cuando se crea una nueva base de datos,
DB2 utilizará la gestión de almacenamiento automático para los tres espacios de tabla
predeterminados del sistema. La cantidad de contenedores y sus nombres dependerán
de la cantidad y los nombres de las vías de acceso de almacenamiento automático
definidas.
En el ejemplo, se presupone que la base de datos denominada DSS se ha creado en
la instancia denominada inst20 con una única vía de acceso de almacenamiento
automático definida, denominada /dbauto. El espacio de tabla SYSCATSPACE solo
tendrá contenedores en NODE0000. Los otros dos espacios de tabla, USERSPACE1 y
TEMPSPACE1, tendrán contenedores definidos, pero no contendrán datos.

© Copyright IBM Corp. 2015 4-31


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Tablas y vistas del catálogo de sistema

...
SYSCAT SYSIBM.SYSCOLUMNS
Vistas
SYSSTAT SYSIBM.SYSCOLUMNS
...

Consulte las notas para ver los nombres reales


de la vista y la tabla.

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Tablas y vistas del catálogo de sistema


Para cada base de datos, se crea y se mantiene un conjunto de tablas de catálogo de
sistema. Estas tablas contienen información sobre las definiciones de los objetos de
bases de datos, así como información de seguridad sobre el tipo de acceso que los
usuarios tienen a dichos objetos.
El gestor de bases de datos crea y mantiene dos conjuntos de vistas de catálogo.
Todas las vistas del catálogo del sistema se crean al crear una base de datos con el
mandato CREATE DATABASE. Las vistas de catálogo no se pueden crear ni descartar
explícitamente. Las vistas se encuentran en el esquema SYSCAT y, de forma
predeterminada, se otorga el privilegio SELECT en todas las vistas a PUBLIC. Un
segundo conjunto de vistas, formado por un subconjunto de los que cuentan con el
esquema SYSCAT, contiene la información estadística utilizada por el optimizador
SQL. Las vistas del esquema SYSSTAT contienen algunas columnas actualizables.

© Copyright IBM Corp. 2015 4-32


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Límites del diseño de espacio de tabla: identificadores de


fila
• ID de fila estándar • ID de fila grandes
 Para tablas en espacios de tabla  Para tablas de espacios de tabla
regulares grandes (DMS o almacenamiento
automático)
 También todos los espacios de
tabla temporales SYSTEM y USER
8
4 64 4 TB
KB GB 128 KB 16
GB 256 TB
8 KB 8 KB 32
GB 512
TB
GB 64
16 KB 16 KB TB

32 KB 32 KB
Tamaño
Tamaño Tamaño del espacio de página
de página de tabla Tamaño del espacio
de tabla
16M 255 512M ~2000
páginas 4x109 filas páginas filas 1,1x1012 filas
filas
ID de fila (RID) 4 bytes ID de fila grande (RID) 6 bytes
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Límites del diseño de espacio de tabla: identificadores de fila


Limitaciones de almacenamiento para espacios de tablas regulares
Si se crea un espacio de tabla como espacio de tablas regular, los identificadores de
fila de 4 bytes utilizados marcarán un límite de tamaño para las tablas de DB2 y los
espacios de tabla. Los tres bytes utilizados para los números de página pueden
proporcionar direccionamiento a hasta 16 millones de páginas. El único byte utilizado
para los números de ranura limita las páginas a un máximo de 255 filas por página.
Esto proporciona un límite global de unos 4.000 millones de filas.
El almacenamiento máximo para la tabla y los espacios de tabla depende del tamaño
de página seleccionado para el espacio de tabla. Con 16 millones de páginas, un
espacio de tabla de páginas de 4 KB estaría limitado a 64 gigabytes de
almacenamiento. El uso de páginas de 8 KB permite duplicar el límite y llegar hasta los
128 GB. Para las páginas de 16 KB, el límite es de 256 GB, mientras que un tamaño
de página de 32 KB permite hacer frente a un máximo de 512 GB.

© Copyright IBM Corp. 2015 4-33


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

En el caso de tablas en espacios de tabla SMS, el límite se aplica al nivel de la tabla.


En el caso de tablas en espacios de tabla gestionados por DMS, el límite se aplica al
espacio de tabla. Así pues, al crear una tabla con 6 índices en un espacio de tabla de
DMS con páginas de 8 KB, el límite de tamaño de la tabla y sus índices sería de 256
GB. Con los espacios de tabla de DMS, los índices de la tabla se pueden almacenar
en un espacio de tabla de DMS distinto, regular o grande, lo que permitiría que una
tabla grande utilizase la capacidad máxima de un espacio de tablas regular de DMS.
Límites del almacenamiento en espacio de tabla para espacios de tabla grandes
Los espacios de tabla grandes utilizan identificadores de fila de 6 bytes que amplían los
límites de tamaño de las tablas de DB2 y los espacios de tabla. En el caso de ID de fila
de 6 bytes, se utilizan cuatro bytes para los números de página, de modo que se
proporciona direccionamiento a hasta 2.000 millones de páginas. Los otros dos bytes
se utilizan para los números de ranura, lo que permite almacenar más filas por página
de datos. Esto proporciona un límite global de, aproximadamente, 1,1 billones de filas
para una tabla.
El almacenamiento máximo para la tabla y los espacios de tabla depende del tamaño
de página seleccionado para el espacio de tabla. Con 512 millones de páginas, un
espacio de tablas de páginas de 4 KB estaría limitado a 8 terabytes de
almacenamiento. El uso de páginas de 8 KB permite duplicar el límite y llegar hasta los
16 terabytes. Para las páginas de 16 KB, el límite es de 32 terabytes, mientras que un
tamaño de página de 32 KB permite hacer frente a un máximo de 64 Terabytes.
Los ID de fila de 6 bytes se utilizan para espacios de tabla de DMS grandes. Los ID de
fila estándar de 4 bytes seguirán utilizándose en los espacios de tabla regulares de
SMS y DMS.
Todas las tablas temporales del usuario y el sistema utilizarán los identificadores de fila
de 6 bytes, más grandes, para los objetos de datos temporales. Esto se aplica a los
espacios de tabla temporales de SMS y DMS.

© Copyright IBM Corp. 2015 4-34


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Sintaxis de CREATE TABLESPACE (1 de 2)


LARGE
CREATE TABLESPACE tablespace-name
REGULAR
SYSTEM
TEMPORARY
USER PAGESIZE 4096

DATABASE PARTITION GROUP PAGESIZE integer


K
IN db-partition-group-name

AUTOMATIC STORAGE -USING STOGROUP--storagegroup-name- | size-attr.


MANAGED BY SYSTEM | system-containers |
DATABASE |database-containers | EXTENTSIZE num-pages
integer K
M
G

PREFETCHSIZE AUTOMATIC BUFFERPOOL bufferpool-name


num-pages
integer K
M
G
number-of-milliseconds NO FILE SYSTEM CACHING
OVERHEAD Inherit FILE SYSTEM CACHING

number-of-milliseconds DROPPED TABLE RECOVERY ON


TRANSFERRATE Inherit OFF
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Sintaxis de CREATE TABLESPACE


En la imagen, se muestra una parte de la sintaxis utilizada para crear un espacio de
tabla.
El valor predeterminado para el tipo de espacio de tabla es grande (Large). El tipo de
gestión predeterminada del espacio de tabla es de almacenamiento automático
(automatic storage). Con DB2 LUW 10, a los espacios de tabla de almacenamiento
automático se les puede asignar un depósito de almacenamiento designado. Esto
indica a DB2 que tiene que asignar los contenedores de un conjunto de contenedores
específico que puede tener distintas características de dispositivo.
Cuando se crea un espacio de tabla, el tamaño de la página y el tamaño de la
extensión son fijos, no se pueden modificar. Se pueden asignar espacios de tabla para
que utilicen una agrupación de almacenamiento intermedio específica con un tamaño
de página coincidente.
OVERHEAD y TRANSFERRATE proporcionan estimaciones de rendimiento que el
optimizador de DB2 utilizará para determinar planes de acceso eficaces. Los valores
de OVERHEAD y TRANSFERRATE se pueden definir de modo que se hereden del
depósito de almacenamiento de los espacios de tabla de almacenamiento automático.

© Copyright IBM Corp. 2015 4-35


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Sintaxis de CREATE TABLESPACE (2 de 2)


size-attributes:

AUTORESIZE YES INITIALSIZE int K INCREASESIZE int perc MAXSIZE int K


NO M K M
G M G
system-containers: G NONE

,
USING ( 'container-string' )
| on-db-partitions-clause |
database-containers:

USING | container-clause |
| on-db-partitions-clause |
container-clause:
,
( FILE 'container-string' num-pages )
DEVICE integer K
M
G
on-db-partitions-clause:
,
ON DBPARTITIONNUM ( db-partition-number1 )
DBPARTITIONNUMS TO db-partition-number2

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Puede seleccionar algunas opciones adicionales al crear un espacio de tabla, como las
siguientes:
• AUTORESIZE: especifica si se habilita o no la prestación de ajuste de tamaño
automático de un espacio de tabla de DMS o un espacio de tabla de
almacenamiento automático. Los espacios de tabla con capacidad para efectuar
un ajuste de tamaño automático incrementan automáticamente su tamaño
cuando se llenan. El valor predeterminado es NO para los espacios de tabla de
DMS y YES para los espacios de tabla de almacenamiento automático.

© Copyright IBM Corp. 2015 4-36


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• INITIALSIZE número entero K | M | G: especifica el tamaño inicial, por partición


de base de datos, de un espacio de tabla de almacenamiento automático. Esta
opción solo es válida para los espacios de tabla de almacenamiento automático.
El valor entero debe ir seguido de K (si son kilobytes), M (si son megabytes) G (si
son gigabytes). Tenga en cuenta que el valor real utilizado podría ser algo más
pequeño que el especificado, porque el gestor de bases de datos trata de
mantener un tamaño coherente entre los distintos contenedores del espacio de
tablas. Sin embargo, si el tamaño del espacio de tabla se puede ajustar
automáticamente y el tamaño inicial no es lo bastante grande como para
contener los metadatos que haya que añadir al nuevo espacio de tablas, el
gestor de bases de datos seguirá ampliando el espacio de tabla según el valor
de INCREASESIZE hasta que haya espacio suficiente. Si no se especifica la
cláusula INITIALSIZE, el gestor de bases de datos determina el valor adecuado.
El valor del entero tiene que ser de, al menos, 48 K.
• INCREASESIZE número entero PERCENT o INCREASESIZE número entero K
| M | G: especifica la cantidad, por partición de base de datos, en la que se
aumentará un espacio de tabla habilitado para ajustarse automáticamente
cuando este esté lleno y se solicite espacio. El valor entero debe ir seguido de:
• PERCENT para especificar la cantidad como porcentaje del tamaño del
espacio de tabla cuando se efectúa una solicitud de espacio. Si se especifica
PERCENT, el valor entero debe situarse entre 0 y 100 (SQLSTATE 42615).
• K (si son kilobytes), M (si son megabytes), o G (si son gigabytes) para
especificar la cantidad en bytes
Tenga en cuenta que el valor real utilizado podría ser algo más pequeño o
más grande que el especificado, porque el gestor de bases de datos trata de
mantener un crecimiento coherente entre los distintos contenedores del
espacio de tablas. Si el espacio de tabla tiene habilitada la opción de ajuste de
tamaño automático, pero no se ha especificado la cláusula INCREASESIZE,
el gestor de bases de datos determinará el valor correcto.
• MAXSIZE número entero K | M | G o MAXSIZE NONE: especifica el tamaño
máximo hasta el que se puede ampliar automáticamente un espacio de tabla
habilitado para el ajuste de tamaño automático. Si el espacio de tabla está
habilitado para el ajuste de tamaño automático, pero no se ha especificado la
cláusula MAXSIZE, el valor predeterminado será NONE.

© Copyright IBM Corp. 2015 4-37


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• número entero
Especifica un límite de tamaño estricto, por partición de base de datos, hasta
el que se puede ampliar automáticamente un espacio de tabla de DMS o un
espacio de tabla de almacenamiento automático. El valor entero debe ir
seguido de K (si son kilobytes), M (si son megabytes) G (si son gigabytes).
Tenga en cuenta que el valor real utilizado podría ser algo más pequeño que
el especificado, porque el gestor de bases de datos trata de mantener un
crecimiento coherente entre los distintos contenedores del espacio de tablas.
• NONE
Especifica que el espacio de tabla puede crecer en toda la capacidad de
sistema de archivos, o hasta el tamaño máximo del espacio de tabla (descrito
en el apartado "Límites de SQL y XML").
Los espacios de tabla gestionados por DMS requieren definiciones de contenedor que
incluyan un tamaño específico, mientras que los espacios de tabla gestionados por
SMS requieren definiciones de contenedor sin un tamaño especificado.

© Copyright IBM Corp. 2015 4-38


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Depósitos de almacenamiento (almacenamiento a distintas


temperaturas)
Tabla de partición: ventas

Partición 2012T1 2011T4 2011T3 2011T2 2011T1 2010T4 … 2006T3

Espacio de tabla Espacio de Espacio de Espacio de Espacio de Espacio de Espacio de


Espacio de 14 tabla 13 tabla 12 tabla 11 tabla 10 tabla 9

tabla 1
tabla de …
almacenamiento
automático

vía_almac: vía_almac: /warm/fs1 vía_almac: /cold/fs1


Depósito /hot/fs1 vía_almac: /warm/fs2 vía_almac: /cold/fs2
de almace- vía_almac: /cold/fs3
DB2 10 SG_HOT DA_espera
namiento DA_inactivos

Disco físico

Matriz RAID de SSD Matriz RAID de FC/SAS Matriz RAID de SATA

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Depósitos de almacenamiento (almacenamiento a distintas temperaturas)


Los depósitos de almacenamiento son un nuevo tipo de objeto de base de datos con
DB2 10. Se utilizan solo en los espacios de tabla de almacenamiento automático y se
pueden usar para añadir la capacidad de dirigir los espacios de tabla de
almacenamiento automático a un conjunto definido de vías de acceso de
almacenamiento.
Un depósito de almacenamiento es un conjunto denominado de vías de acceso de
almacenamiento en la que se pueden almacenar datos. Los depósitos de
almacenamiento se han configurado para representar las distintas clases de
almacenamiento disponible en el sistema de base de datos. Puede asignar espacios
de tabla al depósito de almacenamiento que mejor se adecúe a los datos. Solo los
espacios de tabla de almacenamiento automático utilizan grupos de almacenamiento.
Un espacio de tabla se puede asociar a un único depósito de almacenamiento, pero un
depósito de almacenamiento puede tener varias asociaciones de espacio de tabla.
Para gestionar los objetos del depósito de almacenamiento, puede utilizar las
sentencias CREATE STOGROUP, ALTER STOGROUP, RENAME STOGROUP,
DROP y COMMENT.

© Copyright IBM Corp. 2015 4-39


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Con la característica de particionamiento de tabla, puede colocar los datos de la tabla


en varios espacios de tabla. Con esta característica, los depósitos de almacenamiento
pueden almacenar un subconjunto de datos de tabla en almacenamiento rápido,
mientras que los datos restantes se encontrarán en una o varias capas de
almacenamiento más lento. Utilice los depósitos de almacenamiento para dar soporte
al almacenamiento a distintas temperaturas, que da prioridad a los datos basados en
clases de almacenamiento. Por ejemplo puede crear depósitos de almacenamiento
que se correlacionen con los distintos niveles de almacenamiento del sistema de base
de datos. Luego, los espacios de tabla definidos se asocian a estos depósitos de
almacenamiento.
Al definir depósitos de almacenamiento, asegúrese de agrupar las vías de acceso de
almacenamiento de acuerdo a sus características de calidad de servicio. Las
características comunes de calidad de servicio de los datos siguen un modelo de
antigüedad de acuerdo con el cual los datos más recientes son objeto de acceso
frecuente y requieren que este sea más rápido (datos activos) A los datos más
antiguos se accede con menos frecuencia, por lo que el tiempo necesario para ello
puede ser mayor (datos en espera o inactivos).
La prioridad de los datos se basa en:
• La frecuencia de acceso
• Un tiempo de acceso aceptable
• La volatilidad de los datos
• Los requisitos de la aplicación

© Copyright IBM Corp. 2015 4-40


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Creación de un depósito de almacenamiento


• Utilice la sentencia CREATE STOGROUP para crear un nuevo
depósito de almacenamiento
>>-CREATE--STOGROUP--storagegroup-name-------------------------->
.-,--------------.
V |
>--ON---'storage-path'-+--●------------------------------------->

>--+----------------------------------+--●---------------------->
'-OVERHEAD--number-of-milliseconds-'
>--+-----------------------------------------------+--●--------->
'-DEVICE READ RATE--number-megabytes-per-second-'

>--+--------------------------------+--●------------------------>
'-DATA TAG--+-integer-constant-+-'
'-NONE-------------'
>--+----------------+--●---------------------------------------><
'-SET AS DEFAULT-'
CREATE STOGROUP HIGHEND
ON '/dbe/filesystem1', '/db2/filesystem2' OVERHEAD 0.75 DEVICE READ RATE 500 ;

CREATE STOGROUP MIDRANGE ON 'D:\', 'E:\' SET AS DEFAULT ;

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Creación de un depósito de almacenamiento


Utilice la sentencia CREATE STOGROUP para crear depósitos de almacenamiento. Si
en una base de datos se crea un depósito de almacenamiento, a este se le asignan
vías de acceso de almacenamiento.
Si crea una base de datos con la cláusula AUTOMATIC STORAGE NO, no tendrá un
depósito de almacenamiento predeterminado. Puede utilizar la sentencia CREATE
STOGROUP para crear un depósito de almacenamiento predeterminado.
Nota: aunque puede especificar la cláusula AUTOMATIC STORAGE NO al crear una
base de datos, la cláusula AUTOMATIC STORAGE está en desuso y podría eliminarse
en futuras versiones.
Para crear un depósito de almacenamiento utilizando la línea de mandatos, indique la
sentencia siguiente:
CREATE STOGROUP operational_sg ON '/filesystem1', '/filesystem2'
donde operational_sg es el nombre del depósito de almacenamiento y
/filesystem1 y /filesystem2 son las vías de acceso de almacenamiento que se
van a añadir.
Nota: para disponer de un almacenamiento previsible, todas las vías de acceso
asignadas a un depósito de almacenamiento deben tener las mismas características
de soporte: latencia, velocidad de lectura del dispositivo y tamaño.

© Copyright IBM Corp. 2015 4-41


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Asignar un espacio de tabla a un depósito de


almacenamiento
• Se puede seleccionar un depósito de almacenamiento específico con
la opción USING STOGROUP de CREATE TABLESPACE
create tablespace tsp04
managed by automatic storage using stogroup app_data
initialsize 100 K maxsize none
extentsize 2;

• La vía de acceso de almacenamiento de base de datos definida


cuando se crea la base de datos, denominada IBMSTOGROUP
 Este será el depósito de almacenamiento predeterminado para los espacios
de tabla de almacenamiento automático si no se especifica USING
STOGROUP
 La opción SET AS DEFAULT de la sentencia ALTER STOGROUP se
puede utilizar para cambiar el grupo de almacenamiento predeterminado
para una base de datos

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Asignar un espacio de tabla a un depósito de almacenamiento


En el caso de espacios de tabla de almacenamiento automático, la opción USING
STOGROUP permite que se asigne un nuevo espacio de tabla a un depósito de
almacenamiento ya existente. Esto permite al administrador de bases de datos
seleccionar el subconjunto de vías de acceso de disco que se utilizaría para asignar los
contenedores de un espacio de tabla de almacenamiento automático. DB2 permite que
la misma vía de acceso se incluya en varios depósitos de almacenamiento.
Si una base de datos tiene depósitos de almacenamiento, el predeterminado se
utilizará cuando se cree un espacio de tabla gestionado por almacenamiento
automático sin especificar explícitamente el depósito de almacenamiento.
Al crear una base de datos, se crea automáticamente un depósito de almacenamiento
denominado IBMSTOGROUP. Sin embargo, una base de datos creada con la cláusula
AUTOMATIC STORAGE NO no tendrá depósito de almacenamiento predeterminado.
El primer depósito de almacenamiento creado con la sentencia CREATE STOGROUP
se convierte en el depósito de almacenamiento predeterminado designado. Solo puede
haber un depósito de almacenamiento designado como depósito de almacenamiento
predeterminado.

© Copyright IBM Corp. 2015 4-42


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Puede designar un depósito de almacenamiento predeterminado utilizando las


sentencias CREATE STOGROUP o ALTER STOGROUP. Si designa un depósito de
almacenamiento distinto como depósito de almacenamiento predeterminado, esto no
afectará a los espacios de tabla existentes que utilicen el antiguo depósito de
almacenamiento predeterminado. Para modificar el depósito de almacenamiento
asociado a un espacio de tabla, utilice la sentencia ALTER TABLESPACE.
Puede determinar qué depósito de almacenamiento es el predeterminado utilizando la
vista de catálogo SYSCAT.STOGROUPS.

© Copyright IBM Corp. 2015 4-43


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Gestionar depósitos de almacenamiento mediante ALTER


STOGROUP
• Utilice la sentencia ALTER STOGROUP para aplicar cambios al depósito
de almacenamiento
 Similar a las vías de acceso de almacenamiento de base de datos de versiones
anteriores
 Se pueden añadir nuevas vías de acceso de almacenamiento de disco
 Se pueden descartar vías de acceso de almacenamiento existentes
− Utilice ALTERTABLESPACE REBALANCE para que cada espacio de tabla libere
contenedores en la vía de acceso descartada
>>-ALTER--STOGROUP--storagegroup-name--------------------------->
.-------------------------------------------------------.
| .-,--------------. |
V V | (1) |
>----+-ADD---'storage-path'-+------------------------+-----+---><
| .-,--------------. |
| V | |
+-DROP---'storage-path'-+-----------------------+
+-OVERHEAD--number-of-milliseconds--------------+
+-DEVICE READ RATE--number-megabytes-per-second-+
+-DATA TAG--+-integer-constant-+----------------+
| '-NONE-------------' |
'-SET AS DEFAULT--------------------------------'

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Gestionar depósitos de almacenamiento mediante ALTER STOGROUP


Puede utilizar la sentencia ALTER STOGROUP para modificar la definición de un
depósito de almacenamiento, incluidas la configuración de atributos de soporte, la
definición de una etiqueta de datos o el establecimiento de un depósito de
almacenamiento predeterminado. El procesamiento es parecido al que se obtenía con
ALTER DATABASE en versiones anteriores, pero ALTER STOGROUP solo cambia un
depósito de almacenamiento. También puede añadir y eliminar vías de acceso de
almacenamiento de un depósito de almacenamiento.
Si añade vías de acceso de almacenamiento a un depósito de almacenamiento y
quiere dividir las ampliaciones de los espacios de tabla en todas las vías de acceso de
almacenamiento, tiene que utilizar la sentencia ALTER TABLESPACE con la opción
REBALANCE para cada espacio de tabla asociado al depósito de almacenamiento.
Si descarta las vías de acceso de almacenamiento de un depósito de almacenamiento,
tendrá que utilizar la sentencia ALTER TABLESPACE con la opción REBALANCE
para sacar las ampliaciones asignadas de las vías de acceso descartadas.
Puede utilizar DB2 Work Load Manager (WLM) para definir reglas sobre cómo tratar
las actividades en función de la etiqueta asociada a los datos a los que se ha accedido.
La etiqueta se asocia a los datos cuando se define un espacio de tabla o un depósito
de almacenamiento.

© Copyright IBM Corp. 2015 4-44


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Realizar consultas en depósitos de almacenamiento con


SQL mediante la función de tabla
ADMIN_GET_STORAGE_PATHS
select varchar(storage_group_name,20) as storage_group,
storage_group_id,
varchar(db_storage_path,20) as storage_path,
db_storage_path_state,
(fs_total_size / 1000000) as total_path_MB,
(sto_path_free_size / 1000000) as path_free_MB
from table(admin_get_storage_paths('',-1)) as T1

STORAGE_GROUP STORAGE_GROUP_ID STORAGE_PATH DB_STORAGE_PATH_STATE


-------------------- ---------------- -------------------- ---------------------
IBMSTOGROUP 0 /dbauto/path1 IN_USE
APP_DATA 1 /dbauto/path2 IN_USE

TOTAL_PATH_MB PATH_FREE_MB
-------------------- --------------------
20940 5649
20940 5649

2 record(s) selected.

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Realizar consultas en depósitos de almacenamiento con SQL mediante la función de


tabla ADMIN_GET_STORAGE_PATHS
La función de tabla ADMIN_GET_STORAGE_PATHS devuelve una lista de las vías de
acceso de almacenamiento automático para cada depósito de almacenamiento de
base de datos, incluida la información del sistema de archivos de cada vía de acceso
de almacenamiento, y se puede utilizar para comprobar el estado de los depósitos de
almacenamiento de base de datos.
Sintaxis
>>-ADMIN_GET_STORAGE_PATHS--(--storage_group_name--,--member--
)-><
El esquema es SYSPROC.
Parámetros de la función de tabla
• storage_group_name: argumento de entrada de tipo VARCHAR(128) que
especifica un nombre válido para el grupo de almacenamiento en la base de
datos conectada cuando se llama a la función. Si el argumento es NULL, o una
serie vacía, se devuelve información para todos los depósitos de
almacenamiento de la base de datos. Si se especifica el argumento, solo se
devuelve información para el depósito de almacenamiento identificado.

© Copyright IBM Corp. 2015 4-45


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• member: argumento de entrada de tipo INTEGER que especifica un miembro


válido en la misma instancia que la base de datos conectada cuando se llama a
la función. Especifique -1 para el último miembro de la base de datos o -2 para
todos los miembros de la base de datos. Si se especifica el valor NULL, se
establece -1 de forma implícita.
Autorización
Se necesita una de las autoridades siguientes para ejecutar la rutina:
• Privilegio EXECUTE en la rutina
• Autoridad DATAACCESS
• Autoridad DBADM
• Autoridad SQLADM

© Copyright IBM Corp. 2015 4-46


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Listar depósitos de almacenamiento con el mandato db2pd


• db2pd –db musicdb –storagegroups

Database Member 0 -- Database MUSICDB -- Active -- Up 0 days 00:09:38 -- Date 2014-09-10-10.00.43.472063

Storage Group Configuration:


Address SGID Default DataTag Name
0x00007F94AC34C020 0 Yes 0 IBMSTOGROUP
0x00007F94B39A7440 1 No 0 APP_DATA

Storage Group Statistics:


Address SGID State Numpaths NumDropPen
0x00007F94AC34C020 0 0x00000000 1 0
0x00007F94B39A7440 1 0x00000000 1 0

Storage Group Paths:


Address SGID PathID PathState PathName
0x00007F94AC34C140 0 0 InUse /dbauto/path1
0x00007F94B39A8580 1 1024 NotInUse /dbauto/path2

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Listar depósitos de almacenamiento con el mandato db2pd


En la imagen, se muestra un ejemplo de informe del mandato db2pd para depósitos de
almacenamiento. El mandato db2pd puede utilizarse para obtener información actual
sobre los grupos de almacenamiento de una base de datos.
En el informe, se muestran todos los depósitos de almacenamiento definidos de una
base de datos y se incluye la designación del depósito de almacenamiento
predeterminado, además de presentar las vías de acceso asignadas a cada grupo de
almacenamiento.

© Copyright IBM Corp. 2015 4-47


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Alternativas de la gestión de almacenamiento: automática


• Sintaxis para CREATE y ALTER TABLESPACE:
CREATE TABLESPACE <tsName> [MANAGED BY AUTOMATIC STORAGE]
[USING STOGROUP storagegroup-name ]
[INITIALSIZE integer {K|M|G}]
[AUTORESIZE {NO|YES}] [INCREASESIZE integer {PERCENT|K|M|G}]
[MAXSIZE {NONE | integer {K|M|G}}]

• El tamaño inicial predeterminado es 32 MB


• No hay un tamaño máximo predeterminado (none)
• El tamaño de incremento predeterminado lo determina DB2 y
puede cambiar a lo largo del ciclo de vida del espacio de tabla
• Ejemplos:
CREATE TABLESPACE USER1 USING STOGROUP APP_DATA
CREATE TEMPORARY TABLESPACE TEMPTS
CREATE TABLESPACE MYTS INITIALSIZE 100 M MAXSIZE 1 G
CREATE LARGE TABLESPACE LRGTS INITIALSIZE 5 G AUTORESIZE NO
CREATE REGULAR TABLESPACE USER2 INITIALSIZE 500 M

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Alternativas de la gestión de almacenamiento: automática


La administración de espacios de tabla resulta muy sencilla con el almacenamiento
automático. La sintaxis CREATE TABLESPACE no requiere los nombres de los
contenedores ni el número de contenedores que se van a definir. En el caso de los
espacios de tabla de almacenamiento automático, el espacio en disco se asigna desde
un depósito de almacenamiento. Si no se ha especificado ningún depósito de
almacenamiento, se utilizará uno predeterminado.
Así, el administrador de base de datos podrá supervisar el espacio disponible en todo
el depósito de almacenamiento, sin necesidad de supervisar cada espacio de tabla
individual. Siempre que haya espacio disponible en una de las vías de acceso de
almacenamiento, DB2 podrá ampliar automáticamente un espacio de tabla. Es posible
que las bases de datos más pequeñas necesiten un único depósito de
almacenamiento para la base de datos.
Al crear un espacio de tabla, DB2 puede crear varios contenedores utilizando todas las
vías de acceso de almacenamiento disponibles, lo que ayuda a mejorar el rendimiento
de exploraciones de tablas e índices.
Se pueden añadir vías de acceso de almacenamiento adicionales utilizando una
sentencia ALTER STOGROUP, con el fin de dar soporte a un posible crecimiento en el
futuro.

© Copyright IBM Corp. 2015 4-48


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

La gestión de almacenamiento automático utiliza espacios de tabla DMS y SMS a un


nivel más profundo. Se utiliza un espacio de tabla DMS para los espacios de tabla
REGULAR y LARGE, mientras que el SMS se utiliza para los espacios de tabla
SYSTEM y USER TEMPORARY.
La asignación de espacios de tabla de almacenamiento automático se puede controlar
utilizando las opciones de CREATE y ALTER TABLESPACE, incluidas las siguientes:
• INITIALSIZE: toma 32 MB como valor predeterminado, si no se concreta.
• AUTORESIZE: se puede definir en YES o NO. YES es el valor predeterminado
para espacios de tabla regulares y grandes.
• INCREASESIZE: se puede definir en una cantidad específica o un incremento
en porcentajes.
• MAXSIZE: se puede utilizar para definir un límite en el crecimiento del espacio
de tabla.

© Copyright IBM Corp. 2015 4-49


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

ALTER TABLESPACE
• ALTER TABLESPACE se puede utilizar para cambiar las características
del espacio de tabla:
 Para la gestión de cualquier tipo de espacio de tabla, puede ajustar:
− La agrupación de almacenamiento intermedio asignada
− Eltamaño de captación previa
− Costes de entrada/salida de tasa de transferencia y sobrecarga
− Opción de almacenamiento en memoria caché de sistema de archivo
 En espacios de tabla gestionados por DMS, puede:
− Utilice ADD, DROP, RESIZE, EXTEND, REDUCE y BEGIN NEW STRIPE SET
para ajustar directamente los tamaños y los nombres de los contenedores.
− Utilice MANAGED BY AUTOMATIC STORAGE para pasar a la gestión de
almacenamiento automático
 En el caso de espacios de tabla gestionados por almacenamiento automático,
puede:
− Utilizarla opción REDUCE para liberar el espacio de disco no utilizado
− UtilizarREBALANCE para reasignar los contenedores cuando se añadan o se
descarten vías de acceso de almacenamiento automático
 En el caso de DMS y del almacenamiento automático, puede:
− Cambiar los valores MAXSIZE, INCREASESIZE y AUTORESIZE
 En el caso del almacenamiento automático
− Cambie el depósito de almacenamiento, USING STOGROUP
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

ALTER TABLESPACE
La sentencia ALTER TABLESPACE se utiliza para modificar de las siguientes maneras
un espacio de tabla existente:
• Añadir un contenedor a, o descartarlo de, un espacio de tabla de DMS, es decir,
un espacio de tabla creado con la opción MANAGED BY DATABASE.
• Modificar el tamaño de un contenedor en un espacio de tabla de DMS.
• Reducir la marca de límite superior de un espacio de tabla de DMS mediante el
movimiento de ampliaciones.
• Añadir un contenedor a un espacio de tabla de SMS en una partición de base de
datos que actualmente no tiene contenedores.
• Modificar el valor PREFETCHSIZE de un espacio de tabla.
• Modificar el valor BUFFERPOOL utilizado para las tablas en el espacio de tabla.
• Modificar el valor OVERHEAD de un espacio de tabla.
• Modificar el valor TRANSFERRATE de un espacio de tabla.
• Modificar la política de almacenamiento en memoria caché del sistema de
archivos de un espacio de tabla.

© Copyright IBM Corp. 2015 4-50


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• Habilitar o inhabilitar el ajuste de tamaño automático para un espacio de tabla de


DMS o de almacenamiento automático.
• Reequilibrar un espacio de tabla de almacenamiento automático regular o
grande.
Los privilegios ostentados por el ID de autorización de la sentencia deben incluir las
autoridades SYSCTRL o SYSADM.
A partir de DB2 10.1, la sentencia ALTER TABLESPACE se puede utilizar con una
opción USING STOGROUP para cambiar el depósito de almacenamiento de un
espacio de tabla. Esto hará que DB2 asigne un nuevo conjunto de contenedores en el
depósito de almacenamiento de destino y reequilibre los datos en los nuevos
contenedores. Los contenedores originales se suprimirán cuando finalice la operación
automática de reequilibrado.

© Copyright IBM Corp. 2015 4-51


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Añadir o descartar vías de acceso al almacenamiento


automático
• Para añadir nuevas vías de acceso de almacenamiento automático a un
depósito de almacenamiento, utilice ALTER STOGROUP
alter STOGROUP APP_DATA add storage on
‘/dbauto/path3’,’/dbauto/path4’
 Se puede habilitar el almacenamiento automático en una base de datos
existente creando el primer depósito de almacenamiento, que se convertirá en
el depósito de almacenamiento predeterminado
 Los espacios de tabla de almacenamiento automático existentes crecerán
utilizando las vías de acceso de almacenamiento previamente asignadas hasta
que se utilice el espacio restante
 Los espacios de tabla recién creados empezarán a utilizar todas las vías de
acceso definidas
 Es posible modificar los espacios de tabla individuales utilizando REBALANCE
para dispersar los datos entre todas las vías de acceso de almacenamiento
• Las vías de acceso de almacenamiento también se pueden eliminar
utilizando ALTER STOGROUP
alter STOGROUP IBMSTOGROUP drop storage on ‘/dbauto/path1’
 La vía de acceso descartada se quedará en estado drop pending hasta que se
utilice ALTER TABLESPACE con la opción REBALANCE para cada espacio de
tabla con contenedores en la vía de acceso descartada
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Añadir o descartar vías de acceso al almacenamiento automático


Se pueden añadir nuevas vías de acceso de almacenamiento automático a una base
de datos utilizando el mandato ALTER STOGROUP.
Por ejemplo:
alter stogroup APP_DATA add storage on
‘/dbauto/path3’,’/dbauto/path4’
• Para habilitar el almacenamiento automático en una base de datos existente,
cree un nuevo depósito de almacenamiento, que se convertirá en el depósito de
almacenamiento predeterminado de la base de datos.
• Cuando se añadan nuevas vías de acceso a un depósito de almacenamiento, los
espacios de tabla automáticos existentes de dicho grupo crecerán utilizando las
vías de acceso de almacenamiento previamente asignadas hasta que se utilice
el espacio restante.
• Los espacios de tabla recién creados empezarán a utilizar todas las vías de
acceso definidas
• Es posible modificar los espacios de tabla individuales utilizando REBALANCE
para dispersar los datos entre todas las vías de acceso de almacenamiento

© Copyright IBM Corp. 2015 4-52


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Las vías de acceso de almacenamiento también se pueden eliminar utilizando ALTER


STOGROUP.
alter STOGROUP IBMSTOGROUP drop storage on ‘/dbauto/path1’
La vía de acceso descartada se quedará en estado drop pending hasta que se utilice
ALTER TABLESPACE con la opción REBALANCE para cada espacio de tabla con
contenedores en la vía de acceso descartada.

© Copyright IBM Corp. 2015 4-53


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Uso de la vista SYSCAT.TABLESPACES

SELECT substr(tbspace,1,18) as tbspace, substr(definer,1,10) as definer,


tbspaceid, tbspacetype, datatype, sgname
from syscat.tablespaces

TBSPACE DEFINER TBSPACEID TBSPACETYPE DATATYPE SGNAME


------------------ ---------- ----------- ----------- -------- ------------
SYSCATSPACE SYSIBM 0 D A IBMSTOGROUP
TEMPSPACE1 SYSIBM 1 S T IBMSTOGROUP
USERSPACE1 SYSIBM 2 D L IBMSTOGROUP
SYSTOOLSPACE inst28 3 D L IBMSTOGROUP
TSP01 inst28 4 D L APP_DATA
TSP02 inst28 5 D L -
TSP03 inst28 6 D L -
TSP04 inst28 7 D L APP_DATA
TSP05 inst28 8 D L APP_DATA
TSP06 inst28 9 D A IBMSTOGROUP

Los espacios de tabla gestionados por


DMS no se asociarán a un depósito de
almacenamiento

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Uso de la vista SYSCAT.TABLESPACES


La consulta y el resultado de ejemplo muestran cómo se puede utilizar la vista
SYSCAT.TABLESPACES para obtener información sobre los espacios de tabla de una
base de datos.
Observe que los tres espacios de tabla predeterminados aparecen en la lista con el
definidor SYSIBM. La columna SGNAME muestra el depósito de almacenamiento
utilizado para los espacios de tabla de almacenamiento automático.
La columna TBSPACETYPE es el tipo de espacio de tabla.
• D = Espacio gestionado por base de datos
• S = Espacio gestionado por el sistema
La columna DATATYPE muestra el tipo de datos que se pueden almacenar en este
espacio de tabla.
• A = Todos los tipos de datos permanentes; espacio de tabla regular
• L = Todos los tipos de datos permanentes; espacio de tabla grande
• T = Solo tablas temporales del sistema
• U = Solo tablas temporales creadas o tablas temporales declaradas

© Copyright IBM Corp. 2015 4-54


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Cómo usar el mandato db2pd para listar las estadísticas y


el estado del espacio de tabla
db2pd –db musicdb –tablespaces

Database Member 0 -- Database MUSICDB -- Active -- Up 0 days 00:04:04 -- Date 05/03/2012


17:38:55
Tablespace Configuration:
Address Id Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk ..Name
0x9396EEC0 0 DMS Regular 4096 4 Yes 4 1 1 ..SYSCATSPACE
0x93977C90 1 SMS SysTmp 4096 32 Yes 32 1 1 ..TEMPSPACE1
0x93982990 2 DMS Large 4096 32 Yes 32 1 1 ..USERSPACE1
0x95727700 3 DMS Large 4096 4 Yes 4 1 1 ..SYSTOOLSPACE
0x957B92B0 4 DMS Regular 4096 4 Yes 4 1 1 ..TSP01
0x957C58B0 5 DMS Large 4096 2 Yes 2 1 1 ..TSP02
0x957D8760 6 DMS Large 4096 8 Yes 8 1 1 ..TSP03
0x957E0EC0 7 DMS Large 4096 2 Yes 2 1 1 ..TSP04

Tablespace Statistics:
Address Id TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM
0x9396EEC0 0 24576 24572 20696 0 3876 20696
0x93977C90 1 1 1 1 0 0 0
…..

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Cómo usar el mandato db2pd para listar las estadísticas y el estado del espacio de tabla
El mandato db2pd se puede utilizar para listar el estado actual y el uso de los espacios
de tabla de una base de datos activa. El mandato db2pd lo ejecutaría desde el servidor
de bases de datos un sistema de usuario, la autoridad de administración de sistema
definida para la instancia de DB2.
En la diapositiva, se muestra un ejemplo de parte del informe de espacio de tabla
detallado generado por un mandato db2pd.

© Copyright IBM Corp. 2015 4-55


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Cómo usar la función MON_GET_TABLESPACE


SELECT VARCHAR(TBSP_NAME,10) AS TBSP_NAME, CONTAINER_ID, STRIPE_SET ,
CONTAINER_TYPE, TOTAL_PAGES
FROM TABLE(MON_GET_CONTAINER(NULL,-1)) AS CONT WHERE TBSP_NAME IN
('DMSMTSPD','ASMTSPD') ORDER BY TBSP_NAME,CONTAINER_ID

TBSP_NAME CONTAINER_ID STRIPE_SET CONTAINER_TYPE TOTAL_PAGES


---------- -------------------- -------------------- ---------------- --------------------
ASMTSPD 0 0 FILE_EXTENT_TAG 4512
ASMTSPD 1 0 FILE_EXTENT_TAG 4512
ASMTSPD 2 0 FILE_EXTENT_TAG 4512
DMSMTSPD 0 0 FILE_EXTENT_TAG 4000
DMSMTSPD 1 0 FILE_EXTENT_TAG 4000
DMSMTSPD 2 0 FILE_EXTENT_TAG 4000
DMSMTSPD 3 1 FILE_EXTENT_TAG 2000

SELECT VARCHAR(TBSP_NAME,20) AS TBSP_NAME, TBSP_TOTAL_PAGES AS TOTAL_PAGES,


TBSP_USED_PAGES AS USED_PAGES , (100 * TBSP_USED_PAGES / TBSP_TOTAL_PAGES ) AS
PCT_USED,
TBSP_PAGE_TOP AS HIGH_WATER_MARK, (100 * TBSP_PAGE_TOP / TBSP_TOTAL_PAGES ) AS
PCT_HWM
FROM TABLE (MON_GET_TABLESPACE(NULL,-1)) AS TBSP WHERE TBSP_NAME IN
('DMSMTSPD','ASMTSPD') ORDER BY TBSP_NAME

TBSP_NAME TOTAL_PAGES USED_PAGES PCT_USED HIGH_WATER_MARK PCT_HWM


----------- ----------- ----------- --------- ----------------- ---------
ASMTSPD 13536 3176 23 10904 80
DMSMTSPD 14000 3176 22 10904 77
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Cómo usar la función MON_GET_TABLESPACE


En la diapositiva, se muestran ejemplos de consulta SQL que se pueden utilizar para
recopilar información sobre el uso del espacio actual para espacios de tabla, incluida la
marca de límite superior.
La primera consulta SQL utiliza la función de tabla MON_GET_CONTAINERS para
recuperar el número y el tamaño de los contenedores de dos espacios de tabla.
En el segundo ejemplo de consulta, se utiliza la función de tabla
MON_GET_TABLESPACE para encontrar el tamaño de la asignación, el uso del
espacio actual y la marca de límite superior actual para dos espacios de tabla.
El término "marca de límite superior" se refiere a la máxima ampliación asignada para
un espacio de tabla.
Por ejemplo, un espacio de tabla se define en 25 GB y se utiliza para cargar dos tablas.
La primera tabla requiere 5 GB de almacenamiento. La segunda tabla asigna 10 GB
adicionales de almacenamiento. Si la primera tabla se descarta, el valor de la marca de
límite superior indicaría 15 GB, pero se notificaría que el espacio utilizado es de 10 GB,
con 15 GB disponibles de espacio libre.
Tenga en cuenta que, en ambos ejemplos, la marca de límite superior es bastante más
grande que el espacio actualmente utilizado.

© Copyright IBM Corp. 2015 4-56


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Mantener o listar el directorio de base de datos del sistema


• CLP
db2 ? CATALOG DATABASE
CATALOG DATABASE database-name [AS alias] [ON path | AT NODE nodename]
[AUTHENTICATION {SERVER | CLIENT | ... | SERVER_ENCRYPT}]
[WITH "comment-string"]

db2 'CATALOG DATABASE ourdb AS TESTDB ON /database WITH "Test Database"'

db2 LIST DATABASE DIRECTORY

Database alias = TESTDB


Database name = OURDB
Local database directory = /database
Database release level = a.00
Comment = Test Database
Directory entry type = Indirect
Catalog database partition number = 4

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Mantener o listar el directorio de base de datos del sistema


El procesador de línea de mandatos de DB2 se puede utilizar para cambiar las
entradas de directorio del directorio de base de datos del sistema para una instancia de
DB2.
En el directorio de bases de datos, el alias de base de datos debe ser exclusivo. El
nombre de base de datos no tiene que ser exclusivo. Uno de los motivos para
catalogar una base de datos local es cambiar su alias, que es el nombre con el que
usuarios y programas identifican la base de datos. Cuando se crea una base de datos,
su alias es el mismo que su nombre. El nombre con el que usuarios y programas
denominan a la base de datos puede cambiar sin necesidad de descartar (DROP) y
volver a crear (CREATE) la base de datos.
Quizás quiera catalogar a la base de datos con más de un nombre de alias.
El mandato UNCATALOG se puede utilizar para eliminar un alias de base de datos.

© Copyright IBM Corp. 2015 4-57


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Configuración de base de datos

db2 get db cfg for musicdb show detail


db2 update db cfg for musicdb using <parm> <value>
Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Configuración de base de datos


El archivo de configuración de base de datos se crea cuando se crea una base de
datos de DB2. Los parámetros que contiene afectan a los recursos a nivel de base de
datos. Los valores predeterminados de muchos de estos parámetros se pueden
modificar para mejorar el rendimiento o para adaptarse a los requisitos de las distintas
aplicaciones.
Se puede utilizar el procesador de línea de mandatos de DB2, o herramientas como
IBM Data Studio, para obtener un listado del archivo de configuración de base de
datos. El mandato GET DB CFG mostrará los parámetros contenidos en el archivo de
configuración de base de datos.
Los parámetros actualizables del archivo de configuración de base de datos se pueden
modificar utilizando el mandato UPDATE DB CFG o la herramienta IBM Data Studio.
La página de códigos, el código de país, el conjunto de códigos y el territorio de la base
de datos se registran en el archivo de configuración de base de datos. Sin embargo,
estos parámetros no se pueden modificar.
La opción -dbcfg del mandato db2pd se puede utilizar también para obtener las
opciones actuales de una base de datos activa. Esto muestra el valor activo en la
memoria y el valor actual del archivo de disco de configuración, que puede entrar en
vigor la próxima vez que se inicie la base de datos.

© Copyright IBM Corp. 2015 4-58


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Activar y desactivar la base de datos


• ACTIVATE DATABASE
 Activa la base de datos especificada e inicia todos los servicios de base
de datos necesarios, de manera que la base de datos esté disponible
para que cualquier aplicación pueda conectarse a ella y utilizarla.
− Induce el proceso de inicio de la base de datos
db2 activate db <db_name> user <user> using <password>

• DEACTIVATE DATABASE
 Las bases de datos inicializadas por ACTIVATE DATABASE se pueden
cerrar utilizando el mandato DEACTIVATE DATABASE o el mandato
db2stop.
db2 deactivate db <db_name>

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Activar y desactivar la base de datos


Si una base de datos no se ha iniciado y se emite un mandato CONNECT TO (o uno
de conexión implícito) en una aplicación, la aplicación tendrá que esperar mientras el
gestor de bases de datos inicia la base de datos requerida para poder trabajar con ella.
Sin embargo, una vez iniciada la base de datos, otras aplicaciones pueden
simplemente conectarse y utilizarla sin emplear tiempo en el inicio.
Los administradores de bases de datos pueden utilizar ACTIVATE DATABASE para
iniciar las bases de datos seleccionadas. Con esto, desaparece el tiempo empleado
por la aplicación en la inicialización de la base de datos.
Las bases de datos inicializadas por ACTIVATE DATABASE se pueden cerrar
utilizando el mandato DEACTIVATE DATABASE o el mandato db2stop.
Si una base de datos se ha iniciado con un mandato CONNECT TO (o uno de
conexión implícito) y, a continuación, se emite un mandato ACTIVATE DATABASE
para la misma base de datos, deberá utilizarse DEACTIVATE DATABASE para cerrar
dicha base de datos. Si no se ha utilizado ACTIVATE DATABASE para iniciar la base
de datos, esta se cerrará cuando se desconecte la última aplicación.

© Copyright IBM Corp. 2015 4-59


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

ACTIVATE DATABASE se comporta de manera similar a un mandato CONNECT TO


(o uno de conexión implícito) cuando trabaja con una base de datos que requiere un
reinicio (por ejemplo, una base de datos en estado incoherente). La base de datos se
reiniciará antes de que la pueda inicializar ACTIVATE DATABASE. El reinicio solo se
efectuará si la base de datos se ha configurado con la opción AUTORESTART ON.
La aplicación que emite el mandato ACTIVATE DATABASE no puede tener una
conexión activa con ninguna base de datos.

© Copyright IBM Corp. 2015 4-60


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Demostración 1
Creación de bases de datos y ubicación de los datos

• Crear una nueva base de datos DB2


• Cambiar algunas de las opciones predeterminadas de configuración
de base de datos
• Crear un nuevo depósito de almacenamiento para dar soporte al
almacenamiento de aplicaciones
• Crear un conjunto de espacios de tabla que den soporte a los objetos
de base de datos que vayamos a crear
• Utilizar consultas SQL y mandatos db2pd para revisar las opciones y
el almacenamiento de disco asociados a la nueva base de datos

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Demostración 1: crear bases de datos y ubicación de los datos

© Copyright IBM Corp. 2015 4-61


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Demostración 1:
crear bases de datos y ubicación de datos
Objetivo:
En esta demostración, crearemos una nueva base de datos de DB2
denominada MUSICDB que dará soporte a los objetos de base de datos que
se crearán y se gestionarán en posteriores demostraciones.

Tarea 1. Iniciar la sesión en el sistema Windows y crear la


base de datos de DB2, MUSICDB.
En esta demostración, crearemos una nueva base de datos DB2 con el nombre
MUSICDB. El curso utiliza un conjunto de tablas de ejemplo, de manera que
crearemos una serie de espacios de tabla para proporcionar el almacenamiento a
dichas tablas. La base de datos se creará en la instancia, inst23, creada en una
demostración anterior.
En la mayoría de los casos, la demostración incluirá instrucciones detalladas para
realizar cada paso utilizando la herramienta IBM Data Server Manager. También
tendrá la opción de completar algunas tareas utilizando un procesador de línea de
mandatos de DB2. Algunos mandatos solo se pueden ejecutar utilizando un
procesador de línea de mandatos de DB2.
1. Inicie la sesión en el sistema Windows con el ID de usuario inst23 y la
contraseña ibm2blue.
El procesador de línea de mandatos de DB2 se utilizará para emitir algunos
mandatos de sistema y de DB2. Tendrá que iniciar la ventana de mandato de
DB2 en modalidad de administrador para emitir estos mandatos de DB2.
2. Para iniciar la ventana de mandatos de DB2, pulse el icono de inicio de
Windows y luego vaya a Todos los programas > IBM DB2 DB2COPY1 >
DB2 Command Window - Administrator. Cuando aparezca la pregunta
"¿Desea permitir que este programa realice cambios en el equipo?", seleccione
Sí.
Hay un conjunto de archivos del curso en el directorio c:\inst23\ddl.
Pasaremos a este directorio para que resulte más sencillo acceder a los
archivos que contienen mandatos de DB2 o sentencias SQL y luego
comprobaremos la instancia de DB2 actual.

© Copyright IBM Corp. 2015 4-62


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

3. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2:
• cd c:\inst23\ddl
• db2 get instance
La instancia actual debería ser INST23.
En este punto, puede optar por crear la base de datos utilizando el mandato
CREATE DATABASE con el procesador de línea de mandatos de DB2 o la
herramienta Data Server Manager. Siga los pasos de la herramienta que haya
elegido.
Tarea 1A. Utilizar el procesador de línea de mandatos de DB2.
1. Emita la siguiente serie de mandatos utilizando el procesador de línea de
mandatos de DB2.
• db2 create database musicdb on c:\
• db2 connect to musicdb
2. Puede pasar a la Tarea 2.
Tarea 1B. Utilizar la herramienta Data Server Manager.
La herramienta IBM Data Server Manager, denominada DSM, se ha instalado
en el entorno de la práctica de laboratorio para proporcionar una única interfaz
gráfica que se puede utilizar para gestionar el servidor de bases de datos de
DB2. El acceso a DSM se efectúa a través de un navegador web. Una vez
instalado el software, se le ha asociado un número de puerto TCPIP al servicio
de DSM, 11080.
1. Efectúe una doble pulsación en el acceso directo de Data Server Manager en
el escritorio de Windows.
Si no existe ningún acceso directo, abra el navegador Internet Explorer y
escriba el siguiente texto de URL para iniciar el DSM, http//localhost:11080.
2. Inicie la sesión en DSM con:
• El ID de usuario de Windows: db2admin
• La contraseña de usuario: ibm2blue
Utilizaremos DSM para crear la base de datos MUSICDB. Con el objetivo de
crear una nueva base de datos de DB2, tenemos que seleccionar la instancia
de DB2, inst23.
3. Pulse la opción Administer, a la izquierda de la aplicación DSM y, a
continuación, seleccione Explore Databases.

© Copyright IBM Corp. 2015 4-63


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

4. Asegúrese de que la primera desplegable de la parte superior esté definida en


Host Port Instance.
5. En la lista Select a Database or an Instance, seleccione localhost 30230
INST23 (Instance).
Debería ver los botones que se pueden utilizar para iniciar o detener esta
instancia de DB2.
6. Pulse Create a new database.
Ahora, puede seleccionar un conjunto de opciones de base de datos para la
nueva base de datos.
7. En la sección Detail, escriba el nombre de base de datos MUSICDB.
8. Expanda las opciones de la sección Storage y pulse Browse para especificar
la vía de acceso de disco que se utilizará para el almacenamiento de espacio
de tabla automático. Seleccione el siguiente directorio de disco, C:\.
9. Expanda las opciones de la sección Locale y, en la lista Country or Region,
seleccione United States of America.
10. Pulse el botón Next.
El texto del mandato generado CREATE DATABASE aparece en la parte
inferior de la ventana.
11. Pulse Finish para empezar a procesar el mandato CREATE DATABASE
generado.
Espere a que la creación de la base de datos se haya completado. El proceso
puede tardar varios minutos.
Tarea 2. Configurar una conexión de base de datos con la base
de datos MUSICDB de DB2 desde Data Server
Manager.
Crearemos un perfil de conexión de base de datos para la nueva base de
datos, MUSICDB, que utilizará la herramienta Data Server Manager.
1. Pulse la opción Set Up, a la izquierda de la aplicación DSM y, a continuación,
seleccione Database Connections.
2. Pulse el icono (+) para añadir una nueva conexión de base de datos.

© Copyright IBM Corp. 2015 4-64


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

3. En la ventana Add Database Connection, indique lo siguiente:


• Nombre de conexión de base de datos: MUSICDB
• Nombre de base de datos: MUSICDB
• Nombre de host: localhost
• Número de puerto: 50230
• ID de usuario: inst23
• Contraseña: ibm2blue
Deje las opciones restantes con los valores predeterminados.
4. Pulse Test Connection y espere la respuesta "The connection to MUSICDB
was successful". Pulse OK para que la respuesta desaparezca.
5. Pulse OK para completar la creación de la conexión.
Tarea 3. Cambiar las opciones de configuración
predeterminadas de la nueva base de datos
MUSICDB.
Al crear la base de datos, las opciones de configuración se establecen en valores
predeterminados o configurados automáticamente. Podemos realizar ajustes sobre
estos valores para que se ajusten mejor al uso deseado de la base de datos.
En este punto, puede optar por realizar cambios en la configuración de la base de
datos con el mandato UPDATE DB CFG utilizando el procesador de línea de mandatos
de DB2 o la herramienta Data Server Manager. Siga los pasos de la herramienta que
haya elegido.
Volveremos a configurar el número primario (Initial) y secundario (Additional) de los
archivos de registro de la base de datos.
Tarea 3A. Utilizar el procesador de línea de mandatos de DB2.
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• db2 connect to musicdb
• db2 update db cfg using logprimary 5 logsecond 10

© Copyright IBM Corp. 2015 4-65


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

La respuesta incluye el mensaje de aviso SQL1363W, que indica que uno o


varios de los cambios no entrarán en vigor hasta que se reinicie la base de
datos. En este caso, la opción LOGPRIMARY no se puede cambiar de manera
dinámica.
• db2 get db cfg show detail | more
2. Puede pasar a la Tarea 4.
Tarea 3B. Utilizar la herramienta Data Server Manager.
Podemos utilizar la herramienta DSM para revisar la configuración de la base de datos
y efectuar cambios.
Si no ha iniciado la aplicación DSM, iníciela ahora utilizando el siguiente texto de URL,
http//localhost:11080. Utilice este usuario y esta contraseña para DSM:
• El ID de usuario de Windows: db2admin
• La contraseña de usuario: ibm2blue
Algunos de los cambios efectuados sobre la configuración de la base de datos pueden
entrar en vigor de inmediato, mientras que otros requerirán que se reinicie la base de
datos.
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
La base de datos MUSICDB debería aparecer en la lista con algunas
estadísticas básicas sobre el uso de los recursos, como la CPU, la
entrada/salida y la memoria. El nombre de base de datos MUSICDB
proporciona una lista desplegable para realizar distintas tareas.
2. Pulse la flecha que se encuentra junto a MUSICDB y seleccione Administer -
Explore Database en la lista.
3. Especifique el ID de usuario, inst23, y la contraseña, ibm2blue. A
continuación, pulse OK.
4. Pulse Configuration parameters.
5. Pulse Logging para expandir las opciones de configuración relacionadas con
el registro.

© Copyright IBM Corp. 2015 4-66


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

6. Desplácese por la lista de opciones de configuración de registro relacionadas


hasta localizar LOGPRIMARY y LOGSECOND. A continuación, realice estas
ediciones:
• LOGPRIMARY: 5
• LOGSECOND: 10, desmarque el recuadro que se encuentra bajo
Immediate
La herramienta DSM genera un mandato UPDATE DB CFG para aplicar estos
cambios. Se añade al mandato la opción aplazada.
7. Pulse Next.
8. En Run Schedule, seleccione Run with SQL Editor y, a continuación, pulse
Finish.
9. Pulse Run y espere a que se procese el mandato.
El resultado debería mostrar que el proceso de mandato ha sido correcto.
Tarea 4. Crear un nuevo depósito de almacenamiento para dar
soporte al almacenamiento de aplicaciones.
El mandato CREATE DATABASE ha creado un depósito de almacenamiento,
IBMSTOGROUP. Nosotros crearemos un nuevo depósito de almacenamiento para dar
soporte a varios de los espacios de tabla de almacenamiento automático. El archivo
c:\inst23\ddl\create_storgroup.ddl contiene la sentencia CREATE STOGROUP. El
archivo contiene el siguiente texto de sentencia:
CREATE STOGROUP app_data ON 'C:\dbauto\path1','C:\dbauto\path2';
En este punto, puede elegir entre crear el depósito de almacenamiento con el
procesador de línea de mandatos de DB2 o la herramienta Data Server Manager. Siga
los pasos de la herramienta que haya elegido.
Tarea 4A. Utilizar el procesador de línea de mandatos de DB2.
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf create_stogroup.ddl
El mandato db2pd se puede utilizar para listar los depósitos de
almacenamiento de una base de datos activa.
• db2pd -db musicdb -storage

© Copyright IBM Corp. 2015 4-67


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

La salida de este mandato tendrá un aspecto parecido al siguiente:


Database Member 0 -- Database MUSICDB -- Active -- Up 6 days 19:57:39 --
Date 2015-08-11-10.43.12.024000

Storage Group Configuration:


Address SGID Default DataTag Name
0x0000000001214820 0 Yes 0 IBMSTOGROUP
0x0000000021B7F000 1 No 0 APP_DATA

Storage Group Statistics:


Address SGID State Numpaths NumDropPen
0x0000000001214820 0 0x00000000 1 0
0x0000000021B7F000 1 0x00000000 2 0

Storage Group Paths:


Address SGID PathID PathState PathName
0x0000000001238000 0 0 InUse C:
0x0000000021B82000 1 1024 NotInUse C:\dbauto\path1
0x0000000021B84000 1 1025 NotInUse c:\dbauto\path2
2. Puede pasar a la Tarea 5.
Tarea 4B. Utilizar la herramienta Data Server Manager.
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
La base de datos MUSICDB debería aparecer en la lista con algunas
estadísticas básicas sobre el uso de los recursos, como la CPU, la
entrada/salida y la memoria. El nombre de base de datos MUSICDB
proporciona una lista desplegable para realizar distintas tareas.
2. Pulse la flecha que se encuentra junto a MUSICDB, seleccione Administer -
Explore Database en la lista e inicie la sesión con el ID de usuario inst23 y la
contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.

3. A la izquierda de la vista de DSM, pulse Storage Groups .


El depósito de almacenamiento IBMSTOGROUP es el depósito de
almacenamiento predeterminado que se define al crear la base de datos.

© Copyright IBM Corp. 2015 4-68


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

4. Pulse Create para abrir una lista de opciones y definir un nuevo depósito de
almacenamiento. Especifique los siguientes valores para el nuevo depósito de
almacenamiento:
• Nombre del depósito de almacenamiento: APP_DATA
• Depósito de almacenamiento predeterminado: NO
• Vías de acceso de almacenamiento: C:\dbauto\path1,C:\dbauto\path2
La herramienta DSM genera la sentencia CREATE STOGROUP que define el
nuevo depósito de almacenamiento, denominado APP_DATA, con dos vías de
acceso de almacenamiento.
El texto del mandato debería ser el siguiente:
CREATE STOGROUP "APP_DATA" ON 'C:\dbauto\path1','C:\dbauto\path2';
5. Pulse Next.
6. Seleccione Run with SQL Editor y, a continuación, pulse Finish.
El resultado debería mostrar que el proceso de mandato ha sido correcto.
7. Cierre el separador Create Storage Group.
Tarea 5. Crear un nuevo espacio de tabla para dar soporte a
los objetos de aplicación.
Vamos a crear un nuevo espacio de tabla con los atributos siguientes:
• Nombre del espacio de tabla: TSP01
• Tipo de espacio de tabla: Large
• La agrupación de almacenamiento intermedio debería ser IBMDEFAULTBP
(que es también el valor predeterminado)
• La gestión del espacio de tabla es Automatic_Storage
• Depósito de almacenamiento: APP_DATA
• El tamaño inicial debería ser 1 MB (256 páginas de 4 KB)
• El contenedor debe ser un archivo
• El tamaño de la extensión del espacio de tabla debe ser 4
• AUTORESIZE debe incrementar su tamaño en 100 KB si se necesita más
almacenamiento en disco. No se especificará un tamaño máximo.
En este punto, puede elegir entre crear el espacio de tabla TSP01 con el procesador
de línea de mandatos de DB2 o la herramienta Data Server Manager. Siga los pasos
de la herramienta que haya elegido.

© Copyright IBM Corp. 2015 4-69


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Tarea 5A. Utilizar el procesador de línea de mandatos de DB2.


El archivo c:\inst23\ddl\create_tablespace_tsp01.ddl contiene la sentencia CREATE
TABLESPACE. El archivo contiene el siguiente texto de sentencia:
CREATE TABLESPACE TSP01 using stogroup APP_DATA
INITIALSIZE 1M INCREASESIZE 100K
EXTENTSIZE 4 ;
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf create_tablespace_tsp01.ddl
El mandato db2pd se puede utilizar para listar los espacios de tabla de una
base de datos activa.
• db2pd -db musicdb -tablespaces | more
2. Puede pasar a la Tarea 6.
Tarea 5B. Utilizar la herramienta Data Server Manager.
Podemos utilizar la herramienta DSM para crear el nuevo espacio de tabla, TSP01.
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
La base de datos MUSICDB debería aparecer en la lista con algunas
estadísticas básicas sobre el uso de los recursos, como la CPU, la
entrada/salida y la memoria. El nombre de base de datos MUSICDB
proporciona una lista desplegable para realizar distintas tareas.
2. Pulse la flecha que se encuentra junto a MUSICDB, seleccione Administer -
Explore Database en la lista e inicie la sesión con el ID de usuario inst23 y la
contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.

3. A la izquierda del panel de DSM, pulse Table spaces .


Se listarán los espacios de tabla creados por el sistema.

© Copyright IBM Corp. 2015 4-70


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

4. Pulse Create para abrir una lista de opciones y definir un nuevo depósito de
almacenamiento. Especifique los valores siguientes para el nuevo depósito de
almacenamiento:
• Nombre: TSP01 (utilice las mayúsculas)
• Nombre del depósito de almacenamiento: APP_DATA
• Tamaño de la extensión: 4
• Tamaño inicial: 1 M
• Tamaño de incremento: 100 K
La herramienta DSM genera la sentencia CREATE TABLESPACE que definirá
el nuevo espacio de tabla, denominado TSP01.
El texto del mandato debe ser parecido al siguiente:
CREATE TABLESPACE "TSP01" MANAGED BY AUTOMATIC STORAGE
USING STOGROUP APP_DATA AUTORESIZE YES
INITIALSIZE 1M INCREASESIZE 100K
EXTENTSIZE 4 ;
;
5. Pulse Next.
6. Seleccione Run with SQL Editor y, a continuación, pulse Finish.
El resultado debería mostrar que el proceso de mandato ha sido correcto.
7. Cierre el separador Create Table Space.
8. A la izquierda del panel de DSM, pulse Table spaces y, a continuación, en el
separador
Database Explorer, pulse Refresh .
Debería ver el nuevo espacio de tabla, TSP01, incluido en la lista.
Tarea 6. Crear un conjunto de nuevos espacios de tabla con un
archivo SQL.
Crearemos un grupo de espacios de tabla utilizando un archivo SQL que contenga las
sentencias CREATE TABLESPACE.
El archivo c:\inst23\ddl\create_tablespaces.ddl contiene cinco sentencias CREATE
TABLESPACE.

© Copyright IBM Corp. 2015 4-71


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

El archivo contiene el siguiente texto de sentencia:


create tablespace tsp02
managed by database
using (file 'tsp02' 128)
extentsize 2 autoresize yes maxsize 2 M ;

create tablespace tsp03


managed by database
using (file 'tsp03' 1024)
extentsize 8 autoresize yes maxsize 10 M ;

create tablespace tsp04


managed by automatic storage using stogroup app_data
initialsize 100 K maxsize none
extentsize 2;

create tablespace tsp05 using stogroup app_data


initialsize 64 K maxsize 1 M
extentsize 2;

create regular tablespace tsp06


extentsize 4;
;
En este punto, puede elegir entre crear la tabla spaces.using con el procesador de
línea de mandatos de DB2 o la herramienta Data Server Manager. Siga los pasos de la
herramienta que haya elegido.
Tarea 6A. Utilizar el procesador de línea de mandatos de DB2.
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf create_tablespaces.ddl
El mandato LIST TABLESPACES se puede utilizar para listar los espacios de
tabla de una base de datos activa.
• db2 list tablespaces | more
2. Puede pasar a la Tarea 7.

© Copyright IBM Corp. 2015 4-72


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Tarea 6B. Utilizar la herramienta Data Server Manager.


Podemos utilizar la herramienta DSM para ejecutar el archivo SQL que contiene las
sentencias CREATE TABLESPACE.
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
Debería ver la base de datos MUSICDB en la lista. El nombre de base de datos
MUSICDB proporciona una lista desplegable para realizar distintas tareas.
2. Pulse la flecha que se encuentra junto a MUSICDB, seleccione Administer -
Explore Database en la lista e inicie la sesión con el ID de usuario inst23 y la
contraseña ibm2blue.
3. En la parte superior del panel de DSM, pulse Open SQL Editor.
4. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
5. Pulse Browse, vaya a C:\inst23\ddl\ y abra create_tablespaces.ddl.
6. Pulse OK para cargar el texto SQL en el editor SQL.
Revise las opciones especificadas para las cinco sentencias CREATE
TABLESPACE.
7. Pulse Run y espere a que se procesen las cinco sentencias SQL.
El resultado debería mostrar que las cinco sentencias se han ejecutado
correctamente.
Tarea 7. Utilizar mandatos de DB2 y consultas SQL para
mostrar información relacionada con el espacio de
tabla.
Podemos utilizar mandatos de DB2, como db2pd, y consultas SQL para recuperar
información sobre los espacios de tabla de una base de datos de DB2. El archivo
dbpaths.sql utiliza una vista de sistema de DB2 SYSIBMADM.DBPATHS, que muestra
las vías de acceso de discos que actualmente utiliza una base de datos. Las vistas del
catálogo del sistema de DB2 se pueden utilizar para listar información sobre objetos de
datos, como espacios de tabla. La vista SYSCAT.TABLESPACES contiene atributos
de espacio de tabla.
Utilice el archivo select_tablespaces.sql para consultar la información utilizando esta
vista de catálogo. Los campos seleccionados que contienen información del espacio
de tabla son:
• TBSPACE: nombre del espacio de tabla primario de esta tabla.
• DEFINER: ID de autorización del creador del espacio de tabla.
• TBSPACEID: identificador del espacio de tabla interno.
• TBSPACETYPE: tipo de espacio de tabla. D para DMS o S para SMS.

© Copyright IBM Corp. 2015 4-73


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• DATATYPE: tipo de datos que se pueden almacenar en el espacio de tabla. L


para espacios de tabla grandes, A para espacios de tabla regulares o T para
espacios de tabla temporales.
• SGNAME: nombre del depósito de almacenamiento para espacios de tabla de
almacenamiento automático.
Nota: con esta vista, los espacios de tabla gestionados por almacenamiento
automático aparecerán como DMS en el caso de espacios de tabla grandes y
regulares y como SMS en el caso de espacios de tabla temporales.
El archivo c:\inst23\ddl\select_tablespaces.sql contiene el texto de la consulta SQL.
En este punto, puede elegir ejecutar los mandatos y las sentencias SQL con el
procesador de línea de mandatos de DB2 o la herramienta Data Server Manager. Siga
los pasos de la herramienta que haya elegido.
Tarea 7A. Utilizar el procesador de línea de mandatos de DB2.
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf select_tablespaces.sql
La salida de este mandato tendrá un aspecto parecido al siguiente:
select substr(tbspace,1,18) as tbspace,
substr(definer,1,10) as definer, tbspaceid, tbspacetype, datatype, sgname
from syscat.tablespaces

TBSPACE DEFINER TBSPACEID TBSPACETYPE DATATYPE SGNAME


------------------ ---------- ----------- ----------- -------- ------------
SYSCATSPACE SYSIBM 0 D A IBMSTOGROUP
TEMPSPACE1 SYSIBM 1 S T IBMSTOGROUP
USERSPACE1 SYSIBM 2 D L IBMSTOGROUP
SYSTOOLSPACE SYSTEM 3 D L IBMSTOGROUP
TSP01 INST23 4 D L APP_DATA
TSP02 INST23 5 D L -
TSP03 INST23 6 D L -
TSP04 INST23 7 D L APP_DATA
TSP05 INST23 8 D L APP_DATA
TSP06 INST23 9 D A IBMSTOGROUP

10 record(s) selected.

© Copyright IBM Corp. 2015 4-74


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

• db2 -tvf dbpaths.sql


La salida de este mandato tendrá un aspecto parecido al siguiente:
select substr(type,1,30) as db_path_type,
substr(path,1,50) as path_name
from sysibmadm.dbpaths order by 1

DB_PATH_TYPE PATH_NAME
------------------------------ --------------------------------------------
------
DBPATH C:\INST23\NODE0000\SQL00001\
DBPATH C:\INST23\NODE0000\SQL00001\MEMBER0000\
DB_STORAGE_PATH c:\dbauto\path2\
DB_STORAGE_PATH C:\dbauto\path1\
DB_STORAGE_PATH C:\
LOCAL_DB_DIRECTORY C:\INST23\NODE0000\SQLDBDIR\
LOGPATH C:\INST23\NODE0000\SQL00001\LOGSTREAM0000\
TBSP_CONTAINER C:\INST23\NODE0000\SQL00001\tsp03
TBSP_CONTAINER C:\INST23\NODE0000\SQL00001\tsp02

9 record(s) selected.

• db2pd -db musicdb -tablespaces | more


2. Puede pasar al final de la demostración.
Tarea 7B. Utilizar la herramienta Data Server Manager.
Podemos utilizar la herramienta DSM para ejecutar el archivo SQL que contiene la
consulta SQL.
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
Debería ver la base de datos MUSICDB en la lista. El nombre de base de datos
MUSICDB proporciona una lista desplegable para realizar distintas tareas.
2. Pulse la flecha que se encuentra junto a MUSICDB, seleccione Administer -
Explore Database en la lista e inicie la sesión con el ID de usuario inst23 y la
contraseña ibm2blue.
3. En la parte superior del panel de DSM, pulse Open SQL Editor.
4. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
5. Pulse Browse, vaya a C:\inst23\ddl\ y, a continuación, abra
select_tablespaces.ddl.
6. Pulse OK para cargar el texto SQL en el editor SQL.
Revise el texto de la consulta SQL.

© Copyright IBM Corp. 2015 4-75


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

7. Pulse Run y espere a que se procese la sentencia SQL.


El resultado debería mostrar que la sentencia SQL se ha ejecutado
correctamente. El resultado contiene también el resultado de la consulta en un
informe en columnas.
Revise el informe. El área de resultado contiene un icono que sirve para abrir
los resultados de la consulta en su propia vista.
Ahora, utilizaremos el texto de la consulta SQL del archivo
c:\inst23\ddl\select_mon_get_tbsp.sql para recuperar las estadísticas y la
información del espacio de tabla.
8. Repita los pasos del 3 al 6 para cargar select_mon_get_tbsp.sql en el editor
SQL.
Revise el texto de la consulta SQL.
9. Pulse Run y espere a que se procese la sentencia SQL.
El resultado debería mostrar que la sentencia SQL se ha ejecutado
correctamente. El resultado contiene también el resultado de la consulta en un
informe en columnas.
10. Revise el informe.
El área de resultado contiene un icono que sirve para abrir los resultados de la
consulta en su propia vista. Tenga en cuenta que los dos espacios de tabla
gestionados por DMS, TSP02 y TSP03, no disponen de un depósito de
almacenamiento, dado que estos solo se aplican a los espacios de tabla
gestionados por el almacenamiento automático.
A continuación, utilizaremos el texto de la consulta SQL del archivo
c:\inst23\ddl\dbpaths.sql para recuperar información sobre las vías de acceso
de disco utilizadas para dar soporte a los componentes de esta base de datos.
11. Repita los pasos del 3 al 6 para cargar c:\inst23\ddl\dbpaths.sql en el editor
SQL.
Revise el texto de la consulta SQL.
12. Pulse Run y espere a que se procese la sentencia SQL.
El resultado debería mostrar que la sentencia SQL se ha ejecutado
correctamente. El resultado contiene también el resultado de la consulta en un
informe en columnas.

13. En el panel de resultados, pulse Open para visualizar los resultados de la


consulta en su propia vista.
Resultados:
En esta demostración, hemos creado una nueva base de datos de DB2
denominada MUSICDB que dará soporte a los objetos de base de datos que
vamos a crear y gestionar en otras demostraciones.

© Copyright IBM Corp. 2015 4-76


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 4 Crear bases de datos y ubicación de datos

Resumen de la unidad
• Planificar las asignaciones de almacenamiento iniciales para una base de
datos, incluidas las tablas de catálogo y los archivos de registro
• Explorar las tablas y vistas del catálogo de sistema
• Comprobar y actualizar los valores de los parámetros de configuración de
base de datos
• Comparar el DMS y la gestión de almacenamiento automático para
espacios de tabla
• Describir cómo configurar y gestionar una base de datos DB2 con el
almacenamiento automático habilitado
• Definir depósitos de almacenamiento para gestionar bases de datos con
distintos tipos de almacenamiento disponibles
• Diferenciar entre espacios de tabla, contenedores, ampliaciones y páginas
• Crear y modificar espacios de tabla
• Utilizar mandatos de DB2 y sentencias SQL para visualizar las
estadísticas actuales del espacio de tabla y la información de estado

Creación de bases de datos y ubicación de los datos © Copyright IBM Corporation 2015

Resumen de la unidad

© Copyright IBM Corp. 2015 4-77


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5. Creación de objetos de base de datos

Creación de objetos de base


de datos

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

© Copyright IBM Corp. 2015 5-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Objetivos de la unidad
• Describir la jerarquía de objetos DB2
• Crear los objetos siguientes:
 Esquema, tabla, vista, alias, índice
• Revisar el uso de tablas temporales
• Explorar el uso y la implementación de restricciones de comprobación,
la integridad referencial y los desencadenantes
• Utilizar tablas organizadas en columnas, con aceleración BLU, para
mejorar el rendimiento de las consultas de analíticas
• Explicar la diferencia entre las tablas temporales de periodo de
sistema y las tablas temporales de periodo de aplicación
• Listar los tipos de compresión disponibles para tablas e índices
• Usar la utilidad db2look para exportar las estructuras de base de datos
y utilizarlas en el futuro

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 5-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Jerarquía de objetos DB2

Instancia 1 Archivo de
configuración de dbm
SYSCATSPACE Archivo de configuración
Registro de base de datos
Catálogo
Vista Registro
Base de datos 1 Base de datos 2
1 Vista2
STOGRP1
TSAS1 TSDMSLRG1 SYSCATSPACE
Tabla1
Tabla4 Tabla3
Catálogo

Índice1 Vista1
TSDMSREG2

Índice31
TSAS2 TSDMSLRG3 USERSPACE1

Tabla2 BLOB Tabla2


Índice32

Índice2 IBMSTOGROUP

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Jerarquía de objetos DB2


Cada instancia de DB2 tiene su propio archivo de configuración del gestor de bases de
datos. Sus parámetros globales afectan a los recursos del sistema asignados a DB2
para una instancia determinada. Los valores predeterminados del sistema para estos
parámetros se pueden cambiar, a fin de mejorar el rendimiento o de incrementar la
capacidad, según la configuración de la estación de trabajo.
Cada instancia puede tener varias bases de datos. Una base de datos relacional
presenta los datos como una recopilación de tablas. Una tabla consta de un número
definido de columnas y un número cualquiera de filas. Cada base de datos incluye un
conjunto de tablas de catálogo de sistema, que describen la estructura física y lógica
de los datos (como una tabla o una vista), o bien contienen estadísticas de la
distribución de datos; un archivo de configuración que contiene los valores de
parámetro asignados a la base de datos; y un registro de recuperación con
transacciones continuadas y transacciones archivadas.
Cada tabla puede contener varios índices. Los índices pueden ser una forma más
rápida de acceder a los datos de la tabla. Cada tabla puede tener varias vistas. Las
vistas se pueden asociar a más de una tabla base.

© Copyright IBM Corp. 2015 5-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Los objetos físicos de una base de datos se asignan a espacios de tabla. Cuando cree
una tabla, podrá indicar que determinados objetos, como índices y objetos grandes
(LOB), se guarden por separado del resto de los datos de tabla. De forma
predeterminada, todos los objetos que hacen referencia a una tabla residen en el
mismo espacio de tabla que la mencionada tabla. Un espacio de tabla también se
puede dividir entre uno o varios dispositivos de almacenamiento físico.
En la imagen, se muestran dos bases de datos.
Para la base de datos 1:
• Las tablas de catálogo de sistema se encuentran en el espacio de tabla
SYSCATSPACE.
• Se define un depósito de almacenamiento denominado STOGRP1 que da
soporte a dos espacios de tabla, TSAS1 y TSAS2.
• La tabla 1 y su índice se encuentran en un espacio de tabla de
almacenamiento automático denominado TSAS1.
• La tabla 2 y su índice se encuentran en un espacio de tabla de
almacenamiento automático denominado TSAS2.
• Las tablas 3 y 4 están asignadas al espacio de tabla de DMS grande,
TSDMSLRG1.
• Se han asignado dos índices para la tabla 3 al espacio de tablas regular
TSDMSREG2.
• Los datos de objetos grandes o las columnas XML de la tabla 3 están
asignados al espacio de tabla grande TSDMSLRG3.
Para la base de datos 2:
• Las tablas de catálogo de sistema se encuentran en el espacio de tabla
SYSCATSPACE.
• El depósito de almacenamiento predeterminado, IBMSTOGROUP, da soporte
a los dos espacios de tabla predeterminados, SYSCATSPACE y
USERSPACE1
• La tabla 2 está asignada al espacio de tabla de almacenamiento automático
USERSPACE1.

© Copyright IBM Corp. 2015 5-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

CREATE SCHEMA
• Un esquema es una colección de objetos designados
• Un esquema también es un calificador de nombre
Los nombres de esquema 'INTERNAL' y 'EXTERNAL' facilitan la diferenciación entre
dos tablas SALES distintas (INTERNAL.SALES, EXTERNAL.SALES).
• El nombre de esquema presenta una manera de agrupar estos objetos de manera
lógica, lo que permite utilizar el mismo nombre natural para varios objetos y evitar
las referencias ambiguas a dichos objetos.
• Los esquemas también permiten a distintas aplicaciones almacenar datos en una
única base de datos sin encontrarse con conflictos de espacios de nombre.
• Un esquema puede contener tablas, vistas, apodos, desencadenantes, funciones,
paquetes y otros objetos.
• Un esquema es, en sí mismo, un objeto de base de datos.
• Los esquemas se pueden crear explícitamente utilizando la sentencia CREATE
SCHEMA con el usuario actual o un ID de autorización especificado registrado como
propietario del esquema.
CREATE SCHEMA PAYROLL
AUTHORIZATION DB2ADMIN DATA CAPTURE NONE ;

• Los esquemas también se pueden crear implícitamente cuando se crea otro objeto,
si el usuario tiene autoridad IMPLICIT_SCHEMA
• Los esquemas se pueden utilizar para definir una opción DATA CAPTURE
predeterminada para los objetos
Creación de objetos de base de datos © Copyright IBM Corporation 2015

CREATE SCHEMA
Si un esquema se crea explícitamente con la sentencia CREATE SCHEMA, al
propietario del esquema se le otorgan los privilegios CREATEIN, DROPIN, ALTERIN,
en el esquema, junto con la capacidad de otorgar estos privilegios a otros usuarios.
El nombre de un esquema o una autorización no puede empezar por SYS.
Igual que los datos se organizan en tablas, podría resultar igual de ventajoso agrupar
las tablas (y otros objetos relacionados). Esto se hace definiendo un esquema. La
información sobre el esquema se mantiene en las tablas de catálogo de sistema de la
base de datos a la que está conectado. Cuando se creen otros objetos, podrán
situarse en este esquema.
Un ID de autorización con autoridad DBADM puede crear un esquema con cualquier
nombre válido de autorización o esquema. Cualquier ID puede crear explícitamente un
esquema que coincida con el ID de autorización de la sentencia.
Si un esquema se crea explícitamente con la sentencia CREATE SCHEMA, al
propietario del esquema se le otorgan los privilegios CREATEIN, DROPIN, ALTERIN,
GRANTIN en el esquema, junto con la capacidad de otorgarlos a otros usuarios.

© Copyright IBM Corp. 2015 5-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Puede crear un esquema e incluir determinadas sentencias SQL en él (CREATE


TABLE, excluidas las tablas con tipos y las tablas de consulta materializada; sentencia
CREATE VIEW, excluidas las vistas con tipos; sentencia CREATE INDEX; sentencia
COMMENT; sentencia GRANT).
Por ejemplo, esto es una única sentencia:
CREATE SCHEMA pers
CREATE TABLE ORG (
deptnumb SMALLINT NOT NULL,
deptname VARCHAR(14),
manager SMALLINT,
division VARCHAR(10),
location VARCHAR(13),
CONSTRAINT pkeydno PRIMARY KEY (deptnumb),
CONSTRAINT fkeymgr FOREIGN KEY (manager)
REFERENCES staff (id)
)
CREATE TABLE STAFF (
id SMALLINT NOT NULL,
name VARCHAR(9),
dept SMALLINT,
job VARCHAR(5),
years SMALLINT,
salary DECIMAL(7,2),
comm DECIMAL(7,2),
CONSTRAINT pkeyid PRIMARY KEY (id),
CONSTRAINT fkeydno FOREIGN KEY (dept)
REFERENCES org (deptnumb)
)
Por lo tanto, puede utilizar una única sentencia para crear dos tablas que dependan la
una de la otra, en lugar de tener que crear la primera con la clave primaria, la segunda
con la clave primaria y la clave foránea y, luego, modificar la primera para añadir la
clave foránea.

© Copyright IBM Corp. 2015 5-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

El nombre del esquema creado cualifica implícitamente los nombres de objetos no


cualificados de cualquier sentencia SQL de la sentencia CREATE SCHEMA.
A partir de DB2 10.1, puede utilizar el atributo DATA CAPTURE con la sentencia
CREATE SCHEMA o definir el parámetro de configuración de base de datos
dft_schemas_dcc en ON, de manera que todas las tablas creadas posteriormente
hereden la propiedad DATA CAPTURE CHANGES.

© Copyright IBM Corp. 2015 5-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Definir esquema actual


• Emisión de select desde KEITH.EMPLOYEE:
connect to musicdb user Keith;
select * from employee;

• Emisión de select desde PAYROLL.EMPLOYEE


set current schema = 'PAYROLL‘;
select * from employee;

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Definir esquema actual


Si se accede a datos de DB2, las referencias no cualificadas serán cualificadas
implícitamente con el ID de autorización utilizado para conectarse a la base de datos.
Para modificar este valor, defina CURRENT SCHEMA. El valor inicial del registro
especial CURRENT SCHEMA es equivalente a USER.
En el ejemplo del gráfico, se ve que el usuario KEITH se está conectando a una base
de datos. Si Keith emite un mandato select en la tabla EMPLOYEE, se accederá a la
tabla KEITH.EMPLOYEE. Si este define su esquema actual en PAYROLL, el mandato
select emitido en la tabla EMPLOYEE se dirigirá hacia la tabla PAYROLL.EMPLOYEE.
En la sintaxis alternativa se incluyen:
SET CURRENT SCHEMA = 'PAYROLL'
SET SCHEMA 'PAYROLL'
SET CURRENT SQLID 'PAYROLL'
Tenga en cuenta que el uso de = es opcional en todas estas sentencias.
El valor del registro especial CURRENT SCHEMA se utiliza como nombre del
esquema en todas las sentencias SQL dinámicas en las que existe una referencia no
cualificada a un objeto de base de datos.

© Copyright IBM Corp. 2015 5-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Utilización de la sentencia Create Table

connect to musicdb;
create table artists
(artno smallint not null,
name varchar(50) with default 'abc',
classification char(1) not null,
bio clob(100K) logged,
picture blob( 10M) not logged compact)

in dms01
index in dms02
long in dms03;

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Utilización de la sentencia Create Table


Una tabla consta de datos organizados de manera lógica en columnas y filas. DB2
admite tamaños de página de 4, 8, 16 y 32 KB. El número de columnas, la longitud
máxima de las filas y el tamaño máximo de las tablas varían según el tamaño de la
página.
Los espacios de tabla regulares utilizan un ID de fila de 4 bytes, lo que permite 16
millones de páginas con hasta 255 filas por página. Los espacios de tabla gestionados
por DMS y de almacenamiento automático pueden ser espacios de tabla regulares o
grandes. Los espacios de tabla grandes utilizan un ID de fila de 6 bytes y pueden
almacenar hasta 64 TB de datos.
Una tabla con una página de 4 K podría llegar a los 64 GB en un espacio de tabla
regular u 8 terabytes en un espacio de tabla grande. Un tamaño de página de 32 K
permitiría que una tabla de un espacio de tabla regular alcanzase los 512 GB o 64 TB
en un espacio de tabla grande.
Las tablas se crean utilizando la sentencia SQL CREATE TABLE.
Si no se proporciona ningún nombre de esquema con el nombre de tabla, se utiliza
como nombre de esquema el valor del registro especial CURRENT SCHEMA.

© Copyright IBM Corp. 2015 5-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Conceptos del diseño de tabla


Para diseñar tablas, tiene que estar familiarizado con algunos conceptos
relacionados.
Tipos de datos y columnas de tabla
Al crear la tabla, tiene que indicar el tipo de datos que va a almacenar cada
columna. Si reflexiona sobre la naturaleza de los datos que va a gestionar,
podrá configurar sus tablas para conseguir el máximo rendimiento de las
aplicaciones, minimizar los requisitos de almacenamiento físico y acceder a
prestaciones especializadas para manipular distintos tipos de datos, como
operaciones aritméticas para datos numéricos, o comparar los valores de
fecha y hora entre ellos.
Columnas generadas
Una columna generada se define en una tabla donde el valor almacenado se
calcula utilizando una expresión, en lugar de especificarse a través de una
operación de inserción o actualización.
Columnas ocultas
Si se define una columna de tabla con el atributo oculto de forma implícita,
dicha columna no estará disponible hasta que se mencione explícitamente.
Por ejemplo, si se ejecuta una consulta SELECT * en una tabla, en la tabla de
resultados devueltos no se incluirán las columnas ocultas de forma implícita.
Una columna oculta de forma implícita se podrá mencionar de manera
explícita siempre que se pueda especificar un nombre de columna.
Numeración automática y columnas de identificador
Una columna de identidad ofrece a DB2 la manera de generar
automáticamente un valor numérico único para cada una de las filas añadidas
a la tabla.
Cómo restringir datos de columna con restricciones, valores
predeterminados y valores NULL
Con frecuencia, los datos deben respetar ciertas restricciones o reglas. Estas
restricciones pueden aplicarse solo a pequeños fragmentos de información,
como el formato y los números de secuencia, o bien a mayores segmentos de
información.
Clave primaria, integridad referencial, comprobación y restricciones de
unicidad
Las restricciones son reglas que limitan los valores que se pueden insertar,
suprimir o actualizar en una tabla.

© Copyright IBM Corp. 2015 5-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Consideraciones sobre datos y tablas unicode


El estándar de codificación de caracteres unicode es un esquema de
codificación de caracteres de longitud fija que incluye caracteres de casi todos
los idiomas hablados en el mundo.
Para obtener más información, consulte el manual Referencia SQL.

© Copyright IBM Corp. 2015 5-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Tablas temporales de aplicaciones


• Las aplicaciones pueden utilizar tablas temporales globales:
 Las tablas temporales globales se almacenan en espacios de tabla temporales
de usuario
 Los datos asociados se suprimen cuando finaliza la conexión de aplicación
 Cada conexión accede a una copia privada de la tabla, por lo que solo ve los
datos que dicha conexión ha incluido en la tabla
 El bloqueo de tabla normal no es necesario para las tablas temporales globales,
dado que los datos se limitan a una única conexión
 Tablas temporales globales declaradas:
− Se definen durante la ejecución de la aplicación utilizando la sentencia DECLARE
GLOBAL TEMPORARY TABLE
− No se necesita información del catálogo de DB2
− El esquema de una tabla temporal global declarada siempre es "SESSION"
 Tablas temporales globales creadas:
− Se definen utilizando una sentencia CREATE GLOBAL TEMPORARY TABLE con
un esquema seleccionado por el usuario
− La tabla, y los índices asociados, se pueden crear antes del inicio de una conexión
de aplicación, pero solo existe la definición de catálogo
− La definición de catálogo se utiliza cuando la aplicación hace referencia a la tabla
− Cada conexión de aplicación sigue funcionando solo con los datos que almacena
en la tabla
Creación de objetos de base de datos © Copyright IBM Corporation 2015

Tablas temporales de aplicaciones


Una tabla temporal declarada es una tabla temporal a la que solo pueden acceder
sentencias SQL emitidas por la aplicación que creó la tabla temporal. Una tabla
temporal declarada no persiste una vez superada la duración de la conexión de la
aplicación a la base de datos.
Utilice las tablas temporales declaradas para mejorar, potencialmente, el rendimiento
de las aplicaciones. Al crear una tabla temporal declarada, DB2 no inserta una entrada
en las tablas de catálogo de sistema y, por lo tanto, el servidor no sufre problemas de
contienda en el catálogo. En comparación con las tablas regulares, DB2 no bloquea las
tablas temporales declaradas ni sus filas. Si la aplicación actual crea tablas para
procesar grandes cantidades de datos y descarta dichas tablas cuando la aplicación
finaliza la manipulación de los datos, puede utilizar tablas temporales declaradas en
lugar de tablas regulares.

© Copyright IBM Corp. 2015 5-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Para utilizar una tabla temporal declarada, siga estos pasos:


• Paso 1: asegúrese de que exista un espacio de tabla temporal de usuario. Si no
es así, emita una sentencia CREATE USER TEMPORARY TABLESPACE. Un
espacio de tabla temporal de usuario almacena tablas temporales declaradas.
No existe ningún espacio de tabla temporal de usuario cuando se crea una base
de datos. Debería crearse al menos un espacio de tabla temporal de usuario con
los privilegios USE adecuados para permitir la definición de tablas temporales
declaradas.
create user temporary tablespace usr_temp_ts managed by
system using ('c:\usrspace')
• Paso 2: emita una sentencia DECLARE GLOBAL TEMPORARY TABLE en su
aplicación.
La definición del gráfico crea una tabla temporal de usuario denominada T1. La tabla
temporal de usuario se define mediante columnas que tienen exactamente el mismo
nombre y descripción que las columnas de REAL_T1. La definición implícita solo
incluye el nombre de la columna, el tipo de datos, la característica de nulabilidad y los
atributos de valor de columna predeterminados. No se definen los restantes atributos
de columna, incluidas las restricciones de unicidad, las restricciones de clave foránea,
los desencadenantes y los índices. También puede especificar definiciones de
columna, como cuando se crea una tabla persistente. Consulte la referencia SQL para
obtener más información.
Si especifica un esquema para la tabla temporal, debe ser SESSION.

© Copyright IBM Corp. 2015 5-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Ejemplo de una tabla temporal declarada


• Un administrador del sistema crea el espacio de tabla temporal de usuario
CREATE USER TEMPORARY TABLESPACE "USR_TEMP_TS"
PAGESIZE 4 K MANAGED BY AUTOMATIC STORAGE
BUFFERPOOL IBMDEFAULTBP ;
• La aplicación utiliza sentencias SQL para declarar la tabla y acceder a ella
DECLARE GLOBAL TEMPORARY TABLE T1
LIKE REAL_T1
ON COMMIT DELETE ROWS
NOT LOGGED
IN USR_TEMP_TS;
INSERT INTO SESSION.T1
SELECT * FROM REAL_T1 WHERE DEPTNO=:mydept;
• /* realizar otra tarea en T1 */
• /* cuando la conexión finalice, la tabla se descartará automáticamente */

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Ejemplo de una tabla temporal declarada


La sentencia DECLARE GLOBAL TEMPORARY TABLE define una tabla temporal
para la sesión actual. La descripción de la tabla temporal declarada no aparece en el
catálogo del sistema. No es persistente ni se puede compartir con otras sesiones.
Cada sesión que define una tabla temporal global declarada con el mismo nombre
contiene su propia descripción exclusiva de la tabla temporal. Cuando la sesión
finaliza, se suprimen las filas de la tabla y se descarta la descripción de la tabla
temporal.
Entre los privilegios del ID de autorización de la sentencia se debe incluir, al menos,
uno de los siguientes:
• Privilegio USE en el espacio de tabla USER TEMPORARY
• Autoridad DBADM
• Autoridad SYSADM
• Autoridad SYSCTRL

© Copyright IBM Corp. 2015 5-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Cuando se define una tabla utilizando LIKE o fullselect, entre los privilegios del ID de
autorización de la sentencia debe incluirse, al menos, uno de los siguientes en cada
vista o tabla identificada:
• Privilegio SELECT en la tabla o vista
• Privilegio CONTROL en la tabla o vista
• Autoridad DATAACCESS

© Copyright IBM Corp. 2015 5-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Ejemplo de una tabla temporal creada


• Un administrador del sistema crea el espacio de tabla temporal de
usuario y define una tabla temporal global e índices
CREATE USER TEMPORARY TABLESPACE "USR_TEMP_TS2"
PAGESIZE 4 K MANAGED BY AUTOMATIC STORAGE ;

CREATE GLOBAL TEMPORARY TABLE APP1.DEPARTMENT


LIKE PROD.DEPARTMENT
ON COMMIT DELETE ROWS
NOT LOGGED IN USR_TEMP_TS2;

CREATE INDEX APP1.DEPTIX1 ON APP1.DEPARTMENT (DEPTNO);

• La aplicación utiliza sentencias SQL para hacer referencia a la tabla


temporal; no se necesita ninguna sentencia DECLARE
INSERT INTO APP1.DEPARTMENT
SELECT * FROM PROD.DEPARTMENT WHERE DEPTNO=:mydept;

SELECT * FROM APP1.DEPARTMENT WHERE LASTNAME = ‘STOPFER’

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Ejemplo de una tabla temporal creada


La sentencia CREATE GLOBAL TEMPORARY TABLE crea una descripción de una
tabla temporal en el servidor actual. Toda sesión que realiza una selección en una
tabla temporal creada recupera solo las filas que esa misma sesión ha insertado.
Cuando la sesión finaliza, se suprimen las filas de la tabla asociada a la sesión.
Los privilegios ostentados por el ID de autorización de la sentencia tienen que incluir
autoridad DBADM, o autoridad CREATETAB, en combinación con otras
autorizaciones, tal y como se describe a continuación:
Uno de los siguientes privilegios y autoridades:
• Privilegio USE en el espacio de tabla
• SYSADM
• SYSCTRL
• Junto con uno de estos privilegios y autoridades:
• Autoridad IMPLICIT_SCHEMA en la base de datos, si el nombre de esquema
implícito o explícito de la tabla no existe
• Privilegio CREATEIN en el esquema, si el nombre de esquema de la tabla se
refiere a un esquema existente

© Copyright IBM Corp. 2015 5-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Cuando se define una tabla utilizando LIKE o fullselect, entre los privilegios del ID de
autorización de la sentencia debe incluirse, al menos, uno de los siguientes en cada
vista o tabla identificada:
• Privilegio SELECT en la tabla o vista
• Privilegio CONTROL en la tabla o vista
• Autoridad DATAACCESS

© Copyright IBM Corp. 2015 5-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Partición de tabla
• Esquema de organización de datos en el que los datos de la tabla se
dividen en distintos objetos de almacenamiento denominados rangos o
particiones de datos:
 Cada partición de datos se almacena por separado
 Estos objetos de almacenamiento se pueden encontrar en distintos espacios de
tabla, en el mismo espacio de tabla o en una combinación de ambos
• Ventajas:
 Más facilidad a la hora de incorporar y extraer datos de la tabla
 Permite la incorporación (ATTACH) o la extracción (DETACH) de grandes
volúmenes de datos con un mínimo impacto sobre la disponibilidad de la tabla
para las aplicaciones
 Admite tablas de gran volumen
 Los índices pueden estar particionados (local) o no particionados (global)
 Las exploraciones de tablas e índices pueden utilizar la eliminación de particiones
si el acceso incluye predicados para los rangos definidos
 Se pueden asignar distintos rangos, en los espacios de tabla de distintos
depósitos de almacenamiento, para los datos actuales y los datos históricos
menos utilizados
Creación de objetos de base de datos © Copyright IBM Corporation 2015

Partición de tabla
Las tablas de partición utilizan un esquema de organización de datos en el que los
datos de la tabla se dividen en varios objetos de almacenamiento, denominados
rangos o particiones de datos, de acuerdo con los valores de una o varias de las
columnas de clave de particionamiento de la tabla.
Un rango o partición de datos forma parte de una tabla, que contiene un subconjunto
de filas de una tabla, y se almacena de manera independiente con respecto a otros
conjuntos de filas. Los datos de una tabla determinada se dividen en distintas
particiones de datos o rangos, en función de las especificaciones proporcionadas en la
cláusula PARTITION BY de la sentencia CREATE TABLE. Estos rangos o particiones
de datos se pueden encontrar en distintos espacios de tabla, en el mismo espacio de
tabla o en una combinación de ambos. Si una tabla se crea utilizando la cláusula
PARTITION BY, la tabla se particiona.
Todos los espacios de tabla especificados deben tener los mismos tamaños de página
y extensión, el mismo mecanismo de almacenamiento (DMS o SMS) y el mismo tipo
(REGULAR o LARGE), y todos los espacios de tabla tiene que estar en el mismo
grupo de particiones de base de datos.

© Copyright IBM Corp. 2015 5-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Una tabla particionada simplifica la incorporación y extracción de los datos de la tabla y


una tabla particionada puede contener muchos más datos que una tabla ordinaria.
Puede crear una tabla particionada con un máximo de 32.767 particiones de datos. Las
particiones de datos se pueden añadir a una tabla particionada, adjuntarse a ella o
desconectarse de ella, y es posible almacenar varios rangos de partición de datos de
una tabla en un espacio de tabla.
Los índices de una tabla particionada pueden estar particionados o no particionados.
Ambos tipos pueden coexistir en una misma tabla particionada.

© Copyright IBM Corp. 2015 5-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Ejemplo de una tabla particionada por rangos


• La cláusula PARTITION BY RANGE define un conjunto de rangos de datos
CREATE TABLE PARTTAB.HISTORYPART ( ACCT_ID INTEGER NOT NULL ,
TELLER_ID SMALLINT NOT NULL ,
BRANCH_ID SMALLINT NOT NULL ,
BALANCE DECIMAL(15,2) NOT NULL ,
……….
TEMP CHAR(6) NOT NULL )
PARTITION BY RANGE (BRANCH_ID)
(STARTING FROM (1) ENDING (20) IN TSHISTP1 INDEX IN TSHISTI1 ,
STARTING FROM (21) ENDING (40) IN TSHISTP2 INDEX IN TSHISTI2 ,
STARTING FROM (41) ENDING (60) IN TSHISTP3 INDEX IN TSHISTI3 ,
STARTING FROM (61) ENDING (80) IN TSHISTP4 INDEX IN TSHISTI4 ) ;

CREATE INDEX PARTTAB.HISTPIX1 ON PARTTAB.HISTORYPART (TELLER_ID)


PARTITIONED ;
CREATE INDEX PARTTAB.HISTPIX2 ON PARTTAB.HISTORYPART (BRANCH_ID)
PARTITIONED ;

• En este ejemplo, los objetos de datos y los objetos de índice de cada rango de datos
están almacenados en distintos espacios de tabla
• Los espacios de tabla utilizados se tienen que definir con las mismas opciones,
como el tipo de gestión, el tamaño de la extensión y el tamaño de la página

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Ejemplo de una tabla particionada por rangos


En el ejemplo, se muestra una tabla particionada por rangos basada en una columna,
BRANCH_ID.
La sentencia CREATE TABLE lista cuatro particiones de datos y cada una de ellas
utiliza un espacio de tabla para el objeto de datos y otro espacio de tabla para los
índices particionados en esta tabla.
Una vez definidos, los rangos no se pueden modificar. Se pueden añadir nuevos
rangos vacíos utilizando la opción ALTER TABLE ADD. Para añadir un nuevo rango
con datos ya cargados a la tabla, utilice la sentencia ALTER TABLE ATTACH. Los
rangos se pueden eliminar de la tabla con la sentencia ALTER TABLE DETACH.

© Copyright IBM Corp. 2015 5-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

¿Qué es DB2 con aceleración BLU?


• Grandes ventajas en el orden de magnitud para el procesamiento de
consultas analíticas
 Rendimiento
 Ahorro en almacenamiento
 Rentabilidad

• Nueva tecnología en DB2 para consultas


analíticas
 Manejo de tiempo de ejecución exclusivo
optimizado para CPU
 Codificación exclusiva en velocidad y compresión
 Gestión de memoria exclusiva
 Almacenamiento en columnas, procesamiento
vectorial
 Integrado directamente en el kernel de DB2

• Revolución o evolución
 Las tablas de BLU coexisten con tablas de fila tradicionales
- en el mismo esquema, almacenamiento y memoria
 Consultas en cualquier combinación de filas o tablas de BLU
 Conversión sencilla de tablas en tablas de BLU
− Cambio total o cambio gradual
Creación de objetos de base de datos © Copyright IBM Corporation 2015

¿Qué es DB2 con aceleración BLU?


DB2 10.5 añade una nueva característica denominada "Aceleración BLU". Se trata de
una nueva tecnología que ha desarrollado IBM y que se ha integrado directamente en
el motor de DB2. La aceleración BLU es un nuevo motor de almacenamiento con
tiempo de ejecución integrado (directamente en el motor principal de DB2) para dar
soporte al almacenamiento y el análisis de tablas organizadas en columnas. El
procesamiento de la aceleración BLU es paralelo al procesamiento de tablas regular,
basado en filas, que se encuentra en el motor de DB2. No se trata de una tecnología
de complemento integrado ni de un motor analítico independiente situado fuera de
DB2. Al igual que cuando IBM añadió datos XML como primer objeto de clase en la
base de datos, junto con todas las mejoras de almacenamiento y proceso que llegaron
con el XML, ahora IBM ha añadido tablas organizadas en columnas directamente en el
motor de proceso y almacenamiento de DB2.
En pocas palabras, se trata de un almacén de tablas organizadas en columnas en
DB2. Este almacén trae consigo muchos beneficios, como un rendimiento
significativamente mejorado, un gran ahorro de almacenamiento, facilidad de
implementación y facilidad de gestión.

© Copyright IBM Corp. 2015 5-22


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Esta característica nos permite ofrecerle innovaciones de rendimiento y


almacenamiento y, al mismo tiempo, optimizar el uso de la memoria principal, mejorar
la eficacia de la entrada/salida y utilizar las instrucciones y las características de la
CPU para mejorar el valor derivado de las inversiones efectuadas en la base de datos.
En una base de datos de DB2 10.5, puede:
• Convertir todas las tablas organizadas en filas en tablas organizadas en
columnas para utilizar al máximo la aceleración BLU.
• Convertir algunas tablas para que utilicen la aceleración BLU y ampliar
gradualmente el uso de tablas organizadas en columnas a lo largo del tiempo.
• DB2 puede generar planes de acceso para aquellas consultas que acceden a
tablas organizadas tanto en filas como en columnas.

© Copyright IBM Corp. 2015 5-23


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Aceleración BLU: almacenamiento en columnas


• DB2 utiliza distintos conjuntos de extensiones y páginas para cada
columna
 Cada columna de tabla se asigna a un conjunto de páginas
 Cada página se completa con datos de una única columna, el número de filas
con datos en una página variará
TSN
0 John Piconne 47 18 Main Street Springfield MA 01111
Susan Nakagawa 32 455 N. 1st St. San José CA 95113
1
Sam Gerstner 55 911 Elm St. Toledo OH 43601
2
Chou Zhang 22 300 Grand Ave Los Ángeles CA 90047
3
TSN:
Mike Hernández 43 404 EscuelaSt. Los Ángeles CA 90033
Pamela Funk
Número de
4 29 166 Elk Road #47 Beaverton OR 97075
Página
Rick Washington 78 5661 Bloom St. Raleigh NC 27605
5
secuencia de Ernesto Fry 35 8883 Longhorn Dr. Tucson AZ 85701
tupla 6 Whitney Samuels 80 14 California Blvd. Pasadena CA 91117
7 Carol Whitehead 61 1114 Apple Lane Cupertino CA 95014
8
9
10
11

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Aceleración BLU: almacenamiento en columnas


DB2 asigna extensiones de páginas a cada columna de una tabla organizada en
columnas. El tamaño y la extensión de la página son fijos para cada tabla, en función
del espacio de tabla asignado cuando se ejecuta la sentencia CREATE TABLE.
Cada página contendrá datos de una única columna de la tabla. El número de filas que
comparten una página variará.
En la imagen, se muestra el concepto de almacenamiento de columnas de datos en
distintas páginas. Veremos que se utilizan técnicas de compresión en todas las
columnas de datos. En la imagen, se muestran los datos no comprimidos para que
resulte más fácil comprenderlos.

© Copyright IBM Corp. 2015 5-24


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Ahorros de almacenamiento con la aceleración BLU


• Varios ejemplos de datos que necesitan bastante menos
almacenamiento
 95% menor que el tamaño de datos no comprimidos
 Menos objetos necesarios: no se necesita almacenamiento para los índices,
los agregados, etc.
• Varias técnicas de compresión
 El procesamiento se efectúa en los datos comprimidos
• El algoritmo de compresión se adapta a los datos

DB2 with BLU Accel.

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Ahorros de almacenamiento con la aceleración BLU


Todas las tablas organizadas en columnas y con aceleración BLU están almacenadas
en formato comprimido.
Las técnicas de compresión utilizadas para la aceleración BLU no solo ahorran
almacenamiento físico en disco y reducen los requisitos de lectura de entrada/salida
para explorar tablas, sino que también permiten un uso muy eficaz de los recursos de
la CPU.
En la imagen, se muestran las reducciones de los requisitos de almacenamiento en
distintos tipos de datos de clientes que utilizan tablas organizadas en columnas de DB2
10.5.
Los tres conjuntos de barras muestran:
• Los requisitos de espacio de tablas no comprimidas que utilizan DB2 10.1
• El espacio necesario para la tabla comprimida que utiliza la compresión
adaptativa de DB2 10.1.
• El espacio necesario para las tablas organizadas en columnas comprimidas que
utilizan DB2 10.5

© Copyright IBM Corp. 2015 5-25


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Una parte del espacio ahorrado utilizando tablas organizadas en columnas es el


espacio utilizado para objetos adicionales, como índices para las tablas organizadas en
filas.

© Copyright IBM Corp. 2015 5-26


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Aceleración BLU: fácil de implementar y utilizar


• Una única variable de registro de DB2 se puede utilizar para
implementar la aceleración BLU de DB2
db2set DB2_WORKLOAD=ANALYTICS

• Configuración de DB2_WORKLOAD=ANALYTICS antes de crear una


base de datos
 Permite que la opción AUTOCONFIGURE defina la configuración de base
de datos y las asignaciones de memoria
 Define el tamaño de página de la base de datos en 32 K
• Configuración de DB2_WORKLOAD=ANALYTICS para una base de
datos existente
 Ejecute el mandato AUTOCONFIGURE
 Verifique que el almacenamiento dinámico de ordenación, el
almacenamiento dinámico de programas de utilidad y las agrupaciones de
almacenamiento intermedio sean grandes
Creación de objetos de base de datos © Copyright IBM Corporation 2015

Aceleración BLU: fácil de implementar y utilizar


Las tablas organizadas en columnas de DB2 añaden prestaciones en columnas a las
bases de datos de DB2, entre las que se incluyen los datos almacenados con
organización en columnas y el procesamiento vectorial de datos de columnas. El uso
de este formato de tabla, con data marts en esquema de estrella, ofrece destacadas
mejoras de almacenamiento, rendimiento de consultas y facilidad de uso a través de
un diseño y un ajuste simplificados.
Si la mayoría de las tablas de la base de datos van a ser tablas organizadas en
columnas, defina la variable de registro DB2_WORLOAD en ANALYTICS antes de
crear la base de datos. Al hacerlo, facilitará la configuración de la memoria, de la
organización de tablas, del tamaño de página y del tamaño de la extensión. Además,
se habilitará la gestión de cargas de trabajo.
El enfoque recomendado consiste en pasar todas las tablas posibles a un formato
organizado en columnas, si toda la carga de trabajo es de analítica o de procesamiento
analítico en línea (OLAP).
Estas cargas de trabajo están caracterizadas por un acceso a datos no selectivo (es
decir, las consultas acceden a algo más del 5% de los datos) y unas características
ampliadas de exploración, agrupación y agregación.

© Copyright IBM Corp. 2015 5-27


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Las cargas de trabajo transaccionales por naturaleza tienen que utilizar tablas
organizadas en columnas. Las tablas tradicionales organizadas en filas con acceso al
índice suelen resultar más adecuadas para estos entornos.
En el caso de cargas de trabajo mixtas, que pueden incluir una combinación de
procesamiento de consultas analíticas y un acceso muy selectivo (que implica menos
del 2% de los datos), podría resultar adecuada una mezcla de tablas organizadas en
filas y tablas organizadas en columnas.

© Copyright IBM Corp. 2015 5-28


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

¿Qué sucede cuándo se crea una nueva tabla organizada


en columnas?
• Utilizar una sentencia CREATE TABLE estándar
CREATE TABLE JTNISBET.STAFF (
ID SMALLINT NOT NULL,
NAME VARCHAR(9),
. . . .
COMM DECIMAL(7,2) )
ORGANIZE BY COLUMN
IN TSPACED INDEX IN TSPACEI ;
• Hay un índice de mapa de página generado por el sistema asociado a la tabla organizada
en columnas
 El índice contiene una entrada para cada página de la tabla
 El índice tiene un nombre generado, como SQL130617115333860 y utiliza el esquema
de la tabla base
• Hay una "tabla de sinopsis" generada por el sistema asociada a la tabla organizada en
columnas
 La tabla de sinopsis se puede utilizar como índice "aproximado" para omitir las páginas
basadas en predicados SQL
 Una sinopsis tiene un nombre generado, como SYN130617110037170122_HISTORY y
utiliza el esquema de SYSIBM
Creación de objetos de base de datos © Copyright IBM Corporation 2015

¿Qué sucede cuándo se crea una nueva tabla organizada en columnas?


Para crear una tabla organizada en columnas, especifique la cláusula ORGANIZE BY
COLUMN en la sentencia CREATE TABLE.
Las tablas organizadas en columnas no necesitan índices tradicionales para permitir un
acceso eficaz a los datos de la tabla. Cuando se crea una tabla organizada en
columnas, DB2 crea un índice de mapas de página generados por el sistema. El índice
contiene una entrada para cada página de la tabla organizada en columnas. Al índice
se le asigna un nombre generado por el sistema.
Las tablas organizadas en columnas también pueden tener una "tabla de sinopsis"
generada por el sistema. Los datos de la tabla se utilizan como índice aproximado,
para omitir la lectura de páginas en el caso de que DB2 determine que ninguno de los
datos de columna de la página coincide con un predicado SQL.
La tabla de la sinopsis tiene un nombre generado por el sistema con el prefijo "SYN" y
utiliza el esquema SYSIBM.

© Copyright IBM Corp. 2015 5-29


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Aceleración BLU: asesor de carga de trabajo

El asesor identifica las tablas candidatas


a la conversión al formato en columnas.

Analiza la carga de trabajo SQL y estima


la ejecución en tablas organizadas en
filas y columnas.

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Aceleración BLU: asesor de carga de trabajo


IBM InfoSphere Optim Query Workload Tuner versión 4.1 incluye Workload Table
Organization Advisor, que examina todas las tablas a las que se hace referencia en las
sentencias de una carga de trabajo de consulta.
Sus recomendaciones llevan a una mejora del rendimiento estimado para la
carga de trabajo de la consulta en conjunto. El asesor presenta su análisis y sus
argumentos para que pueda ver las tablas cuya organización se recomienda cambiar
de filas a columnas.

© Copyright IBM Corp. 2015 5-30


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Sentencia Create View

CONNECT TO TESTDB;
CREATE VIEW EMPSALARY
AS SELECT EMPNO, EMPNAME, SALARY
FROM PAYROLL, PERSONNEL
WHERE EMPNO=EMPNUMB AND SALARY > 30000.00;

SELECT * FROM EMPSALARY

EMPNO EMPNAME SALARY


------ ----------------- ----------
10 John Smith 1000000.00
20 Jane Johnson 300000.00
30 Robert Appleton 250000.00

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Sentencia Create View


Una vista es una representación alternativa de datos de una o varias tablas. Puede
incluir algunas de las columnas contenidas en las tablas en las que está definida, o
todas ellas. [<marker>]
Para crear una vista, tiene que estar conectado a una base de datos, sea implícita o
explícita, y es necesario que las vistas o tablas base en las que se base la vista existan
con anterioridad.
Las vistas se pueden crear utilizando la sentencia SQL CREATE VIEW.
Tiene que disponer de los privilegios SYSADM, DBADM, CONTROL o SELECT en
cada tabla base para crear una vista. Los privilegios de las tablas base que se
otorgan a grupos no se comprueban a fin de determinar la autorización para crear
una vista. Sin embargo, si la tabla base tiene el privilegio SELECT otorgado a PUBLIC,
podría crearse una vista. Además, debe disponer de los privilegios
IMPLICIT_SCHEMA o CREATEIN en el esquema utilizado.
Se pueden utilizar las vistas para impedir que los usuarios vean determinados datos:
filas o columnas. La cláusula WHERE utilizada en la sentencia CREATE VIEW
determina qué filas puede ver el usuario. Las columnas listadas en la cláusula AS
SELECT determinan las columnas que puede ver el usuario.

© Copyright IBM Corp. 2015 5-31


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Las vistas pueden utilizarse también para incrementar los derechos de acceso a los
datos de un grupo de usuarios especial.
Las vistas se pueden utilizar para mejorar el rendimiento. Si los usuarios van a utilizar
una sentencia SQL difícil, puede resultar beneficioso crear una vista codificada para
utilizar un índice o para garantizar que la unión se haya codificado correctamente.
Los datos de una vista no se almacenan por separado. Se almacenan en las tablas
base.
Cuando un objeto se descarta, las vistas pueden pasar a estar no operativas si
dependen de dicho objeto. Para recuperar una vista no operativa, determine la
sentencia SQL que se utilizó inicialmente para crear la vista. Esta información se puede
obtener de la columna SYSCAT.VIEWS.TEXT. Vuelva a crear la vista utilizando la
sentencia CREATE VIEW con el mismo nombre de vista. Utilice la sentencia GRANT
para volver a otorgar todos los privilegios que se otorgaron previamente a la vista. Si
no quiere recuperar una vista no operativa, puede descartarla explícitamente con la
sentencia DROP VIEW.
Una vista no operativa solo tiene entradas en las vistas de catálogo SYSCAT.TABLES
y SYSCAT.VIEWS. Se eliminan todas las entradas de las vistas de catálogo
SYSCAT.VIEWDEP, SYSCAT.TABAUTH y SYSCAT.COLUMNS.
CREATE VIEW view-name (column-name { ,column-name }) AS
fullselect
{ WITH [ CASCADED | LOCAL ] CHECK OPTION }
WITH CHECK OPTION especifica la restricción que deben cumplir todas las filas
insertadas o actualizadas en la vista en la definición de la vista. WITH CHECK OPTION
no se debe especificar si la vista es de solo lectura. Si se ha especificado WITH
CHECK OPTION para una vista actualizable que no permite inserciones, la restricción
se aplica solo a la actualización. Si se omite WITH CHECK OPTION, la definición de la
vista no se utilizará en la comprobación de ninguna operación de inserción o
actualización que utilice la vista. Mientras se realizan las operaciones de inserción o
actualización, podrían realizarse algunas comprobaciones, siempre que la vista
dependa directa o indirectamente de otra vista que incluya WITH CHECK OPTION.
CASCADED hace que también se apliquen las restricciones de todas las vistas
dependientes.
LOCAL hace que solo se apliquen las restricciones de esta vista.
Una vista se puede definir en una vista.
Una vista de solo lectura no puede ser el objeto de una sentencia INSERT, UPDATE o
DELETE.
Para obtener más información, consulte el manual Referencia SQL.

© Copyright IBM Corp. 2015 5-32


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Sentencia Create Alias


• No puede ser igual a la de una tabla, vista o alias ya existentes
• Para crear un alias ADMIN.MUSICIANS para la tabla
ADMIN.ARTISTS
 CREATE ALIAS ADMIN.MUSICIANS FOR ADMIN.ARTISTS;
• Para crear un alias público denominado TABS para la vista de
catálogo SYSCAT.TABLES
 CREATE PUBLIC ALIAS TABS FOR SYSCAT.TABLES

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Sentencia Create Alias


La sentencia CREATE ALIAS define un alias para un módulo, un apodo, una
secuencia, una tabla, una vista u otro apodo. Los alias se denominan también
sinónimos.
La palabra clave PUBLIC se utiliza para crear un alias público (también denominado
sinónimo público). Si no se utiliza la palabra clave PUBLIC, el tipo de alias será privado
(denominado también sinónimo privado).
La definición del alias de tabla recién creado se almacena en SYSCAT.TABLES. La
definición del alias de módulo recién creado está almacenada en SYSCAT.MODULES.
La definición del alias de secuencia recién creado está almacenada en
SYSCAT.SEQUENCES.
Se puede definir un alias para un objeto que no existe en el momento de la definición.
Si no existe, se emite un aviso (SQLSTATE 01522). Sin embargo, el objeto al que se
hace referencia tiene que existir cuando se compila una sentencia SQL que contiene el
alias. De lo contrario, se emitirá un error (SQLSTATE 52004).

© Copyright IBM Corp. 2015 5-33


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Se puede definir un alias que se refiera a otro alias como parte de la cadena de alias,
pero esta cadena estará sujeta a las mismas restricciones que un único alias cuando
se utilice en una sentencia SQL. Una cadena de alias se resuelve de la misma manera
que un único alias. Si un alias utilizado en una sentencia de un paquete, una rutina
SQL, un desencadenante, la expresión predeterminada para una variable global o una
definición de vista apunta a una cadena de alias, se registra una dependencia para el
paquete, la rutina SQL, el desencadenante, la variable global o la vista en cada alias de
la cadena. Un alias no puede hacer referencia a sí mismo en una cadena de alias y un
ciclo de este tipo se detecta durante la definición de alias (SQLSTATE 42916).
Resolución de un nombre de alias no calificado: cuando se resuelve un nombre no
calificado, los alias privados se tienen en cuenta antes que los alias públicos.
Enlace conservador para alias públicos: si se utiliza un alias público en una sentencia
de un paquete, una rutina SQL, un desencadenante, la expresión predeterminada para
una variable global o una definición de vista, el alias público seguirá siendo utilizado
por estos objetos, independientemente de qué otro objeto con el mismo nombre se
cree a continuación.
La creación de un alias con un nombre de esquema que no exista todavía resultará en
la creación implícita de dicho esquema, siempre que el ID de autorización de la
sentencia tenga la autoridad IMPLICIT_SCHEMA. El propietario del esquema es
SYSIBM. El privilegio CREATEIN del esquema se otorga a PUBLIC.
Sintaxis alternativas: se admiten las siguientes sintaxis alternativas para facilitar la
compatibilidad con versiones anteriores de DB2 y con otros productos de base de
datos. Se puede especificar SYNONYM en lugar de ALIAS.

© Copyright IBM Corp. 2015 5-34


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Sentencias Create index


• Crear un índice exclusivo basado en una columna
CREATE UNIQUE INDEX DBA1.EMPNO ON DBA1.EMPLOYEE (EMPNO ASC)
PCTFREE 10
Se pueden recopilar
ALLOW REVERSE SCANS estadísticas de índice
PAGE SPLIT SYMMETRIC durante la creación
de índices
COLLECT SAMPLED DETAILED STATISTICS ;

• Crear un índice no exclusivo que se utilizará para agrupar en clúster


las secuencias de datos
CREATE INDEX ITEM ON STOCK (ITEMNO) CLUSTER ;

• Crear un índice exclusivo basado en una columna que incluya


columnas adicionales para dar soporte a las estrategias de solo índice
CREATE UNIQUE INDEX EMPIDX ON EMPLOYEE (EMPNO)
INCLUDE (LASTNAME, FIRSTNAME) ;

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Sentencias Create index


En la imagen, se muestran varios ejemplos de las sentencias utilizadas para crear
índices.
Es posible crear índices por muchas razones, como las siguientes: permitir que las
consultas se ejecuten con más eficacia; ordenar las filas de una tabla en secuencia
ascendente o descendente, en función de los valores de la columna; o aplicar
restricciones como la exclusividad de las claves de índice. Para crear los índices,
puede utilizar la sentencia CREATE INDEX, DB2 Design Advisor o el mandato
db2advis de Design Advisor.
Para crear un índice desde la línea de mandatos, utilice la sentencia CREATE INDEX.
Por ejemplo:
CREATE UNIQUE INDEX EMP_IX
ON EMPLOYEE(EMPNO)
INCLUDE(FIRSTNAME, JOB)

© Copyright IBM Corp. 2015 5-35


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

La cláusula INCLUDE, que solo se aplica a índices exclusivos, especifica columnas


adicionales para añadirlas al conjunto de columnas clave de índice. Las columnas
incluidas en esta cláusula no se utilizan para aplicar la exclusividad. Las columnas
incluidas pueden mejorar el rendimiento de algunas consultas mediante el acceso
basado solo en índice. Esta opción puede:
• Eliminar la necesidad de acceder a páginas de datos para más consultas
• Eliminar índices redundantes
Si se emiten los mandatos SELECT EMPNO, FIRSTNAME, JOB FROM EMPLOYEE
en la tabla en la que reside este índice, todos los datos necesarios podrán recuperarse
desde el índice sin leer las páginas de datos. Así, mejorará el rendimiento.
Cuando una fila se suprime o se actualiza, las claves de índice se marcan como
eliminadas y no se eliminan físicamente de la página hasta que se realiza una limpieza,
un tiempo después de confirmar la supresión o la actualización. Estas claves se
denominan claves pseudo suprimidas. Dicha limpieza podría realizarla una transacción
subsiguiente que cambie la página donde se ha marcado la supresión de la clave. La
limpieza de las claves pseudo suprimidas se puede desencadenar de manera explícita
utilizando el parámetro CLEANUP ONLY ALL del mandato REORG INDEXES.

© Copyright IBM Corp. 2015 5-36


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Visión general de la integridad referencial


• Crear restricciones entre tablas
• Restricciones especificadas con las sentencias Create table y Alter table
• Los servicios de bases de datos aplican restricciones: inserciones,
actualizaciones, supresiones
• Elimina la carga de la comprobación de restricciones de los programas de
aplicación
Department Table
DEPT DEPTNAME

Parent Table
R PRIMARY KEY = DEPT
E
S
T Employee Table
R EMPNO Dependent Table
NAME WKDEPT
I FOREIGN KEY = WKDEPT
C
T

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Visión general de la integridad referencial


La integridad referencial se impone añadiendo restricciones de clave foránea (o
referencial) a las definiciones de tabla y columna y a la creación de un índice en todas
las columnas de claves foráneas. Una vez definidas las restricciones de clave foránea
e índice, se comprueban los cambios en los datos de tablas y columnas con relación a
la restricción definida. La finalización de la acción solicitada depende del resultado de
la comprobación de restricciones.
Las restricciones referenciales se establecen con la cláusula FOREIGN KEY y la
cláusula REFERENCES en las sentencias CREATE TABLE o ALTER TABLE. Las
restricciones referenciales ejercen un cierto impacto sobre las tablas con tipos o las
tablas padre que son tablas con tipos. Es necesario tener este impacto en cuenta antes
de crear una restricción referencial.
La identificación de las claves foráneas aplica restricciones sobre los valores de las
filas de una tabla o entre las filas de dos tablas. El gestor de bases de datos
comprueba las restricciones especificadas en una definición de tabla y mantiene las
relaciones según corresponda. El objetivo es mantener la integridad siempre que un
objeto de base de datos haga referencia a otro, sin que empeore el rendimiento.

© Copyright IBM Corp. 2015 5-37


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Integridad referencial: sentencia CREATE TABLE


CREATE TABLE DEPARTMENT
(DEPTNO CHAR(3) NOT NULL,
DEPTNAME VARCHAR(29) NOT NULL,
MGRNO CHAR(6),
ADMRDEPT CHAR(3) NOT NULL,
LOCATION CHAR(16),
PRIMARY KEY (DEPTNO))
IN RESOURCE

CREATE TABLE EMPLOYEE


(EMPNO CHAR(6) NOT NULL PRIMARY KEY,
FIRSTNME VARCHAR(12) NOT NULL,
LASTNAME VARCHAR(15) NOT NULL,
WORKDEPT CHAR(3),
PHONENO CHAR(4),
PHOTO BLOB(10m) NOT NULL,
FOREIGN KEY DEPT (WORKDEPT)
REFERENCES DEPARTMENT ON DELETE NO ACTION)
IN RESOURCE

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Integridad referencial: sentencia CREATE TABLE


En este ejemplo, se utilizan claves foráneas y primarias para una columna de números
de departamento.
En la tabla EMPLOYEE, el nombre de la columna es WORKDEPT y en la tabla
DEPARTMENT, el nombre es DEPTNO. Las siguientes restricciones definen la
relación entre estas dos tablas:
• Solo hay un número de departamento para cada empleado de la tabla
EMPLOYEE y dicho número se encuentra en la tabla DEPARTMENT.
• Cada fila de la tabla EMPLOYEE está relacionada con no más de una fila de la
tabla DEPARTMENT. Existe una relación exclusiva entre las tablas.
• Cada fila de la tabla EMPLOYEE con un valor distinto a NULL para WORKDEPT
está relacionada con una fila de la columna DEPTNO en la tabla DEPARTMENT.
• La tabla DEPARTMENT es la tabla padre y la tabla EMPLOYEE es la tabla
dependiente.

© Copyright IBM Corp. 2015 5-38


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

La sentencia que define la tabla padre, DEPARTMENT, es:


CREATE TABLE DEPARTMENT
(DEPTNO CHAR(3) NOT NULL,
DEPTNAME VARCHAR(29) NOT NULL,
MGRNO CHAR(6),
ADMRDEPT CHAR(3) NOT NULL,
LOCATION CHAR(16),
PRIMARY KEY (DEPTNO))
IN RESOURCE
La sentencia que define la tabla dependiente, EMPLOYEE, es:
CREATE TABLE EMPLOYEE
(EMPNO CHAR(6) NOT NULL PRIMARY KEY,
FIRSTNME VARCHAR(12) NOT NULL,
LASTNAME VARCHAR(15) NOT NULL,
WORKDEPT CHAR(3),
PHONENO CHAR(4),
PHOTO BLOB(10m) NOT NULL,
FOREIGN KEY DEPT (WORKDEPT)
REFERENCES DEPARTMENT ON DELETE NO ACTION)
IN RESOURCE
Al especificar la columna DEPTNO como clave primaria de la tabla DEPARTMENT y
WORKDEPT como clave foránea de la tabla EMPLOYEE, está definiendo una
restricción referencial en los valores WORKDEPT. Esta restricción impone la integridad
referencial entre los valores de las dos tablas. En este caso, los empleados añadidos a
la tabla EMPLOYEE tienen que tener un número de departamento que se puede
encontrar en la tabla DEPARTMENT.
La regla de supresión de la restricción referencial de la tabla de empleado es NO
ACTION, lo que significa que un departamento no se puede eliminar de la tabla
DEPARTMENT si hay empleados en dicho departamento.

© Copyright IBM Corp. 2015 5-39


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Consideraciones sobre la clave exclusiva


• Hay varias claves en una tabla que pueden ser objetivos de clave
foránea
CREATE TABLE PAY.EMPTAB
(EMPNO SMALLINT NOT NULL PRIMARY KEY,
NAME CHAR(20),
DRIVERLIC CHAR(17) NOT NULL,
CONSTRAINT DRIV_UNIQ UNIQUE(DRIVERLIC)
)IN TBSP1 ;

Las columnas creadas por los índices exclusivos PAY.DRIV_UNIQ


y SYSIBM.yymmddhhmmssxxx no deben contener valores NULL
• Prórroga de comprobación exclusiva hasta finalizar el proceso de la
sentencia
 UPDATE EMPTAB SET EMPNO=EMPNO + 1

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Consideraciones sobre la clave exclusiva


Una restricción de unicidad es la regla que indica que los valores de una clave solo son
válidos si son exclusivos en la tabla. Las restricciones de unicidad son opcionales y se
pueden definir en la sentencia CREATE TABLE o ALTER TABLE utilizando la cláusula
PRIMARY KEY o la cláusula UNIQUE. Las columnas especificadas como restricción
de unicidad se tienen que definir como NOT NULL. El gestor de bases de datos utiliza
un índice exclusivo para aplicar la exclusividad de la clave durante los cambios
realizados en las columnas de la restricción de unicidad.
Una tabla puede tener un número arbitrario de restricciones de unicidad con un
máximo de una restricción de unicidad definida como clave primaria. Una tabla no
puede tener más de una restricción de unicidad en el mismo conjunto de columnas.

© Copyright IBM Corp. 2015 5-40


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Una restricción de unicidad a la que hace referencia la clave foránea de una restricción
referencial se denomina clave padre. Si se define una restricción de unicidad en una
sentencia CREATE TABLE, el gestor de bases de datos crea automáticamente un
índice exclusivo que se designa como índice necesario para el sistema primario o
exclusivo. Si se define una restricción de unicidad en una sentencia ALTER TABLE y
existe un índice en las mismas columnas, dicho índice se designa como exclusivo y
necesario para el sistema. Si no existe ningún índice, el gestor de bases de datos crea
automáticamente un índice exclusivo que se designa como índice necesario para el
sistema primario o exclusivo. CONSTRAINT constraint-name identifica la restricción. Si
se omite esta cláusula, el sistema genera un identificador de 18 caracteres, exclusivo
entre los identificadores de las restricciones existentes definidas en la tabla.
Cuando se utiliza con una restricción PRIMARY KEY o UNIQUE, constraint-name se
utiliza como nombre del índice que se crea para dar soporte a la restricción si no existe
un índice exclusivo. Si no se utiliza la cláusula CONSTRAINT constraint-name, el
índice generado por el sistema recibirá el nombre SYSIBM.SQLyyyymmddhhmmssx.
PRIMARY KEY proporciona un método abreviado para definir una clave primaria
compuesta de una única columna. Por lo tanto, si se especifica PRIMARY KEY en la
definición de la columna C, el efecto será el mismo que si se hubiese especificado la
cláusula PRIMARY KEY(C) como cláusula independiente.
UNIQUE proporciona un método abreviado para definir una clave exclusiva compuesta
de una única columna. Por lo tanto, si se especifica UNIQUE en la definición de la
columna C, el efecto será el mismo que si se especificase la cláusula UNIQUE(C)
como cláusula independiente.
La cláusula de la restricción de unicidad define una restricción de clave primaria o de
unicidad.
CONSTRAINT constraint-name designa a la restricción de unicidad o de clave
primaria. UNIQUE(column-name, ...) define una clave exclusiva compuesta por las
columnas identificadas. Las columnas identificadas se deben definir como NOT NULL.
Si una columna o un conjunto de columnas se definen como exclusivos y se emite una
sentencia de actualización que actualiza un conjunto de filas, DB2 no comprobará la
exclusividad hasta que se hayan actualizado todas las filas (de la sentencia única).
Esto permitirá que una sentencia como:
UPDATE EMPTAB SET EMPNO = EMPNO + 1
se ejecute correctamente aunque existan valores consecutivos en la tabla EMPTAB (lo
que provocaría que hubiese valores duplicados en la tabla durante un breve periodo,
mientras dura el procesamiento de la sentencia UPDATE).

© Copyright IBM Corp. 2015 5-41


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Restricciones de comprobación: definición

CREATE TABLE SPEED_LIMITS


(ROUTE_NUM SMALLINT,
CANADA_SL INTEGER NOT NULL,
US_SL INTEGER NOT NULL
CHECK (US_SL <=65) ) ;

ALTER TABLE SPEED_LIMITS


ADD CONSTRAINT SPEED65
CHECK (US_SL <=65) ;

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Restricciones de comprobación: definición


Las restricciones de columna se pueden definir con las sentencias SQL CREATE
TABLE o ALTER TABLE. El nombre de la restricción no puede ser el mismo que el de
otra restricción especificada en dicha sentencia y tiene que ser exclusivo en la tabla.
[<marker>]
Si se utiliza la sentencia ALTER TABLE, será necesario comparar los datos existentes
con la nueva restricción para que la sentencia ALTER se ejecute correctamente. Si
existe alguna fila que pueda infringir la restricción, la sentencia ALTER TABLE no se
ejecutará correctamente.
Para añadir restricciones a una tabla grande, resulta más eficaz dejar la tabla en
estado set integrity pending, añadir las restricciones y luego buscar en la tabla una lista
agrupada de las filas que cometen infracciones. Utilice la sentencia SET INTEGRITY
para definir explícitamente el estado set integrity pending. Si se trata de una tabla
padre, el estado set integrity pending estará definido de manera implícita para todas las
tablas dependientes y descendentes.
Si se añade una restricción de comprobación de tabla, los paquetes que insertan o
actualizan la tabla pueden marcarse como no válidos.

© Copyright IBM Corp. 2015 5-42


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

La definición de la restricción permite que se utilicen construcciones de cláusula


WHERE básicas:
• Comparaciones básicas (>, <, =, >=, etc.)
• BETWEEN
• LIKE
• IN
• UDF deterministas
Solo es posible insertar o actualizar valores en la columna si el resultado de la prueba
de restricción es True.
La definición de la restricción no admite:
• Subconsultas
• Funciones de columna
• Funciones no deterministas
• Funciones definidas para mostrar acción externa
• Funciones definidas por el usuario con las sentencias CONTAINS SQL o READS
SQL DATA
• Variables host o marcadores de parámetro
• Registros especiales (como CURRENT DATE)
• Referencias a columnas generadas distintas a la columna de identidad
La restricción puede recibir un nombre explícito durante la definición. Si no lo recibe,
DB2 creará un nombre.
La sentencia ALTER TABLE también se puede utilizar con restricciones DROP. Por
ejemplo:
ALTER TABLE SPEED_LIMITS DROP CONSTRAINT SPEED65
o bien
ALTER TABLE SPEED_LIMITS DROP CHECK SPEED65

© Copyright IBM Corp. 2015 5-43


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Creación de una sentencia desencadenante


• Ejemplo: un desencadenante podría insertar una nueva fila en una
tabla si la actualización de otra tabla provocase que un valor de
columna cayese por debajo de un umbral definido.

CREATE TRIGGER MUSIC.REORDER


AFTER UPDATE
OF QTY ON MUSIC.STOCK
REFERENCING NEW AS N
FOR EACH ROW MODE DB2SQL
WHEN (N.QTY <=5)
INSERT INTO MUSIC.REORDER VALUES (N.ITEMNO, CURRENT TIMESTAMP) ;

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Creación de una sentencia desencadenante


Un desencadenante define un conjunto de acciones que se ejecutan con, o que
desencadena, una cláusula INSERT, UPDATE o DELETE en una tabla con tipos o una
tabla especificada.
Utilice los desencadenantes para:
• Validar los datos de entrada
• Generar un valor para una fila recién insertada
• Leer de otras tablas para crear referencias cruzadas
• Escribir en otras tablas para realizar seguimientos de auditoría
Puede utilizar los desencadenantes para dar soporte a los formatos generales de
reglas de negocio o integridad. Por ejemplo, un desencadenante puede comprobar el
límite de crédito de un consumidor antes de aceptar un pedido o de actualizar una
tabla de datos de resumen.

© Copyright IBM Corp. 2015 5-44


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Ventajas:
• Desarrollo de aplicaciones más rápido: dado que hay un desencadenante
almacenado en la base de datos, no es necesario que codifique las acciones que
ejecuta en cada aplicación.
• Mantenimiento más sencillo: una vez definido un desencadenante, se invoca
automáticamente cuando se accede a la tabla en la que se ha creado.
• Obligatoriedad global de las reglas de negocio: si una política de negocio
cambia, solo tiene que cambiar el desencadenante, no cada programa de
aplicación.
El cuerpo de un desencadenante puede incluir una o varias de las siguientes
sentencias: INSERT, searched UPDATE, searched DELETE, fullselect, SET Variable y
SIGNAL SQLSTATE. El desencadenante se puede activar antes o después de la
sentencia INSERT, UPDATE o DELETE a la que se refiere.
Nota: a partir de DB2 Versión 10.1, la sentencia CREATE TRIGGER permite más
flexibilidad y funcionalidad en la creación de desencadenantes.
Compatibilidad con desencadenantes de varios sucesos
La cláusula del suceso desencadenante de la sentencia CREATE TRIGGER
puede contener más de una operación. La capacidad para utilizar las
operaciones UPDATE, INSERT y DELETE de manera conjunta en una única
cláusula implica que el desencadenante se activa con la aparición de
cualquiera de los sucesos especificados. En una sentencia CREATE
TRIGGER se pueden especificar arbitrariamente uno, dos o los tres sucesos
desencadenantes. Sin embargo, un suceso desencadenante no se puede
especificar más de una vez.
Los predicados del suceso desencadenante identifican los sucesos
desencadenantes
Los predicados UPDATING, INSERTING y DELETING del suceso
desencadenante se pueden utilizar para identificar el suceso que ha activado
un desencadenante. Los predicados del suceso desencadenante solo se
pueden utilizar en la acción de desencadenante de una sentencia CREATE
TRIGGER que utilice una sentencia SQL compuesta (compilada).
Se ha eliminado la restricción FOR EACH STATEMENT
Ahora, la opción FOR EACH STATEMENT se admite en la sentencia CREATE
TRIGGER de los desencadenantes PL/SQL. Puede crear desencadenantes
que se activen solo una vez en cada instancia, independientemente del
número de filas afectadas.

© Copyright IBM Corp. 2015 5-45


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Gestión y consulta de datos de duración definida mediante


tablas temporales
• Utilice las tablas temporales asociadas a Time Travel Query para
asignar información de estado de duración definida a los datos.
 Los datos de las tablas que no utilizan el soporte temporal representan el
presente
 Los datos de las tablas temporales son válidos durante un periodo definido
por el sistema de base de datos, las aplicaciones personalizadas, o ambos
• Tablas temporales de periodo de sistema
 DB2 puede almacenar automáticamente el historial de una tabla
 La tabla de historial contiene filas suprimidas o los valores originales de las
filas que se han actualizado, lo que le permite consultar el estado pasado
de los datos
• Tablas temporales de periodo de aplicación
 También puede asignar un intervalo de fechas a una fila de datos para
indicar cuándo consideran la aplicación o las reglas de negocio que es
válida.
• Tablas bitemporales
 Combine las prestaciones de periodo de aplicación (ATT) y periodo de
sistema (STT)
Creación de objetos de base de datos © Copyright IBM Corporation 2015

Gestión y consulta de datos de duración definida mediante tablas temporales


Puede utilizar las tablas temporales para asociar la información de estado de duración
definida a los datos. Los datos de las tablas que no utilizan el soporte temporal se
consideran aplicables al presente, mientras que los datos de las tablas temporales
pueden ser válidos durante un periodo definido por el sistema de base de datos, las
aplicaciones de usuario, o ambos.
Hay muchas necesidades de negocio que requieren el almacenamiento y el
mantenimiento de datos de duración definida. Sin esta prestación en una base de
datos, resulta caro y complejo mantener una infraestructura de soporte de datos
centrada en la duración. Con las tablas temporales, la base de datos puede almacenar
y recuperar los datos de duración definida sin necesidad de lógica de aplicación
adicional. Por ejemplo, una base de datos puede almacenar el historial de una tabla
(las filas suprimidas o los valores originales de filas que se han actualizado) para poder
consultar el estado pasado de los datos. También puede asignar un intervalo de fechas
a una fila de datos para indicar cuándo consideran las aplicaciones o las reglas de
negocio que es válida.

© Copyright IBM Corp. 2015 5-46


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Una tabla temporal registra el periodo durante el que es válida una fila. Un periodo es
un intervalo de tiempo definido por dos columnas de hora o fecha en la tabla temporal.
Un periodo contiene una columna de inicio y una de fin. La columna de inicio indica el
principio del periodo y la columna de fin indica el final del periodo. El valor de inicio de
un periodo es inclusivo, mientras que el valor de fin de un periodo es exclusivo. Por
ejemplo, una fila con un periodo que abarca del 1 de enero al 1 de febrero es válido
desde el 1 de enero hasta el 31 de enero a medianoche.
Hay dos tipos de periodo compatibles:
Periodos de sistema
 Un periodo de sistema consta de un par de columnas con valores
mantenidos por el gestor de bases de datos que indican el periodo
durante el que una fila está vigente. La columna de inicio contiene
un valor de indicación de fecha y hora para la creación de la fila.
La columna de fin contiene un valor de indicación de fecha y hora
para la actualización o la supresión de una fila. Cuando se crea
una tabla temporal de periodo de sistema, contiene las filas que
actualmente están activas. Cada tabla temporal de periodo de
sistema se asocia a una tabla de historial que contiene las filas
modificadas.
Periodo de aplicación
 Un periodo de aplicación consta de un par de columnas con
valores proporcionados por el usuario o la aplicación que indican
el periodo durante el cual una fila es válida. La columna de inicio
indica la hora a partir de la que es válida una fila. La columna de
fin indica la hora a la deja de ser válida una fila. Una tabla con un
periodo de aplicación se denomina tabla temporal de periodo de
aplicación.

© Copyright IBM Corp. 2015 5-47


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Cómo definir una tabla temporal de periodo de sistema


1. Crear una tabla con un atributo SYSTEM_TIME

CREATE TABLE travel(


trip_name CHAR(30) NOT NULL PRIMARY KEY,
destination CHAR(12) NOT NULL,
departure_date DATE NOT NULL,
price DECIMAL (8,2) NOT NULL,
sys_start TIMESTAMP(12) NOT NULL generated always as row begin implicitly hidden,
sys_end TIMESTAMP(12) NOT NULL generated always as row end implicitly hidden,
tx_start TIMESTAMP(12) generated always as transaction start id implicitly hidden,
PERIOD SYSTEM_TIME (sys_start, sys_end)) in travel_space;

Captura las horas de inicio y


finalización de vigencia de los
2. Crear la tabla de historial datos de una fila

CREATE TABLE travel_history like travel in hist_space;

3. Añadir mantenimiento de versiones a la tabla temporal de periodo de sistema


para establecer un vínculo con la tabla de historial
ALTER TABLE travel ADD VERSIONING USE HISTORY TABLE travel_history;

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Cómo definir una tabla temporal de periodo de sistema


En este cuadro, se muestra un ejemplo de la sintaxis real necesaria para configurar
una tabla temporal de periodo de sistema. La sintaxis de la clave que necesita la tabla
base (travel, en este ejemplo) para configurar un par de tabla temporal de periodo de
sistema y tabla de historial base es la definición de las tres columnas (sys_start,
sys_end y ts_start) indicadas en la sentencia CREATE TABLE.
Además de la definición de columna, CREATE TABLE contiene la palabra clave
PERIOD SYSTEM_TIME (sys_start, sys_end).
A continuación, es necesario crear de forma explícita la tabla de historial asociada a la
tabla base. En este ejemplo, CREATE TABLE contiene la palabra clave "like" seguida
del nombre de la tabla base (travel). Otra opción pasa por especificar de forma explícita
cada columna y tipo de datos de la tabla de historial.
Nota: los nombres de columna y los tipos de datos tienen que coincidir con los de la
tabla base.
En el ejemplo mostrado, se crea la tabla de historial (travel_history) en un espacio de
tabla independiente de la tabla base "travel", mientras que las actualizaciones y las
supresiones realizadas en la tabla base se graban también en la tabla de historial.

© Copyright IBM Corp. 2015 5-48


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Por último, se configura el par real de tabla temporal de periodo de sistema y tabla de
historial base (que DB2 puede utilizar de forma transparente) cuando se emite una
sentencia ALTER TABLE con la opción "ADD VERSIONING USE HISTORY TABLE
travel_history" en la base de datos. La tabla temporal de periodo de sistema NO estará
operativa hasta que se complete el paso final.
Para descartar una tabla temporal de periodo de sistema, solo tiene que emitir una
sentencia DROP TABLE para la tabla base y se descartará automáticamente la tabla
de historial asociada.
Si quiere descartar la tabla base y mantener la tabla de historial, tiene que desactivar el
enlace entre la tabla base y la tabla de historial con una sentencia ALTER TABLE
base_table DROP VERSIONING antes de emitir la sentencia DROP TABLE
base_table.
Tablas temporales de periodo de sistema
Una tabla temporal de periodo de sistema es una tabla que mantiene versiones
históricas de sus filas. Utilice una tabla temporal de periodo de sistema para almacenar
las versiones actuales de los datos y utilizar su tabla de historial asociada para
almacenar de manera transparente las filas de datos actualizadas y suprimidas.
Una tabla temporal de periodo de sistema incluye un periodo SYSTEM_TIME con
columnas que capturan las horas de inicio y finalización de vigencia de los datos de
una fila. El gestor de bases de datos también utiliza el periodo SYSTEM_TIME para
mantener las versiones históricas de cada fila de tabla siempre que se producen
actualizaciones o supresiones. El gestor de bases de datos almacena estas filas en
una tabla de historial que está asociada, en exclusiva, a una tabla temporal de periodo
de sistema. Al añadir versiones, se establece el enlace entre la tabla temporal de
periodo de sistema y la tabla de historial. Con una tabla temporal de periodo de
sistema, las consultas tienen acceso a los datos en el momento actual y la capacidad
de recuperar datos de momentos pasados.
Una tabla temporal de periodo de sistema incluye también una columna con los ID de
inicio de transacción. Esta columna captura la hora a la que se inició la ejecución de
una transacción que afecta a la fila. Si se insertan o se actualizan varias filas en una
única transacción SQL, los valores de la columna de ID de inicio de transacción serán
los mismos para todas las filas y serán exclusivos entre los valores generados para
esta columna por otras transacciones. Este valor común en la columna de ID de inicio
implica que puede utilizar la columna de ID de inicio de transacción para identificar
todas las filas de las tablas grabadas por la misma transacción.

© Copyright IBM Corp. 2015 5-49


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Consulta que utiliza una tabla temporal de periodo de


sistema
• Consultas sobre el pasado: ¿qué viajes estaban disponibles por menos de 500
USD el 01/03/2012?
 Fecha actual = 1 de mayo de 2012
SELECT trip_name FROM travel FOR SYSTEM_TIME AS OF ’03/01/2012’
WHERE price < 500.00

• Consultas sobre el presente: ¿qué viajes a Brasil están disponibles actualmente?


SELECT trip_name FROM travel WHERE destination = ‘Brazil’

Toma como valor predeterminado


solo la tabla actual y las funciones,
como si se hubiese añadido
FOR SYSTEM TIME AS OF CURRENT DATE

• Consultas sobre el pasado y el presente: en 2011, ¿cuántos viajes distintos


se ofrecían?
SELECT COUNT (DISTINCT trip_name) FROM travel
FOR SYSTEM_TIME BETWEEN ’01/01/2011’ AND ’01/01/2012’

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Consulta que utiliza una tabla temporal de periodo de sistema


El análisis de las tablas temporales de periodo de sistema concluye con algunas
consultas de ejemplo que usan la misma tabla "travel" y los datos previamente
modificados en los ejemplos previos de operaciones de tabla temporal de periodo de
sistema.
A efectos de estos ejemplos, la fecha actual es 1 de mayo de 2012.
La primera consulta intenta encontrar todos los nombres de viaje de la tabla "travel"
que costaban menos de 500 dólares el 01/03/2012. Dado que la fecha 01/03/2012 es
anterior a la fecha actual, 01/05/2012, DB2 utilizará la tabla base y la tabla de historial
para los resultados de la consulta. En este tipo de consulta, es posible que la tabla
base no contenga filas que coincidan con los predicados, pero la tabla de historial
contiene filas que eran válidas el 01/03/2012 y que se podrían devolver.
La segunda consulta es la típica sentencia SELECT de DB2 que devuelve la columna
trip_name desde la tabla "travel", donde el destino es "Brazil". Dado que no hay un
valor de fecha "AS OF", "BETWEEN" o "FROM" especificado en la consulta, en este
caso solo se consulta la tabla base (travel). Este comportamiento es idéntico al
obtenido cuando se especifica "FOR SYSTEM _TIME AS OF CURRENT DATE" en la
sentencia SELECT.

© Copyright IBM Corp. 2015 5-50


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

La tercera consulta intenta determinar el número total de viajes ofrecidos en cualquier


momento durante 2011. Dado que la sentencia SELECT ha añadido la cláusula "FOR
SYSTEM _TIME BETWEEN ‘01/01/2011’ AND ‘01/01/2012’", DB2 accederá tanto a la
tabla base como a la tabla de historial para recuperar el resultado de la consulta.

© Copyright IBM Corp. 2015 5-51


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Ejemplo de una tabla temporal de periodo de aplicación


• La tabla policy_info almacena el nivel de cobertura del seguro para un
cliente
 Las columnas BUSINESS_TIME relacionadas con el periodo (bus_start y
bus_end) indican si el nivel de cobertura del seguro es válido
 Cuando se crea la tabla policy_info se utiliza una declaración PRIMARY KEY, lo
que garantiza que no se permitan periodos de solapamiento BUSINESS_TIME.
 Esto significa que no pueden existir dos versiones de la misma política que sean
válidas al mismo tiempo.

CREATE TABLE POLICY_INFO


( POLICY_ID CHAR(4) NOT NULL,
COVERAGE INT NOT NULL,
BUS_START DATE NOT NULL,
BUS_END DATE NOT NULL,
PERIOD BUSINESS_TIME(BUS_START, BUS_END),
PRIMARY KEY(POLICY_ID, BUSINESS_TIME WITHOUT OVERLAPS)
);

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Ejemplo de una tabla temporal de periodo de aplicación


Tablas temporales de periodo de aplicación
Una tabla temporal de periodo de aplicación es una tabla que almacena el aspecto
vigente de los datos de aplicación. Utilice una tabla temporal de periodo de aplicación
para gestionar los datos en función de criterios de duración. Para ello, defina los
periodos de tiempo de validez de los datos.
Del mismo modo que una tabla temporal de periodo de sistema, una tabla temporal de
periodo de aplicación incluye un periodo BUSINESS_TIME con columnas que indican
el periodo de tiempo durante el cual son válidos o están vigentes los datos de la fila. El
usuario proporciona la hora de inicio y la hora de finalización del periodo
BUSINESS_TIME asociado a cada fila. Sin embargo, al contrario que una tabla
temporal de periodo de tiempo de sistema, no hay ninguna tabla de historial
independiente. Las fechas de entrada en vigor pasadas, presentes y futuras, y los
datos de negocio asociados, se mantienen en una única tabla. Puede controlar los
valores de datos con el periodo BUSINESS_TIME y utilizar tablas temporales de
periodo de aplicación para modelar datos en el pasado, el presente y el futuro.
La creación de una tabla temporal de periodo de aplicación resulta en una tabla que
gestiona los datos en función de cuándo son válidos o están vigentes los datos.

© Copyright IBM Corp. 2015 5-52


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Cuando cree una tabla temporal de periodo de aplicación, incluya un periodo


BUSINESS_TIME que indique cuándo son válidos los datos de la fila. También puede
establecer que no se permite el solapamiento de periodos BUSINESS_TIME y que los
valores son exclusivos con respecto a cualquier periodo. En el ejemplo, se muestra la
creación de una tabla que almacena información de política para los consumidores de
una compañía de seguros.
En el ejemplo, se utiliza una declaración PRIMARY KEY cuando se crea la tabla
policy_info, que garantiza que no se permitan periodos de solapamiento de
BUSINESS_TIME. Esto significa que no pueden existir dos versiones de la misma
política que sean válidas al mismo tiempo.
Ejemplo:
CREATE TABLE policy_info
(
policy_id CHAR(4) NOT NULL,
coverage INT NOT NULL,
bus_start DATE NOT NULL,
bus_end DATE NOT NULL,
PERIOD BUSINESS_TIME(bus_start, bus_end),
PRIMARY KEY(policy_id, BUSINESS_TIME WITHOUT OVERLAPS)
);

© Copyright IBM Corp. 2015 5-53


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Uso de una tabla temporal de periodo de aplicación


• Consulta con FOR BUSINESS_TIME AS OF especificado
SELECT policy_id, coverage, bus_start, bus_end
FROM policy_info
FOR BUSINESS_TIME AS OF '2008-07-15'
where policy_id = 'A123‘

• Consulta con FOR BUSINESS_TIME FROM...TO especificado


SELECT policy_id, coverage, bus_start, bus_end
FROM policy_info
FOR BUSINESS_TIME FROM '2008-01-01' TO '2008-06-15'
where policy_id = 'A123‘

• La cobertura de la política A123 muestra un incremento de 12.000 a


16.000 el 1 de julio (01-07-2008), pero falta el incremento anterior a
14.000:
UPDATE policy_info
FOR PORTION OF BUSINESS_TIME
FROM '2008-06-01' TO '2008-08-01‘
SET coverage = 14000 WHERE policy_id = 'A123';

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Uso de una tabla temporal de periodo de aplicación


Si consulta una tabla temporal de periodo de aplicación, puede incluir FOR
BUSINESS_TIME en la cláusula FROM. Si utiliza especificaciones FOR
BUSINESS_TIME, puede consultar el estado pasado, actual y futuro de los datos.
Los periodos de tiempo se especifican como se indica a continuación:
• AS OF value1
Incluye todas las filas en las que el valor de inicio del periodo es anterior o igual a
value1 y el valor final es posterior a value1.
• FROM value1 TO value2
Incluye todas las filas en las que el valor de inicio del periodo es posterior o igual
a value1 y el valor final del periodo es anterior a value2. Esto significa que la hora
de inicio está incluida en el periodo, pero no la hora de finalización.
• BETWEEN value1 AND value2
Incluye todas las filas en las que un periodo de tiempo coincide con cualquier
momento específico entre value1 y value2. Esto significa que tanto la hora de
inicio como la hora de finalización están incluidas en el periodo.

© Copyright IBM Corp. 2015 5-54


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

La primera consulta de ejemplo utiliza la cláusula FOR BUSINESS_TIME AS OF para


ver si la política A123 estaba vigente en la fecha específica 15-07-2008.
SELECT policy_id, coverage, bus_start, bus_end
FROM policy_info
FOR BUSINESS_TIME AS OF '2008-07-15'
where policy_id = 'A123'
En la siguiente consulta de ejemplo, se utiliza la cláusula FOR BUSINESS_TIME
BETWEEN...AND para recuperar la información de la política de una política
determinada en un intervalo de fechas.
SELECT policy_id, coverage, bus_start, bus_end
FROM policy_info
FOR BUSINESS_TIME FROM
'2008-01-01' TO '2008-06-15'
where policy_id = 'A123'
La actualización de datos en una tabla temporal de periodo de aplicación puede ser un
proceso similar al de actualizar datos en una tabla regular, pero también se pueden
actualizar los datos de momentos concretos del pasado, el presente o el futuro. Las
actualizaciones de momentos específicos pueden ocasionar que algunas filas se
dividan y que nuevas filas se inserten automáticamente en la tabla.
Además de la sentencia UPDATE regular, las tablas temporales de periodo de
aplicación también dan soporte a las actualizaciones del intervalo temporal en las que
la sentencia UPDATE incluya la cláusula FOR PORTION OF BUSINESS_TIME. Una
fila será sujeto de actualización si la columna de inicio del periodo, la de finalización del
periodo, o ambas, se encuentran en el intervalo especificado en la cláusula FOR
PORTION OF BUSINESS_TIME.
Si, por ejemplo, la tabla policy_info cubría la política A123 e incluía un incremento de
12.000 a 16.000 el 1 de julio (01-07-2008), pero falta un incremento anterior a 14.000,
podría utilizarse la sentencia UPDATE siguiente:
UPDATE policy_info
FOR PORTION OF BUSINESS_TIME FROM '2008-06-01' TO '2008-08-01'
SET coverage = 14000
WHERE policy_id = 'A123';

© Copyright IBM Corp. 2015 5-55


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Resumen de compresión de la fila de datos


• La compresión de filas de datos se incluye desde DB2 9.1
• Se utiliza la opción COMPRESS para CREATE y ALTER TABLE a fin de
especificar la compresión
• La compresión utiliza un diccionario estático:
 Diccionario almacenado en el objeto de datos, alrededor de 100 K de tamaño
 Es necesario crear un diccionario de compresión para poder comprimir una fila
 Un diccionario se puede construir o reconstruir utilizando la sentencia REORG
TABLE fuera de línea, que también comprime los datos existentes
 Cuando una tabla alcanza un tamaño de umbral (alrededor de 2 MB) se crea
automáticamente un diccionario. Esto se aplica a la sentencia INSERT de SQL
y a IMPORT y LOAD (DB2 9.5).
• Los objetivos de la compresión son:
 Reducir los requisitos de almacenamiento de disco
 Reducir las entradas/salidas de exploración de tablas
 Reducir la memoria de agrupación de almacenamiento intermedio para
almacenar datos
• La compresión para índices, datos temporales y datos XML se introdujo
en DB2 9.7
Creación de objetos de base de datos © Copyright IBM Corporation 2015

Resumen de compresión de la fila de datos


Puede utilizar menos espacio de disco para sus tablas si utiliza las prestaciones de
compresión de tablas de DB2. La compresión permite ahorrar espacio de
almacenamiento de disco utilizando menos páginas de base de datos para almacenar
datos.
Además, dado que puede almacenar más filas por página, será necesario leer menos
páginas para acceder a la misma cantidad de datos. Por lo tanto, las consultas de una
tabla comprimida necesitan menos operaciones de E/S para acceder a la misma
cantidad de datos. Dado que hay más filas de datos en una página de la agrupación de
almacenamiento intermedio, se incrementa la probabilidad de que las filas necesarias
se encuentren en la agrupación de almacenamiento intermedio. Por ello, la compresión
puede aumentar el rendimiento a través de mejores proporciones de coincidencias de
agrupación de almacenamiento intermedio. De forma similar, la compresión también
puede agilizar las operaciones de copia de seguridad y restauración, ya que será
necesario transferir menos páginas a la copia de seguridad o restaurar la misma
cantidad de datos.
Puede utilizar la compresión con las tablas nuevas o las ya existentes. Las tablas
temporales también se comprimen automáticamente si el gestor de bases de datos
considera que sería ventajoso hacerlo.

© Copyright IBM Corp. 2015 5-56


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Existen dos tipos principales de compresión de datos disponibles para las tablas:
• Compresión de filas
• Compresión de valores
En el caso de una tabla concreta, puede utilizar la compresión de filas y la compresión
de valor de manera conjunta o por separado. Sin embargo, solo puede utilizar un tipo
de compresión de filas para una tabla concreta.
La compresión de filas clásica, denominada a veces compresión estática, comprime
las filas de datos sustituyendo los patrones de valores que se repiten en varias filas por
cadenas de símbolos más breves.
Las ventajas que ofrece la compresión de filas clásica son parecidas a las de la
compresión adaptativa, en el sentido de que puede almacenar datos en menos
espacio, lo que le permitiría ahorrar costes de almacenamiento. Al contrario de lo que
pasa con la compresión adaptativa, sin embargo, la compresión de filas clásica utiliza
solo un diccionario a nivel de tabla para almacenar patrones recurrentes globales; no
utiliza los diccionarios a nivel de página que se utilizan para comprimir los datos de
forma dinámica.
Cómo funciona la compresión de filas clásica:
• La compresión de filas clásica utiliza un diccionario de compresión a nivel de
tabla para comprimir los datos por filas. El diccionario se utiliza para correlacionar
patrones de bytes repetidos de filas de tablas con símbolos mucho más
pequeños. A continuación, estos símbolos sustituyen los patrones de bytes más
largos en las filas de la tabla. El diccionario de compresión está almacenado con
las filas de datos de tabla en las partes de objetos de datos de la tabla.
¿Qué datos se comprimen?
Los datos almacenados en las filas de la tabla base y las entradas del registro son
elegibles para la compresión de filas clásica. Además, los datos de los objetos de
almacenamiento XML son elegibles para ser comprimidos. Puede comprimir los datos
de LOB que coloque en línea en una fila de la tabla. Sin embargo, los objetos de
almacenamiento de los objetos de datos long no se comprimen.
Compresión en tablas temporales
La compresión para tablas temporales se habilita automáticamente con la
característica de optimización de almacenamiento de DB2. Con las tablas temporales,
solo se utiliza la compresión de filas clásica.

© Copyright IBM Corp. 2015 5-57


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Tablas temporales del sistema


Cuando ejecuta consultas, el optimizador de DB2 tiene en cuenta los ahorros
de almacenamiento y el impacto sobre el rendimiento de la consulta que
ofrece la compresión de tablas temporales creadas por el sistema para
determinar si vale la pena utilizar la compresión. Si es así, se utiliza
automáticamente la compresión de filas clásica. El tamaño mínimo que debe
tener una tabla antes de la compresión es mayor para las tablas temporales
que para las tablas regulares.
Tablas temporales creadas por el usuario
Las tablas temporales globales creadas (CGTT) y las tablas temporales
globales declaradas (DGTT) siempre se comprimen mediante la compresión
de filas clásica.
Puede utilizar el recurso EXPLAIN o la herramienta db2pd para ver si el
optimizador ha utilizado la compresión en las tablas temporales del sistema.

© Copyright IBM Corp. 2015 5-58


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Compresión adaptativa con DB2 10.1


• La compresión adaptativa supone una mejora con respecto a la compresión
de filas clásica que se encuentra en DB2 9.7
 Comprima las filas utilizando una combinación de dos tipos de diccionarios
− Diccionario a nivel de tabla estática global
− Diccionarios a nivel de página local

• Ventajas TABLA
 Los diccionarios a nivel de página se adaptan al desvío
Página DB2 Diccionari
de datos durante un periodo de tiempo o a nivel
Diccionario a nivel
− No se necesitan mandatos REORG para mantener de página dinámica de tabla
estática
una alta proporción de compresión a medida
que cambian los datos
Página DB2 Página DB2
 Menos espacio de disco para datos y registros
Diccionario a nivel Diccionario a nivel
− El doble de ahorro de almacenamiento en las de página dinámica de página dinámica

tablas con respecto a la compresión de filas clásica


− Compresión de tabla global 5x-8x
 Entrada/salida reducida: menos páginas que procesar

 Mejores proporciones de compresión que con la compresión de


filas clásica
 Con el tiempo, se reduce la necesidad de un mandato REORG para
encontrar patrones recurrentes locales
Creación de objetos de base de datos © Copyright IBM Corporation 2015

Compresión adaptativa con DB2 10.1


Compresión adaptativa
La compresión adaptativa, introducida con DB2 10.1, mejora las tasas de compresión
que se pueden alcanzar utilizando solo la compresión de filas clásica. La compresión
adaptativa incorpora compresión de filas clásica. Sin embargo, también funciona
página a página para llevar la compresión de datos un paso más allá. De las distintas
técnicas de compresión de datos del producto DB2, la compresión adaptativa ofrece
las opciones más adecuadas para ahorrar en almacenamiento.

© Copyright IBM Corp. 2015 5-59


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Cómo funciona la compresión adaptativa


La compresión adaptativa utiliza dos métodos de compresión. El primero utiliza el
mismo diccionario de compresión a nivel de tabla que se utiliza en la compresión de
filas clásica para comprimir los datos en función de la repetición en una muestra de
datos de la tabla en su conjunto. El segundo método utiliza un algoritmo de compresión
basado en diccionarios a nivel de página para comprimir los datos en función de la
repetición de los datos en cada página de datos. Los diccionarios correlacionan los
patrones de bytes repetidos con símbolos mucho más pequeños. A continuación, estos
símbolos sustituyen los patrones de bytes más largos de la tabla. El diccionario de
compresión a nivel de tabla se almacena en el objeto de tabla para el que se ha creado
y se utiliza para comprimir datos en la tabla. El diccionario de compresión a nivel de
página se almacena con los datos en la página de datos y se utiliza para comprimir
solo los datos de dicha página.
Activar o desactivar la compresión adaptativa
Para comprimir los datos de tabla, defina el atributo COMPRESS de la tabla en YES.
Puede definir este atributo al crear la tabla, solo tiene que especificar la opción
COMPRESS YES para la sentencia CREATE TABLE. También puede modificar una
tabla existente para que utilice la compresión. Para hacerlo, use la misma opción para
la sentencia ALTER TABLE. Las operaciones que añadan datos a la tabla, como las
operaciones de mandato INSERT, LOAD INSERT o IMPORT INSERT, pueden utilizar
la compresión adaptativa una vez habilitada la compresión. Además, se habilita para la
tabla la compresión de índice. Los índices se crean como índices comprimidos a
menos que se especifique lo contrario, si son los tipos de índices que se pueden
comprimir.

© Copyright IBM Corp. 2015 5-60


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Ejemplos de db2look
• Para capturar todo el DDL de una base de datos (incluye todas las tablas,
vistas, RI, restricciones, desencadenantes, etc.):
db2look -d proddb -e -o statements.sql
{Edit the output file and change the database name}
db2 -tvf statements.sql

• Para capturar el DDL de una tabla específica (table1 en este ejemplo):


db2look -d proddb -e -t table1 -o statements.sql
{Edit the output file and change the database name}
db2 -tvf statements.sql

• Para capturar el DDL de todas las tablas que pertenecen a un esquema


específico (db2user en este ejemplo):
db2look -d proddb -e -z db2user -o statements.sql
{Edit the output file and change the database name}
db2 -tvf statements.sql
Creación de objetos de base de datos © Copyright IBM Corporation 2015

Ejemplos de db2look
El mandato db2look extrae las sentencias del lenguaje de definición de datos (DDL)
necesarias para reproducir los objetos de base de datos de una base de datos de
producción en una base de datos de prueba. El mandato db2look genera las
sentencias DDL por tipo de objeto. Tenga en cuenta que este mandato omite todos los
objetos del esquema SYSTOOLS, salvo los procedimientos almacenados y las
funciones definidas por el usuario.
Con frecuencia, resulta beneficioso contar con un sistema de prueba que contenga un
subconjunto de datos del sistema de producción, pero los planes de acceso
seleccionados para un sistema de prueba de este tipo no son necesariamente iguales
a los que se seleccionarían en el sistema de producción. Sin embargo, al utilizar la
herramienta db2look puede crear un sistema de prueba con planes de acceso
similares a los que se utilizarían en el sistema de producción. Puede utilizar esta
herramienta para generar las sentencias UPDATE necesarias para replicar las
estadísticas del catálogo en los objetos de una base de datos de producción de una
base de datos de prueba. También puede utilizar esta herramienta para generar
mandatos db2set, UPDATE DATABASE CONFIGURATION y UPDATE DATABASE
MANAGER CONFIGURATION, a fin de que los valores de los parámetros de
configuración relacionados con el optimizador de consultas y las variables de registro
de una base de datos de prueba coincidan con los de una base de datos de
producción.

© Copyright IBM Corp. 2015 5-61


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Es necesario que compruebe las sentencias DDL que genera el mandato db2look,
dado que es posible que no reproduzcan todas las características de los objetos SQL
originales. En el caso de espacios de tabla de entornos de base de datos particionada,
es posible que DDL no se complete si no todas las particiones de base de datos están
activas. Asegúrese de que todas las particiones de base de datos estén activas
utilizando el mandato ACTIVATE DATABASE.
Autorización
Privilegio SELECT en las tablas de catálogo de sistema.
En algunos casos, como en la generación de un DDL de contenedor de espacio de
tabla, necesitará una de las autoridades siguientes:
• SYSADM
• SYSCTRL
• SYSMAINT
• SYSMON
• DBADM
• Privilegio EXECUTE en la función de tabla ADMIN_GET_STORAGE_PATHS
El mandato db2look puede extraer sentencias DDL para los siguientes objetos de base
de datos:
• Alias
• Políticas de auditoria
• Restricciones de comprobación
• Correlaciones de funciones
• Plantillas de función
• Variables globales
• Índices (incluidos los índices particionados en tablas de partición)
• Especificaciones de índice
• Tablas de consulta materializada (MQT)
• Apodos
• Clave primaria, integridad referencial y restricciones de comprobación
• Restricciones de integridad referencial
• Roles

© Copyright IBM Corp. 2015 5-62


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

• Esquemas
• Etiquetas de seguridad
• Componentes de etiqueta de seguridad
• Políticas de seguridad
• Secuencias
• Servidores
• Procedimientos almacenados
• Tablas
Nota: los valores de la columna STATISTICS_PROFILE de la tabla de catálogo
SYSIBM.SYSTABLES no están incluidos.
• Desencadenantes
• Contextos de confianza
• Correlaciones de tipos
• Correlaciones de usuarios
• Tipos distinct definidos por el usuario
• Funciones definidas por el usuario
• Métodos definidos por el usuario
• Tipos estructurados definidos por el usuario
• Transformaciones definidas por el usuario
• Vistas
• Derivadores

© Copyright IBM Corp. 2015 5-63


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Demostración 1
Creación de objetos de base de datos

• Cree un conjunto de tablas y utilice Data Server Manager para crear


la sentencia CREATE TABLE o utilizar el DDL guardado en un
archivo.
• Cree índices para tablas utilizando la sentencia CREATE INDEX.
• Cree objetos de vistas y alias utilizando las sentencias SQL en un
archivo.
• Cree una clave foránea y restricciones de comprobación para una
tabla utilizando la sentencia SQL en un archivo.
• Utilice el programa de utilidad db2look para extraer las definiciones
de objeto de base de datos de una base de datos DB2.

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Demostración 1: creación de objetos de base de datos

© Copyright IBM Corp. 2015 5-64


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Demostración 1:
Crear objetos de base de datos
Objetivo:
En esta demostración, crearemos un grupo de objetos de base de datos en la
base de datos DB2 denominada MUSICDB.

Tarea 1. Iniciar la sesión en el sistema Windows e iniciar un


procesador de línea de mandatos de DB2.
1. Inicie la sesión en el sistema Windows con el ID de usuario inst23 y la
contraseña ibm2blue.
El procesador de línea de mandatos de DB2 se utilizará para emitir algunos
mandatos de sistema y de DB2. Tendrá que iniciar la ventana de mandato de
DB2 en modalidad de administrador para emitir estos mandatos de DB2.
Tarea 2. Crear la tabla ALBUMS en la base de datos MUSICDB.
En este punto, puede elegir entre crear la tabla ALBUMS con el procesador de
línea de mandatos DB2 o la herramienta Data Server Manager. Siga los pasos
de la herramienta que haya elegido.
Tarea 2A. Utilizar el procesador de línea de mandatos de DB2.
Utilizará el archivo c:\inst23\ddl\create_table_albums.ddl para crear la tabla ALBUMS
con una clave primaria definida en la columna ITEMNO.
Este archivo contiene el siguiente texto de sentencia:
create table music.albums
(title varchar (50),
artno smallint not null,
itemno smallint not null)
in tsp04
index in tsp05;
alter table music.albums primary key (itemno) ;
1. Si el procesador de línea de mandatos no está abierto ya, pulse el icono de
inicio de Windows y vaya a Todos los programas > IBM DB2 DB2COPY1 >
DB2 Command Window - Administrator.
Cuando aparezca la pregunta "¿Desea permitir que este programa realice
cambios en el equipo?", seleccione Sí.
Hay un conjunto de archivos del curso en el directorio c:\inst23\ddl.
Pasaremos a este directorio para que resulte más sencillo acceder a los
archivos que contienen mandatos de DB2 o sentencias SQL.

© Copyright IBM Corp. 2015 5-65


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

2. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2.
• CD C:\inst23\ddl\
• db2 connect to musicdb
• db2 -tvf create_table_albums.ddl
• db2 describe table music.albums
3. Puede pasar a la Tarea 3.
Tarea 2B. Utilizar la herramienta Data Server Manager.
Podemos utilizar la herramienta Data Server Manager para crear tablas estableciendo
la definición de tabla o ejecutando un archivo SQL que contenga las sentencias de
Data Definition Language.
1. Si no ha iniciado la aplicación DSM, iníciela ahora utilizando el siguiente texto
de URL, http//localhost:11080. Utilice este usuario y esta contraseña para
DSM:
• El ID de usuario de Windows: db2admin
• La contraseña de usuario: ibm2blue
Utilizará DSM para crear una nueva tabla en la base de datos MUSICDB.
2. Para acceder a la base de datos MUSICDB, pulse la opción Administer a la
izquierda de la aplicación DSM y, a continuación, seleccione Explore
Databases.
3. La primera lista desplegable de la parte superior debería estar establecida en
Host Port Instance.
4. En Select a Database or an Instance, seleccione MUSICDB.
5. Si se le solicita un ID de usuario y una contraseña para la conexión de base de
datos MUSICDB, utilice inst23 con la contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.
Las tablas que vamos a crear utilizarán el nombre de esquema único MUSIC.
Crearemos un nuevo esquema denominado MUSIC.

6. En la estructura en árbol de objetos, pulse Schemas .


Se mostrará una lista con los esquemas creados para dar soporte a la nueva
base de datos.

© Copyright IBM Corp. 2015 5-66


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

7. Pulse Create y, a continuación, en Schema name, indique MUSIC (utilice las


mayúsculas).
La herramienta DSM genera la siguiente sentencia CREATE SCHEMA:
CREATE SCHEMA 'MUSIC ;
8. Pulse Next.
9. Seleccione Run with SQL Editor y, a continuación, pulse Finish.
10. Cierre el separador Create Schema.
Ahora, podemos crear una tabla, ALBUMS, en el nuevo esquema, MUSIC.
11. En la estructura en árbol de objetos, pulse Tables.
12. Pulse Create e indique los siguientes valores de propiedad:
• Nombre: ALBUMS (utilice las mayúsculas)
• Esquema: MUSIC
• Espacio de tabla: TSP04
• Espacio de tabla de índice: TSP05
13. Pulse la cabecera Columns para definir las columnas de tabla.
14. Pulse Add column e indique lo siguiente:
• Nombre: TITLE
• Tipo de datos: Varchar
• Longitud: 50
15. Cerca de la parte superior del diálogo, en la vía de acceso Columns >
NEW_COLUMN1, pulse el enlace Columns para volver a la lista de columnas.
16. Pulse Add column e indique lo siguiente:
• Nombre: ARTNO
• Tipo de datos: Smallint
• Acepta valores NULL: No
17. Pulse el enlace Columns para volver a la lista de columnas.
18. Pulse Add column e indique lo siguiente:
• Nombre: ITEMNO
• Tipo de datos: Smallint
• Acepta valores NULL: No
19. Pulse la cabecera Constraints para definir las restricciones de la tabla.

© Copyright IBM Corp. 2015 5-67


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

20. Pulse Add constraint, asegúrese de haber seleccionado Primary key como
tipo de restricción y pulse OK.
21. En Name, indique ALBUM_ITEM y, a continuación, pulse Add.
22. En la lista Member, seleccione la columna ITEMNO.
La herramienta DSM genera las sentencias CREATE TABLE y ALTER TABLE
para añadir la clave primaria.
23. Pulse Next.
24. Seleccione Run with SQL Editor y, a continuación, pulse Finish.
25. Cierre el separador Create table.
Tarea 3. Crear un conjunto de tablas nuevas con un archivo
SQL.
Crearemos un grupo de tablas utilizando un archivo SQL que contenga las sentencias
CREATE TABLE.
En este punto, puede elegir entre crear la tabla ALBUMS con el procesador de línea de
mandatos DB2 o la herramienta Data Server Manager. Siga los pasos de la
herramienta que haya elegido.
Tarea 3A. Utilizar el procesador de línea de mandatos de DB2.
El archivo c:\inst23\ddl\create_tables.ddl contiene cinco sentencias CREATE
TABLE.
El archivo contiene el siguiente texto de sentencia:
create table MUSIC.concerts
(artno smallint not null,
date date not null,
city varchar (25) not null with default)
in tsp04;

create table MUSIC.reorder


(itemno smallint not null,
timestamp timestamp)
in TSP02;

© Copyright IBM Corp. 2015 5-68


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

create table MUSIC.artists


(artno smallint not null,
name varchar(50),
classification char(1) not null,
bio clob(100K) logged compact,
picture blob(500K) not logged compact,
primary key (artno))
in tsp01
index in tsp02
long in tsp03 ;

create table MUSIC.stock


(ITEMNO SMALLINT NOT NULL ,
TYPE CHAR(1) NOT NULL ,
PRICE DECIMAL(5,2) NOT NULL WITH DEFAULT ,
QTY INTEGER NOT NULL WITH DEFAULT,
SYS_START TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN
IMPLICITLY HIDDEN,
SYS_END TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END
IMPLICITLY HIDDEN,
TX_START TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS TRANSACTION
START ID IMPLICITLY HIDDEN,
PERIOD SYSTEM_TIME (SYS_START,SYS_END) )
in tsp06;

CREATE TABLE MUSIC.STOCK_HISTORY LIKE MUSIC.STOCK IN tsp06 ;

ALTER TABLE MUSIC.STOCK ADD VERSIONING USE HISTORY TABLE


MUSIC.STOCK_HISTORY ;
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf create_tables.ddl | more
• db2 list tables for schema music
2. Puede pasar a la Tarea 4.

© Copyright IBM Corp. 2015 5-69


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Tarea 3B. Utilizar la herramienta Data Server Manager.


Podemos utilizar la herramienta DSM para ejecutar el archivo SQL que contiene las
sentencias CREATE TABLE.
1. A la izquierda de DSM, pulse Home.
La base de datos MUSICDB aparece en la lista. El nombre de base de datos
MUSICDB proporciona una lista para efectuar distintas tareas.
2. Desde la lista MUSICDB, seleccione Administer - Explore Database.
Si se le solicita un ID de usuario y una contraseña para la conexión de base de
datos MUSICDB, utilice inst23 con la contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.
3. Cerca de la parte superior de la herramienta DSM, pulse el enlace Open SQL
Editor.
4. En la lista More Actions, pulse Upload y utilice Browse para encontrar y abrir
C:\inst23\ddl\create_tables.ddl.
Revise las opciones especificadas para las cinco sentencias CREATE TABLE.
La tabla MUSIC.STOCK se definirá como una tabla temporal de periodo de
sistema. La tabla MUSIC.STOCK_HISTORY se utilizará como tabla de historial
para MUSIC.STOCK.
Observe las asignaciones de las tablas con respecto a los espacios de tabla.
En el caso de espacios de tabla de DMS y gestionados por el almacenamiento
automático, se pueden utilizar varios espacios de tabla para los datos, el índice
y los componentes de objetos grandes de una única tabla.
¿Qué espacios de tabla se utilizarán para los datos, los índices y los objetos
grandes de la tabla STOCK? ¿Y para CONCERTS? ¿Y para
ARTISTS?
5. Pulse Run y espere a que se procesen las sentencias SQL.
El resultado debería mostrar que todas las sentencias se han ejecutado
correctamente.

© Copyright IBM Corp. 2015 5-70


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Tarea 4. Crear objetos de alias, índice y vista para las tablas


de aplicaciones.
A continuación, crearemos un índice en la tabla STOCK basado en la columna
ITEMNO. También utilizaremos sentencias SQL en el archivo create_View_Alias.ddl
para crear objetos de alias y vista. El archivo c:\inst23\ddl\create_stock_ix.ddl contiene
la sentencia CREATE INDEX. El archivo contiene el siguiente texto de sentencia:

create index music.stockitem_ix on music.stock(itemno) ;

El archivo c:\inst23\ddl\create_VIEW_ALIAS.ddl contiene las sentencias


siguientes:

create view music.music as select title, classification, name


from music.albums alb, music.artists art
where art.artno = alb.artno ;

create view music.inventory (type, itemno, totcost, totqty)


as select type, itemno, sum (price * qty), sum (qty)
from music.stock group by type, itemno;

create alias music.singers for music.artists ;

create alias music.emptystock for music.reorder ;


En este punto, puede elegir crear los nuevos objetos de alias, índice y vista utilizando
el procesador de línea de mandatos de DB2 o la herramienta Data Server Manager.
Siga los pasos de la herramienta que haya elegido.
Tarea 4A. Utilizar el procesador de línea de mandatos de DB2.
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf create_stock_ix.ddl
• db2 describe indexes for table music.stock
• db2 -tvf create_VIEW_ALIAS.ddl
• db2 list tables for schema music
2. Puede pasar a la Tarea 5.

© Copyright IBM Corp. 2015 5-71


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Tarea 4B. Utilizar la herramienta Data Server Manager.


Podemos utilizar la herramienta DSM para crear los objetos de alias, índice y vista.
1. A la izquierda de DSM, pulse Home.
La base de datos MUSICDB aparece en la lista. El nombre de base de datos
MUSICDB proporciona una lista para efectuar distintas tareas.
2. Desde la lista MUSICDB, seleccione Administer - Explore Database.
Si se le solicita un ID de usuario y una contraseña para la conexión a base de
datos MUSICDB, utilice inst23 con la contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.

3. En la estructura en árbol de objetos, pulse Indexes .


Se mostrará una lista con los objetos de índice actuales.
4. Pulse Create para abrir una lista de opciones y definir un nuevo depósito de
almacenamiento.
5. Seleccione la tabla MUSIC.STOCK, pulse OK y, en Name, especifique
STOCKITEM_IX (utilice las mayúsculas).
6. En la sección Members, pulse Add y, a continuación, seleccione la columna
ITEMNO.
La herramienta DSM genera la sentencia CREATE INDEX que definirá el
nuevo índice, denominado STOCKITEM_IX.
El texto del mandato debe ser parecido al siguiente:
CREATE INDEX "MUSIC"."STOCKITEM_IX" ON "MUSIC"."STOCK" ("ITEMNO"
ASC) ;
7. Pulse Next.
8. Seleccione Run with SQL Editor y, a continuación, pulse Finish.
9. Cierre el separador Create Index.
Al renovar la lista de índices, debería ver el nuevo índice incluido en la lista.
Ahora, utilizaremos DSM para ejecutar las sentencias SQL en el archivo
create_View_Alias.ddl y crear objetos de vista y alias.
10. Pulse Open SQL Editor.
11. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
12. Pulse Browse y, a continuación, encuentre y abra create_VIEW_ALIAS.ddl.

© Copyright IBM Corp. 2015 5-72


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

13. Pulse OK para completar la carga del texto SQL en el editor SQL.
Revise las opciones especificadas para las sentencias CREATE VIEW y
CREATE ALIAS.
14. Pulse Run y espere a que se procesen las sentencias SQL.
El resultado debería mostrar que todas las sentencias se han ejecutado
correctamente.
Tarea 5. Crear varias restricciones de tabla y un
desencadenante utilizando un archivo SQL.
Utilizaremos un archivo SQL para crear los siguientes objetos de base de datos:
• Una restricción de clave foránea para la tabla ALBUMS que haga referencia a la
columna ARTNO de la tabla ARTISTS.
• Una restricción de clave foránea para la tabla STOCK que haga referencia a la
columna ITEMNO de la tabla ALBUMS.
• Una restricción de comprobación para la columna CCTYPE de la tabla STOCK.
• Un TRIGGER para la tabla STOCK que inserte una fila en la tabla REORDER
cuando la columna QTY de la tabla STOCK se actualice con un valor de 5 o
menos.
En este punto, puede elegir entre crear los objetos de base de datos con el procesador
de línea de mandatos de DB2 o la herramienta Data Server Manager. Siga los pasos
de la herramienta que haya elegido.

© Copyright IBM Corp. 2015 5-73


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Tarea 5A. Utilizar el procesador de línea de mandatos de DB2.


El archivo c:\inst23\ddl\create_ri.cc.trigger.ddl contiene las sentencias siguientes.
alter table music.albums add constraint ARTNO_FK
foreign key (artno) references music.artists (artno)
on delete cascade on update no action ;

alter table music.stock


foreign key ITEMNO_FK (itemno)
references music.albums on delete restrict;

alter table music.stock


add constraint cctype check (type in ('D', 'C', 'R')) ;

create trigger music.reorder


after update of qty on music.stock
referencing new as n
for each row
mode db2sql
when (n.qty <= 5)
insert into music.reorder values (n.itemno, current timestamp);

1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf create_ri_cc_trigger.ddl
2. Puede pasar a la Tarea 6.
Tarea 5B. Utilizar la herramienta Data Server Manager.
Podemos utilizar la herramienta DSM para ejecutar el archivo SQL que
contiene las sentencias ALTER TABLE y CREATE TRIGGER.
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
Debería ver la base de datos MUSICDB en la lista. El nombre de base de datos
MUSICDB proporciona una lista desplegable para realizar distintas tareas.

© Copyright IBM Corp. 2015 5-74


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

2. Seleccione Administer - Explore Database en la lista desplegable de la base


de datos MUSICDB.
Se le solicitará un ID de usuario y una contraseña para la conexión a base de
datos MUSICDB, utilice inst23 con la contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.
3. Pulse Open SQL Editor.
4. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
5. Pulse Browse y, a continuación, encuentre y seleccione el archivo
C:\inst23\ddl\create_ri_cc_trigger.ddl.
6. Pulse OK para completar la carga del texto SQL en el editor SQL.
Revise las opciones especificadas para las sentencias SQL.
7. Pulse Run y espere a que se procesen las sentencias SQL.
El resultado debería mostrar que todas las sentencias se han ejecutado
correctamente.
Tarea 6. Utilizar la herramienta de línea de mandatos db2look
para generar las sentencias DDL necesarias para
crear los objetos de base de datos.
Utilizará la herramienta db2look para extraer las sentencias DDL seleccionadas de la
base de datos MUSICDB.
1. Utilice el procesador de línea de mandatos de DB2 para emitir la siguiente serie
de mandatos:
• cd C:\inst23
• db2look -d musicdb -e -z music -t albums -o ALBUMS.DDL
Se genera el DDL asociado a la tabla ALBUMS y la salida se guarda en un
archivo denominado ALBUMS.DDL.

© Copyright IBM Corp. 2015 5-75


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

2. Especifique el mandato more ALBUMS.DDL para revisar las sentencias


generadas en el archivo de salida.
El archivo ALBUMS.DDL contendrá sentencias DDL parecidas a las siguientes:
-- This CLP file was created using DB2LOOK Version "10.5"
-- Timestamp: 8/17/2015 7:42:17 AM
-- Database Name: MUSICDB
-- Database Manager Version: DB2/NT64 Version 10.5.5
-- Database Codepage: 1208
-- Database Collating Sequence is: IDENTITY
-- Alternate collating sequence(alt_collate): null
-- varchar2 compatibility(varchar2_compat): OFF

CONNECT TO MUSICDB;

------------------------------------------------
-- DDL Statements for Table "MUSIC "."ALBUMS"
------------------------------------------------

CREATE TABLE "MUSIC "."ALBUMS" (


"TITLE" VARCHAR(50 OCTETS) ,
"ARTNO" SMALLINT NOT NULL ,
"ITEMNO" SMALLINT NOT NULL )
IN "TSP04" INDEX IN "TSP05"
ORGANIZE BY ROW;

-- DDL Statements for Primary Key on Table "MUSIC "."ALBUMS"

ALTER TABLE "MUSIC "."ALBUMS"


ADD CONSTRAINT "ALBUM_ITEM" PRIMARY KEY
("ITEMNO");

-- DDL Statements for Foreign Keys on Table "MUSIC "."ALBUMS"

© Copyright IBM Corp. 2015 5-76


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

ALTER TABLE "MUSIC "."ALBUMS"


ADD CONSTRAINT "ARTNO_FK" FOREIGN KEY
("ARTNO")
REFERENCES "MUSIC "."ARTISTS"
("ARTNO")
ON DELETE CASCADE
ON UPDATE NO ACTION
ENFORCED
ENABLE QUERY OPTIMIZATION;

----------------------------

-- DDL Statements for Views

----------------------------
SET CURRENT SCHEMA = "INST23 ";
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","INST23";
create view music.music as select title, classification, name
from music.albums alb, music.artists art
where art.artno = alb.artno;

COMMIT WORK;

CONNECT RESET;

TERMINATE;

Resultados:
En esta demostración, ha creado un grupo de objetos de base de datos en la
base de datos DB2 denominada MUSICDB.

© Copyright IBM Corp. 2015 5-77


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 5 Creación de objetos de base de datos

Resumen de la unidad
• Describir la jerarquía de objetos DB2
• Crear los objetos siguientes:
 Esquema, tabla, vista, alias, índice
• Revisar el uso de tablas temporales
• Explorar el uso y la implementación de restricciones de comprobación,
la integridad referencial y los desencadenantes
• Utilizar tablas organizadas en columnas, con aceleración BLU, para
mejorar el rendimiento de las consultas de analíticas
• Explicar la diferencia entre las tablas temporales de periodo de
sistema y las tablas temporales de periodo de aplicación
• Listar los tipos de compresión disponibles para tablas e índices
• Usar la utilidad db2look para exportar las estructuras de base de datos
y utilizarlas en el futuro

Creación de objetos de base de datos © Copyright IBM Corporation 2015

Resumen de la unidad

Exerc

© Copyright IBM Corp. 2015 5-78


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6. Traslado de datos

Traslado de datos

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

© Copyright IBM Corp. 2015 6-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Objetivos de la unidad
• Analizar el uso de la sentencia INSERT de SQL para llenar tablas
• Explicar las diferencias entre los procesos IMPORT y LOAD
• Explicar las opciones de mandato EXPORT, IMPORT y LOAD
• Crear y utilizar tablas de excepciones y archivos de volcado
• Comprobar el estado de una tabla con LOAD QUERY
• Describir la fase ANALYZE del proceso de mandato LOAD utilizado para
cargar tablas organizadas en columnas, con aceleración BLU.
• Comprobar, en una tabla, los estados Load Pending y Set Integrity
Pending
• Utilizar el mandato SET INTEGRITY
• Analizar los mandatos db2move y db2look
• Utilizar el procedimiento ADMIN_MOVE_TABLE para trasladar una tabla
a espacios de tabla distintos
• Listar algunas de las características del programa de utilidad Ingest para
la entrada continua de datos
Traslado de datos © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 6-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Analizar sentencia INSERT


• La sentencia INSERT de SQL puede insertar una o varias filas de
datos en tablas, apodos o vistas:
 Se impone la sobrecarga de SQL, como el cumplimiento de RI, o las
restricciones de comprobación, o la exclusividad, o la ejecución de
desencadenantes.
 A medida que se suceden las sentencias INSERT, la actividad se
almacena en registros
• La sentencia INSERT de SQL podría no ser el mejor método, o el
más rápido, para cargar grandes cantidades de datos en una base
de datos
Ejemplo de sentencias INSERT:

INSERT INTO ARTISTS (artno, name,classification)


values (100, 'Patti & Cart Wheels', 'S') ;

INSERT INTO EMPTEMP SELECT * FROM EMPLOYEE ;

Traslado de datos © Copyright IBM Corporation 2015

Analizar sentencia INSERT


La sentencia INSERT inserta filas en una tabla, apodo o vista, o en las tablas, apodos
o vistas subyacentes, del fullselect especificado. Al insertar una fila en un apodo, la fila
se inserta en el objeto de origen de datos al que se refiere el apodo.
Al insertar una fila en una vista, la fila se inserta también en la tabla en la que se basa
la vista, si no se define un desencadenante INSTEAD OF para la operación insert de
esta vista. Si se define un desencadenante de este tipo, se ejecutará en su lugar el
desencadenante.

© Copyright IBM Corp. 2015 6-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Sintaxis del mandato EXPORT (básica)


EXPORT TO filename OF filetype

, ,

LOBS TO lob-path LOBFILE filename

...

MODIFIED BY filetype-mod

select-statement
MESSAGES message-file

Traslado de datos © Copyright IBM Corporation 2015

Sintaxis del mandato EXPORT (básica)


El mandato EXPORT se puede utilizar para exportar datos de una base de datos a uno
de los distintos formatos de archivo externo. El usuario especifica los datos que se van
a exportar proporcionando una sentencia SELECT de SQL.
Entre los tipos de archivo admitidos, se incluyen:
• DEL (formato ASCII delimitado), que utilizan distintos programas de gestor de
bases de datos y gestor de archivos.
• IXF (Integration Exchange Format, versión para PC) es un formato binario de
propiedad. Este tipo de archivo se puede utilizar para trasladar datos entre
sistemas operativos.
Las opciones MODIFIED BY le permiten especificar distintos elementos en función del
tipo de archivo que se está creando. Por ejemplo, para los datos de salida delimitados,
puede especificar el delimitador de series de caracteres y el delimitador de columna. El
Information Center se puede utilizar para listar todas las opciones compatibles.

© Copyright IBM Corp. 2015 6-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Algunos de los parámetros de mandato EXPORT incluyen lo siguiente:


• LOBS TO lob-path
Especifica una o varias vías de acceso a los directorios en los que se van a
almacenar los archivos de LOB. Habrá al menos un archivo por vía de acceso de
LOB y cada archivo contendrá al menos un LOB. El número máximo de vías de
acceso que se pueden especificar es 999.
• Nombre de archivo LOBFILE
Especifica uno o varios nombres de archivo base para los archivos de LOB. Una
vez agotado el espacio de nombres para el primer nombre, se utiliza el segundo,
y así sucesivamente. El número máximo de nombres de archivo que se pueden
especificar es 999.
• MODIFIED BY filetype-mod
Especifica las opciones del modificador de tipo de archivo.
• lobsinfile: lob-path especifica la vía de acceso a los archivos que contienen
datos de LOB.
• Xmlinsepfiles: cada instancia de modelo de datos de XQuery (QDM) se
graba en un archivo distinto. De forma predeterminada, hay varios valores que
se concatenan en el mismo archivo.
• Lobsinsepfiles: cada valor de LOB se graba en un archivo independiente. De
forma predeterminada, hay varios valores que se concatenan en el mismo
archivo.
• xmlnodeclaration: las instancias de QDM se graban sin una etiqueta de
declaración XML. De forma predeterminada, las instancias de QDM se
exportan con una etiqueta de declaración XML al principio que incluye un
atributo de codificación.
• Xmlchar: las instancias de QDM se graban en la página de códigos de
caracteres. Tenga en cuenta que la página de códigos de caracteres es el
valor especificado por el modificador del tipo de archivo CODEPAGE, o la
página de códigos de aplicación en caso de que no se haya especificado
ningún valor. De forma predeterminada, las instancias de QDM se escriben en
Unicode.
• Xmlgraphic: las instancias de QDM se escriben en la página de códigos de
gráficos. Tenga en cuenta que la página de códigos de gráficos es el
componente gráfico del valor especificado por el modificador de tipo de
archivo CODEPAGE o el componente gráfico de la página de códigos de la
aplicación, si no se ha especificado. De forma predeterminada, las instancias
de QDM se escriben en Unicode.

© Copyright IBM Corp. 2015 6-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

• MESSAGES message-file
Especifica el destino de los mensajes de error y de aviso que se generan durante
una operación de exportación (tiene que existir una vía de acceso).

© Copyright IBM Corp. 2015 6-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Ejemplo de mandato EXPORT

• Exporta datos de las tablas de base de datos al archivo


 La sentencia SELECT puede hacer referencia a tablas, vistas o
apodos y puede incluir uniones, GROUP BY y ORDER BY
• Revise el mensaje en busca de mensajes de error o aviso
DB2
MUSICDB
EXPORT
artexprt
MUSIC.ARTISTS

db2 connect to musicdb


db2 export to artexprt of ixf messages artmsg
select artno, name from music.artists
Traslado de datos © Copyright IBM Corporation 2015

Ejemplo de mandato EXPORT


Para realizar la exportación, tiene que disponer de una de las autoridades siguientes:
• Autoridad DATAACCESS
• Privilegio CONTROL o SELECT en todas las vistas o tablas implicadas
Las sentencias SELECT pueden utilizarse para obtener los datos que se van a
exportar. Si SQL SELECT utiliza el formato SELECT * FROM one table, el archivo IXF
exportado contendrá metadatos adicionales, como las definiciones de índice de la tabla
de origen. Algunos tipos de tabla, como las tablas de partición por rangos, no
generarán metadatos en un archivo formateado por IXF que se podría utilizar para
recrear la definición de tabla original.

© Copyright IBM Corp. 2015 6-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Sintaxis del mandato IMPORT (básica)


IMPORT FROM filename OF filetype

...
,
LOBS FROM lob-path
ALLOW NO ACCESS

ALLOW WRITE ACCESS


MODIFIED BY filetype-mod

COMMITCOUNT n/ RESTARTCOUNT n MESSAGES message-file


Automatic
INSERT INTO table-name
,
INSERT_UPDATE
REPLACE ( insert-column )
REPLACE_CREATE
CREATE INTO table-name | tblspace-specs |
,
( insert-column )

tblspace-specs

| |
IN tablespace-name
INDEX IN tablespace-name LONG IN tablespace-name
Traslado de datos © Copyright IBM Corporation 2015

Sintaxis del mandato IMPORT (básica)


Se muestra la sintaxis del mandato IMPORT. En las siguientes páginas, se incluirán
ejemplos con más información sobre sus opciones.
De manera predeterminada, durante la importación se muestra un bloqueo Exclusive
(X) en la tabla de destino. Esto impide que aplicaciones simultáneas accedan a los
datos de la tabla. Con la opción ALLOW WRITE ACCESS, la importación se ejecuta en
modalidad en línea. En la tabla de destino, se establece una modalidad Intent
Exclusive (IX). Esto permite que varios lectores y escritores accedan simultáneamente
a los datos de la tabla. ALLOW WRITE ACCESS no es posible con las opciones
REPLACE, CREATE o REPLACE_CREATE, ni con inserciones de almacenamiento
intermedio. La operación de importación confirmará periódicamente los datos
insertados para impedir el escalamiento de bloqueo y evitar que se acabe el espacio
de registro activo. Estas confirmaciones se efectuarán aunque no se haya utilizado la
opción COMMITCOUNT.

© Copyright IBM Corp. 2015 6-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

La opción COMMITCOUNT n/AUTOMATIC efectúa una confirmación cada n registros.


Si se especifica la opción AUTOMATIC, la importación determinará internamente si es
necesario realizar una confirmación. El programa de utilidad de importación efectuará
una confirmación por una de estas razones:
• Para evitar quedarse sin espacio de registro activo
• Para evitar el escalamiento de bloqueo
Si se ha especificado la opción ALLOW WRITE ACCESS, pero no la opción
COMMITCOUNT, el programa de utilidad de importación efectuará confirmaciones
como si se hubiese especificado COMMITCOUNT AUTOMATIC.

© Copyright IBM Corp. 2015 6-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Ejemplo del programa de utilidad de importación


db2 import from myfile.ixf of ixf messages msg.txt
insert into staff

SQL3150N The H record in the PC/IXF file has product "DB2 01.00", date
“20140220", and time "140848".

SQL3153N The T record in the PC/IXF file has name "myfile",


qualifier " ", and source " ".

SQL3109N The utility is beginning to load data from file "myfile".

SQL3110N The utility has completed processing. "58" rows were read from the
input file.

SQL3221W ...Begin COMMIT WORK. Input Record Count = "58".

SQL3222W ...COMMIT of any database changes was successful.

SQL3149N "58" rows were processed from the input file. "58" rows were
successfully inserted into the table. "0" rows were rejected.

Traslado de datos © Copyright IBM Corporation 2015

Ejemplo del programa de utilidad de importación


En la imagen, se muestra el mandato IMPORT que se podría utilizar para copiar los
datos de un archivo con formato IXF a una tabla. La modalidad INSERT añadiría las
nuevas filas a la tabla y dejaría los datos existentes en su sitio.
Los mensajes indican el número de filas procesadas e incluyen mensajes de error si
alguna fila de datos se rechaza.

© Copyright IBM Corp. 2015 6-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Diferencias entre IMPORT y LOAD

IMPORT LOAD
• Método lento para mover una • Más rápido para cantidades de
gran cantidad de datos datos más grandes
• Creación de tabla/índice • Es necesario que existan tablas e
compatible con el formato IXF índices
• Importación en tablas, vistas, • Solo carga en tablas
apodos • Las aplicaciones de lectura pueden
• Opción para ALLOW WRITE ver los datos existentes
ACCESS • Registro mínimo; puede realizar una
• Todas las filas registradas copia
• Desencadenantes activados, • Desencadenantes no activados;
restricciones impuestas restricciones de unicidad aplicadas,
• Las sentencias INSERT pueden RI y restricciones de comprobación
utilizar el espacio liberado por las a través de SET INTEGRITY
filas suprimidas • LOAD crea nuevas extensiones

Traslado de datos © Copyright IBM Corporation 2015

Diferencias entre IMPORT y LOAD


El programa de utilidad de importación ejecuta sentencias INSERT de SQL, de modo
que sus prestaciones son similares a las de un programa de aplicación que ejecuta
inserciones. El programa de utilidad de carga da formato a la extensión de las páginas
y las graba directamente en la base de datos.
El programa de utilidad IMPORT puede crear la tabla de destino, incluidos los índices
si la entrada es un archivo con formato IXF. El programa de utilidad LOAD añade datos
a una tabla existente y actualiza los índices de la tabla.
La opción ALLOW WRITE ACCESS del programa de utilidad IMPORT puede evitar un
bloqueo a nivel de tabla, pero debería utilizarse la opción COMMITCOUNT para evitar
el escalamiento de bloqueo de archivos de entrada más grandes.
El programa de utilidad LOAD permite lecturas simultáneas de aplicaciones si se utiliza
la opción ALLOW READ ACCESS para LOAD INSERT.

© Copyright IBM Corp. 2015 6-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

El programa de utilidad IMPORT utiliza sentencias INSERT de SQL, que normalmente


se registran, de manera que el procesamiento es recuperable, pero puede consumir
demasiado espacio de registro de base de datos. El procesamiento INSERT de
IMPORT aplicará restricciones y archivará los desencadenantes INSERT definidos
para una tabla. El programa de utilidad LOAD efectúa un registro mínimo, por lo que es
menos probable que se quede sin espacio de registro. LOAD no comprueba
directamente las restricciones ni activa los desencadenantes. El programa de utilidad
LOAD colocará una tabla en estado SET INTEGRITY pending para garantizar que las
restricciones se comprueben antes de poder acceder a los nuevos datos.
El programa de utilidad IMPORT puede reutilizar el espacio de las páginas de datos de
una tabla que quedó disponible al suprimirse las filas. Por lo general, un programa de
utilidad LOAD crea nuevas extensiones y no intenta utilizar el espacio libre de las
páginas existentes.

© Copyright IBM Corp. 2015 6-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Fases del procesamiento de carga


• Fase Analyze
 Solo se aplica a las tablas organizadas en columnas
 Se utiliza para crear diccionarios de compresión de columnas
• Fase Load:
 Los registros de entrada se leen, se formatean y se graban en los
contenedores de tabla de destino y en Load Copy (opcional)
 Las claves de índice se insertan en ordenaciones
• Fase Build: se crean los índices
• Fase Delete
 Los duplicados se eliminan de los índices exclusivos
• Fase Index Copy
 Si es necesaria una copia para sustituir al objeto indexado por su
duplicación (ALLOW READ ACCESS)

Traslado de datos © Copyright IBM Corporation 2015

Fases del procesamiento de carga


El programa de utilidad de carga puede trasladar de manera eficaz grandes cantidades
de datos y llevarlos a tablas recién creadas o a tablas que ya contienen datos. El
programa de utilidad puede gestionar la mayoría de los tipos de datos, incluidos XML,
objetos grandes (LOB) y tipos definidos por el usuario (UDT). El programa de utilidad
de carga es más rápido que el programa de utilidad de importación, ya que escribe las
páginas con formato directamente en la base de datos, mientras que el programa de
utilidad de importación ejecuta sentencias INSERT de SQL. El programa de utilidad de
carga no activa desencadenantes, ni efectúa ninguna comprobación de restricciones
de tablas o referencias (aparte de validar la exclusividad de los índices).
El proceso de carga consta de distintas fases:
• Fase Analyze
La fase Analyze del proceso de carga solo se utiliza cuando se está cargando
una tabla organizada en columnas y es necesario crear diccionarios de columna.

© Copyright IBM Corp. 2015 6-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

• Fase Load
Durante la fase Load, se cargan datos en la tabla y se recopilan estadísticas de
tabla y claves de índice, si es necesario. Los puntos de recuperación, o puntos
de coherencia, se establecen en intervalos especificados mediante el parámetro
SAVECOUNT del mandato LOAD. Se generan mensajes que indican la cantidad
de filas de entrada que se han cargado correctamente en el momento del punto
de recuperación.
• Fase Build
Durante la fase Build, se generan índices basados en las claves de índice
recopiladas durante la fase Load. Las claves de índice se ordenan durante la
fase Load y se recopilan estadísticas de índice (si se ha especificado la opción
STATISTICS USE PROFILE y el perfil indica la recopilación de estadísticas de
índice). Las estadísticas son parecidas a las recopiladas mediante el mandato
RUNSTATS.
• Fase Delete
Durante la fase Delete, las filas que han provocado una infracción de clave
primaria o exclusiva se eliminan de la tabla. Estas filas suprimidas se almacenan
en la tabla de excepciones de carga, si se ha especificado alguna.
• Fase Index Copy
Durante la fase Index Copy, los datos de índice se copian de un espacio de tabla
temporal del sistema al espacio de tabla original. Esto solo sucede si se ha
especificado un espacio de tabla temporal del sistema para la creación de
índices durante una operación de carga con la opción READ ACCESS
especificada.

© Copyright IBM Corp. 2015 6-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Proceso de carga en tablas organizadas en columnas


Este proceso requiere una cantidad
significativamente mayor
de memoria de almacenamiento
dinámico del programa de utilidad
Paso 1 FASE ANALYZE de base de datos, en comparación
Solo si es necesario crear diccionarios con las tablas organizadas en filas

Convertir datos en Crear histogramas


Origen bruto del formato para realizar el Crear diccionarios
organizado en filas al seguimiento de la de compresión de
de
entrada formato organizado frecuencia del columnas
en columnas valor

Paso 2 FASE LOAD


Tabla de usuario
Comprimir valores.
Convertir datos en Crear páginas de
bruto del formato datos. Actualizar las
Origen
organizado en filas al claves de creación de Tabla de sinopsis
de
la sinopsis para los
entrada formato organizado
en columnas índices de mapas de
páginas y los índices
exclusivos. Claves de índice

Traslado de datos © Copyright IBM Corporation 2015

Proceso de carga en tablas organizadas en columnas


Cuando los datos se cargan en una tabla organizada en columnas, la primera fase es
la fase Analyze, exclusiva de las tablas organizadas en columnas. La fase Analyze solo
se da si es necesario crear un diccionario de compresión de columnas, lo que sucede
durante una operación LOAD REPLACE, una operación LOAD REPLACE
RESETDICTIONARY, una operación LOAD REPLACE RESETDICTIONARYONLY o
una operación LOAD INSERT (si la tabla organizada en columnas está vacía). En el
caso de tablas organizadas en columnas, a esta fase le siguen las fases Load, Build y
Delete.
La fase Index Copy se aplica solo a las tablas organizadas en filas.

© Copyright IBM Corp. 2015 6-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Sintaxis del mandato LOAD (básica)


,
LOAD FROM file OF ASC
CLIENT pipe DEL
device IXF
cursorname CURSOR

MODIFIED BY filetype-mod

...
SAVECOUNT n ROWCOUNT n WARNINGCOUNT n MESSAGES msg-file

INSERT INTO table-name


REPLACE ,
RESTART ( insert-column ) FOR EXCEPTION table-name
TERMINATE

ALLOW NO ACCESS

ALLOW READ ACCESS


| statistics options | |copy options|
USE tablespace-name

| set integrity pending options | LOCK WITH FORCE

Traslado de datos © Copyright IBM Corporation 2015

Sintaxis del mandato LOAD (básica)


La sintaxis del mandato LOAD ofrece varias opciones de procesamiento.
Algunos de los principales parámetros del mandato LOAD son:
• CLIENT
Especifica que los datos que se van a cargar residen en un cliente conectado de
manera remota. Esta opción se omite si la operación de carga no se ha invocado
desde un cliente remoto. Esta opción se omite si se especifica junto con el tipo
de archivo CURSOR.
• FROM filename/pipename/device/cursorname
Especifica el archivo, el canal de comunicación, el dispositivo o el cursor que
hacen referencia a una sentencia SQL que contiene los datos que se van a
cargar. Si el origen de entrada es un archivo, un canal de comunicación o un
dispositivo, debe residir en la partición de base de datos donde se encuentre la
base de datos, a menos que se especifique la opción CLIENT.

© Copyright IBM Corp. 2015 6-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

• OF filetype
Especifica el formato de los datos:
• ASC (formato ASCII no delimitado)
• DEL (formato ASCII delimitado)
• IXF (formato de intercambio integrado, versión para PC), exportado desde la
misma tabla de DB2 o desde otra.
• CURSOR (un cursor declarado en una sentencia SELECT o VALUES).
• MODIFIED BY filetype-mod
Especifica las opciones del modificador de tipo de archivo.
• SAVECOUNT n
Especifica que el programa de utilidad Load debería definir puntos de coherencia
tras cada n filas. Este valor se convierte en un número de páginas y se redondea
en intervalos del tamaño de la extensión.
• ROWCOUNT n
Especifica el número de n registros n físicos del archivo que se va a cargar.
Permite al usuario cargar solo las primeras n filas en un archivo.
• WARNINGCOUNT n
Detiene la operación de carga tras n avisos. Defina este parámetro si no espera
ningún aviso, pero espera una verificación de que se están utilizando el archivo y
la tabla correctos.
• MESSAGES message-file
Especifica el destino de los mensajes de aviso y de error que se generan durante
la operación de carga.
• INSERT
Una de las cuatro modalidades bajo las que se puede ejecutar el programa de
utilidad Load. Añade los datos cargados a la tabla sin modificar los datos de tabla
existentes.
• REPLACE
Una de las cuatro modalidades bajo las que se puede ejecutar el programa de
utilidad Load. Suprime todos los datos existentes de la tabla e inserta los datos
cargados. La definición de tabla y las definiciones de índice no se modifican.

© Copyright IBM Corp. 2015 6-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

• RESTART
Una de las cuatro modalidades bajo las que se puede ejecutar el programa de
utilidad Load. Reinicia una operación de carga previamente interrumpida. La
operación de carga continuará automáticamente desde el último punto de
coherencia de la fase Load, Build o Delete.
• TERMINATE
Una de las cuatro modalidades bajo las que se puede ejecutar el programa de
utilidad Load. Termina una operación de carga que se había interrumpido
previamente y retrotrae la operación al momento específico donde se inició,
incluso aunque se hayan superado los puntos de coherencia.
• INTO table-name
Especifica la tabla de base de datos en la que se van a cargar los datos. Esta
tabla no puede ser una tabla del sistema ni una tabla temporal declarada. Se
puede especificar un alias o el nombre de tabla, completo o no.
• FOR EXCEPTION table-name
Especifica la tabla de excepciones en la que se copiarán las filas que contengan
un error, es decir, aquellas que supongan una infracción de un índice exclusivo o
un índice de clave primaria. La tabla de excepciones debería existir antes de
LOAD.
• ALLOW NO ACCESS
La carga bloqueará la tabla de destino para acceder de forma exclusiva durante
la carga. El estado de la tabla se establecerá en Load In Progress durante la
carga. ALLOW NO ACCESS es el comportamiento predeterminado. Es la única
opción válida para LOAD REPLACE.
• ALLOW READ ACCESS
La carga bloqueará la tabla de destino en modalidad compartida. El estado de la
tabla se establecerá en Load In Progress y en Read Access. Los lectores
pueden acceder a la parte no diferencial de los datos mientras se carga la tabla.
• USE tablespace-name
Si se están reconstruyendo índices, se crea una duplicación del índice en el
espacio de tabla tablespace-name, que se copia en el espacio de tabla original al
final de la carga durante INDEX COPY PHASE.

© Copyright IBM Corp. 2015 6-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

• LOCK WITH FORCE


El programa de utilidad adquiere varios bloqueos, como los bloqueos de tabla
durante el proceso de carga. En lugar de esperar, y quizás superar el tiempo de
espera, al adquirir un bloqueo esta opción permite la carga para desconectar de
manera forzada otras aplicaciones que contienen bloqueos conflictivos en la
tabla de destino. El programa de utilidad de carga no desconecta de manera
forzada las aplicaciones que contienen bloqueos conflictivos en las tablas de
catálogo de sistema. Las aplicaciones forzadas se retrotraerán y liberarán los
bloqueos que necesita el programa de utilidad de carga.

© Copyright IBM Corp. 2015 6-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Escenario LOAD

INPUT OUTPUT
calpar.del cal.par cal.parexp par.msgs dump.fil.000
10 ~~ 1 10 ~~ 1 30 ~~ 4 timestamp msg ... msg ... 20 ~~ -

50 7 timestamp msg 40 ~~ X
20 ~~ - 30 ~~ 3 ~~ 20 msg

30 ~~ 3 50 ~~ 6 ... ~ ~ ... ... ... 40 msg

30 ~~ 4 80 ~~ 8 ... ... ...


40 ~~ X not null, numeric column
Primary Key
50 ~~ 6 Rows not Loaded

50 ~~ 7 Table Exception Table


UNIQUE INDEX
80 ~~ 8

create tables/indexes 10 RID


obtain delimited input file in sorted format
create exception table 30 RID

db2 load from calpar.del of del 50 RID


modified by dumpfile=<path>/dump.fil
warningcount 100 messages par.msgs
insert into cal.par for exception cal.parexp 80 RID
db2 load query table cal.par
examine par.msgs file

examine cal.parexp exception table

Traslado de datos © Copyright IBM Corporation 2015

Escenario LOAD
En nuestro escenario LOAD, hemos creado tablas e índices, ordenado los datos de
entrada (o los hemos obtenido en orden de clasificación) y hemos creado la tabla de
excepciones.
La tabla de excepciones LOAD es una tabla creada por el usuario que imita la
definición de la tabla que se está cargando. La especifica la opción FOR EXCEPTION
en el mandato LOAD. La tabla se utiliza para almacenar copias de las filas que
infringen las reglas de índice exclusivo.
FOR EXCEPTION indica que cualquier fila que suponga una infracción de una regla de
índice exclusivo se almacenará en la tabla indicada. En nuestro ejemplo, cal.parexp
contiene estas filas. Si no se proporciona una tabla de excepciones para LOAD y se
encuentran registros duplicados, LOAD continuará su ejecución. Sin embargo, solo se
emitirá un mensaje de aviso sobre la supresión de registros duplicados y los registros
duplicados suprimidos no aparecerán en ningún sitio.

© Copyright IBM Corp. 2015 6-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Otros tipos de errores (como tratar de cargar un valor NULL en una columna definida
como NOT NULL) provocarán que se grabe un mensaje en el archivo de mensajes. La
segunda fila del ejemplo generará este tipo de aviso en el archivo de mensaje. Con la
opción DUMPFILE=qualified-filename, las filas rechazadas se grabarán en el archivo
designado. El nombre tiene que ser un nombre completo del servidor. El archivo se
creará con un número de partición al final. En una base de datos particionada única,
será 000.
Las tablas de excepciones utilizadas con LOAD son idénticas a las utilizadas en la
sentencia SET INTEGRITY. Se pueden reutilizar durante la comprobación con las
sentencias SET INTEGRITY. Existen varias reglas para crear tablas de excepciones,
las veremos en la tabla siguiente.
En este ejemplo, cal es el propietario/esquema de la tabla.
Para cargar datos en una tabla, tiene que disponer de uno de estos elementos:
• DATAACCESS
• Privilegio LOAD en la base de datos, y
• Privilegio INSERT en la tabla cuando se invoca el programa de utilidad Load
en modalidad INSERT
• Privilegios INSERT y DELETE en la tabla cuando el programa de utilidad
Load se invoca en modalidad REPLACE
• Privilegio INSERT en la tabla de excepciones, si se utiliza
Dado que lo normal es que cargue una gran cantidad de datos con el mandato LOAD,
se puede utilizar un mandato LOAD QUERY para comprobar el progreso del proceso
LOAD. Las opciones del mandato LOAD QUERY le permiten indicar si solo quiere ver
la información de resumen (SUMMARYONLY) o la información que es nueva con
respecto a la emisión del último mandato LOAD QUERY (SHOWDELTA).
Para comprender el programa de utilidad Load, lo mejor es analizar un ejemplo. En
este ejemplo, tenemos estos componentes:
• Un archivo de entrada, denominado calpar.del: se trata de un archivo de entrada
delimitado ordenado de acuerdo con los valores de la primera columna de los
datos de entrada
• La tabla que se está cargando, denominada cal.par
• Una tabla de excepciones, denominada cal.parexp
• Dos archivos sin formato adicionales: el archivo de mensajes denominado
par.msgs y un archivo, conocido como archivo de volcado, denominado dump.fil

© Copyright IBM Corp. 2015 6-22


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

En el gráfico, todos los objetos se rellenan como si ya se hubiesen ejecutado los


mandatos. En lo que se refiere a este análisis, considere que las tablas están vacías al
inicio. Por supuesto, los archivos par.msgs y dump.fil estarán vacíos.
Mire el área de mandatos. Para que el mandato Load se ejecute correctamente, tiene
que haber creado ya las tablas que quiera cargar. Al contrario que el programa de
utilidad Import, el programa de utilidad Load no puede crear la tabla como parte de
esta operación. Si quiere que el programa de utilidad Load cree los datos de índice,
debería haber creado ya los índices de la tabla.
Si quiere que los datos, almacenados en la tabla, se almacenen en una secuencia
concreta, tiene que ordenar los datos de entrada antes de ejecutar el programa de
utilidad Load.
Por último, debería haber creado ya la tabla de excepciones. Veamos cuáles son los
requisitos para ello. Llegados a este punto, consulte las dos páginas sobre la tabla de
excepciones y luego vuelva a este gráfico.
Se han creado las tablas y los índices; se ha creado la tabla de excepciones.
Analicemos la definición de la tabla que vamos a cargar, cal.par. La primera columna
se ha definido como clave primaria. La última columna se ha definido como numérica y
no permite valores NULL. Al crear la tabla de excepciones, no se ha aplicado la
restricción de clave primaria a la primera columna, pero la última columna se ha
definido como numérica y no permite valores NULL.
Si analizamos los datos de entrada, veremos que hay unos cuantos registros que
podrían resultar problemáticos. Concretamente, la fila 20 será un problema porque
contiene un valor NULL en la última columna (es lo que representa el guion de la última
columna). También tendremos un problema en la fila 40, ya que contiene un carácter
alfa en la última columna (definida en la tabla como numérica). También tenemos dos
filas 30 y dos filas 50. Veremos la manera de gestionarlas cuando examinemos el
proceso Load.
Analicemos el mandato Load. Indica la carga desde calpar.del: el archivo que vamos a
cargar es calpar.del. La secuencia of del indica que los datos de entrada están en
formato ASCII delimitado. En la siguiente frase, se indica la modificación de
dumpfile=dump.fil. Observamos que la tabla de excepciones es para infracciones de
clave exclusiva. El archivo de volcado se aplica a registros que infringen las
definiciones de la tabla. Los mensajes deben grabarse en par.msgs. “warningcount
100” indica que la carga debería detenerse si se reciben más de 100 avisos. Este valor
podría ser el adecuado si cree que los datos están limpios. Si, por ejemplo, especifica
un nombre de archivo de entrada incorrecto, no se generará un fallo por registro (lo que
llevaría mucho tiempo con un archivo de entrada grande), sino que, tras 100 registros
no válidos, la carga fallará.

© Copyright IBM Corp. 2015 6-23


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

La modalidad Load de este ejemplo es Insert o Load Append. Si ya existían datos en la


tabla, estos seguirán disponibles mientras la carga esté añadiendo datos al resto de la
tabla.
El mandato indica también que las filas de excepción deberían colocarse en la tabla de
excepciones cal.parexp.
Veamos qué pasa a medida que se procesan los datos.
El primer registro, el 10, pasará a la tabla cal.par sin problema.
El siguiente registro, el 20, no superará la comprobación de análisis, de manera que los
datos se colocarán en el archivo de volcado, dump.fil. También se escribirá un mensaje
en el archivo de mensaje, par.msgs.
Durante la fase Load, los dos registros 30 se insertarán en la tabla. Aunque tengan
claves duplicadas, no se eliminarán hasta la fase Build.
El registro 40 no superará la comprobación de análisis, de manera que los datos se
colocarán en el archivo de volcado y se grabará un mensaje en el archivo de
mensajes.
De nuevo, durante la fase Load, los dos registros 50 se insertarán en la tabla y el
registro 80 se insertará en la tabla. Al final de la fase Load, todos los registros del
archivo calpar.del, salvo los resaltados en amarillo (20 y 40), estarán en la tabla cal.par.
A continuación, se iniciará la fase Build. Dado que hay una clave primaria, se creará un
índice de clave primaria.
Durante la fase Delete, el segundo registro 30 y el segundo registro 50 se copiarán de
cal.par a cal.parexp. Los segundos registros se suprimirán de cal.par. Tenga en cuenta
que el primer registro se copia en la tabla sin problemas. Sin embargo, el segundo
registro, y los siguientes, se consideran claves duplicadas.
Si se ha especificado un espacio de tabla independiente para volver a crear el índice, a
la fase Delete le seguirá la fase Index Copy: la copia del índice reconstruido del
espacio de tabla temporal en el espacio de tabla de índice.
El conjunto de mandatos también muestra el mandato Load Query.
.

© Copyright IBM Corp. 2015 6-24


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Reglas y métodos para crear tablas de excepciones


• Las primeras n columnas son iguales
• Sin restricciones ni definiciones de desencadenante
• Columna n + 1 TIMESTAMP
• Columna n + 2 CLOB (32 KB)
• usuario privilegio INSERT

CREATE TABLE T1EXC LIKE T1 CREATE TABLE T1EXC AS


(SELECT T1.*,
ALTER TABLE T1EXC CURRENT TIMESTAMP AS TS,
ADD COLUMN TS TIMESTAMP CLOB('', 32767) AS MSG
ADD COLUMN MSG CLOB(32K) FROM T1)
DEFINITION ONLY

Traslado de datos © Copyright IBM Corporation 2015

Reglas y métodos para crear tablas de excepciones


Las primeras n columnas de la tabla de excepciones reflejan la definición de la tabla
que se está cargando. Todos los atributos de columna (atributos de tipo, longitud y
nulabilidad) tienen que ser idénticos. Una tabla de excepciones no puede contener una
columna de identidad ni ningún otro tipo de columna generada.
Todas las columnas de la tabla de excepciones deberían estar libres de restricciones y
desencadenantes. Entre las restricciones, se incluyen la integridad referencial y las
restricciones de comprobación, así como las restricciones de índice exclusivo que
podrían generar errores durante la inserción.
La columna n + 1 de la tabla de excepciones es una columna TIMESTAMP opcional.
La columna de indicación de fecha y hora de la tabla de excepciones se puede utilizar
para distinguir las filas que se acaban de insertar y las antiguas, si fuese necesario.
La columna n + 2 tiene que ser de tipo CLOB (32 KB) o más grande. Esta columna es
opcional, pero se recomienda, y se utilizará para dar los nombres de las restricciones
que infringen los datos de la fila.
No se permiten columnas adicionales.
Si la tabla original ha generado columnas (incluida la propiedad IDENTITY), las
columnas correspondientes de la tabla de excepciones no deberían especificar la
propiedad generada.

© Copyright IBM Corp. 2015 6-25


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

También es necesario recordar que un usuario que invoca un recurso (LOAD, SET
INTEGRITY) que puede provocar la inserción de filas en la tabla de excepciones tiene
que contar con el privilegio INSERT en la tabla de excepciones.

© Copyright IBM Corp. 2015 6-26


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Carga fuera de línea y carga en línea


• ALLOW NO ACCESS
Lock Lock Load
requested granted commit

read/write read/write
Load allows no access

Time

• ALLOW READ ACCESS


Super Super
exclusive exclusive Load
Drain Drain lock lock commit
requested granted requested granted
read/write read
read
r/w
Load allows read access

Time

Traslado de datos © Copyright IBM Corporation 2015

Carga fuera de línea y carga en línea


En la mayoría de los casos, el programa de utilidad LOAD utiliza un bloqueo a nivel de
tabla para restringir el acceso a las tablas. El programa de utilidad LOAD no desactiva
temporalmente los espacios de tabla implicados en la operación de carga y utiliza los
estados del espacio de tabla solo para aquellas operaciones de carga en las que se
haya especificado la opción COPY NO. El nivel de bloqueo depende de si la operación
de carga permite acceso de lectura. Una operación de carga en modalidad ALLOW NO
ACCESS utilizará un bloqueo exclusivo (bloqueo Z) en la tabla mientras dure la carga.
Una operación de carga en modalidad ALLOW READ ACCESS adquiere y mantiene
un bloqueo compartido (bloqueo S) durante la operación de carga y actualiza el
bloqueo a un bloqueo exclusivo (bloqueo Z) mientras se confirman los datos.
Antes de que empiece una operación de carga en modalidad ALLOW READ ACCESS,
el programa de utilidad Load esperará a que las aplicaciones que comenzaron antes
de la operación de carga liberen los bloqueos de la tabla de destino. Dado que los
bloqueos no son persistentes, se complementan con estados de tabla que
permanecen iguales si una operación de carga termina anormalmente. Estos estados
se pueden comprobar utilizando el mandato LOAD QUERY. Si se utiliza la opción
LOCK WITH FORCE, el programa de utilidad LOAD desconecta de manera forzada
las aplicaciones con bloqueos conflictivos de la tabla en la que se está intentando
efectuar la carga.

© Copyright IBM Corp. 2015 6-27


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

ALLOW NO ACCESS es la opción predeterminada del programa de utilidad LOAD.


Comportamiento de bloqueo para operaciones de carga en modalidad ALLOW
READ ACCESS
Al principio de una operación de carga, el programa de utilidad LOAD adquiere un
bloqueo compartido (bloqueo S) en la tabla. Este bloqueo se mantiene hasta que se
confirman los datos. El bloqueo compartido permite a las aplicaciones con bloqueos
compatibles acceder a la tabla durante la operación de carga. Por ejemplo, las
aplicaciones que utilicen consultas de solo lectura podrán acceder a la tabla, mientras
que las aplicaciones que traten de insertar datos en la tabla serán denegadas. Si el
programa de utilidad LOAD adquiere el bloqueo compartido en la tabla, esperará a que
todas las aplicaciones que cuenten con bloqueos en la tabla antes del inicio de la
operación de carga los liberen, incluso aunque tengan bloqueos compatibles.
Dado que el programa de utilidad LOAD actualiza el bloqueo compartido a un bloqueo
exclusivo (bloqueo Z) cuando se confirman los datos, es posible que exista algún
retraso en la confirmación mientras el programa de utilidad LOAD espera a que
finalicen las aplicaciones con bloqueos conflictivos.
Nota: la operación de carga no excederá el tiempo de espera mientras espera a que
las aplicaciones liberen sus bloqueos en la tabla.
Opción LOCK WITH FORCE
La opción LOCK WITH FORCE se puede utilizar para desconectar de manera forzada
todas las aplicaciones con bloqueos conflictivos en una tabla, de manera que la
operación de carga pueda continuar. Si el programa de utilidad Load desconecta de
manera forzada una aplicación del sistema, perderá su conexión a base de datos y se
devolverá un error.
En el caso de una operación de carga en modalidad ALLOW NO ACCESS, se
desconectarán de manera forzada todas las aplicaciones que contengan bloqueos de
tabla que existan al principio de la operación de carga.
En el caso de una operación de carga en modalidad ALLOW READ ACCESS, se
desconectarán de manera forzada las aplicaciones con los siguientes bloqueos:
• Bloqueos de tabla que entren en conflicto con un bloqueo compartido de tabla
(por ejemplo, import o insert).
• Todos los bloqueos de tabla que existan durante la fase de confirmación de la
operación de carga.

© Copyright IBM Corp. 2015 6-28


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Si se especifica la opción COPY NO para una operación de carga en una base de


datos recuperable, todos los objetos del espacio de tabla de destino se bloquearán en
modalidad compartida antes de que el espacio de tabla pase al estado Backup
Pending. Esto sucederá independientemente de la modalidad de acceso. Si se
especifica la opción LOCK WITH FORCE, se desconectarán de manera forzada todas
las aplicaciones que cuenten con bloqueos sobre objetos del espacio de tablas que
entren en conflicto con un bloqueo compartido.

© Copyright IBM Corp. 2015 6-29


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Estados de tabla
• (Load pending, Set Integrity Pending)
• LOAD QUERY TABLE <table-name>
• Estado de tabla:
Normal
Set Integrity Pending
Load in Progress
Load Pending
Reorg Pending
Read Access Only
Unavailable
Not Load Restartable
Unknown
• La tabla se puede encontrar en distintos estados al mismo tiempo
Estado de tabla:
Set Integrity Pending
Load in Progress
Read Access Only
Traslado de datos © Copyright IBM Corporation 2015

Estados de tabla
Además de los bloqueos, el programa de utilidad LOAD utiliza los estados de tabla
para controlar el acceso a las tablas. Un estado de tabla se puede comprobar
utilizando el mandato LOAD QUERY. Los estados devueltos por el mandato LOAD
QUERY son los siguientes:
• Normal: ningún estado de tabla afecta a la tabla.
• Set Integrity Pending: la tabla tiene restricciones que todavía no se han
verificado. Utilice la sentencia SET INTEGRITY para sacar la tabla del estado
Set Integrity Pending. El programa de utilidad LOAD coloca una tabla en estado
Integrity Pending cuando se inicia una operación de carga en una tabla con
restricciones.
• Load in Progress: existe una operación de carga en curso en esta tabla.
• Load Pending: una operación de carga ha estado activa en esta tabla, pero ha
terminado anormalmente antes de que se pudiesen confirmar los datos. Emita un
mandato LOAD TERMINATE, LOAD RESTART o LOAD REPLACE para sacar a
la tabla de este estado.
• Read Access Only: los datos de la tabla están disponibles para consultas de
acceso de lectura. Las operaciones de carga que utilizan la opción ALLOW
READ ACCESS colocan la tabla en estado Read Access Only.

© Copyright IBM Corp. 2015 6-30


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

• Reorg Pending: Se ha ejecutado en la tabla una sentencia ALTER TABLE


recomendada por el mandato REORG. Debe ejecutarse un mandato REORG
clásico para que la tabla sea accesible de nuevo.
• Unavailable: la tabla no está disponible. La tabla solo se puede descartar o
restaurar desde una copia de seguridad. Al ejecutar una operación para
recuperar en avance en una operación de carga no recuperable, la tabla pasa al
estado Unavailable.
• Not Load Restartable: la tabla se encuentra parcialmente cargada, por lo que
no se permite una operación de reinicio de la carga. La tabla también estará en
estado Load Pending. Emita un mandato LOAD TERMINATE o LOAD
REPLACE para sacar la tabla del estado Not Load Restartable. Una tabla pasa
al estado Not Load Restartable cuando se ejecuta una operación para recuperar
en avance tras una operación de carga fallida que no se ha reiniciado o
terminado con éxito, o bien cuando se ejecuta una operación de restaurar desde
una copia de seguridad en línea realizada mientras la tabla se encontraba en
estado Load in Progress o Load Pending. En cualquier caso, la información
necesaria para una operación de reinicio de carga no es fiable y el estado Not
Load Restartable impide que se ejecute una operación de reinicio.
• Unknown: el mandato LOAD QUERY no puede determinar el estado de tabla.
Una tabla se puede encontrar en varios estados al mismo tiempo. Por ejemplo, si los
datos se cargan en una tabla con restricciones y se especifica la opción ALLOW READ
ACCESS, el estado de la tabla sería el siguiente:
Tablestate:
Set Integrity Pending
Load in Progress
Read Access Only
Tras la operación de carga, pero antes de emitir la sentencia SET INTEGRITY, el
estado de la tabla sería el siguiente:
Tablestate:
Set Integrity Pending
Read Access Only
Una vez emitida la sentencia SET INTEGRITY, el estado de la tabla sería el siguiente:
Tablestate:
Normal

© Copyright IBM Corp. 2015 6-31


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Comprobar estado de carga: LOAD QUERY


db2 load query table inst481.loadhist1
SQL3501W The table space(s) in which the table resides will not be placed in
backup pending state since forward recovery is disabled for the database.
SQL3109N The utility is beginning to load data from file
"/home/inst481/datamove/savehist.del".
SQL3500W The utility is beginning the "LOAD" phase at time "05/12/2014
02:44:13.967160".
SQL3519W Begin Load Consistency Point. Input record count = "0".
SQL3520W Load Consistency Point was successful.
SQL3519W Begin Load Consistency Point. Input record count = "10248".
...
SQL3519W Begin Load Consistency Point. Input record count = "51450".
SQL3520W Load Consistency Point was successful.
SQL0289N Unable to allocate new pages in table space "LOADTSPD".
SQLSTATE=57011
SQL3532I The Load utility is currently in the "LOAD" phase.

Number of rows read = 51450


Number of rows skipped = 0
Number of rows loaded = 51450
Number of rows rejected = 0
Number of rows deleted = 0
Number of rows committed = 51450
Number of warnings = 0

Tablestate:
Load Pending

Traslado de datos © Copyright IBM Corporation 2015

Comprobar estado de carga: LOAD QUERY


El mandato LOAD QUERY puede utilizarse para determinar el estado de tabla. LOAD
QUERY se puede utilizar en tablas que no se están cargando actualmente. En el caso
de una tabla particionada, el estado notificado es el más restrictivo de los estados de
partición de datos visibles correspondientes.
Por ejemplo, si una única partición de datos se encuentra en estado Read Access Only
y todas las particiones de datos se encuentran en estado Normal, la operación de
consulta de carga devuelve el estado Read Access Only. Una operación de carga no
dejará un subconjunto de particiones de datos en un estado distinto al del resto de la
tabla.
El informe LOAD QUERY de ejemplo muestra una tabla que se estaba cargando y que
cuya carga no ha finalizado correctamente porque no había suficiente espacio libre en
el espacio de tabla. La tabla se mantiene en estado LOAD PENDING.

© Copyright IBM Corp. 2015 6-32


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Supervisar carga: LIST UTILITIES


db2 LIST UTILITIES SHOW DETAIL
ID = 4
Type = LOAD
Database Name = MUSICDB
Member Number = 0
Description = [LOADID: 18.2014-05-12-02.48.55.850877.0 (11;4)]
[*LOCAL.inst481.120512063958] ONLINE LOAD DEL AUTOMATIC INDEXING INSERT NON-RECOVERABLE
INST481 .LOADHIST1
Start Time = 05/12/2014 02:48:55.869016
State = Executing
Invocation Type = User
Progress Monitoring:
Phase Number = 1
Description = SETUP
Total Work = 0 bytes
Completed Work = 0 bytes
Start Time = 05/12/2014 02:48:55.869085

Phase Number = 2
Description = LOAD
Total Work = 10000 rows
Completed Work = 10000 rows
Start Time = 05/12/2014 02:49:07.057958

Phase Number [Current] = 3


Description = BUILD
Total Work = 2 indexes
Completed Work = 2 indexes
Start Time = 05/12/2014 02:49:07.36690

Traslado de datos © Copyright IBM Corporation 2015

Supervisar carga: LIST UTILITIES


El mandato LIST UTILITIES muestra en una salida estándar la lista de programas de
utilidad activos de la instancia. La descripción de cada programa de utilidad puede
incluir atributos como la hora de inicio, la descripción, la prioridad de velocidad
moderada (si corresponde) o la información de supervisión de progreso (si
corresponde).
Se necesita una de las autorizaciones siguientes:
• sysadm
• sysctrl
• sysmaint
• sysmon
Sintaxis:
>>-LIST UTILITIES--+-------------+----------------------------
->< '-SHOW DETAIL-'
En el caso de los programas de utilidad LOAD activos, se puede utilizar el mandato
LIST UTILITIES para ver qué fase del procesamiento LOAD es la actual. Durante la
fase LOAD, puede realizar un seguimiento del número de filas procesadas. En la fase
BUILD, podrá ver cuántos índices se han completado.

© Copyright IBM Corp. 2015 6-33


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Estado Load Pending: recuperación de un error de LOAD


• Reiniciar Load:
 Comprobar archivos de mensaje
 Utilizar la opción Restart
 La operación Load continúa automáticamente desde el último punto de
coherencia en las fases Load o Build
−o en la fase Delete con la opción ALLOW NO ACCESS
• Sustituir la tabla completa
 LOAD ... REPLACE
• Finalizar Load:
 Si LOAD ... INSERT, se devuelve la tabla al estado anterior a Load
• Si LOAD ... REPLACE, la tabla se trunca en un estado vacío
 Crear copia de seguridad antes de Load para volver al estado anterior a
Load
No manipular los archivos temporales de Load
Traslado de datos © Copyright IBM Corporation 2015

Estado Load Pending: recuperación de un error de LOAD


Si el programa de utilidad LOAD no se puede iniciar debido a un error del usuario,
como un archivo de datos inexistente o nombres de columna no válidos, finalizará y
dejará la tabla en estado normal.
Si se genera un error mientras se cargan los datos, puede reiniciar la operación de
carga desde el último punto de coherencia (con la opción RESTART), recargar la tabla
completa (con la opción REPLACE) o finalizar la carga (con la opción TERMINATE).
Especifique los mismos parámetros que en la invocación anterior para que el programa
de utilidad pueda encontrar los archivos temporales necesarios.
Una operación de carga que haya especificado la opción ALLOW READ ACCESS se
puede reiniciar utilizando la opción ALLOW READ ACCESS o la opción ALLOW NO
ACCESS. Una operación de carga que haya especificado la opción ALLOW NO
ACESS solo se puede reiniciar utilizando la opción ALLOW NO ACCESS. Si el objeto
de índice no está disponible o se ha marcado como no válido, no se permitirá reiniciar
ni finalizar la carga en modalidad ALLOW READ ACCESS. Si la operación de carga
original terminó anormalmente en la fase Index Copy, no se permitirá una operación de
reinicio en modalidad ALLOW READ ACCESS, ya que el índice podría estar dañado.

© Copyright IBM Corp. 2015 6-34


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Si una operación de carga en modalidad ALLOW READ ACCESS terminó


anormalmente durante la fase Load, se reiniciará en la misma fase. Si terminó
anormalmente en una fase distinta a la fase Load, se reiniciará en la fase Build. Si la
operación de carga original estaba en modalidad ALLOW NO ACCESS, es posible que
se produzca una operación de reinicio en la fase Delete si la operación de carga
original alcanzó dicho punto y el índice es válido. Si el índice se marca como no válido,
el programa de utilidad Load reiniciará la operación de carga desde la fase Build.
LOAD REPLACE suprime todos los datos existentes de la tabla e inserta los datos
cargados. Si utiliza la opción LOAD REPLACE y especifica un archivo de entrada
vacío, se truncará la tabla.
Al terminar la carga, la operación se retrotraerá al momento específico en el que se
inició, aunque se hayan superado los puntos de coherencia. Los estados de las tablas
implicadas en la operación volverán a la normalidad y todos los objetos de tabla se
convertirán en coherentes (los objetos de índice se pueden marcar como no válidos,
pero, en este caso, la reconstrucción de índices será automática cuando se produzca
el siguiente acceso). Si la operación de carga que se está terminando es de tipo LOAD
REPLACE, la tabla se truncará en una tabla vacía tras la operación LOAD
TERMINATE. Si la operación de carga que se está terminando es de tipo LOAD
INSERT, la tabla conservará todos los registros originales tras la operación LOAD
TERMINATE.
La operación de carga escribe archivos temporales en el servidor, de forma
predeterminada, en un subdirectorio del directorio de la base de datos (la ubicación
puede cambiar utilizando un parámetro TEMPFILES PATH temp-pathname en el
mandato LOAD). Los archivos temporales escritos en esta vía de acceso se eliminan
cuando la operación de carga se completa sin errores. Estos archivos temporales no
se deben manipular bajo ninguna circunstancia. Si lo hace, el funcionamiento de la
operación de carga no funcionaría correctamente y la base de datos podría correr
peligro.

© Copyright IBM Corp. 2015 6-35


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Estado Backup Pending: opciones COPY

• Si se están cargando datos y se ha habilitado la recuperación hacia


adelante:
 COPY NO (valor predeterminado)
− Durante Load, Backup Pending y Load in Progress
− Después de Load, Backup Pending
 COPY YES
− Load ha hecho Copy no Backup Pending
 NONRECOVERABLE
− No se ha realizado ninguna copia y no se necesita una copia de
seguridad

Convenciones de nomenclatura de archivos Load Copy


Databasealias.Type.Instancename.DBPART000.Timestamp.number

Tipo: 0=Copia de seguridad completa


3=Copia de seguridad de espacio de tabla
4 =Copia desde carga de tabla

Traslado de datos © Copyright IBM Corporation 2015

Estado Backup Pending: opciones COPY


Si se ejecuta una operación de carga con la opción COPY NO en una base de datos
recuperable, los espacios de tabla asociados a la operación de carga pasarán al
estado de espacio de tabla Backup Pending y el estado de espacio de tabla Load in
Progress. Esto sucede al principio de la operación de carga. En este punto, la
operación de carga podría verse retrasada, mientras se adquieren bloqueos en las
tablas del espacio de tabla.
Si un espacio de tabla se encuentra en estado Backup Pending, seguirá estando
disponible para el acceso de lectura. El espacio de tabla solo se puede sacar del
estado Backup Pending si se realiza una copia de seguridad del espacio de tabla.
Incluso aunque la operación de carga termine anormalmente, el espacio de tabla
seguirá en estado Backup Pending porque el estado del espacio de tabla cambia al
principio de la operación de carga y no se puede retrotraer si falla. El estado del
espacio de tabla Load in Progress impide las copias de seguridad en línea de una
operación de carga con la opción COPY NO especificada mientras se cargan los
datos. El estado Load in Progress se elimina cuando la operación de carga finaliza o
termina anormalmente.
Tenga en cuenta que si la base de datos es una base de datos recuperable, al terminar
la carga no se eliminará el requisito para realizar una copia de seguridad del espacio
de tabla cargado.

© Copyright IBM Corp. 2015 6-36


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Durante la carga de datos, si se habilita la opción de recuperación hacia adelante, hay


tres opciones que tener en cuenta:
1. COPY NO (valor predeterminado) especifica que el espacio de tabla en el que
se encuentra la tabla pasará al estado Backup Pending si se habilita la
recuperación hacia adelante (es decir, si se han activado logretain o userexit).
COPY NO también colocará el estado del espacio de tabla en Load in
Progress. Se trata de un estado transitorio que desaparece cuando la carga se
completa o termina anormalmente. Los datos de las tablas del espacio de tabla
no se pueden actualizar ni suprimir hasta que se realiza una copia de seguridad
del espacio de tabla o una copia de seguridad de base de datos completa. Sin
embargo, es posible acceder a los datos de cualquier tabla utilizando la
sentencia SELECT.
2. COPY YES en LOAD especifica que se guardará una copia de los cambios
realizados. Esta copia se utiliza durante la recuperación en avance para recrear
los cambios realizados por LOAD en la base de datos. Esta opción no es válida
si la recuperación hacia adelante está inhabilitada. COPY YES ralentiza el
programa de utilidad LOAD. Si está cargando muchas tablas, quizás le
convenga cargarlas todas en el espacio de tablas y luego realizar la copia de
seguridad.
3. NONRECOVERABLE especifica que la transacción de carga se tiene que
marcar como no recuperable y que no será posible recuperarla en una acción
posterior de recuperar en avance. El programa de utilidad de recuperar en
avance omitirá la transacción y marcará la tabla en la que se estaban cargando
los datos como no válida. El programa de utilidad también omitirá las
transacciones siguientes en dicha tabla. Una vez completada la operación de
recuperar en avance, dicha tabla solo se podrá descartar o restaurar desde una
copia de seguridad (completa o del espacio de tabla) realizada tras un punto de
confirmación una vez finalizada la operación de carga no recuperable.
Con esta opción, los espacios de tabla no pasan al estado Backup Pending tras
la operación de carga y no es necesario realizar una copia de los datos
cargados durante la operación de carga. Se puede utilizar para habilitar la
carga de varias tablas en un espacio de tablas antes de ejecutar la copia de
seguridad del espacio de tabla. También se puede utilizar con tablas que
siempre se carguen con LOAD... REPLACE, dado que se podrían recuperar al
volver a cargar.
Si no crea una copia, LOAD se ejecutará más rápido. Tiene que tener en cuenta
también el espacio en disco que necesitará una copia de seguridad adicional.

© Copyright IBM Corp. 2015 6-37


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

El nombre del archivo de copia de seguridad tiene entradas en el campo Tipo que
indican lo que representa. Hay tres opciones:
• 0 para la copia de seguridad de base de datos completa
• 3 para la copia de seguridad del espacio de tabla
• 4 para la copia desde carga de tabla
Si se utiliza la carga con la opción nonrecoverable, no será necesario realizar una
copia de seguridad.
Durante una operación de recuperar en avance efectuada mediante un mandato LOAD
con la opción COPY NO especificada, los espacios de tabla asociados pasarán al
estado Restore Pending. Para sacar los espacios de tabla del estado Restore Pending,
es necesario ejecutar una operación de restauración. Una operación de recuperar en
avance solo pasará un espacio de tabla al estado Restore Pending si la operación de
carga se completa correctamente.

© Copyright IBM Corp. 2015 6-38


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Estado de tabla Set Integrity Pending


• Load desactiva la comprobación de restricciones:
 Deja la tabla en estado Set Integrity Pending
 Si la tabla padre se encuentra en estado Set Integrity Pending, es
probable que los dependientes estén en el mismo estado
 LOAD INSERT, ALLOW READ ACCESS
− Tabla cargada en Set Integrity Pending con acceso de lectura
 LOAD INSERT, ALLOW NO ACCESS
− Tabla cargada en Set Integrity Pending sin acceso
 LOAD REPLACE, SET INTEGRITY PENDING CASCADE DEFERRED
− Tabla cargada en Set Integrity Pending sin acceso
 LOAD REPLACE, SET INTEGRITY PENDING CASCADE IMMEDIATE
− La tabla cargada y las tablas de claves foráneas descendentes se encuentran
en estado Set Integrity Pending sin acceso

Traslado de datos © Copyright IBM Corporation 2015

Estado de tabla Set Integrity Pending


Tras una operación de carga, la tabla cargada podría encontrarse en estado Set
Integrity Pending, en las modalidades READ o NO ACCESS, si la tabla tuviese
restricciones de comprobación de tabla o restricciones de integridad referencial
definidas en ella. Si la tabla tiene tablas de clave foránea descendentes, también
podrían estar en estado Set Integrity Pending.
Si la tabla cargada tiene tablas descendientes, se puede especificar el parámetro SET
INTEGRITY PENDING CASCADE para indicar si el estado Set Integrity Pending de la
tabla cargada debería aplicarse de inmediato a las tablas de consulta materializada
descendientes o las tablas de etapas descendientes. SET INTEGRITY PENDING
CASCADE no se aplica a las tablas de clave foránea descendentes. Si la tabla
cargada tiene restricciones, así como tablas de claves foráneas descendientes, y todas
ellas se encuentran en estado normal antes de la operación de carga, se obtendrá el
siguiente resultado en función de los parámetros de carga especificados:
• INSERT, ALLOW READ ACCESS y SET INTEGRITY PENDING CASCADE
IMMEDIATE o DEFERRED
La tabla cargada pasará al estado Set Integrity Pending con acceso de lectura.
Las tablas de claves foráneas descendentes seguirán en sus estados originales.

© Copyright IBM Corp. 2015 6-39


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

• INSERT, ALLOW NO ACCESS y SET INTEGRITY PENDING CASCADE


IMMEDIATE
La tabla cargada pasará al estado Set Integrity Pending sin acceso. Las tablas
de claves foráneas descendentes seguirán en sus estados originales.
• INSERT o REPLACE, ALLOW NO ACCESS y SET INTEGRITY PENDING
CASCADE DEFERRED
Solo la tabla cargada pasará al estado Set Integrity Pending sin acceso. Las
tablas de claves foráneas descendentes seguirán en sus estados originales.
• REPLACE, ALLOW NO ACCESS y SET INTEGRITY PENDING CASCADE
IMMEDIATE
La tabla y todas sus tablas de claves foráneas descendentes pasarán al estado
Set Integrity Pending sin acceso.
Nota: si se especifica la opción ALLOW READ ACCESS en una operación Load
Replace, se generará un error.

© Copyright IBM Corp. 2015 6-40


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Sintaxis del mandato SET INTEGRITY (básica)


SET INTEGRITY ...
,
FOR table-name OFF

IMMEDIATE CHECKED
| exception-clause |

,
FOR table-name ALL IMMEDIATE UNCHECKED

FOREIGN KEY
CHECK

exception-clause
,
| FOR EXCEPTION IN table-name USE table-name |

Traslado de datos © Copyright IBM Corporation 2015

Sintaxis del mandato SET INTEGRITY (básica)


Para eliminar el estado Set Integrity Pending, utilice la sentencia SET INTEGRITY. La
sentencia SET INTEGRITY comprueba si hay infracciones de restricción en una tabla y
la saca del estado Set Integrity Pending. Si todas las operaciones de carga se efectúan
en modalidad INSERT, se puede utilizar la sentencia SET INTEGRITY para procesar
de manera incremental las restricciones (es decir, efectuar la búsqueda de infracciones
de restricción solo en la parte añadida de la tabla).
Por ejemplo:
db2 load from infile1.ixf of ixf insert into table1
db2 set integrity for table1 immediate checked
Solo se buscan las infracciones de restricción en la parte añadida de TABLE1. Esta
búsqueda de infracciones de restricción limitada a la parte añadida es más rápida que
una búsqueda en la tabla entera, especialmente en caso de que se trate de una tabla
grande con pocos daños añadidos.
Sugerencia: con IBM Data Studio versión 4.1, puede utilizar el asistente de tareas para
definir la integridad. Los asistentes de la tarea le guiarán por el proceso de definición
de opciones, revisarán los mandatos que se hayan generado automáticamente para
efectuar la tarea y ejecutarán dichos mandatos.

© Copyright IBM Corp. 2015 6-41


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Si una tabla se carga con la opción SET INTEGRITY PENDING CASCADE


DEFERRED especificada y se utiliza la sentencia SET INTEGRITY para buscar
posibles infracciones de integridad, las tablas descendentes pasarán al estado Set
Integrity Pending sin acceso. Para sacar las tablas de este estado, tiene que emitir una
solicitud explícita.

© Copyright IBM Corp. 2015 6-42


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Pasos relevantes para LOAD


• Crear tablas e índices
• Crear tablas de excepciones
• Ordenar datos
• Realizar copia de seguridad de espacio de tabla/base de datos (si se
utiliza REPLACE)
• Tener en cuenta el espacio libre
• Load .... for Exception ... Savecount ... Warningcount...
• Examinar xx.msg y el archivo de volcado (tras la finalización de LOAD)
• Examinar tablas de excepciones (tras la finalización de LOAD)
• Realizar copia de seguridad de espacio de tabla si se dan los valores
log retain=recovery y COPY NO
• Set Integrity for .... (solo si la tabla se encuentra en estado Set Integrity
Pending)
• Actualizar estadísticas (si es necesario)
Traslado de datos © Copyright IBM Corporation 2015

Pasos relevantes para LOAD


En la imagen, se revisa una secuencia de pasos que se podrían utilizar al cargar tablas
con el programa de utilidad LOAD.
El hecho de ordenar los datos de entrada para LOAD le permite controlar la secuencia
de las filas de datos de la tabla y reducir la necesidad de reorganizar la tabla tras
cargar los datos.
Las opciones PAGEFREESPACE, INDEXFREESPACE y TOTALFREESPACE del
programa de utilidad LOAD se pueden utilizar en la cláusula MODIFIED BY para que el
programa de utilidad LOAD defina las asignaciones de espacio libre.
Si utiliza el programa de utilidad LOAD con la opción REPLACE, puede utilizar la
opción STATISTICS para solicitar la recopilación de estadísticas durante el proceso de
carga. Se puede utilizar para evitar la necesidad de ejecutar un mandato RUNSTATS
tras el procesamiento de LOAD. De forma predeterminada, LOAD no recopilará
nuevas estadísticas de tabla.
Si especifica STATISTICS USE PROFILE, el proceso de carga recopilará estadísticas
durante la carga en función del perfil definido para esta tabla. Es necesario crear este
perfil antes de ejecutar la carga. El mandato RUNSTATS crea el perfil. Si el perfil no
existe y la carga tiene que recopilar estadísticas en función del perfil, se devolverá un
aviso y no se recopilarán estadísticas.

© Copyright IBM Corp. 2015 6-43


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Opción COPY de db2move


• Copiar uno o varios esquemas entre bases de datos DB2
 Utiliza una opción -co para especificar:
− Base de datos de destino:
"TARGET_DB <db name> [USER <userid> USING <password>]"
− MODALIDAD:
• DDL_AND_LOAD: crea todos los objetos admitidos desde el esquema de origen
y rellena las tablas con los datos de la tabla de origen. Predeterminado
• DDL_ONLY: crea todos los objetos admitidos desde el esquema de origen, pero
no rellena las tablas.
• LOAD_ONLY: carga todas las tablas especificadas de la base de datos de
origen a la base de datos de destino. Las tablas tendrían que existir ya en el
destino.
− SCHEMA_MAP: permite a los usuarios cambiar el nombre del esquema cuando se
efectúa la copia en el destino
− TABLESPACE_MAP: correlaciones del nombre de espacio de tabla que se van a
utilizar
− Opción del programa de utilidad Load: COPY NO o Nonrecoverable
− Propietario: cambie el propietario de cada nuevo objeto creado en el esquema de
destino
Traslado de datos © Copyright IBM Corporation 2015

Opción COPY de db2move


El programa de utilidad db2move le permite realizar copias de un esquema de base de
datos con rapidez. Tras el establecimiento de un esquema de modelo, puede utilizarlo
como plantilla para crear nuevas versiones.
Utilice el programa de utilidad db2move con la opción -co COPY para copiar un
esquema, o varios, de una base de datos de origen a una base de datos de destino. La
mayoría de los objetos de base de datos del esquema de origen se copian en la base
de datos de destino bajo el nuevo esquema.
Hay varias opciones de db2move que permiten crear objetos, con o sin los datos. El
nombre del esquema puede ser igual o distinto en la base de datos de destino.
También puede ajustar los espacios de tabla utilizados para contener los objetos
copiados en la base de datos de destino.
El programa de utilidad LOAD se utiliza para mover los datos de objeto de la base de
datos de origen a la base de datos de destino.

© Copyright IBM Corp. 2015 6-44


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

El programa de utilidad db2move intenta copiar todos los objetos de esquema


permitidos, salvo los de los tipos siguientes:
• jerarquía de tablas
• tablas de etapas (no admitidas por el programa de utilidad de carga en entornos
de base de datos de partición múltiple)
• jars (archivos de rutina de Java)
• apodos
• paquetes
• jerarquías de vista
• privilegios de objeto (todos los objetos nuevos se crean con autorizaciones
predeterminadas)
• estadísticas (los nuevos objetos no contienen información sobre las estadísticas)
• extensiones de índice (relacionadas con el tipo estructurado definido por el
usuario)
• tipos estructurados definidos por el usuario y sus funciones de transformación

© Copyright IBM Corp. 2015 6-45


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Ejemplos del esquema COPY de db2move


• Para duplicar el esquema schema1 Base de datos dbsrc
desde la base de datos de origen dbsrc
en la base de datos de destino dbtgt, emita:
db2move dbsrc COPY -sn schema1 -co TARGET_DB dbtgt
USER myuser1 USING mypass1

• Para duplicar el esquema schema1 db2move


desde la base de datos de origen dbsrc
en la base de datos de destino dbtgt,
cambiar el nombre del esquema a newschema1
en el destino y correlacionar el espacio de tabla Base de datos dbtgt
de origen ts1 con ts2 en el destino, emita:
db2move dbsrc COPY -sn schema1 -co TARGET_DB dbtgt Archivos de salida
generados:
USER myuser1 USING mypass1
SCHEMA_MAP ((schema1,newschema1)) COPYSCHEMA.msg
TABLESPACE_MAP ((ts1,ts2), SYS_ANY)) COPYSCHEMA.err
LOADTABLE.msg
LOADTABLE.err
Estos archivos llevan
indicación de fecha y
hora.
Traslado de datos © Copyright IBM Corporation 2015

Ejemplos del esquema COPY de db2move


Ejemplo 1:
Para duplicar el esquema schema1 desde la base de datos de origen dbsrc a la base
de datos de destino dbtgt, emita:
db2move dbsrc COPY -sn schema1 -co TARGET_DB dbtgt
USER myuser1 USING mypass1
Ejemplo 2:
Para duplicar el esquema schema1 desde la base de datos de origen dbsrc a la base
de datos de destino dbtgt, cambiar el nombre del esquema a newschema1 en la base
de datos de destino, y correlacionar el espacio de tabla de origen ts1 con ts2 en la
base de datos de destino, emita:
db2move dbsrc COPY -sn schema1 -co TARGET_DB dbtgt
USER myuser1 USING mypass1
SCHEMA_MAP ((schema1,newschema1))
TABLESPACE_MAP ((ts1,ts2), SYS_ANY))

© Copyright IBM Corp. 2015 6-46


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Procedimiento almacenado Mover tabla en línea


• El procedimiento ADMIN_MOVE_TABLE se ha diseñado para trasladar
datos de una tabla de origen a una tabla de destino con un mínimo
impacto sobre el acceso a las aplicaciones
 Cambios que se pueden efectuar utilizando ADMIN_MOVE_TABLE:
− Nuevos espacios de tabla Data, Index o Long, que podrían tener un tamaño
de página, un tamaño de extensión o un tipo de gestión de espacio de tablas
distintos (como en el paso de SMS a almacenamiento automático)
− Durante el traslado, podría implementarse la compresión de datos
− Se puede añadir o modificar la agrupación en clúster de MDC
− Se pueden añadir o modificar las particiones por rango
− Se pueden modificar las claves de distribución para las tablas de partición de
bases de datos
− Se pueden añadir, eliminar o modificar columnas
− Convertir una tabla organizada en filas en una tabla organizada en columnas
 El procesamiento en varias fases permite tener acceso de escritura a la
tabla de origen, excepto durante una breve parada necesaria para
cambiar el acceso a la tabla de destino
Traslado de datos © Copyright IBM Corporation 2015

Procedimiento almacenado Mover tabla en línea


Con el procedimiento ADMIN_MOVE_TABLE, puede trasladar las tablas utilizando un
traslado en línea o fuera de línea. Utilice un traslado de tabla en línea, y no fuera de
línea, si valora la disponibilidad por delante de los costes, el espacio, el rendimiento del
traslado y la sobrecarga de transacciones.
El procedimiento ADMIN_MOVE_TABLE le permite trasladar los datos de una tabla a
un nuevo objeto de tabla con el mismo nombre (pero, posiblemente, con distintas
características de almacenamiento) mientras los datos se mantienen en línea y
disponibles para acceder.
Este programa de utilidad automatiza el proceso de traslado de los datos de tabla a un
nuevo objeto de tabla y, al mismo tiempo, permite que los datos sigan estando en línea
para el acceso de las sentencias select, insert, update y delete.
También puede generar un diccionario de compresión al mover la tabla y reorganizar la
tabla de destino.
Nota: el procedimiento ADMIN_MOVE_TABLE se puede utilizar para convertir una
tabla organizada en filas a una organización en columnas. No permite que una tabla
organizada en columnas sea la tabla de origen del procesamiento.

© Copyright IBM Corp. 2015 6-47


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

ADMIN_MOVE_TABLE: fases de procesamiento


SYSTOOLS.ADMIN_MOVE_TABLE

1 INIT PHASE tabschema tabname key value

Crear desencadenantes,
destinos, tablas de
etapas
SOURCE TARGET
TABLE 2 TABLE
COPY PHASE
c1 c2 … cn c1 c2 … cn
3
REPLAY PHASE

INSERT INSERT
c1 c2 … cn
Las filas con
DELETE DELETE claves
UPDATE presentes en
UPDATE la tabla de
etapas se
Carga de Claves de la
trabajo vuelven a
fila copiar desde
en línea modificadas la tabla de 4 SWAP PHASE
por la carga origen
de trabajo en
línea STAGING Cambiar nombre de
destino -> origen
capturadas a TABLE
través de
Traslado de datos © Copyright IBM Corporation 2015
desencadena

ADMIN_MOVE_TABLE: fases de procesamiento


Al llamar al procedimiento SYSPROC.ADMIN_MOVE_TABLE, se crea una duplicación
de la tabla de origen (fase 1 en la tabla).
Durante la fase Copy, se capturan los datos aplicados a la tabla de origen
(actualizaciones, inserciones o supresiones) mediante desencadenantes y se colocan
en una tabla de etapas (fase 2 de la imagen).
Una vez completada la fase Copy, los cambios capturados en la tabla de etapas se
reproducen en la duplicación (fase 3 de la imagen).
A continuación, el procedimiento almacenado coloca la tabla fuera de línea durante un
breve periodo de tiempo y asigna el nombre de la tabla de origen y los nombres de
índice a la duplicación y sus índices (fase 4 de la imagen). A continuación, la tabla
duplicada vuelve a estar en línea y sustituye a la tabla de origen. De forma
predeterminada, la tabla de origen se descarta, pero puede utilizar la opción KEEP
para conservarla con un nombre distinto.
Evite efectuar traslados en línea de tablas sin índices, especialmente índices
exclusivos. Efectuar un traslado en línea en una tabla sin índice exclusivo podría
resultar en bloqueos y reproducciones complejas o caras

© Copyright IBM Corp. 2015 6-48


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Métodos de procedimiento de ADMIN_MOVE_TABLE


• Existen dos métodos para llamar a ADMIN_MOVE_TABLE:
Un método especifica cómo definir la tabla de destino.
>>-ADMIN_MOVE_TABLE--(--tabschema--,--tabname--,---------------->

>--data_tbsp--,--index_tbsp--,--lob_tbsp--,--mdc_cols--,-------->

.-,-------.
V |
>--partkey_cols--,--data_part--,--coldef--,----options-+--,----->

>--operation--)------------------------------------------------><

El segundo método permite especificar una tabla predefinida como destino


del traslado.

>>-ADMIN_MOVE_TABLE--(--tabschema--,--tabname--,---------------->

.-,-------.
V |
>--target_tabname--,----options-+--,--operation--)-------------><

Traslado de datos © Copyright IBM Corporation 2015

Métodos de procedimiento de ADMIN_MOVE_TABLE


Existen dos métodos para llamar a ADMIN_MOVE_TABLE. Uno de ellos, especifica el
método para definir la tabla de destino.
>>-ADMIN_MOVE_TABLE--(--tabschema--,--tabname--,--------------
-->
>--data_tbsp--,--index_tbsp--,--lob_tbsp--,--mdc_cols--,------
-->
.-,-------.
V |
>--partkey_cols--,--data_part--,--coldef--,----options-+--,---
-->
>--operation--)-----------------------------------------------
-><
El segundo método permite especificar una tabla predefinida como destino del
traslado.
>>-ADMIN_MOVE_TABLE--(--tabschema--,--tabname--,--------------
-->
.-,-------.
V |
>--target_tabname--,----options-+--,--operation--)------------
-><

© Copyright IBM Corp. 2015 6-49


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Ejemplo: trasladar una tabla a un nuevo espacio de tabla


CALL SYSPROC.ADMIN_MOVE_TABLE ( 'INST481', 'LOADHIST1',
'TSHISTM1','TSHISTM2','TSHISTM2',
NULL,NULL,NULL,NULL, 'COPY_USE_LOAD,FORCE','MOVE')
KEY VALUE
-------------------------------- -------------------------------
AUTHID INST481
CLEANUP_END 2014-05-12-02.58.44.712855
CLEANUP_START 2014-05-12-02.58.44.464132
COPY_END 2014-05-12-02.58.35.933404
COPY_OPTS LOAD,WITH_INDEXES,NON_CLUSTER
COPY_START 2014-05-12-02.58.29.844891
COPY_TOTAL_ROWS 110000
INDEXNAME LHIST1IX1
INDEXSCHEMA INST481
INDEX_CREATION_TOTAL_TIME 0
INIT_END 2014-05-12-02.58.28.012105
INIT_START 2014-05-12-02.58.24.682107
REPLAY_END 2014-05-12-02.58.43.853669
REPLAY_START 2014-05-12-02.58.35.939140
REPLAY_TOTAL_ROWS 0
REPLAY_TOTAL_TIME 3
STATUS COMPLETE
SWAP_END 2014-05-12-02.58.44.322158
SWAP_RETRIES 0
SWAP_START 2014-05-12-02.58.43.861629
UTILITY_INVOCATION_ID 0100000009000000080000000000000000002014051202582802481400000000
VERSION 10.05.0000

Traslado de datos © Copyright IBM Corporation 2015

Ejemplo: trasladar una tabla a un nuevo espacio de tabla


En el ejemplo, se muestra una llamada al procedimiento ADMIN_MOVE_TABLE para
trasladar una tabla al nuevo conjunto de espacios de tabla. En esta llamada, no se
necesitan otros cambios para la tabla.
CALL no incluye la opción COPY_USE_LOAD, que indica al procedimiento que utilice
el programa de utilidad LOAD en la fase COPY, en lugar de utilizar sentencias INSERT
de SQL. La opción MOVE indica a DB2 que complete todas las fases de
procesamiento tan rápido como sea posible.
La salida del procedimiento incluye estadísticas y horas de inicio y finalización para
cada fase de procesamiento.

© Copyright IBM Corp. 2015 6-50


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Uso de ADMIN_MOVE_TABLE para convertir las tablas


organizadas en filas en una tabla organizada en columnas
• El procedimiento ADMIN_MOVE_TABLE se puede utilizar para convertir las
tablas organizadas en filas en una tabla organizada en columnas
• Para indicar la conversión en una tabla organizada en columnas, puede
especificar ORGANIZE BY COLUMN como opción de
ADMIN_MOVE_TABLE
Por ejemplo:

call admin_move_table('TEST','ACCT2','AS2','AS2','AS2',
'ORGANIZE BY COLUMN', '','','','COPY_USE_LOAD','MOVE')

• Especifique la opción COPY_USE_LOAD para trasladar los datos utilizando


un programa de utilidad LOAD para generar los diccionarios de columna
• La tabla de destino se puede predefinir como tabla organizada en columnas
• Los índices de clave primaria o exclusiva de la tabla de origen se añadirán
a la tabla de destino organizada en columnas como restricciones aplicadas
de clave primaria o exclusiva

Traslado de datos © Copyright IBM Corporation 2015

Uso de ADMIN_MOVE_TABLE para convertir las tablas organizadas en filas en una tabla
organizada en columnas
Uso de ADMIN_MOVE_TABLE para convertir las tablas organizadas en filas en tablas
organizadas en columnas
La conversión se puede efectuar de una de estas maneras:
• Especificando una tabla de destino organizada en columnas
• Especificando la cláusula ORGANIZE BY COLUMN como parámetro
organize_by_clause.
El procedimiento almacenado ADMIN_MOVE_TABLE sigue estando en línea. Cuando
una tabla organizada en filas se traslada a una tabla organizada en columnas, al final
del procesamiento se inician las restricciones correspondientes de tablas organizadas
en columnas sobre las consultas (es decir, niveles de aislamiento limitados), una vez
visible la nueva tabla para las consultas.
ADMIN_MOVE_TABLE requiere que los desencadenantes de la tabla de origen
capturen los cambios. Dado que, actualmente, los desencadenantes no son
compatibles con las tablas organizadas en columnas, la tabla de origen no puede ser
una tabla organizada en columnas (SQL2103N).

© Copyright IBM Corp. 2015 6-51


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Los índices no se admiten en las tablas organizadas en columnas.


ADMIN_MOVE_TABLE convierte de manera silenciosa la clave primaria y los índices
exclusivos en restricciones de unicidad o de clave primaria, y omite todos los índices
que no son exclusivos.
No puede utilizar el procedimiento ADMIN_MOVE_TABLE para convertir una tabla
organizada en filas en una tabla organizada en columnas si la tabla contiene índices
exclusivos definidos en columnas que admiten valores NULL. Cree las restricciones de
unicidad en la tabla de destino antes de llamar al procedimiento almacenado
ADMIN_MOVE_TABLE.
ADMIN_MOVE_TABLE ofrece dos opciones de parámetro de llamada. En una
modalidad, los parámetros de llamada del procedimiento definen los cambios que se
van a realizar y el procedimiento crea la tabla de destino.
Por ejemplo, utilice el procedimiento almacenado ADMIN_MOVE_TABLE para
convertir la tabla STAFF organizada en filas en una tabla organizada en columnas.
Utilice el procedimiento almacenado ADMIN_MOVE_TABLE para convertir la tabla
STAFF organizada en filas en una tabla organizada en columnas sin especificar una
tabla de destino. Es necesario especificar la cláusula ORGANIZE BY COLUMN como
parámetro para poder crear la tabla de destino como tabla organizada en columnas.
CALL SYSPROC.ADMIN_MOVE_TABLE(
'OTM01COL',
'STAFF',
'',
'',
'',
'ORGANIZE BY COLUMN',
'',
'',
'',
'COPY_USE_LOAD',
'MOVE'
)

© Copyright IBM Corp. 2015 6-52


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

En el ejemplo siguiente, una tabla denominada TEST.ACCT2 se traslada a un nuevo


espacio de tabla y se convierte en una tabla organizada en columnas. El programa de
utilidad LOAD se utiliza para la fase COPY.
 call admin_move_table('TEST','ACCT2','AS2','AS2','AS2'
,'ORGANIZE BY COLUMN', '','','','COPY_USE_LOAD','MOVE')
 Result set 1
 --------------
 KEY VALUE
 -------------------------------- ------------------------
---------------------------------------------------------
-----------------------------------------------
 AUTHID INST20
 CLEANUP_END 2013-06-26-
12.13.36.463983
 CLEANUP_START 2013-06-26-
12.13.36.275748
 COPY_END 2013-06-26-
12.13.35.640270
 COPY_OPTS
OVER_INDEX,LOAD,WITH_INDEXES,NON_CLUSTER
 COPY_START 2013-06-26-
12.13.21.951896
 COPY_TOTAL_ROWS 1000000
 INDEXNAME ACCT2ACCT
 INDEXSCHEMA TEST
 INDEX_CREATION_TOTAL_TIME 0
 INIT_END 2013-06-26-
12.13.21.537935
 INIT_START 2013-06-26-
12.13.19.632628
 ORIGINAL_TBLSIZE 129280
 REPLAY_END 2013-06-26-
12.13.36.163455
 REPLAY_START 2013-06-26-
12.13.35.640947
 REPLAY_TOTAL_ROWS 0

© Copyright IBM Corp. 2015 6-53


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

 REPLAY_TOTAL_TIME 0
 STATUS COMPLETE
 SWAP_END 2013-06-26-
12.13.36.229232
 SWAP_RETRIES 0
 SWAP_START 2013-06-26-
12.13.36.164119
 UTILITY_INVOCATION_ID
010000000600000008000000000000000000201306261213215394390
0000000
 VERSION 10.05.0000
 23 record(s) selected.
Return Status = 0

© Copyright IBM Corp. 2015 6-54


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Programa de utilidad Ingest: para la introducción de datos


continua
• El programa de utilidad Ingest es un programa de utilidad de DB2 de alta velocidad, del lado de
cliente, que incluye datos de archivos y canales de comunicación en tablas de destino de DB2.
• El programa de utilidad Ingest introduce los datos procesados previamente directamente o desde
la salida de archivos generada por las herramientas de ETL o por otros medios
• Se puede ejecutar de manera continuada y, por lo tanto, puede procesar una secuencia de datos
continua a través de canales de comunicación.
• Los datos se introducen a velocidades lo bastante grandes como para rellenar incluso grandes
bases de datos en entornos de base de datos particionada
• El mandato INGEST actualiza la tabla de destino con baja latencia en un único paso
• Utiliza el bloqueo de filas, por lo que la interferencia con otras actividades de usuario de la misma
tabla es mínima.
• Estas operaciones de introducción son compatibles con las siguientes sentencias SQL: INSERT,
UPDATE, MERGE, REPLACE y DELETE
• Entre otras características importantes del programa de utilidad Ingest, se incluyen las siguientes:
 Confirmar por plazo o por número de filas.
 Soporte para copiar los registros rechazados en un archivo o una tabla, o para descartarlos
 Soporte al reinicio y la recuperación.
• El mandato INGEST da soporte a los siguientes formatos de datos de entrada:
 Texto delimitado
 Texto posicional y binario
 Columnas en distintos órdenes y formatos
Traslado de datos © Copyright IBM Corporation 2015

Programa de utilidad Ingest: para la introducción de datos continua


El programa de utilidad Ingest, disponible a partir de DB2 10.1 (y en ocasiones
denominado Continuous Data Ingest, o CDI) es un programa de utilidad de DB2 de alta
velocidad, del lado de cliente, que incluye datos de archivos y canales de
comunicación en tablas de destino de DB2. Dado que el programa de utilidad Ingest
puede trasladar grandes cantidades de datos en tiempo real sin bloquear la tabla de
destino, no es necesario elegir entre la vigencia y la actualidad de los datos.
El programa de utilidad Ingest introduce los datos procesados previamente
directamente o desde la salida de archivos generada por las herramientas de ETL o
por otros medios. Se puede ejecutar de manera continuada y, por lo tanto, puede
procesar una secuencia de datos continua a través de canales de comunicación. Los
datos se introducen a velocidades lo bastante grandes como para rellenar incluso
grandes bases de datos en entornos de base de datos particionada.
El mandato INGEST actualiza la tabla de destino con baja latencia en un único paso. El
programa de utilidad Ingest utiliza el bloqueo de filas, por lo que la interferencia con
otras actividades de usuario de la misma tabla es mínima.
Con este programa de utilidad, puede ejecutar operaciones DML en una tabla
utilizando una interfaz parecida a SQL sin bloquear la tabla de destino. Estas
operaciones de introducción son compatibles con las siguientes sentencias SQL:
INSERT, UPDATE, MERGE, REPLACE y DELETE.

© Copyright IBM Corp. 2015 6-55


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

El programa de utilidad de introducción también es compatible con el uso de


expresiones SQL para crear valores de columna individuales desde más de un
conjunto de datos.
Entre otras características importantes del programa de utilidad Ingest, se incluyen las
siguientes:
• Confirmar por plazo o por número de filas. Puede utilizar el parámetro de
configuración commit_count de Ingest para que la frecuencia de confirmación la
determine el número de filas escritas, o bien utilizar el parámetro de
configuración commit_period predeterminado de Ingest para que la frecuencia de
confirmación la determine un plazo específico.
• Soporte para copiar los registros rechazados en un archivo o una tabla, o para
descartarlos. Puede especificar lo que hace el mandato INGEST con las filas
rechazadas por el programa de utilidad Ingest (con el parámetro DUMPFILE) o
por DB2 (con el parámetro EXCEPTION TABLE).
• Soporte al reinicio y la recuperación. De forma predeterminada, todos los
mandatos INGEST se pueden reiniciar desde el último punto de confirmación.
Además, el programa de utilidad Ingest trata de ejecutar una recuperación a
partir de determinados errores si se ha establecido el parámetro de configuración
retry_count de Ingest.
El mandato INGEST da soporte a los siguientes formatos de datos de entrada:
• Texto delimitado
• Texto posicional y binario
• Columnas en distintos órdenes y formatos
Además de las tablas regulares y los apodos, el mandato INGEST es compatible con
los siguientes tipos de tablas:
• tablas de clústeres multidimensionales (MDC) y de agrupación en clúster de
plazo de inserción (ITC)
• tablas particionadas por rangos
• tablas agrupadas en clúster de rangos (RCT)
• tablas de consulta materializada (MQT) definidas como MAINTAINED BY USER,
incluidas las tablas de resumen
• tablas temporales
• vistas actualizables (excepto vistas con tipos)

© Copyright IBM Corp. 2015 6-56


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Un único mandato INGEST pasa por tres fases principales:


1. Transporte
Los transportadores leen el origen de datos y colocan registros en las colas de
los formateadores. En el caso de las operaciones INSERT y MERGE, existe
una hebra de transportador para cada origen de entrada (por ejemplo, una
hebra para cada archivo de entrada). En el caso de las operaciones UPDATE y
DELETE, solo existe una hebra de transportador.
2. Formato
Los formateadores analizan cada registro, convierten los datos al formato que
requiera la base de datos DB2 y colocan cada registro formateado en una de
las colas de vaciado de la partición de dicho registro. El número de hebras de
formateador se especifica con el parámetro de configuración num_formatters.
El valor predeterminado es (number of logical CPUs)/2.
3. Vaciado
Los vaciadores emiten sentencias SQL para ejecutar las operaciones en las
tablas DB2. El número de vaciadores de cada partición lo especifica el
parámetro de configuración num_flushers_per_partition.
El valor predeterminado es max( 1, ((number of logical CPUs)/2)/(number of
partitions) ).

© Copyright IBM Corp. 2015 6-57


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Ejemplos de mandato de Ingest: Insert


En el ejemplo siguiente, se insertan datos de un archivo de texto
delimitado con
campos separados por comas (valor predeterminado).
Los campos del archivo se corresponden con las columnas de tabla.

INGEST FROM FILE my_file.txt


FORMAT DELIMITED
(
$field1 INTEGER EXTERNAL,
$field2 DATE 'mm/dd/yyyy',
$field3 CHAR(32)
)
INSERT INTO my_table
VALUES($field1, $field2, $field3);

Traslado de datos © Copyright IBM Corporation 2015

Ejemplos de mandato de Ingest: Insert


En la imagen, se muestra un ejemplo de un mandato INGEST que inserta datos de un
archivo de texto delimitado con campos separados por una coma (el valor
predeterminado).
Los campos del archivo se corresponden a las columnas de tabla.
INGEST FROM FILE my_file.txt
FORMAT DELIMITED
(
$field1 INTEGER EXTERNAL,
$field2 DATE 'mm/dd/yyyy',
$field3 CHAR(32)
)
INSERT INTO my_table
VALUES($field1, $field2, $field3);

© Copyright IBM Corp. 2015 6-58


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Ejemplos de mandato de Ingest: Update


En los ejemplos siguientes, se actualizan las filas de tabla cuya clave
primaria se ajusta a los campos correspondientes del archivo de entrada:

INGEST FROM FILE my_file.txt


FORMAT DELIMITED
(
$key1 INTEGER EXTERNAL,
$key2 INTEGER EXTERNAL,
$data1 CHAR(8),
$data2 CHAR(32),
$data3 DECIMAL(5,2) EXTERNAL
)
UPDATE my_table
SET (data1, data2, data3) = ($data1, $data2, $data3)
WHERE (key1 = $key1) AND (key2 = $key2);
Traslado de datos © Copyright IBM Corporation 2015

Ejemplos de mandato de Ingest: Update


En la imagen, se muestra un ejemplo de un programa de utilidad INGEST que se
podría utilizar para actualizar las filas de una tabla cuya clave primaria coincidiese con
los campos correspondientes del archivo de entrada.
INGEST FROM FILE my_file.txt
FORMAT DELIMITED
(
$key1 INTEGER EXTERNAL,
$key2 INTEGER EXTERNAL,
$data1 CHAR(8),
$data2 CHAR(32),
$data3 DECIMAL(5,2) EXTERNAL
)
UPDATE my_table
SET (data1, data2, data3) = ($data1, $data2, $data3)
WHERE (key1 = $key1) AND (key2 = $key2);

© Copyright IBM Corp. 2015 6-59


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Cuándo es preferible utilizar INGEST y no LOAD


• Utilice INGEST cuando se cumpla una de estas condiciones
 Necesita que otras aplicaciones actualicen la tabla mientras se
carga
 El archivo de entrada contiene campos que quizás quiera omitir
 Tiene que especificar una sentencia SQL distinta a INSERT
 Tiene que especificar una expresión SQL (para crear un valor de
columna desde los valores de campo)
 Tiene que efectuar una recuperación y continuar, en caso de que
el programa de utilidad reciba un error recuperable

Traslado de datos © Copyright IBM Corporation 2015

Cuándo es preferible utilizar INGEST y no LOAD


En la imagen, se sugieren varias condiciones que podrían favorecer la elección de
INGEST por delante del programa de utilidad LOAD.
Uno de los motivos principales para seleccionar INGEST por delante de LOAD es la
reducida contención de bloqueo de INGEST, dado que no impone a la tabla de destino
el bloqueo de tabla de solo lectura o exclusivo durante el procesamiento.
Es posible que quiera utilizar también opciones de INGEST como UPDATE o MERGE,
no compatibles con LOAD.

© Copyright IBM Corp. 2015 6-60


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Cuándo es preferible utilizar LOAD y no INGEST


• Utilice LOAD cuando se cumpla una de estas condiciones
 No necesita que otras aplicaciones actualicen la tabla mientras se
carga
 Necesita cargar una tabla que contenga columnas XML o LOB
 Necesita efectuar la carga desde el cursor o desde un dispositivo
 Necesita efectuar la carga desde un archivo en formato IXF
 Necesita cargar una columna GENERATED ALWAYS o
SYSTEM_TIME con los datos especificados en el archivo de
entrada

Traslado de datos © Copyright IBM Corporation 2015

Cuándo es preferible utilizar LOAD y no INGEST


En la imagen, se sugieren varias condiciones que podrían favorecer la elección de
LOAD por delante del programa de utilidad INGEST.
Algunos de los motivos tienen relación directa con funciones no admitidas en el
programa de utilidad INGEST, como un archivo de entrada en formato IXF o tipos de
datos no compatibles, como columnas XML o LOB.

© Copyright IBM Corp. 2015 6-61


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Demostración 1
Traslado de datos

• Utilice el mandato IMPORT de DB2 para cargar datos en una tabla de


DB2.
• Ejecute el mandato INGEST para cargar de manera eficaz los datos
en una tabla de DB2.
• Invoque el programa de utilidad LOAD para procesar los archivos de
entrada y cargar los datos en tablas de DB2.
• Ejecute los mandatos SET INTEGRITY para resolver las condiciones
de Set Integrity Pending resultantes de cargar los datos en las tablas
con restricciones definidas con un programa de utilidad LOAD.

Traslado de datos © Copyright IBM Corporation 2015

Demostración 1: traslado de datos

© Copyright IBM Corp. 2015 6-62


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Demostración 1:
Trasladar datos
Objetivo:
En esta demostración, cargaremos los datos en un conjunto de tablas de la
base de datos DB2 denominada MUSICDB.

Tarea 1. Utilizar el programa de utilidad IMPORT para cargar


datos en una tabla.
1. Inicie la sesión en el sistema Windows con el ID de usuario inst23 y la
contraseña ibm2blue.
El procesador de línea de mandatos de DB2 se utilizará para emitir algunos
mandatos de sistema y de DB2. Tendrá que iniciar la ventana de mandato de
DB2 en modalidad de administrador para emitir estos mandatos de DB2.
2. Para iniciar la ventana de mandatos de DB2, pulse el icono de inicio de
Windows y luego vaya a Todos los programas > IBM DB2 DB2COPY1 >
DB2 Command Window - Administrator. Cuando aparezca la pregunta
"¿Desea permitir que este programa realice cambios en el equipo?", seleccione
Sí.
Hay un conjunto de archivos del curso en el directorio c:\inst23\ddl. Pase a
este directorio para que resulte más sencillo acceder a los archivos que
contienen mandatos de DB2 o sentencias SQL.
Los datos que se van a cargar en la tabla ARTISTS se encuentran en el archivo
delimitado denominado C:\INST23\artists.del.
En este punto, puede elegir entre utilizar el procesador de línea de mandatos
de DB2 o la herramienta Data Server Manager. Siga solo los pasos de la
herramienta que haya elegido para ejecutar el mandato IMPORT y cargar los
datos en la tabla ARTISTS.
Tarea 1A. Utilizar el procesador de línea de mandatos de DB2.
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• CD C:\inst23\ddl
• db2 connect to musicdb
• db2 IMPORT from c:\inst23\artists.del of del insert into music.artists

© Copyright IBM Corp. 2015 6-63


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

La salida generada tendrá un aspecto parecido a la siguiente:

import from c:\inst23\artists.del of del insert into music.artists


SQL3109N The utility is beginning to load data from file
"c:\inst23\artists.del".

SQL3110N The utility has completed processing. "79" rows were read from the
input file.

SQL3221W ...Begin COMMIT WORK. Input Record Count = "79".

SQL3222W ...COMMIT of any database changes was successful.

SQL3149N "79" rows were processed from the input file. "79" rows were
successfully inserted into the table. "0" rows were rejected.

Number of rows read = 79


Number of rows skipped = 0
Number of rows inserted = 79
Number of rows updated = 0
Number of rows rejected = 0
Number of rows committed = 79

2. Puede pasar a la Tarea 2.


Tarea 1B. Utilizar la herramienta Data Server Manager.
Podemos utilizar la herramienta Data Server Manager para ejecutar programas
de utilidad de DB2 como IMPORT y LOAD utilizando la función de SQL Editor.
Es necesario invocar estos programas de utilidad utilizando la interfaz de
procedimiento ADMIN_CMD.
Si no ha iniciado la aplicación DSM, iníciela ahora utilizando el siguiente texto
de URL, http//localhost:11080. Utilice este usuario y esta contraseña para
DSM.
• El ID de usuario de Windows: db2admin
• La contraseña de usuario: ibm2blue
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
Debería ver la base de datos MUSICDB en la lista. El nombre de base de datos
MUSICDB proporciona una lista desplegable para realizar distintas tareas.
2. Seleccione Administer - Explore Database en la lista desplegable de la base
de datos MUSICDB.

© Copyright IBM Corp. 2015 6-64


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

3. Se le solicitará un ID de usuario y una contraseña para la conexión a base de


datos MUSICDB, utilice inst23 con la contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.
4. Pulse Open SQL Editor.
5. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
6. Pulse Browse y, a continuación, encuentre y abra el archivo
C:\inst23\ddl\import_artists.sql.
7. Pulse OK para completar la carga del texto SQL en el editor SQL.
La llamada al procedimiento SYSPROC.ADMIN_CMD se utilizará para invocar
el mandato IMPORT. Se está utilizando la opción INSERT de IMPORT.
8. Pulse Run y espere a que se procese la sentencia CALL de SQL.
En el área resultante, se puede ver que 79 filas de datos se han leído desde el
archivo y se han insertado en la tabla MUSIC.ARTISTS.
Tarea 2. Utilizar el mandato INGEST para cargar los datos en
una tabla de DB2.
Podemos utilizar el procesador de línea de mandatos de DB2 para ejecutar el
mandato INGEST y cargar archivos de datos en una tabla de DB2. La
herramienta Data Server Manager no ofrece, actualmente, ningún método para
invocar el mandato INGEST.
El mandato INGEST utiliza una tabla de trabajo
SYSTOOLS.INGESTRESTART para guardar los datos de reinicio del
mandato.
El archivo cr_toolspace.ddl se utilizará para crear esta tabla antes de ejecutar el
mandato INGEST. Solo es necesario ejecutar esta tarea una vez por cada base
de datos DB2.
El archivo c:\inst23\ddl\ingest_albums.ddl contiene el siguiente mandato
INGEST:

ingest from file c:\inst23\albums.del


format delimited messages ingest_albums.txt
RESTART NEW 'ingest_alb' INSERT INTO music.albums ;

© Copyright IBM Corp. 2015 6-65


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf cr_toolspace.ddl
• db2 -tvf ingest_albums.ddl
La salida generada tendrá un aspecto parecido a la siguiente:

ingest from file c:\inst23\albums.del format delimited messages ingest_albums.txt


RESTART NEW 'ingest_alb' INSERT INTO music.albums

Number of rows read = 264


Number of rows inserted = 264
Number of rows rejected = 0

SQL2980I The ingest utility completed successfully at timestamp "08/18/2015


09:26:51.608177"

Tarea 3. Utilizar el programa de utilidad LOAD de DB2 para


cargar datos en una tabla con una restricción de
clave foránea definida.
A continuación, utilizaremos el programa de utilidad LOAD de DB2 para añadir datos a
la tabla STOCK. La tabla ALBUMS y la tabla ARTISTS contienen los datos añadidos
mediante los programas de utilidad IMPORT e INGEST en las tareas anteriores.
Utilizaremos el mandato LOAD del archivo C:\inst23\ddl\load_stock1.ddl para invocar el
proceso de carga.
CALL SYSPROC.ADMIN_CMD (
'LOAD FROM "c:\inst23\stock.del" of del
MODIFIED BY GENERATEDMISSING METHOD P (1,2,3,4) MESSAGES ON SERVER
INSERT INTO MUSIC.STOCK (ITEMNO,TYPE,PRICE,QTY) ' ) ;
El archivo C:\inst23\ddl\set_integrity_stock.sql se utilizará para ejecutar SET
INTEGRITY y efectuar la comprobación de restricciones que no efectúe el programa
de utilidad LOAD.
En este punto, puede elegir entre utilizar el procesador de línea de mandatos de DB2 o
la herramienta Data Server Manager para ejecutar los mandatos LOAD y SET
INTEGRITY. Siga los pasos de la herramienta que haya elegido.

© Copyright IBM Corp. 2015 6-66


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Tarea 3A. Utilizar el procesador de línea de mandatos de DB2.


1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf load_stock1.ddl
• db2 -tvf set_integrity_stock.sql
2. Puede pasar a la Tarea 4.
Tarea 3B. Utilizar la herramienta Data Server Manager.
Podemos utilizar la herramienta DSM para ejecutar el archivo que contiene el
mandato de programa de utilidad LOAD.
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
La base de datos MUSICDB debería aparecer en la lista con algunas
estadísticas básicas sobre el uso de los recursos, como la CPU, la
entrada/salida y la memoria. El nombre de base de datos MUSICDB
proporciona una lista desplegable para realizar distintas tareas.
2. Seleccione Administer - Explore Database en la lista desplegable de la base
de datos MUSICDB.
Se le solicitará un ID de usuario y una contraseña para la conexión a base de
datos MUSICDB, utilice inst23 con la contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.
3. Pulse Open SQL Editor.
4. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
5. Utilice el botón Browse de la ventana Open SQL Script para encontrar y
seleccionar el archivo C:\inst23\ddl\load_stock1.ddl.
6. Pulse OK para completar la carga del texto SQL en el editor SQL.
La llamada al procedimiento SYSPROC.ADMIN_CMD se utilizará para invocar
el mandato LOAD. Se está utilizando la opción INSERT de LOAD.
La opción GENERATEDMISSING es necesaria porque el archivo de entrada
no incluye datos para las tres columnas: SYS_START, SYS_END y
TX_START. Son las columnas utilizadas para dar soporte a la tabla STOCK
como tabla temporal de periodo de sistema.

© Copyright IBM Corp. 2015 6-67


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

7. Pulse Run y espere a que se procese la sentencia CALL de SQL.


En el área resultante, se puede ver que 777 filas de datos se han leído desde el
archivo y se han insertado en la tabla MUSIC.STOCK.
El programa de utilidad LOAD ha pasado la tabla STOCK al estado Set Integrity
Pending porque la tabla tiene restricciones definidas. Podemos utilizar el
mandato SET INTEGRITY para resolver este estado.
8. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
9. Utilice el botón Browse de la ventana Open SQL Script para encontrar y
seleccionar el archivo C:\inst23\ddl\set_integrity_stock.sql.
10. Pulse OK para completar la carga del texto SQL en el editor SQL.
El archivo contiene el siguiente texto SQL:

SET INTEGRITY FOR MUSIC.STOCK


ALLOW NO ACCESS IMMEDIATE CHECKED
;
La sentencia SET INTEGRITY es necesaria para comprobar la clave foránea y
comprobar las restricciones definidas para la tabla STOCK
11. Pulse Run y espere a que se procese la sentencia SQL.
El resultado debería mostrar que la sentencia SET INTEGRITY se ha ejecutado
correctamente.
Tarea 4. Ejecutar un archivo que contenga una serie de
mandatos LOAD y sentencias SET INTEGRITY
Quizás quiera ampliar o renovar periódicamente las tablas con nuevos datos. Si utiliza
el programa de utilidad LOAD de DB2 y las tablas de destino incluyen restricciones
referenciales o de comprobación, tendrá que ejecutar sentencias SET INTEGRITY tras
el proceso de carga.
Utilizaremos un script de mandato que contenga mandatos LOAD y sentencias SET
INTEGRITY para cargar los datos en distintas tablas.
Normalmente, es una buena idea utilizar tablas de excepciones durante una operación
LOAD. Hemos proporcionado un script denominado create_exception_tables.ddl que
creará tablas de excepción para ARTISTS y ALBUMS.
En este punto, puede elegir entre utilizar el procesador de línea de mandatos de DB2 o
la herramienta Data Server Manager para ejecutar el procesamiento de LOAD y SET
INTEGRITY.
Siga los pasos de la herramienta que haya elegido.

© Copyright IBM Corp. 2015 6-68


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Tarea 4A. Utilizar el procesador de línea de mandatos de DB2.


El archivo c:\inst23\ddl\load_tables_clp.ddl contiene sentencias LOAD y SET
INTEGRITY que ejecutan las sentencias siguientes:
• Carga (LOAD) de datos en la tabla CONCERTS utilizando la opción
REPLACE. Esta tabla no tiene restricciones que comprobar.
• Carga (LOAD) de datos en la tabla ARTISTS utilizando la opción REPLACE.
• Una consulta SQL que busca la vista SYSCAT.TABLES para las tablas con
estado Set Integrity Pending.
• La sentencia SET INTEGRITY para comprobar las tablas ARTISTS y
ALBUMS.
• La sentencia SET INTEGRITY para comprobar la tabla STOCK.
• Una segunda consulta SQL para verificar que se hayan resuelto todos los
estados Set Integrity Pending.
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf create_exception_tables.ddl
• db2 -tvf load_tables_clp.ddl
La salida generada tendrá un aspecto similar a la siguiente:

LOAD FROM "C:\INST23\concerts.del" OF del METHOD P (1, 2, 3) MESSAGES


load_concert.txt REPLACE INTO MUSIC.CONCERTS (ARTNO, DATE, CITY)

Number of rows read = 10


Number of rows skipped = 0
Number of rows loaded = 10
Number of rows rejected = 0
Number of rows deleted = 0
Number of rows committed = 10

load from "C:\INST23\artists.del" of del messages load_art.txt replace into


music.artists for exception music.artexp

© Copyright IBM Corp. 2015 6-69


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Number of rows read = 79


Number of rows skipped = 0
Number of rows loaded = 79
Number of rows rejected = 0
Number of rows deleted = 0
Number of rows committed = 79

select substr(tabname,1,18), status, substr(const_checked,1,1) as FK_CHECKED,


substr(const_checked,2,1) as CC_CHECKED from syscat.tables where status='C'

1 STATUS FK_CHECKED CC_CHECKED


------------------ ------ ---------- ----------
ARTISTS C Y Y

1 record(s) selected.

SET INTEGRITY FOR MUSIC.ARTISTS, MUSIC.ALBUMS ALLOW NO ACCESS IMMEDIATE CHECKED


FOR EXCEPTION IN MUSIC.albums use MUSIC.albexp , in MUSIC.artists use MUSIC.artexp
SQL3601W The statement caused one or more tables to automatically be placed
in the Set Integrity Pending state. SQLSTATE=01586

SET INTEGRITY FOR MUSIC.STOCK ALLOW NO ACCESS IMMEDIATE CHECKED


DB20000I The SQL command completed successfully.

select substr(tabname,1,18), status, substr(const_checked,1,1) as FK_CHECKED,


substr(const_checked,2,1) as CC_CHECKED from syscat.tables where status='C'

1 STATUS FK_CHECKED CC_CHECKED


------------------ ------ ---------- ----------

0 record(s) selected.

Tenga en cuenta que la carga en la tabla ARTISTS ha provocado la condición


Set Integrity Pending de dicha tabla. Las tablas ALBUMS y STOCK también se
ven afectadas debido a las restricciones de integridad referencial.
El primer mandato SET INTEGRITY ejecuta la comprobación de ARTISTS y
ALBUMS e incluye tablas de excepciones. Esto genera un mensaje de aviso
SQL3601W porque también es necesario comprobar la tabla STOCK.
El segundo mandato SET INTEGRITY ejecuta la comprobación de la tabla
STOCK. No se admiten tablas de excepción para el procesamiento SET
INTEGRITY de las tablas temporales de periodo de sistema.

2. Ha completado la demostración.

© Copyright IBM Corp. 2015 6-70


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Tarea 4B. Utilizar la herramienta Data Server Manager.


Podemos utilizar la herramienta DSM para ejecutar un archivo SQL que incluya
el procesamiento de LOAD y SET INTEGRITY.
En primer lugar, ejecutaremos el archivo SQL create_exception_tables.ddl que
crea tablas de excepciones para las tablas ALBUMS y ARTISTS. A estas
pueden hacer referencia tanto LOAD como SET INTEGRITY, para completar el
procesamiento si se produjesen excepciones en las restricciones de la tabla.
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
Debería ver la base de datos MUSICDB en la lista. El nombre de base de datos
MUSICDB proporciona una lista desplegable para realizar distintas tareas.
2. Seleccione Administer - Explore Database en la lista desplegable de la base
de datos MUSICDB.
Se le solicitará un ID de usuario y una contraseña para la conexión a base de
datos MUSICDB, utilice inst23 con la contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.
3. Pulse Open SQL Editor.
4. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
5. Pulse Browse y, a continuación, encuentre y abra el archivo C:\inst23\ddl\
create_exception_tables.ddl.
6. Pulse OK para completar la carga del texto SQL en el editor SQL.
Revise las opciones especificadas para las sentencias SQL.
7. Pulse Run y espere a que se procesen las sentencias SQL.
El resultado debería mostrar que todas las sentencias se han ejecutado
correctamente.
Ahora, utilizaremos DSM para ejecutar el archivo SQL que efectuará los pasos
siguientes:
• Utilice ADMIN_CMD para cargar los datos en la tabla CONCERTS utilizando
la opción REPLACE. Esta tabla no tiene restricciones que comprobar.
• Utilice ADMIN_CMD para cargar los datos en la tabla ARTISTS utilizando la
opción REPLACE.
• Una consulta SQL que busca la vista SYSCAT.TABLES para las tablas con
estado Set Integrity Pending.
• La sentencia SET INTEGRITY para comprobar las tablas ARTISTS y
ALBUMS.

© Copyright IBM Corp. 2015 6-71


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

• La sentencia SET INTEGRITY para comprobar la tabla STOCK.


• Una segunda consulta SQL para verificar que se hayan resuelto todos los
estados Set Integrity Pending.
Las llamadas al procedimiento ADMIN-CMD permiten que aplicaciones como
DSM inicien el programa de utilidad LOAD.
8. Pulse Open SQL Editor.
9. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
10. Pulse Browse y, a continuación, encuentre y abra el archivo C:\inst23\ddl\
load_tables.sql.
11. Pulse OK para completar la carga del texto SQL en el editor SQL.
Revise la serie de sentencias.
12. Pulse Run y espere a que se procesen las sentencias SQL.
Examine la vista Results y asegúrese de que todos los procesos se han
completado correctamente. Cada LOAD generará estadísticas que muestran
el número de filas de datos leídas y el número de filas cargadas en la tabla.
Tenga en cuenta que la carga en la tabla ARTISTS ha provocado la condición
Set Integrity Pending de dicha tabla. Las tablas ALBUMS y STOCK también se
ven afectadas debido a las restricciones de integridad referencial.

El primer mandato SET INTEGRITY ejecuta la comprobación de ARTISTS y


ALBUMS e incluye tablas de excepciones. Esto genera un mensaje de aviso
SQL3601W porque también es necesario comprobar la tabla STOCK.
El segundo mandato SET INTEGRITY ejecuta la comprobación de la tabla
STOCK. No se admiten tablas de excepción para el procesamiento SET
INTEGRITY de las tablas temporales de periodo de sistema.

Resultados:
En esta demostración, ha cargado los datos en un conjunto de tablas de la
base de datos DB2 denominada MUSICDB.

© Copyright IBM Corp. 2015 6-72


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 6 Traslado de datos

Resumen de la unidad
• Analizar el uso de la sentencia INSERT de SQL para llenar tablas
• Explicar las diferencias entre los procesos IMPORT y LOAD
• Explicar las opciones de mandato EXPORT, IMPORT y LOAD
• Crear y utilizar tablas de excepciones y archivos de volcado
• Comprobar el estado de una tabla con LOAD QUERY
• Describir la fase ANALYZE del proceso de mandato LOAD utilizado para
cargar tablas organizadas en columnas, con aceleración BLU.
• Comprobar, en una tabla, los estados Load Pending y Set Integrity
Pending
• Utilizar el mandato SET INTEGRITY
• Analizar los mandatos db2move y db2look
• Utilizar el procedimiento ADMIN_MOVE_TABLE para trasladar una tabla
a espacios de tabla distintos
• Listar algunas de las características del programa de utilidad Ingest para
la entrada continua de datos
Traslado de datos © Copyright IBM Corporation 2015

Resumen de la unidad

© Copyright IBM Corp. 2015 6-73


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7. Copia de seguridad y recuperación

Copia de seguridad y
recuperación

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

© Copyright IBM Corp. 2015 7-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Objetivos de la unidad
• Describir los principios y métodos más importantes para la copia de
seguridad y la recuperación
• Establecer los tres tipos de recuperación que utiliza DB2
• Explicar la importancia del registro en la copia de seguridad y la
recuperación
• Describir cómo se produce el registro de datos, también el registro
circular y el registro archivístico
• Utilizar los mandatos BACKUP, RESTORE, ROLLFORWARD y
RECOVER
• Ejecutar una copia de seguridad y recuperación del espacio de tabla
• Restaurar una base de datos a un punto en el tiempo o al final de los
registros
• Examinar los parámetros de configuración y el archivo del historial de
recuperación, y utilizarlos para gestionar distintos escenarios de copia
de seguridad y recuperación
Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 7-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Métodos de recuperación de las bases de datos DB2


Crear copia de seguridad fuera de línea a nivel de base de datos a la 1 AM
Registros de DB2
Base de datos a la 1 AM
12
11 1
10 2
3
Registro 1
9
Realizar copia de seguridad
8
7
6
5
4
de la base de datos Base de datos DB2

Registro 2
Copia de
seguridad de
base de datos
Registro 3
1 Espacios de tabla
Recuperación tras bloqueo
Registro 4
11
12
1
Base de datos a las 3 PM
10 2
9 3

Registro 5
8 4
Restaurar base de datos
Base de datos DB2
7 5
6

Copia de Registro 6
seguridad de
base de datos Recuperación
2 Recuperación de 3 en avance
versión Espacios de tabla
Recuperación
Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Métodos de recuperación de las bases de datos DB2


Tiene que conocer las estrategias que le pueden ayudar si hay problemas en la base
de datos. Normalmente, se encontrará con problemas de soporte y almacenamiento,
interrupciones de alimentación y errores de aplicaciones. Debería saber que puede
realizar una copia de seguridad de la base de datos, o de espacios de tabla
individuales, y luego volver a crearlos en caso de que se dañen. La recreación de estos
objetos se denomina recuperación. Estos son los tres tipos o métodos de recuperación:
• Recuperación tras bloqueo
La recuperación tras bloqueo utiliza los registros para recuperarse tras una
interrupción de alimentación o tras la finalización anómala de una aplicación.
Este tipo de recuperación se automatiza normalmente utilizando el valor
predeterminado para el reinicio automático del parámetro de configuración. Si no
se utiliza el reinicio automático, será necesario realizar una intervención manual
para reiniciar una base de datos que requiera una recuperación tras bloqueo.

© Copyright IBM Corp. 2015 7-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

• Recuperación de restauración o versión


La recuperación de restauración o versión utiliza una imagen de copia de
seguridad de la base de datos para sustituir los datos actuales de la base de
datos. Este tipo proporciona recuperación ante problemas de soporte, hardware,
operativos y de software, pero solo hasta el punto en el que se efectuó la copia
de seguridad. Por lo tanto, cuanto más frecuentes sean las copias de seguridad,
más actualizada estará la base de datos recuperada.
• Recuperación en avance
La recuperación en avance utiliza la copia de seguridad de una base de datos o
de espacios de tabla para sustituir los datos actuales. A continuación, aplica
entradas del registro para recuperar los cambios efectuados tras la creación de
la imagen de copia de seguridad. Este tipo proporciona recuperación ante
problemas de soporte, hardware, operativos y de software. Se puede efectuar
una recuperación con relación a un momento específico o a la última unidad de
trabajo confirmada. La recuperación en avance mediante una copia de seguridad
reciente requerirá la aplicación de menos registros que una recuperación en
avance que utilice una copia de seguridad más antigua, por lo que el
administrador de base de datos deberá seguir teniendo en cuenta la frecuencia
de la copia de seguridad.

© Copyright IBM Corp. 2015 7-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Introducción al registro
Agrupación de almacenamiento intermedio

Almacenamiento intermedio
de registro

Insertar
Fila actual Nueva fila
Actualización

Suprimir Antigua fila

Solicitudes Confirmar
de lecturas Externalizado Almacenamiento
y escrituras intermedio de
registro lleno

TABLAS REGISTROS

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Introducción al registro
El registro cronológico de transacciones es el proceso que registra todos los cambios
efectuados sobre una base de datos para permitir la recuperación.
El gestor de bases de datos mantiene un registro de los cambios recientes efectuados
sobre una base de datos, de manera que el proceso de recuperación pueda restaurar
la base de datos a un estado coherente. Las entradas del registro se graban en un
almacenamiento intermedio de registro para reflejar la actividad que sucede en los
datos de la agrupación de almacenamiento intermedio. Entre los datos registrados, se
incluyen todos los datos de la columna de una inserción o una supresión, pero solo los
datos de la primera columna modificada a la última columna modificada en el caso de
una actualización.
Durante la confirmación, es necesario escribir las entradas del registro del
almacenamiento intermedio de registro en los archivos de registro del disco para poder
garantizar la recuperabilidad. La aplicación que emite la confirmación no tendrá la
certeza de que la confirmación se haya realizado correctamente hasta que se haya
efectuado la escritura en el almacenamiento intermedio de registro.

© Copyright IBM Corp. 2015 7-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Es posible que las entradas del registro se escriban en el disco antes de la


confirmación, por ejemplo, al completar el almacenamiento intermedio de registro. Sin
embargo, esto no afecta a la integridad del sistema, ya que se registra la ejecución de
la propia confirmación. Una unidad de trabajo iniciada y externalizada al archivo de
registro no se considera completa hasta que la confirmación asociada a dicha unidad
de trabajo se externaliza también en el archivo de registro.
Las páginas de la agrupación de almacenamiento intermedio modificadas por una
unidad de trabajo confirmada no necesitan grabarse en el disco durante la
confirmación. Las entradas del registro contienen la información requerida para
recuperar dichas modificaciones si se produce una situación de recuperación. Lo ideal
sería dejar las páginas en la agrupación de almacenamiento intermedio, si se accede
con frecuencia a los datos que contienen.
La grabación anticipada de registro cronológico (LWA) es otro motivo para externalizar
el contenido del almacenamiento intermedio de registro.
El protocolo LWA se asegura de que la recuperación tras bloqueo pueda retrotraer los
cambios realizados por las transacciones no confirmadas, incluso en el caso de que los
datos no validados de la tabla se hayan vuelto a escribir en el disco (algo posible,
aunque poco frecuente), ya que garantiza que, en este caso, las entradas del registro
necesarias para la retrotracción se hayan externalizado.
Si está registrando datos de LOB (objetos grandes), tiene que tener en cuenta el
impacto sobre el rendimiento. Si activa el registro para los datos de LOB, el
rendimiento de la aplicación empeorará y quizás se encuentre problemas relacionados
con el tamaño incrementado del archivo de registro. Si desactiva el registro, el
rendimiento de la aplicación mejora, pero en detrimento de la recuperabilidad.
Al contrario que los datos de tabla regulares, los LOB actualizados se imponen
(externalizan) durante la confirmación. Hay varios motivos para ello (los datos de LOB
no se colocan en almacenamiento intermedio), pero, entre otras cosas, ayuda a
explicar por qué los LOB no registrados no provocan un problema en caso de
recuperación tras bloqueo. Además, cuando se actualiza un LOB, no se superpone a la
copia antigua, que se conserva hasta la confirmación, de manera que, con la
retrotracción de LOB, solo se restituye la copia antigua. En resumen, las entradas del
registro nunca son necesarias para la retrotracción, ni la recuperación tras bloqueo, de
los datos de LOB (pero sí para el proceso de recuperación en avance).

© Copyright IBM Corp. 2015 7-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Registro circular: base de datos no recuperable

"n" PRIMARIO 2 1 "n"

SECUNDARIO

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Registro circular: base de datos no recuperable


El registro circular utilizará la cantidad de archivos de registro primario especificados a
través de un parámetro de configuración. La información de registro necesaria es para
transacciones en curso. Los archivos de registro se utilizan en secuencias. Un archivo
de registro se puede reutilizar cuando todas las unidades de trabajo contenidas en él
se confirman o se retrotraen, y los cambios confirmados se reflejan en los discos que
dan soporte a la base de datos.
Si el gestor de base de datos solicita el siguiente registro de la secuencia y no está
disponible para ser reutilizado, se le asigna un archivo de registro secundario. Una vez
completo, el siguiente archivo de registro primario se marca para ser reutilizado de
nuevo. Si sigue sin estar disponible, se asigna otro archivo de registro secundario. Este
proceso continúa hasta que el archivo de registro primario pasa a estar disponible para
su reutilización o hasta que se supera la cantidad de archivos de registro secundario
para la asignación.

© Copyright IBM Corp. 2015 7-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Los archivos de registro primario se asignan cuando se crea la base de datos, mientras
que los archivos de registro secundario se asignan cuando es necesario. Se elimina la
asignación de archivos de registro secundario cuando el gestor de base de datos
determina que ya no se necesitan. Por lo tanto, el administrador de base de datos debe
elegir utilizar los archivos de registro primario para un proceso típico, pero permitir la
asignación de archivos de registro secundario que habiliten aplicaciones periódicas con
grandes unidades de trabajo. Por ejemplo, el envío de un programa de utilidad de
IMPORT con un gran recuento de confirmaciones podría requerir el uso de archivos de
registro secundario. Dar soporte a estas aplicaciones a través de registros primarios
sería desperdiciar espacio, dado que todos los registros primarios, se utilicen o no, se
asignan cuando se activa la base de datos.
Si DB2 no puede continuar con el registro debido a una condición de registro completo,
la actividad de la base de datos se detendrá hasta que un archivo de registro esté
disponible.
La vía de acceso de registro debe tener capacidad para contener la suma de los
registros primarios y secundarios. El resultado de LOGPRIMARY + LOGSECOND
debe ser inferior o igual a 256. LOGFILSIZ tiene un máximo de 1 millón de páginas de
4 KB. El límite total del tamaño de archivo de registros activos es de 1024 GB.
El número de archivos de registro primario y secundario debe cumplir lo siguiente:
Si logsecond tiene el valor -1, logprimary <= 256.
Si logsecond no tiene el valor -1, (logprimary + logsecond) <= 256.
Importante: el registro circular proporciona soporte a la recuperación tras bloqueo y de
versión/restauración, pero NO admite la recuperación hacia adelante.

© Copyright IBM Corp. 2015 7-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Registro archivístico: base de datos recuperable

Archivo automático
o
manual

12 ACTIVO: contiene cambios


registrados, transacciones
no confirmadas o modifi-
caciones realizadas sobre
13 la agrupación de almace-
Disco, TSM namiento intermedio
Proveedor
LOGARCHMETH1/2
14

ARCHIVADO EN LÍNEA:
ARCHIVADO FUERA DE registros que contienen 15
LÍNEA: registros que cambios registrados, no
contienen cambios necesarias para la
registrados, almacenados recuperación tras
fuera de la vía de acceso 16
bloqueo
de registro activo.

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Registro archivístico: base de datos recuperable


El segundo tipo de registro admitido por DB2 es el registro archivístico (registro de
retención de registro), donde no se utilizan los archivos de registro.
Cuando un registro se llena, se asigna otro. Normalmente, el administrador de base de
datos configura varios archivos de registro primario, de manera que no es necesario
para el registro que se asigne de inmediato un archivo de registro. (La asignación se
efectúa antes de que se necesite el archivo). La cantidad de archivos de registro
asignados cuando se crea la base de datos lo especifica la cantidad de registros
primarios.
Este tipo de registro se habilita mediante los parámetros de configuración
LOGARCHMETH1 y LOGARCHMETH2, analizados más adelante, en esta misma
unidad.
Si DB2 asigna la suma de registros primarios y secundarios, tal y como se define en el
archivo de configuración de base de datos, y requiere espacio adicional para el
registro, se genera una condición de registro completo. Esta condición la puede causar
una aplicación que trata de procesar una unidad de trabajo demasiado grande.
También la puede provocar una configuración que se queda corta al asignar archivos
de registro, o archivos de registro demasiado pequeños como para gestionar la carga
de trabajo.

© Copyright IBM Corp. 2015 7-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

La vía de acceso de registro (o nueva vía de acceso de registro) debe tener capacidad
para contener el doble de la suma de los registros primarios y secundarios más uno. El
límite de tamaño máximo total del archivo de registro es de 1024 GB (es decir, la
cantidad de archivos de registro (LOGPRIMARY + LOGSECOND) multiplicada por el
tamaño de cada archivo de registro en bytes (LOGFILSIZ * 4096) debe ser inferior a
1024 GB). El resultado de LOGPRIMARY + LOGSECOND debe ser inferior o igual a
256. LOGFILSIZ tiene un máximo de 1.048.572 páginas de 4 KB.
El número de archivos de registro primario y secundario debe cumplir lo siguiente:
• Si logsecond tiene el valor -1, logprimary <= 256.
• Si logsecond no tiene el valor -1, (logprimary + logsecond) <= 256.
Existen tres tipos de archivos de registro asociados al registro de retención de
registros:
• Activos: estos archivos contienen información relacionada con las transacciones
que todavía no han confirmado (o retrotraído) el trabajo. También contienen
información sobre las transacciones que se han confirmado, pero cuyos cambios
no se han grabado en los archivos de base de datos. (Los cambios podrían
encontrarse en la agrupación de almacenamiento intermedio).
El registro activo da soporte a la recuperación tras bloqueo.
• Archivado en línea: estos archivos contienen información relacionada con
transacciones completas que ya no requieren protección de recuperación tras
bloqueo. Se denominan en línea porque se encuentran en el mismo subdirectorio
que los archivos de registro activos.
• Archivado fuera de línea: estos archivos se han trasladado desde el
subdirectorio del archivo de registro activo. El método para mover estos archivos
puede ser un proceso manual o un proceso invocado a través de una salida de
usuario.
Nota: si utiliza el registro archivístico (retención de registro), DB2 truncará y cerrará el
último archivo de registro grabado para liberar espacio cuando la última aplicación se
desconecte de la base de datos y la base de datos se desactive. Esta característica
resulta beneficiosa si la base de datos va a estar inactiva durante un periodo de
tiempo. Sin embargo, si una instalación tiene poca actividad y hay breves periodos
durante los cuales ninguna aplicación se conecta a la base de datos, resultará muy
caro truncar el último registro activo y, a continuación, volver a asignar los archivos de
registro primario cuando se conecte una nueva aplicación.

© Copyright IBM Corp. 2015 7-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

El administrador de base de datos debería pensar en utilizar el mandato ACTIVATE


DATABASE. Este mandato mantendrá la base de datos activa y evitará el recorte del
archivo de registro. Sin embargo, el administrador debe seguir siendo consciente del
impacto que supondrá para la recuperación. Si de verdad la base de datos no se va a
utilizar durante un periodo de tiempo prolongado, al evitar el recorte del archivo de
registro se evitará también el archivado de la información de registro más reciente. Así,
el punto de recuperación de la base de datos será inferior a la unidad de trabajo más
reciente si se produce una anomalía en el disco de registro. Se puede especificar el
mandato DEACTIVATE DATABASE para permitir el recorte del archivo de registro en
aquellas bases de datos en las que se haya utilizado el mandato ACTIVATE.
Otra ventaja del mandato ACTIVATE DATABASE se encuentra en el hecho de que,
normalmente, la memoria se asignará en la primera conexión y se liberará cuando se
desactive la base de datos. Normalmente, esto sucede cuando se retienen las últimas
desconexiones de la aplicación. Así se puede ampliar el rendimiento de las bases de
datos con períodos de inactividad.

© Copyright IBM Corp. 2015 7-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Configurar registros de base de datos: parámetros


Archivos de registro primario Nueva vía de acceso de registro
(LOGPRIMARY) + (NEWLOGPATH)
? ?
Archivos de registro secundario Vía de acceso de
(LOGSECOND) registro de duplicación
(MIRRORLOGPATH)
Tamaño del Método de archivado
registro de registro primario
(LOGFILSIZ) S
VALOR N (LOGARCHMETH1)
Í PREDETERMINADO O
Almacenamiento Método de archivado
intermedio de registro de registro secundario
(LOGBUFSIZ) (LOGARCHMETH2)

Vía de acceso de Desencadenantes de


registro de limpieza de página de
desbordamiento almacenamiento
? - ? SOFTMAX y
(OVERFLOWLOGPATH)
PAGE_AGE_TRGT_MCR

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Configurar registros de base de datos: parámetros


Puede utilizar el Information Center o la documentación del producto para revisar las
opciones detalladas del registro de base de datos. Aquí se muestran algunas de las
opciones básicas:
• Método de archivado de registro 1 (logarchmeth1), método de archivado de
registro 2 (logarchmeth2)
Estos parámetros provocan que el gestor de bases de datos archive los archivos
de registro en una ubicación distinta a la vía de acceso de registro activa. Si
especifica ambos parámetros, cada archivo de registro de la vía de acceso de
registro activa que defina el parámetro de configuración logpath se archivará dos
veces. Esto quiere decir que tendrá dos copias idénticas de archivos de registro
archivados de la vía de acceso de registro en dos destinos distintos. Si especifica
el registro de duplicación con el parámetro de configuración mirrorlogpath, el
parámetro de configuración logarchmeth2 archivará los archivos de registro de la
vía de acceso de registro de duplicación, en lugar de archivar las copias
adicionales de los archivos de registro en la vía de acceso de registro activa.
Esto quiere decir que tendrá dos copias independientes de los archivos de
registro archivados en dos destinos diferentes: una copia de la vía de acceso de
registro y otra de la vía de acceso de registro de duplicación.

© Copyright IBM Corp. 2015 7-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

• Almacenamiento intermedio de registro (logbufsz)


Este parámetro le permite especificar la cantidad de memoria que se va a utilizar
como almacenamiento intermedio para las entradas del registro antes de grabar
estos registros en el disco. Las entradas del registro se graban en el disco si se
da alguna de estas situaciones:
• Una transacción se confirma
• El almacenamiento intermedio de registro se llena
• Se produce algún otro evento interno del gestor de base de datos.
El aumento de tamaño del almacenamiento intermedio de registro puede generar
una actividad más eficaz de entrada/salida (E/S) asociada al registro, ya que las
entradas del registro se graban en el disco con menos frecuencia, pero se
graban más registros cada vez. Sin embargo, la recuperación puede llevar más
tiempo con un valor más alto para el tamaño del almacenamiento intermedio de
registro. Asimismo, puede utilizar un valor logbufsz más alto para reducir la
cantidad de lecturas del disco de registro. (Para determinar si el sistema se
beneficiaría de esto, utilice el elemento supervisor log_reads para comprobar si
la lectura desde el disco de registro es significativa).
• Tamaño del archivo de registro (logfilsiz)
Este parámetro especifica el tamaño de cada archivo configurado como cantidad
de páginas de 4 KB.
Existe un límite lógico de 1024 GB en el espacio de registro activo total por
secuencia de registro que el usuario puede configurar. Este límite es el resultado
del límite superior para cada archivo de registro, que es de 4 GB, y la cantidad
máxima de la combinación de archivos de registro primario y secundarios, que
es de 256.
El tamaño del archivo de registro tiene un efecto directo sobre el rendimiento.
Existe un coste de rendimiento derivado del paso de un registro a otro. Así pues,
si nos centramos únicamente en el rendimiento, cuanto mayor sea el tamaño del
archivo de registro, mejor. Este parámetro también indica el tamaño del archivo
de registro para el archivado. En este caso, un archivo de registro más grande no
es necesariamente mejor, ya que si el tamaño del archivo de registro es mayor,
es posible que se incremente la posibilidad de un error o que se produzca un
retraso al enviar registros. Con relación al espacio de registro activo, quizás sea
mejor contar con una cantidad mayor de archivos de registro más pequeños. Por
ejemplo, si hay dos archivos de registro muy grandes y una transacción inicia el
cierre al final de un archivo de registro, solo la mitad del espacio de registro
seguirá estando disponible.

© Copyright IBM Corp. 2015 7-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

• Vía de acceso de registro de duplicación (mirrorlogpath)


Para proteger los registros de la vía de acceso de registro primaria frente a
errores de disco o supresiones accidentales, puede especificar que se mantenga
un conjunto de registros idéntico en una vía de acceso de registro secundaria
(duplicación). Para ello, cambie el valor de este parámetro de configuración para
que señale a un directorio distinto. Los registros activo que se encuentran
almacenados actualmente en el directorio de la vía de acceso de registro de
duplicación no se trasladarán a la nueva ubicación si la base de datos se ha
configurado para la recuperación en avance.
El parámetro mirrorlogpath ejerce también cierto impacto sobre el
comportamiento del archivado de registros, que se puede utilizar para seguir
mejorando la resiliencia durante la recuperación en avance: cuando se definen
tanto el valor mirrorlogpath como el valor logarchmeth2, logarchmeth2 archiva los
archivos de registro de la vía de acceso de registro de duplicación, en lugar de
archivar copias adicionales de los archivos de registro en la vía de acceso de
registro activa. Puede utilizar el comportamiento de este archivado de registros
para mejorar la resiliencia, ya que un archivo de registro archivado y utilizable de
la vía de acceso de registro de duplicación podría seguir estando disponible para
continuar una operación de recuperación de base de datos, incluso aunque un
archivo de registro primario se dañase debido a un error del disco antes del
archivado.
• Nueva vía de acceso de registro (newlogpath)
Los registros de la base de datos se crean, en un principio, en el directorio
siguiente: db_path/instance_name/dbname/NODE0000/LOGSTREAM0000.
Puede cambiar la ubicación en la que se encuentran los archivos de registro
activos (y donde se colocarán los futuros archivos de registro) cambiando el valor
de este parámetro de configuración para que señale a un directorio o un
dispositivo distintos. Los registros activos que se encuentren almacenados
actualmente en el directorio de la vía de acceso de registro de la base de datos
no se trasladarán a la nueva ubicación si la base de datos se ha configurado
para la recuperación en avance.
Dado que puede modificar la ubicación de la vía de acceso de registro, es
posible que los registros necesarios para la recuperación en avance existan en
distintos directorios o dispositivos. Puede cambiar el valor de este parámetro de
configuración durante una operación de recuperación en avance para poder
acceder a los registros en varias ocasiones.

© Copyright IBM Corp. 2015 7-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

• Vía de acceso de registro de desbordamiento (overflowlogpath)


Este parámetro puede utilizarse para distintas funciones, según los requisitos del
registro. Puede especificar una ubicación para que el gestor de bases de datos
DB2 busque los archivos de registro necesarios para una operación de
recuperación en avance. Se parece a la opción OVERFLOW LOG PATH del
mandato ROLLFORWARD. Sin embargo, en lugar de especificar la opción
OVERFLOW LOG PATH para cada mandato ROLLFORWARD emitido, puede
definir este parámetro de configuración solo una vez. Si se utilizan ambos, la
opción OVERFLOW LOG PATH sobrescribirá el parámetro de configuración
overflowlogpath para dicha operación de recuperación en avance.
Si logsecond se establece en -1, puede especificar un directorio para que el
gestor de bases de datos DB2 almacene los archivos de registro activos
recuperados del archivo. (Es necesario recuperar los archivos de registro activos
para las operaciones de retrotracción si ya no se encuentran en la vía de acceso
de registro activo).
Si no se especifica el valor overflowlogpath, el gestor de bases de datos DB2
recuperará los archivos de registro en la vía de acceso de registro activo. Al
especificar este parámetro, puede proporcionar un recurso de almacenamiento
adicional donde el gestor de bases de datos DB2 pueda colocar los archivos de
registro recuperados. Esto ofrece ventajas como la distribución del coste de
entrada/salida entre los distintos discos o que sea posible almacenar más
archivos de registro en la vía de acceso de registro activo.
• Archivos de registro primario (logprimary)
Este parámetro especifica la cantidad de registros primarios de tamaño logfilsiz
que se van a crear.
Un archivo de registro primario, esté lleno o vacío, requiere la misma cantidad de
espacio de disco. Por lo tanto, si configura más registros de los que necesita,
utilizará espacio de disco sin necesidad. Si configura muy pocos registros, puede
encontrarse con una condición de registro lleno. Cuando seleccione la cantidad
de registros que va a configurar, tiene que tener en cuenta el tamaño de cada
registro y si la aplicación puede manejar una condición de registro lleno. El límite
de tamaño total del archivo de registro en el espacio de registro activo es de 256
GB.
Si va a habilitar una base de datos existente para la recuperación en avance,
cambie la cantidad de registros primarios por la suma de los registros primarios y
secundarios más uno.

© Copyright IBM Corp. 2015 7-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

• Registros secundarios (logsecond)


Este parámetro especifica la cantidad de archivos de registro secundarios que se
crean y se utilizan para la recuperación, en caso de ser necesarios.
Si los archivos de registro primario se llenan, se asignan archivos de registro
secundarios (de tamaño logfilsiz), de uno en uno, según se vayan necesitando,
hasta alcanzar la cantidad total especificada por este parámetro. Si este
parámetro se establece en -1, la base de datos se configura con espacio de
registro activo infinito. No existe ningún límite sobre el tamaño o la cantidad de
transacciones en proceso activas en la base de datos. El registro activo infinito
resulta útil en entornos que deben acomodar trabajos grandes que necesiten
más espacio de registro que el que normalmente se asignaría a los registros
primarios.
• Softmax y PAGE_AGE_TRGT_MCR
Estas dos opciones se pueden utilizar para desencadenar la limpieza de páginas
de la agrupación de almacenamiento intermedio y así minimizar la reproducción
de procesos durante una recuperación tras bloqueo. Softmax se configura como
un porcentaje del tamaño del archivo de registro, de modo que lo controla la
cantidad de registros. PAGE_AGE_TRGT_MCR se configura como un número
de segundos durante los cuales las páginas de almacenamiento pueden
permanecer en una agrupación de almacenamiento intermedio antes de
grabarse en el disco del espacio de tabla.

© Copyright IBM Corp. 2015 7-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Archivos del sistema relacionados con la recuperación de


DB2 (1 de 2)
• Archivo del historial de recuperación - db2rhist.asc: Directorio de bases
 Creado durante la ejecución del mandato Create de datos
Database
Instancia
 Actualizado por la ejecución del programa de
utilidad de DB2:
− Realizar copia de seguridad de base de datos o NODE0000
espacio de tabla
− Restaurar base de datos o espacio de tabla
SQL0000n
− Recuperar en avance la base de datos o el espacio
de tabla db2rhist.asc
SQLOGCTL.GLFH.1
− Cargar tabla
SQLOGCTL.GLFH.2
− Reorganizar tabla
− Archivado del archivo de registro de DB2
− Crear/Modificar/Cambiar nombre de espacio de tabla MEMBER0000
− Desactivar temporalmente los espacios de tabla de la SQLOGCTL.LFH.1
tabla SQLOGCTL.LFH.2
− Descartar tabla (opcional)
 Incluido en cada archivo de copia de seguridad de
DB2
 Mandato LIST HISTORY de db2
Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Archivos del sistema relacionados con la recuperación de DB2


Archivo del historial de recuperación
Con cada base de datos, se crea un archivo del historial de recuperación, que se
actualiza automáticamente siempre que:
• Se realiza una copia de seguridad de la base de datos o los espacios de tabla
• Se restauran una base de datos o los espacios de tabla
• Se recuperan en avance una base de datos o varios espacios de tabla
• Se reconstruye automáticamente una base de datos y se restaura más de una
imagen
• Se crea un espacio de tabla
• Se modifica un espacio de tabla
• Se desactiva temporalmente un espacio de tabla
• Se cambia el nombre de un espacio de tabla
• Se descarta un espacio de tabla
• Se carga una tabla
• Se descarta una tabla (cuando se habilita la recuperación de tablas descartadas)

© Copyright IBM Corp. 2015 7-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

• Se reorganiza una tabla


• Se invoca el archivado de registro bajo demanda
• Se graba un nuevo archivo de registro (cuando se utilizan registros recuperables)
• Se archiva un archivo de registro (cuando se utilizan registros recuperables)
• Se recupera una base de datos
El mandato LIST HISTORY muestra las entradas en los registros del historial de la
base de datos. Los registros del historial de la base de datos contienen un registro de
sucesos de administración y recuperación. Los sucesos de recuperación incluyen
operaciones de copia de seguridad completa a nivel de base de datos y espacio de
tabla, copia de seguridad incremental, restauración y recuperación en avance. Entre
los sucesos de registro adicionales, se incluyen la creación, la modificación, el descarte
o el cambio de nombre de los espacios de tabla, la reorganización de la tabla, el
descarte de la tabla y la carga.

© Copyright IBM Corp. 2015 7-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Archivos del sistema relacionados con la recuperación de


DB2 (2 de 2)
• Archivos de control de registro – SQLOGCTL.LFH.1/2:
 Se utiliza durante la recuperación tras bloqueo
 Disco actualizado al final de cada archivo de registro
 Utilice SOFTMAX o PAGE_AGE_TRGT_MCR
para renovar los punteros con más frecuencia
 Incluido al final de cada copia de seguridad de DB2

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Archivos de control de registro


Cuando una base de datos se reinicia tras un error, el gestor de base de datos aplica la
información de transacción almacenada en los archivos de registro para devolver la
base de datos a un estado coherente. Para determinar qué registros de los archivos de
registro se tienen que aplicar a la base de datos, el gestor de base de datos utiliza la
información registrada en los archivos de control de registro.
Redundancia para la resiliencia de bases de datos
El gestor de base de datos conserva dos copias del archivo de control de registro de
cada miembro, SQLOGCTL.LFH.1 y SQLOGCTL.LFH.2, y dos copias del archivo de
control de registro global, SQLOGCTL.GLFH.1 y SQLOGCTL.GLFH.2. Así, si una
copia sufre algún daño, el gestor de base de datos podrá seguir utilizando la otra copia.

© Copyright IBM Corp. 2015 7-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Opciones del programa de utilidad de copia de seguridad


(parcial)
BACKUP DATABASE database-alias [USER username [USING password]]
[TABLESPACE (tblspace-name [ {,tblspace-name} ... ])] [ONLINE]
[INCREMENTAL [DELTA]]
[USE {TSM | XBSA} [OPEN num-sess SESSIONS]
[OPTIONS {options-string | options-filename}] | TO dir/dev
[ {,dir/dev} ... ] | LOAD lib-name [OPEN num-sess SESSIONS]
[OPTIONS {options-string | options-filename}]]
[WITH num-buff BUFFERS] [BUFFER buffer-size] [PARALLELISM n]
[COMPRESS COMPRLIB--name- | EXCLUDE COMPROPTS ]
[ENCRYPT ENCRLIB--name | EXCLUDE ENCROPTS ]
[UTIL_IMPACT_PRIORITY [priority]
[{INCLUDE | EXCLUDE} LOGS] [WITHOUT PROMPTING]

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Opciones del programa de utilidad de copia de seguridad (parcial)


Utilice el mandato BACKUP DATABASE para realizar una copia de los datos de la
base de datos y almacenarla en un soporte distinto. Los datos de la copia de seguridad
se pueden utilizar en caso de que se produzca un error en los datos originales, o que
estos se vean dañados. Puede efectuar una copia de seguridad de la base de datos
completa, una partición de base de datos o solo de los espacios de tabla
seleccionados.
No es necesario que esté conectado a la base de datos de la que se va a efectuar una
copia de seguridad: el programa de utilidad de base de datos de la base de datos de
copia de seguridad establece automáticamente una conexión con la base de datos
especificada y esta conexión termina cuando finaliza la operación de copia de
seguridad. Si está conectado a la base de datos cuya copia de seguridad se va a
efectuar, se desconectará cuando se emita el mandato BACKUP DATABASE y la
operación de copia de seguridad continúe.
La base de datos puede ser local o remota. La imagen de copia de seguridad se
mantiene en el servidor de base de datos, a menos que se utilice un producto de
gestión de almacenamiento, como Tivoli Storage Manager (TSM) o DB2 Advanced
Copy Services (ACS).

© Copyright IBM Corp. 2015 7-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Si está realizando una copia de seguridad fuera de línea y ha activado la base de datos
utilizando el mandato ACTIVATE DATABASE, tiene que desactivar la base de datos
antes de ejecutar la copia de seguridad fuera de línea.
Si existen conexiones activas con la base de datos, para desactivar la base de datos
correctamente será necesario conectar un usuario con autoridad SYSADM a la base
de datos y emitir los mandatos siguientes:
CONNECT TO database-alias
QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
UNQUIESCE DATABASE;
TERMINATE;
DEACTIVATE DATABASE database-alias
Cifrar una imagen de copia de seguridad de base de datos
Al crear una base de datos cifrada, los parámetros de configuración de base de datos
encrlib y encropts se configuran de tal manera que las siguientes operaciones de copia
de seguridad de base de datos utilicen la biblioteca de cifrado nativo de DB2 con las
opciones especificadas al crear la base de datos. En el ejemplo siguiente, una imagen
de copia de seguridad de base de datos se cifra utilizando los valores actuales (no
nulos) de los parámetros de configuración encrlib y encropts.

© Copyright IBM Corp. 2015 7-22


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Archivos de copia de seguridad


• El nombre de archivo para las imágenes de copia de seguridad del
disco tiene:
 Alias de base de datos
 Tipo de copia de seguridad (0=completa, 3=espacio de tabla, 4=copia
desde carga de tabla)
 Nombre de instancia
 Partición de base de datos (DBPARTnnn, nnn es 000 para la base de datos
de partición única)
 Indicación de fecha y hora de la copia de seguridad (YYYYMMDDHHMMS)
 Número de secuencia (para varios archivos)
 MUSICDB.0.DB2.DBPART000. 20140522120112 .001
• Las imágenes en cinta no tienen nombre, pero contienen,
internamente, la misma información en la cabecera de la copia de
seguridad, con fines de verificación
• El historial de copia de seguridad proporciona información clave en un
formato fácil de utilizar
Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Archivos de copia de seguridad


En todos los sistemas operativos, los nombres de archivos de las imágenes de copia
de seguridad creadas en el disco constan de una concatenación de distintos elementos
separados por puntos:
DB_alias.Type.Inst_name.DBPARTnnn.timestamp.Seq_num
Por ejemplo:
STAFF.0.DB201.DBPART000.20140922120112.001
• Alias de base de datos: un nombre de alias de base de datos de entre 1 y 8
caracteres especificado cuando se invocó al programa de utilidad de copia de
seguridad.
• Tipo: tipo de operación de copia de seguridad donde: 0 representa una copia de
seguridad completa a nivel de base de datos, 3 representa una copia de
seguridad a nivel de espacio de tabla y 4 representa una imagen de copia de
seguridad generada por el mandato LOAD COPY TO.
• Nombre de instancia: un nombre de la instancia actual de entre 1 y 8 caracteres
tomado de la variable de entorno DB2INSTANCE.

© Copyright IBM Corp. 2015 7-23


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

• Número de partición de base de datos: en entornos con una única partición de


base de datos, siempre es DBPART000. En entornos de base de datos
particionada, es DBPARTxxx, donde xxx es el número asignado a la partición de
base de datos del archivo db2nodes.cfg.
• Indicación de fecha y hora: una representación de 14 caracteres de la fecha y la
hora de ejecución de la operación de copia de seguridad. La indicación de fecha
y hora se presenta con el formato aaaammddhhnnss, donde:
• aaaa representa el año (de 1995 a 9999)
• mm representa el mes (de 01 a 12)
• dd representa el día del mes (de 01 a 31)
• hh representa la hora (de 00 a 23)
• nn representa los minutos (de 00 a 59)
• ss representa los segundos (de 00 a 59)
• Número de secuencia: un número de tres dígitos utilizado como extensión de
archivo.

© Copyright IBM Corp. 2015 7-24


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Sintaxis del mandato RESTORE (parcial)


RESTORE DATABASE source-database-alias | restore-options |
DB CONTINUE
ABORT
Opciones de restauración:

USER username TABLESPACE ONLINE


USING password ,

TABLESPACE ( tablespace-name )
ONLINE

HISTORY FILE
ONLINE

USE TSM TAKEN AT date-time


OPEN num-sessions SESSIONS
,

FROM directory
device

LOAD shared-library
OPEN num-sessions SESSIONS

TO target-directory INTO target-database-alias NEWLOGPATH directory

WITH num-buffers BUFFERS BUFFER buffer-size REPLACE EXISTING REDIRECT

...
WITHOUT ROLLING FORWARD WITHOUT PROMPTING

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Sintaxis del mandato RESTORE (parcial)


El formato más sencillo del mandato RESTORE DATABASE de DB2 requiere que
especifique, únicamente, el nombre de alias de la base de datos que quiere restaurar.
Por ejemplo:
db2 restore db sample
En este ejemplo, debido a que existe una base de datos SAMPLE y a que se sustituirá
cuando se emita el mandato RESTORE DATABASE, se devuelve el mensaje
siguiente:
SQL2539W Warning! Restoring to an existing database that is the same as the
backup image database. The database files will be deleted.
Do you want to continue? (y/n) Si indica y, la operación de restauración se completará
correctamente.
Una operación de restauración de base de datos requiere una conexión exclusiva: no
puede haber aplicaciones activas que utilicen la base de datos cuando se inicie la
operación. El programa de utilidad de restauración impedirá que otras aplicaciones
accedan a la base de datos hasta que la operación de restauración haya finalizado. Sin
embargo, la operación de restauración de espacio de tabla se puede efectuar en línea.

© Copyright IBM Corp. 2015 7-25


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

No se podrá utilizar el espacio de tabla hasta que la operación de restauración


(posiblemente seguida de una recuperación en avance) se haya completado
correctamente.
Si tiene tablas que ocupan más de un espacio de tabla, debería realizar una copia de
seguridad y una restauración de todo el conjunto de espacios de tabla.
Si realiza una operación de restauración parcial, o de subconjunto, puede utilizar una
imagen de copia de seguridad a nivel de espacio de tabla o una imagen de copia de
seguridad completa a nivel de base de datos y elegir uno o varios espacios de tabla de
dicha imagen. Es necesario que existan todos los archivos de registro asociados a
estos espacios de tabla desde la hora de creación de la imagen de copia de seguridad.
Puede restaurar una base de datos a partir de una imagen de copia de seguridad
tomada a nivel de 32 bits en un nivel de 64 bits, pero no al contrario.
Los programas de utilidad de copia de seguridad y restauración de DB2 se deben
utilizar para realizar una copia de seguridad y una restauración de las bases de datos.
No se recomienda trasladar un conjunto de archivos de una máquina a otra, ya que
esto podría poner en peligro la integridad de la base de datos.
En determinadas condiciones, puede utilizar los conjuntos transportables con el
mandato RESTORE DATABASE para trasladar bases de datos. .
Importante: en IBM Data Studio versión 4.1, puede utilizar el asistente de tareas para
restaurar las copias de seguridad de las bases de datos. Los asistentes de la tarea le
guiarán por el proceso de definición de opciones, revisarán los mandatos que se hayan
generado automáticamente para efectuar la tarea y ejecutarán dichos mandatos.

© Copyright IBM Corp. 2015 7-26


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Consideraciones sobre el espacio de tabla de copia de


seguridad/restauración
• Base de datos recuperable: la recuperación en avance tiene que estar
habilitada
• Puede optar por restaurar un subconjunto de espacios de tabla
• Normalmente, la mejor opción para colocar varios espacios en una
imagen de copia de seguridad:
 Facilita la estrategia de recuperación del espacio de tabla
 Ofrece acceso a espacios de tabla relacionados y una gestión coherente de
estos espacios de tabla
• El manejo de datos long/LOB/XML requiere una estrategia correlacionada
• Se admite la recuperación de un punto en el tiempo, pero con requisitos
• Recuperación rápida para catálogos mediante la copia de seguridad a
nivel de espacio de tabla
• Las tablas más importantes de la aplicación empresarial deberían ser el
centro de la copia de seguridad/restauración, pero se necesitan otras
tablas para dar soporte a las mencionadas

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Consideraciones sobre el espacio de tabla de copia de seguridad/restauración


Para utilizar la copia de seguridad y la restauración a nivel de espacio de tabla, es
necesario utilizar el registro de archivado.
Es posible restaurar un subconjunto de espacios de tabla desde la imagen de copia de
seguridad de un espacio de tabla o una base de datos.
Una de las razones principales para utilizar la recuperación a nivel de espacio de tabla
es reducir el tiempo que llevan las operaciones de copia de seguridad y restauración.
Para ello, se reduce la cantidad de datos implicados en estos procesos. Sin embargo,
el administrador de base de datos no debería intentar, sin más, minimizar la cantidad
de datos de la copia de seguridad. Aunque esto se podría hacer colocando una única
tabla en su propio espacio de tabla, es posible que acarrease problemas de gestión
relacionados con la copia de seguridad y la recuperación.
Si los espacios de tabla asociados a tablas estrechamente relacionadas se encuentran
en una única copia de seguridad, solo se verán afectadas las aplicaciones centradas
en dichas tablas. En muchos casos, estas aplicaciones se verán afectadas aunque
haya una única tabla no disponible en el grupo. Esto será así, especialmente, en el
caso de tablas restringidas de forma referencial. Tiene que pensar en agrupar los
espacios de tabla que dan soporte a las estructuras referenciales en una única imagen
de copia de seguridad.

© Copyright IBM Corp. 2015 7-27


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

La clave está en reducir la cantidad de datos implicados en la recuperación de


sucesos; esto es necesario para controlar el impacto que la estrategia de copia de
seguridad/restauración puede ejercer sobre la gestión.
Los datos de LOB y los datos de campo long se pueden colocar en un espacio de tabla
independiente del de los datos regulares. Con frecuencia, esto es preferible, desde el
punto de vista de la recuperación, ya que la frecuencia de ejecución de las copias de
seguridad de los datos de LOB puede estar muy por debajo de la de los datos
regulares. Normalmente, los datos de LOB son grandes y tienden a no actualizarse
con frecuencia. Sin embargo, si la reorganización de una tabla de este tipo y sus datos
de LOB es una de las acciones registradas en los archivos de registro mediante los
cuales se efectúa la recuperación en avance, es necesario que todos los espacios de
tabla relacionados con la tabla se encuentren en la copia de seguridad, lo que echa
abajo uno de los motivos para separar los datos. La solución pasa por establecer
nuevas copias de seguridad de los espacios de tabla asociados a dichas tablas tras
una reorganización que incluya los datos de LOB.
Se admite la recuperación de un punto en el tiempo durante la recuperación en
avance.
Si las tablas de catálogo están implicadas en una situación de recuperación, se ve
afectado el acceso a la base de datos completa. Por lo tanto, se recomienda mantener
las copias de seguridad a nivel de espacio de tabla de las tablas de catálogo. Si
necesita recuperar el catálogo, la duración del proceso se reducirá si puede restaurar
una copia de seguridad del espacio de tabla, en lugar de una copia de seguridad de
base de datos.
Las tablas de aplicación consideradas fundamentales para el negocio deberán
colocarse entre las principales candidatas para la recuperación de espacio de tabla. El
principal motivo para ello es la reducción del tiempo de inactividad que se consigue con
la estrategia de copia de seguridad/restauración de espacios de tabla.

© Copyright IBM Corp. 2015 7-28


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Estado Rollforward Pending


• Roll forward pending se define como consecuencia de:
 La restauración de una copia de seguridad de base de datos fuera de línea
sin la opción de mandato WITHOUT ROLLING FORWARD
 La restauración de una copia de seguridad de base de datos en línea
 La restauración de una copia de seguridad a nivel de espacio de tabla
 DB2 detecta los errores de soporte aislados en un espacio de tabla
• Alcance de los estados pendientes gestionados por DB2:
 Una base de datos en estado pendiente no permite ninguna actividad
 Los espacios de tablas en estado pendiente permiten el acceso a otros
espacios de tabla

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Estado Rollforward Pending


DB2 utiliza el estado Rollforward Pending para proteger la integridad de la base de
datos. Este estado indica que es necesario un proceso de recuperación en avance
para garantizar la coherencia de los datos.
El estado Rollforward Pending puede aparecer a nivel de base de datos o de espacio
de tabla.
Si la base de datos se encuentra en estado Rollforward Pending, no se permitirá
realizar ninguna actividad que la incluya. Si un espacio de tabla se encuentra en
estado Rollforward Pending, solo dicho espacio de tabla estará inutilizable.
Una base de datos se coloca en estado Rollforward Pending cuando:
• Se está restaurando una copia de seguridad OFFLINE DATABASE y se omite la
opción WITHOUT ROLLING FORWARD. Se aplica solo a las bases de datos
que utilizan el registro de archivado.
• Se está restaurando una copia de seguridad ONLINE DATABASE.
Un espacio de tabla pasará al estado Rollforward Pending cuando se restaure un
espacio de tabla.
En determinadas condiciones, DB2 puede detectar un error de soporte y aislarlo a nivel
de espacio de tabla.

© Copyright IBM Corp. 2015 7-29


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Sintaxis del mandato ROLLFORWARD


>>-ROLLFORWARD--+-DATABASE-+--database-alias-------------------->
'-DB-------'

>--+-------------------------------------------------------------------------------------+-->
| .-ON ALL DBPARTITIONNUMS-. .-USING UTC TIME---. |
+-TO--+-isotime--+------------------------+--+------------------+-+--+--------------+-+
| | '-USING LOCAL TIME-' | +-AND COMPLETE-+ |
| | .-ON ALL DBPARTITIONNUMS-. | '-AND STOP-----' |
| +-END OF BACKUP--+------------------------+-----------------+ |
| '-END OF LOGS--+----------------------------------+---------' |
| '-| On Database Partition clause |-' |
'-+-COMPLETE---------------------------+--+----------------------------------+--------'
+-STOP-------------------------------+ '-| On Database Partition clause |-'
+-CANCEL-----------------------------+
| .-USING UTC TIME---. |
'-QUERY STATUS--+------------------+-'
'-USING LOCAL TIME-'

>--+-------------------------------------------------------+---->
'-TABLESPACE--+-ONLINE--------------------------------+-'
| .-,---------------. |
| V | |
'-(----tablespace-name-+--)--+--------+-'
'-ONLINE-'

>--+------------------------------------------------------------------------+-->
'-OVERFLOW LOG PATH--(--log-directory--+----------------------------+--)-'
'-,--| Log Overflow clause |-'

>--+------------+----------------------------------------------->
'-NORETRIEVE-'

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Sintaxis del mandato ROLLFORWARD


La autorización para este mandato requiere SYSADM, SYSCTRL o SYSMAINT.
ROLLFORWARD aplica las transacciones registradas en los archivos de registro de
base de datos.
Es necesario invocar el mandato después de restaurar la copia de seguridad de una
base de datos o un espacio de tabla, o si la base de datos ha llevado fuera de línea a
algún espacio de tabla debido a un error de soporte.
La restauración es la primera fase de una recuperación hacia adelante completa de
una base de datos o un espacio de tabla.
Tras una restauración correcta de la base de datos, la base de datos que se configuró
para la recuperación hacia adelante cuando se realizó la copia de seguridad pasa al
estado Rollforward Pending y no se puede utilizar hasta que el mandato
ROLLFORWARD se ejecuta correctamente. Si se tratase de una restauración del
espacio de tabla, los espacios de tabla restaurados pasarán al estado Rollforward
Pending.
Cuando se emite el mandato ROLLFORWARD DATABASE, si la base de datos se
encuentra en el estado Rollforward Pending, se recupera en avance. Si la base de
datos no está en estado Rollforward Pending, se procesan todos los espacios de tabla
de la base de datos en estado Rollforward Pending.

© Copyright IBM Corp. 2015 7-30


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

No se permite otra operación RESTORE de base de datos mientras se ejecuta el


proceso de recuperación en avance.
Nota: si ha efectuado la restauración desde una imagen de copia de seguridad
completa de base de datos fuera de línea, puede omitir el estado Rollforward Pending
durante el proceso de recuperación. El mandato RESTORE DATABASE le da la
opción de utilizar la base de datos restaurada de inmediato, sin necesidad de recuperar
en avance la base de datos.
NO PODRÁ omitir la recuperación en avance si está realizando una recuperación a
nivel de espacio de tabla o si efectúa la restauración desde una imagen de copia de
seguridad creada con la opción ONLINE del mandato BACKUP DATABASE.

© Copyright IBM Corp. 2015 7-31


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

ROLLFORWARD: ¿hasta dónde?


• END OF LOGS: (aplicar todas las modificaciones que sea posible):
 Rollforward aplicará todos los registros disponibles a partir de los registros
asociados a la copia de seguridad restaurada
 Se recuperarán los registros archivados, a menos que se especifique
NORETRIEVE
• Point-in-time (PIT): (aplicar modificaciones hasta un momento específico):
 Especificado en hora universal coordinada (UTC) a través de un mandato
 Especificado en hora local en el servidor con USING LOCAL TIME
 Especificado en hora local en el cliente a través de la interfaz gráfica de usuario
 Formato: aaaa-mm-dd-hh.mm.ss.nnnnnn
• END OF BACKUP: (aplicar el menor número de modificaciones que sea
posible):
 Permite que una base de datos se recupere desde una copia de seguridad de
base de datos en línea y que finalice el proceso de ROLLFORWARD en el
primer punto en el que la base de datos sea coherente.
 El archivo del historial de recuperación (RHF) muestra registros asociados a las
copias de seguridad en línea
Copia de seguridad y recuperación © Copyright IBM Corporation 2015

ROLLFORWARD: ¿hasta dónde?


El administrador de base de datos puede borrar una condición ROLLFORWARD
PENDING si emite el mandato ROLLFORWARD. El administrador puede controlar
también el punto en el tiempo al que se dirige la recuperación en avance. Un
administrador puede efectuar una recuperación en avance hasta el final de los
registros o hasta un punto en el tiempo concreto. Utilice la hora universal coordinada
(UTC) o la hora local del servidor cuando se especifique la recuperación en avance en
un mandato.
Es necesario proteger la integridad de la base de datos, por lo que el primer punto en
el tiempo en el que puede finalizar la recuperación en avance es el final de la imagen
de copia de seguridad en línea.
La recuperación de un punto en el tiempo del espacio de tabla tiene que proteger la
integridad de las relaciones que existen entre las tablas en los espacios de tabla. Estas
relaciones incluyen tablas restringidas de forma referencial y tablas únicas que
contienen objetos en distintos espacios de tabla. Al nivel del espacio de tabla, se
conserva un tiempo mínimo de recuperación en avance que se puede visualizar con el
mandato LIST TABLESPACES. Es necesario realizar una copia de seguridad tras una
recuperación de un punto en el tiempo del espacio de tabla.

© Copyright IBM Corp. 2015 7-32


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

El parámetro isotime se puede codificar en el mandato ROLLFORWARD para


identificar un punto en el tiempo concreto en el que aplicar los registros. Esta hora se
especifica como formato ISO de la hora universal coordinada (UTC) o la hora local del
servidor.
La hora universal coordinada (UTC) se utiliza en las entradas del registro para que el
gestor de base de datos no se encuentre con una dependencia de recuperación
relacionada con el horario de verano o con otras variaciones del horario local. Sin
embargo, esto presenta cierta complejidad para el administrador de base de datos.
Aunque las imágenes de copia de seguridad se identifican mediante indicaciones de
fecha y hora que reflejan la hora local, la recuperación en avance (que se aplica a
registros) designa las horas en formato UTC. Si se especifica USING LOCAL TIME, es
necesario tener cuidado e indicar la hora correctamente, especialmente si los cambios
del horario de verano se producirán cerca de la hora de la recuperación en avance.
En muchos casos, la recuperación deberá realizarse en el punto más actual posible.
Por lo tanto, la opción END OF LOGS se utilizará frecuentemente.
La opción TO END OF BACKUP se puede utilizar con el mandato RESTORE.
El administrador puede detener o completar (STOP / COMPLETE) el proceso de
recuperación en avance y permitir el acceso a la base de datos.
AND STOP / AND COMPLETE es un parámetro necesario para permitir que el gestor
de base de datos retrotraiga las transacciones que no se hayan completado tras aplicar
las entradas del registro en el punto indicado. Esto también es así cuando se utiliza
END OF LOGS. De lo contrario, la base de datos se mantendrá en estado
ROLLFORWARD PENDING.

© Copyright IBM Corp. 2015 7-33


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

ROLLFORWARD: espacio de tabla


• Consideraciones de punto en el tiempo del espacio de tabla:
 Tiempo mínimo de recuperación en avance mantenido para cada espacio de
tabla: requiere la recuperación en avance al menos hasta la última modificación
de DDL (crear, modificar, descartar) en un espacio de tabla
 Los espacios de tabla pasan al estado Backup Pending cuando se completa la
recuperación en avance para garantizar su recuperabilidad en el futuro
 Si está recuperando en avance los espacios de tabla hasta un punto en el
tiempo y una tabla está contenida en distintos espacios de tabla, todos ellos se
deben recuperar en avance simultáneamente
 Si quiere recuperar en avance un espacio de tabla hasta un punto en el tiempo,
y una tabla del espacio de tabla participa en una relación de integridad
referencial con otra tabla contenida en otro espacio de tabla, efectúe la
recuperación en avance de ambos espacios de tabla simultáneamente hasta el
mismo punto en el tiempo.
− Si no recupera en avance ambos espacios de tabla, la tabla hija que se encuentre en la
relación de integridad referencial se colocará en estado Set Integrity Pending al final de
la operación de recuperación en avance.

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

ROLLFORWARD: espacio de tabla


Cuando un espacio de tabla se restaura, siempre pasa al estado Rollforward Pending.
Para poder utilizar el espacio de tabla, tiene que efectuar una recuperación en avance
en él. En la mayoría de los casos, tiene la opción de realizar una recuperación en
avance al final de los registros o a un punto en el tiempo. Sin embargo, no puede
recuperar en avance, a un punto en el tiempo, los espacios de tabla que contienen
tablas de catálogo de sistema. Estos espacios de tabla se deben recuperar en avance
al final de los registros para garantizar que los restantes espacios de tabla de la base
de datos mantengan la coherencia.
Si está recuperando en avance los espacios de tabla hasta un punto en el tiempo y
una tabla está contenida en distintos espacios de tabla, todos ellos se deben recuperar
en avance simultáneamente. Si, por ejemplo, los datos se la tabla se encuentran en un
espacio de tabla y el índice de la tabla se encuentra en otro espacio de tabla, tendrá
que recuperar en avance ambos espacios de tabla simultáneamente y al mismo punto
en el tiempo.
Si los datos y los objetos long de una tabla se encuentran en espacios de tabla
independientes y los datos de los objetos long se han reorganizado, los espacios de
tabla de los datos y los objetos long tendrán que ser restaurados y recuperados en
avance juntos. Realice una copia de seguridad de los espacios de tabla afectados una
vez reorganizada la tabla.

© Copyright IBM Corp. 2015 7-34


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Si quiere recuperar en avance un espacio de tabla hasta un punto en el tiempo, y una


tabla del espacio de tabla es:
• o bien una tabla subyacente para una tabla de consulta materializada o una tabla
de etapas que se encuentra en otro espacio de tabla
• o bien una tabla de consulta materializada o una tabla de etapas para una tabla
de otro espacio de tabla
Puede recuperar en avance ambos espacios de tabla al mismo punto en el tiempo. Si
no lo hace, la tabla de consulta materializada o la tabla de etapas pasarán al estado
Set Integrity Pending al final de la operación de recuperación en avance. Es necesario
actualizar la totalidad de la tabla de consulta materializada y la tabla de etapas se
marca como incompleta.
Si quiere recuperar en avance un espacio de tabla hasta un punto en el tiempo, y una
tabla del espacio de tabla participa en una relación de integridad referencial con otra
tabla contenida en otro espacio de tabla, efectúe la recuperación en avance de ambos
espacios de tabla simultáneamente hasta el mismo punto en el tiempo. Si no recupera
en avance ambos espacios de tabla, la tabla hija que se encuentre en la relación de
integridad referencial se colocará en estado Set Integrity Pending al final de la
operación de recuperación en avance. Si más adelante se comprueba si en la tabla hija
se han producido infracciones de restricción, será necesario comprobar la tabla
completa. Si alguna de las tablas siguientes existe, pasa al estado Set Integrity
Pending con la tabla hija:
• cualquier tabla de consultas materializadas descendiente para la tabla hija
• cualquier tabla de etapas descendiente para la tabla hija
• cualquier tabla de claves foráneas descendiente de la tabla hija

© Copyright IBM Corp. 2015 7-35


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Mandato RECOVER de DB2


• db2 recover database salesdb
 El mandato RECOVER efectúa el proceso de mandatos
RESTORE y ROLLFORWARD utilizando los datos del
archivo del historial de recuperación.
 Puede utilizar las imágenes de la copia de seguridad de
base de datos completa o incremental
 Permite que se recupere una base de datos DPF
particionada utilizando un único mandato Historial de
recuperación
 La base de datos se puede recuperar al final de los
Registros de archivado
registros o
a un punto en el tiempo.
Copias de seguridad
 La opción RESTART impone al mandato RECOVER
fallido que vuelva a ejecutar RESTORE aunque la
restauración anterior se haya completado
 La opción USING HISTORY FILE permite la recuperación
tras desastre sin que exista una base de datos
 Sin opciones de recuperación a nivel de espacio de tabla
Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Mandato RECOVER de DB2


El mandato RECOVER de DB2 utiliza la información del archivo histórico para
determinar la imagen de copia de seguridad que se utilizará para el punto en el tiempo
requerido. El usuario no tiene que especificar una imagen de copia de seguridad
concreta. Si la imagen de copia de seguridad concreta es una copia de seguridad
incremental, RECOVER invocará la lógica automática incremental para efectuar la
restauración. Si los espacios de tabla pasan al estado Restore Pending durante la
recuperación en avance de la base de datos, estos espacios de tabla tendrán que
resolverse mediante mandatos adicionales de restauración y recuperación en avance.
Si se requiere un punto en el tiempo, pero la primera imagen de copia de seguridad del
archivo histórico es posterior al punto en el tiempo requerido, el mandato RECOVER
generará un error. De lo contrario, se utilizará para restaurar la base de datos la
imagen de copia de seguridad del archivo histórico con la hora de copia de seguridad
inmediatamente anterior al punto en el tiempo requerido.
Si se requiere END OF LOGS, se utilizará la imagen de copia de seguridad de base de
datos más reciente del archivo histórico.

© Copyright IBM Corp. 2015 7-36


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

El mandato RECOVER solo ejecuta la recuperación a nivel de base de datos, no se


incluyen opciones de recuperación del espacio de tabla. RECOVER no proporciona
algunas de las opciones de RESTORE, ROLLFORWARD. Por ejemplo, no se incluye
la opción REDIRECT de RESTORE, de manera que la base de datos se tiene que
recuperar utilizando los mismos contenedores definidos en la imagen de copia de
seguridad.
Se utilizará el valor predeterminado para estas opciones, a menos que se indique lo
contrario a continuación.
• Partición única: si se especifica un punto en el tiempo, es necesario que la
información de dicho punto exista en el archivo histórico.
• Varias particiones: si se especifica un punto en el tiempo, es necesario que
todos los nodos contengan información para el punto en el tiempo requerido. Si
no es así, no se ejecutará ninguna operación de recuperación en el nodo.
Varias particiones: se debe emitir RECOVER desde el nodo de catálogo. Cualquier
solicitud desde la fase RESTORE o ROLLFORWARD se devolverá al nodo de
catálogo y aquí se responderá la solicitud. Se utilizarán las solicitudes
RESTORE/ROLLFORWARD existentes ('c'/'d'/'t') (véase más adelante).
Nota: WITHOUT PROMPTING es el valor predeterminado para la fase RESTORE
cuando se utiliza RECOVER.
USING LOCAL TIME es el valor predeterminado de la fase ROLLFORWARD. Es
distinto a ROLLFORWARD, pero se elige como valor predeterminado, ya que es un
uso más natural, desde el punto de vista del cliente. El usuario tendrá que especificar
USING UTC TIME para que el comportamiento sea igual al de ROLLFORWARD.
Si RECOVER se completa sin errores, se ejecutará la lógica de recuperación en
avance STOP/COMPLETE. Si se inicia la recuperación en avance, pero no alcanza el
final de registro/punto en el tiempo esperado, no se ejecutará el procesamiento de
STOP/COMPLETE.
Si la imagen de copia de seguridad seleccionada para ser utilizada es una copia de
seguridad incremental, DB2 invocará un código de seguridad incremental automático
para efectuar la restauración de la base de datos. Si se produce un error al completar
la restauración INCREMENTAL AUTO, DB2 efectuará una "terminación anormal
incremental" interna para finalizar la operación de restauración.

© Copyright IBM Corp. 2015 7-37


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

High Availability Disaster Recovery: HADR

Clientes

Red

Servidor de base
de datos DB2
Servidor de base en espera
de datos DB2
primaria Enlace TCPIP directo entre
bases de datos

Copia en espera
Copia primaria de de base de datos
base de datos DB2 DB2

La característica High Availability Disaster Recovery (HADR) se incluye


en todas las ediciones de DB2 10.5 a la venta.

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

High Availability Disaster Recovery (HADR)


La característica Data Server High Availability Disaster Recovery (HADR) de DB2 es
una característica de replicación de la base de datos que proporciona una solución de
alta disponibilidad para errores del sitio, parciales y completos. HADR le protege de la
pérdida de datos mediante la réplica de modificaciones de datos de una base de datos
de origen, denominada Primary (primaria), en una base de datos de destino,
denominada Standby (en espera).
HADR puede ser la opción más adecuada si la mayoría de las bases de datos (o
todas) requieren protección, o si se ejecutan operaciones de DDL que se deban
replicar automáticamente en la base de datos en espera.
Las aplicaciones solo pueden acceder a la base de datos primaria actual. Las
actualizaciones sobre la base de datos en espera se producen cuando se recuperan
en avance los datos de registro generados en la base de datos primaria y enviados a la
base de datos en espera.

© Copyright IBM Corp. 2015 7-38


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

• Un error parcial del sitio puede estar causado por un error en el hardware, la red
o el software (sistema de base de datos DB2 o sistema operativo). Sin HADR, un
error parcial del sitio requiere el reinicio del servidor del sistema de gestión de
bases de datos (DBMS) que contiene la base de datos. No se puede predecir el
tiempo que se tardará en reiniciar la base de datos y el servidor donde esta
reside. Puede que transcurran unos minutos antes de que la base de datos
vuelva al estado coherente y pase a estar disponible. Con HADR, la base de
datos en espera puede volver a estar en marcha en cuestión de segundos.
Además, puede redirigir a los clientes que estaban utilizando la base de datos
primaria original hacia la base de datos en espera (nueva base de datos
primaria) utilizando el reencaminado automático de clientes o la lógica de
reintento en la aplicación.
• Un error completo del sitio puede producirse si se destruyen las instalaciones,
por ejemplo a causa de un incendio. Dado que HADR utiliza TCP/IP para la
comunicación entre las bases de datos primarias y en espera, se pueden situar
en ubicaciones distintas. Por ejemplo, la base de datos primaria podría
encontrarse en la sede central de una ciudad, mientras que la base de datos en
espera se encuentra en la oficina de ventas, en otra ciudad. Si se produce un
desastre en el sitio primario, se mantiene la disponibilidad de datos, ya que la
base de datos en espera remota ocupa el puesto como base de datos primaria,
con todas las funcionalidades de DB2. Tras una operación de toma de control,
puede recuperar la copia de seguridad original de la base de datos primaria y
devolverle el estado de base de datos primaria. Esto se denomina
restablecimiento.
Con HADR, puede elegir el nivel de protección que prefiera ante una potencial pérdida
de datos. Solo tiene que especificar una de las tres modalidades de sincronización:
síncrona, casi síncrona o asíncrona.

© Copyright IBM Corp. 2015 7-39


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Soporte a varias bases de datos en espera activas (1 de 2)

Base de datos en
espera principal

Primaria Modalidad Súper


Base de datos en
asíncrona espera auxiliar

Base de datos en
espera auxiliar

• La característica HADR en modalidad en espera múltiple permite la


configuración de hasta tres bases de datos en espera
• Una de ellas se designa como la base de datos en espera de HADR
principal
• Cualquier otra base de datos en espera se considera una base de
datos en espera de HADR auxiliar

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Soporte a varias bases de datos en espera activas


A partir de DB2 10.1, la función HADR da soporte a varias bases de datos en espera.
En una recuperación HADR con un entorno en espera múltiple, todas las bases de
datos en espera se conectan directamente a la primaria. Las bases de datos no se
conectan entre ellas en cadena ni en cascada.
Cada una de las bases de datos en espera de un entorno en espera múltiple da
soporte a la característica Reads on Standby.
Se admite la toma de control (forzada o no) desde cualquier sistema en espera. En
otras palabras, todos los sistemas en espera se pueden convertir en primarios
mediante una toma de control. Tras la toma de control, los parámetros de configuración
de base de datos de los otros sistemas en espera (HADR_REMOTE_HOST,
HADR_REMOTE_SVC y HADR_REMOTE_INST) se actualizarán automáticamente
para señalar al nuevo sistema primario.

© Copyright IBM Corp. 2015 7-40


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Soporte a varias bases de datos en espera activas (2 de 2)

• Ambos tipos de bases de datos en espera de HADR:


 Están sincronizados con la base de datos primaria de HADR mediante una
conexión
TCP/IP directa
 Admiten las lecturas en modalidad en espera
 Pueden emitir una toma de control, forzada o no

• Otras mejoras de HADR incluidas en DB2 10


 Spool de registro en la base de datos en espera
 Reproducción retardada para una base de datos en espera

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Con DB2 10.1, se han presentado otras mejoras sobre HADR. Se pueden utilizar en
modalidades de sistemas en espera únicos o múltiples.
• Spool de registro HADR
La característica Spool de registro HADR permite que las transacciones efectuadas en
la base de datos primaria progresen sin necesidad de esperar a la reproducción del
registro en modalidad en espera. Si se habilita esta característica, los datos de registro
enviados por la base de datos primaria se colocan en cola, o se graban, en el disco de
la base de datos en espera, y los datos de este registro los lee más adelante la
reproducción del registro.

© Copyright IBM Corp. 2015 7-41


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

La característica Spool de registro que se habilita configurando el parámetro de


configuración de base de datos hadr_spool_limit, supone una mejora de la
característica HADR. Si la reproducción es lenta, es posible que las nuevas
transacciones de la base de datos primaria se bloqueen, debido a que no se consigue
enviar datos de registro al sistema en espera si no hay espacio en el almacenamiento
intermedio para recibir los datos. La característica Spool de registro implica que el
sistema en espera no se ve limitado por el tamaño de su almacenamiento intermedio.
Si hay un incremento en los datos recibidos que no se pueden guardar en el
almacenamiento intermedio, la reproducción del registro lee los datos del disco. Esto
permite que el sistema tolere mejor los picos de volumen de transacciones en la base
de datos primaria o la ralentización de la reproducción de registros (debido a la
reproducción de un tipo concreto de entradas del registro) en la base de datos en
espera.
Esta característica podría generar un intervalo mayor entre la posición del registro en la
base de datos primaria y la reproducción de registros en la base de datos en espera, lo
que podría derivar en un tiempo de toma de control más largo. Debe reflexionar
cuidadosamente sobre el establecimiento del límite de spool, ya que la base de datos
en espera no se puede iniciar como primaria y recibir las transacciones hasta que haya
finalizado la reproducción de los registros en cola.
• Reproducción retardada de HADR
La reproducción retardada de HADR ayuda a impedir la pérdida de datos debido a las
transacciones errantes. Para implementar la reproducción retardada de HADR,
configure el parámetro de configuración de base de datos hadr_replay_delay en la
base de datos en espera de HADR.
La reproducción retardada mantiene, intencionadamente, la base de datos en espera
en un punto en el tiempo anterior al de la base de datos primaria retrasando la
reproducción de registros en dicha base de datos en espera. Si se ejecuta una
transacción errante en la base de datos primaria, tiene hasta que haya transcurrido el
tiempo de demora configurado para actuar e impedir que la transacción errante se
reproduzca en la base de datos en espera. Para recuperar los datos perdidos, puede
volver a copiar estos datos en la base de datos primaria, o bien permitir que la base de
datos en espera tome el control como nueva base de datos primaria.
La reproducción retardada funciona comparando las indicaciones de fecha y hora de la
secuencia de registros, que se genera en la base de datos primaria, y la hora actual de
la base de datos en espera. Así pues, es importante sincronizar los relojes en las
bases de datos primarias y en espera. La confirmación de transacciones se reproduce
en la base de datos en espera siguiendo esta ecuación:

© Copyright IBM Corp. 2015 7-42


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

(hora actual de la base de datos en espera - valor del parámetro de configuración


hadr_replay_delay) >= indicación de fecha y hora de la entrada del registro confirmada
Debe definir el parámetro de configuración de base de datos hadr_replay_delay en un
valor lo bastante grande como para tener tiempo para detectar las transacciones
errantes, y actuar sobre ellas, en la base de datos primaria.
Puede utilizar esta característica en modalidad en espera única o modalidad en espera
múltiple. En modalidad en espera múltiple, normalmente una o varias de las bases de
datos en espera se mantienen al día con la primaria para conseguir una alta
disponibilidad o la recuperación tras desastre, mientras que una base de datos en
espera se configura con reproducción retardada para protegerse frente a las
transacciones errantes. Si utiliza esta característica en modalidad en espera única, no
debe habilitar IBM Tivoli System Automation for Multi-platforms, ya que la toma de
control fallará.

© Copyright IBM Corp. 2015 7-43


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Arquitectura de la característica DB2 pureScale

Equilibrio de carga de trabajo


automático

Clúster de nodos de DB2 activos


en servidores Power o Intel

Memoria caché de clúster


Recursos
Optimiza la tecnología de
bloqueo global y gestor de
memoria de z/OS

Miembros de la base de datos Gestor de clúster


integrado

InfiniBand o Ethernet y servicios


de clúster de DB2

Datos compartidos

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Arquitectura de la característica DB2 pureScale


La característica DB2 pureScale, basada en la arquitectura líder en uso compartido de
datos de System z, integra las tecnologías de IBM para mantener los sistemas más
importantes siempre disponibles.
Incluye:
• Equilibrio automático de carga de trabajo que garantiza que ningún nodo del
sistema se sobrecarga. DB2 direccionará las transacciones o las conexiones al
servidor menos utilizado.
• DB2 pureScale se integra en servidores Power e Intel
• La tecnología para compartir de manera global los bloqueos y la memoria está
basada en la tecnología de z/OS.
• Tivoli System Automation se ha integrado en profundidad en DB2 pureScale. Se
instala y se configura como parte del proceso de instalación de DB2 y se
configura automáticamente para gestionar distintos errores de hardware y
software.

© Copyright IBM Corp. 2015 7-44


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

• La infraestructura de red utiliza conexiones Infiniband o Ethernet de alta


velocidad y todo el software de clúster adicional se incluye como parte de la
instalación de DB2 pureScale.
• El núcleo de un sistema DB2 pureScale es una arquitectura de disco compartido
basada en IBM GPFS.

© Copyright IBM Corp. 2015 7-45


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Recursos de recuperación adicionales de DB2 (1 de 2)


• Archivado de registro bajo demanda
• Registros activos infinitos
• Transacciones bloqueadas en directorio de registros completo
• Dividir copias de bases de datos duplicadas:
 Mandatos SET WRITE SUSPEND/RESUME
 Modalidades del mandato db2inidb:
− SNAPSHOT: copia de base de datos para informes de prueba
− STANDBY: copia de base de datos para crear base de datos en espera para
recuperación rápida
− MIRROR:uso de copia de base de datos duplicada dividida en lugar de
RESTORE

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Recursos de recuperación adicionales de DB2


Entre otros de los recursos de recuperación de base de datos se incluyen los
siguientes:
• Archivado de registro bajo demanda: mandato ARCHIVE LOG
• Registros activos infinitos: establecimiento de LOGSECOND en -1 para permitir
un número ilimitado de registros secundarios
• Transacciones bloqueadas en directorio de registros completo: la opción de
configuración de base de datos blk_log_dsk_ful.
• Dividir copias de bases de datos duplicadas>:
• Mandatos SET WRITE SUSPEND/RESUME
• Modalidades del mandato db2inidb:
• SNAPSHOT: copia de base de datos para informes de prueba
• STANDBY: copia de base de datos para crear base de datos en espera
para recuperación rápida
• MIRROR: uso de copia de base de datos duplicada dividida en lugar de
RESTORE

© Copyright IBM Corp. 2015 7-46


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Recursos de recuperación adicionales de DB2 (2 de 2)


• Copias de seguridad incrementales y delta de base de datos y espacio
de tabla
• Reubicación de una base de datos o un espacio de tabla:
 RESTORE UTILITY con opción REDIRECT
 Mandato db2relocatedb
• Soporte REBUILD a base de datos completa y parcial
• Soporte integrado a migración tras error del clúster utilizando TSA

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Con las bases de datos DB2, se pueden utilizar algunos recursos adicionales de
recuperación y copia de seguridad de bases de datos de DB2 LUW, como los
siguientes:
• Copias de seguridad incrementales y delta de base de datos y espacio de tabla
• Reubicación de una base de datos o un espacio de tabla
• RESTORE UTILITY con opción REDIRECT
• Mandato db2relocatedb
• Soporte REBUILD a base de datos completa y parcial
• Soporte integrado a migración tras error del clúster: configuración simple de
bases de datos DB2 para un clúster de alta disponibilidad utilizando el producto
IBM TSA for multi-platforms.

© Copyright IBM Corp. 2015 7-47


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Formación disponible sobre la recuperación avanzada en


DB2 LUW
• CL493G: DB2 10 for LUW Advanced Database Recovery
• Duración recomendada: 4 días
• Nivel de conocimientos: avanzado
• Profundice en las características de recuperación avanzada de los
entornos de base de datos DB2 10 for Linux, UNIX, and Windows con
bases de datos de partición única o múltiple. Practique la planificación
y la utilización de muchos de los recursos de recuperación de DB2 en
una serie de escenarios de recuperación de base de datos
completados durante las demostraciones utilizando DB2 Advanced
Enterprise Edition 10.5 for Linux.

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Formación disponible sobre la recuperación avanzada en DB2 LUW


Si usted o algún otro miembro de su empresa quieren obtener más información,
visiten www.ibm.com/services/learning.

© Copyright IBM Corp. 2015 7-48


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Demostración 1
Copia de seguridad y recuperación

• Cree una imagen de copia de seguridad de una base de datos que


incluya todos los espacios de tabla
• Configure una base de datos para cambiar del registro circular al
registro de archivado y conseguir que la base de datos sea totalmente
recuperable.
• Restaure una base de datos desde una imagen de copia de seguridad
y recupere en avance una base de datos para efectuar una
recuperación de punto en el tiempo con el mandato RECOVER.

Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Demostración 1: Copia de seguridad y recuperación

© Copyright IBM Corp. 2015 7-49


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Demostración 1:
Copia de seguridad y recuperación
Objetivo:
en esta demostración, utilizará la base de datos MUSICDB para ejecutar
tareas relacionadas con la copia de seguridad y la recuperación. Durante la
demostración, preparará la base de datos para el registro archivístico, creará
una imagen de copia de seguridad y recuperará la base de datos a un punto
en el tiempo determinado.

Tarea 1. Configurar el espacio de registro disponible para una


base de datos.
1. Inicie la sesión en el sistema Windows con el ID de usuario inst23 y la
contraseña ibm2blue.
El procesador de línea de mandatos de DB2 se utilizará para emitir algunos
mandatos de sistema y de DB2. Tendrá que iniciar la ventana de mandato de
DB2 en modalidad de administrador para emitir estos mandatos de DB2.
2. Para iniciar la ventana de mandatos de DB2, pulse el icono de inicio de
Windows y luego vaya a Todos los programas > IBM DB2 DB2COPY1 >
DB2 Command Window - Administrator. Cuando aparezca la pregunta
"¿Desea permitir que este programa realice cambios en el equipo?", seleccione
Sí.
Para empezar, configuraremos la base de datos con un pequeño espacio de
registro de base de datos para probar su impacto sobre las solicitudes de
aplicación de proceso que superan los límites de espacio de registro de la base
de datos.
Esta tarea se ejecutará utilizando el procesador de línea de mandatos de DB2.
3. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• CD C:\inst23\ddl
• db2 connect to musicdb
• db2 update db cfg using logprimary 3 logsecond 1 logfilsiz 6
El mensaje SQL1363W indica que hay, al menos, un cambio en la
configuración que no entrará en vigor si no se reinicia la base de datos. En este
caso, LOGFILSIZ y LOGPRIMARY no se pueden modificar de manera
dinámica.
El mandato db2pd se puede utilizar para mostrar los valores de configuración
de base de datos actuales y aplazados.

© Copyright IBM Corp. 2015 7-50


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

4. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2.
• db2pd -db musicdb -dbcfg | find "LOG"
La salida del mandato tendrá un aspecto parecido a la siguiente:
CATALOGCACHE_SZ (4KB) 300 300
LOGBUFSZ (4KB) 2149 2149
LOGFILSIZ (4KB) 1024 6
LOGPRIMARY 5 3
LOGSECOND 1 1
NEWLOGPATH (memory)
NEWLOGPATH (disk)
Path to log files (memory) C:\INST23\NODE0000\SQL00001\LOGSTREAM0000\
OVERFLOWLOGPATH (memory)
OVERFLOWLOGPATH (disk)
MIRRORLOGPATH (memory)
MIRRORLOGPATH (disk)
First active log file S0000000.LOG S0000000.LOG
BLK_LOG_DSK_FUL NO NO
BLOCKNONLOGGED NO NO
MAX_LOG 0 0
NUM_LOG_SPAN 0 0
LOGARCHMETH1 (memory) OFF
LOGARCHMETH1 (disk) OFF
LOGARCHCOMPR1 OFF OFF
LOGARCHOPT1
LOGARCHMETH2 (memory) OFF
LOGARCHMETH2 (disk) OFF
LOGARCHCOMPR2 OFF OFF
LOGARCHOPT2
LOGINDEXBUILD 0 0
LOG_DDL_STMTS YES YES
LOG_APPL_INFO YES YES
Ahora, nos conectaremos a la base de datos MUSICDB y ejecutaremos dos
archivos de mandato SQL utilizando el procesador de línea de mandatos de
DB2.
Para el proceso de cambios, se incluye la opción +C para procesar las
sentencias como una única unidad de trabajo o transacción.
El procesador de línea de mandatos de DB2 confirmará automáticamente cada
sentencia procesada de forma predeterminada. La opción +C desactiva la
confirmación automática, por lo que todos los cambios efectuados por distintas
sentencias se deben conservar en los archivos de registro activos de DB2 para
permitir retrotraer los cambios, si fuese necesario.

© Copyright IBM Corp. 2015 7-51


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

5. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2.
• db2 force application all
• db2 terminate
• db2 connect to musicdb
• db2 -tvf create_temp_stock.sql
• db2 +C -tvf stock_insert.sql
La salida del mandato tendrá un aspecto parecido a la siguiente:
set current schema music
DB20000I The SQL command completed successfully.

insert into temp_stock select itemno,type,price,qty from stock where itemno < 100
DB20000I The SQL command completed successfully.

insert into temp_stock select itemno,type,price,qty from stock where itemno < 100
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0964C The transaction log for the database is full. SQLSTATE=57011

insert into temp_stock select itemno,type,price,qty from stock where itemno < 100
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0964C The transaction log for the database is full. SQLSTATE=57011

delete from temp_stock


DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0964C The transaction log for the database is full. SQLSTATE=57011

Cuando se haya llenado el espacio limitado del registro de base de datos, los
cambios de la base de datos generarán un error señalado por el mensaje
SQL0964: "The transaction log for the database is full”.
Utilice el archivo de mandato de DB2 increase_logs.ddl para asignar el
suficiente espacio de registro de base de datos para procesar los cambios en la
base de datos.

© Copyright IBM Corp. 2015 7-52


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

6. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2.
• db2 terminate
• db2 connect to musicdb
• db2 -tvf increase_logs.ddl
• db2 terminate
Ahora, vuelva a intentar ejecutar el archivo de mandato que contiene las
modificaciones de la tabla.
Incluirá la opción +C para procesar las sentencias como una única unidad de
trabajo o transacción.
7. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• db2 connect to musicdb
• db2 +C -tvf stock_insert.sql
• db2 terminate
La salida del mandato tendrá un aspecto parecido a la siguiente:
set current schema music
DB20000I The SQL command completed successfully.

insert into temp_stock select itemno,type,price,qty from stock where itemno < 100
DB20000I The SQL command completed successfully.

insert into temp_stock select itemno,type,price,qty from stock where itemno < 100
DB20000I The SQL command completed successfully.

insert into temp_stock select itemno,type,price,qty from stock where itemno < 100
DB20000I The SQL command completed successfully.

delete from temp_stock


DB20000I The SQL command completed successfully.

El espacio de registro de base de datos aumentado permite que las sentencias


se procesen sin errores.

© Copyright IBM Corp. 2015 7-53


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Tarea 2. Soporte a la recuperación de bases de datos con


registro de archivado.
En esta sección, implementaremos el registro de archivado. Esto permitirá una
recuperación más completa de la base de datos, incluidos los cambios registrados.
De forma predeterminada, la base de datos MUSICDB utiliza el registro circular, que
solo admite la recuperación a nivel de base de datos a una copia anterior de la base de
datos. Ejecutaremos varios conjuntos de cambios de base de datos y, a continuación,
efectuaremos una recuperación de base de datos de punto en el tiempo que incluya
algunos de los cambios. Podría utilizarse para manejar los errores de la aplicación que
provocan que las tablas contengan datos incorrectos.
Para cambiar del registro circular al registro de archivado, es necesario realizar una
copia de seguridad de base de datos fuera de línea, a fin de establecer el punto de
partida donde se conservarán todos los nuevos cambios registrados.
La ubicación de disco C:\inst23\archive se utilizará como ubicación para los registros
de archivado.
La ubicación de disco C:\inst23\backup se utilizará para almacenar el archivo de copia
de seguridad de base de datos.
En este punto, puede elegir entre utilizar el procesador de línea de mandatos de DB2 o
la herramienta Data Server Manager para configurar la base de datos MUSICDB y
ejecutar el registro de archivado.
Tarea 2A. Utilizar el procesador de línea de mandatos de DB2.
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 UPDATE DATABASE CONFIGURATION USING logarchmeth1
"DISK:C:\inst23\archive" logprimary 3 logsecond 10 logfilsiz 1000
LOGINDEXBUILD OFF
• db2 connect reset
• db2 force application all
• db2 terminate
• db2 deactivate database musicdb
• db2 BACKUP DATABASE MUSICDB TO C:\inst23\backup COMPRESS
2. Puede pasar a la Tarea 3.

© Copyright IBM Corp. 2015 7-54


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Tarea 2B. Utilizar la herramienta Data Server Manager.


Podemos utilizar la herramienta DSM para configurar la base de datos a fin de
dar soporte a los archivos de registro archivados. Puede que en el escritorio de
Windows haya un acceso directo a Data Server Manager.
1. Si no es así, abra el navegador Internet Explorer y escriba el siguiente texto de
URL para iniciar el DSM: http//localhost:11080.
Utilice este ID de usuario y esta contraseña para iniciar la sesión en el DSM:
• El ID de usuario de Windows: db2admin
• La contraseña de usuario: ibm2blue
2. Pulse la opción Home, a la izquierda de la aplicación DSM.
La base de datos MUSICDB debería aparecer en la lista con algunas
estadísticas básicas sobre el uso de los recursos, como la CPU, la
entrada/salida y la memoria. El nombre de base de datos MUSICDB
proporciona una lista desplegable para realizar distintas tareas.
3. Seleccione Administer - Explore Database en la lista desplegable de la base
de datos MUSICDB.
Se le solicitará un ID de usuario y una contraseña para la conexión a base de
datos MUSICDB, utilice inst23 con la contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.
4. Pulse Configure Logging (quizás se encuentre en una lista con la etiqueta
More Actions) e indique los valores siguientes en Configure Database Logging
Options:
• Configure database logging type : Archive
• Archive log handling: Automatic DB2 Archive
• Media type: File System
5. Junto a Primary archive log, pulse Browse, localice y seleccione el directorio
C:\inst23\archive y, a continuación, pulse OK.
6. En Choose the number and size of the log, seleccione estas opciones:
• Cantidad de archivos de registro primario: 3
• Cantidad de archivos de registro secundario: 10
• Tamaño de cada archivo de registro: 1000
La herramienta DSM genera la sentencia UPDATE DATABASE
CONFIGURATION y los mandatos que desactivarán la base de datos para
permitir que los cambios entren en vigor.

© Copyright IBM Corp. 2015 7-55


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

7. Pulse Next.
8. En Run method, seleccione Command line processor y, a continuación,
pulse Finish.
9. Pulse Run y espere a que se procesen los mandatos.
10. Cierre el separador Configure Database Logging.
Se ha modificado la configuración de la base de datos, pero ahora se
encuentra en estado Backup Pending. Crearemos una copia de seguridad de
base de datos fuera de línea para permitir que la base de datos empiece el
registro de archivado.
11. En Explore database, pulse Backup.
12. En Back Up Options, establezca Image Type en File System.
13. Pulse Browse para localizar y seleccionar el directorio C:\inst23\backup y, a
continuación, pulse OK.
14. Expanda Options y seleccione el recuadro Compress Backup Image.
La herramienta DSM genera el mandato BACKUP DATABASE.
15. Pulse Next.
16. En Run method, seleccione Command Line Processor y, a continuación,
pulse Finish.
17. Pulse Run y espere a que se procese el mandato BACKUP.
Puede pulsar la 'x' para cerrar el separador Backup database.
Tarea 3. Generar varios conjuntos de modificaciones en la
tabla y anotar el momento específico de cada
modificación.
En esta sección, efectuaremos varios conjuntos de modificaciones y anotaremos la
hora a la que se completa cada conjunto. Ahora, DB2 archiva estas modificaciones
automáticamente.
Un archivo de script denominado stock_insert2.sql contiene dos sentencias SQL.
• La sentencia INSERT añade un conjunto de filas de la tabla MUSIC.STOCK a la
tabla MUSIC.TEMP_STOCK.
• La sentencia SELECT devuelve el recuento de fila actual de la tabla
TEMP_STOCK y la información actual de fecha y hora locales.
Registre estos valores de fecha y hora.
En este punto, puede elegir entre utilizar el procesador de línea de mandatos de DB2 o
la herramienta Data Server Manager para ejecutar el archivo de script SQL que efectúa
los cambios en la tabla TEMP_STOCK.

© Copyright IBM Corp. 2015 7-56


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Tarea 3A. Utilizar el procesador de línea de mandatos de DB2.


1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 -tvf stock_insert2.sql
Registre los siguientes datos del resultado de la sentencia SQL:
Tamaño de tabla actual: ____________ (resultado 1)
Fecha local: _____________ (resultado 1)
Hora local: _____________ (resultado 1)
La salida del mandato tendrá un aspecto parecido a la siguiente:

set current schema music


DB20000I The SQL command completed successfully.

insert into temp_stock select itemno,type,price,qty from stock where TYPE = 'C'
DB20000I The SQL command completed successfully.

SELECT COUNT(*) AS CURRENT_SIZE, CURRENT DATE , CURRENT TIME FROM temp_stock

CURRENT_SIZE 2 3
------------ ---------- --------
259 09/16/2015 06:55:25

1 record(s) selected.
2. Ejecute el archivo de mandato otra vez para efectuar cambios registrados
adicionales y anote los resultados.
• db2 -tvf stock_insert2.sql
Registre los siguientes datos del resultado de la sentencia SQL:
Tamaño de tabla actual: ____________ (resultado 2)
Fecha local: _____________ (resultado 2)
Hora local: _____________ (resultado 2)
3. Puede pasar a la Tarea 4.

© Copyright IBM Corp. 2015 7-57


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Tarea 3B. Utilizar la herramienta Data Server Manager.


Utilizaremos la herramienta Data Server Manager para ejecutar los scripts SQL
que ejecutan los cambios de base de datos.
1. Pulse la opción Home, a la izquierda de la aplicación DSM.
Debería ver la base de datos MUSICDB en la lista. El nombre de base de datos
MUSICDB proporciona una lista desplegable para realizar distintas tareas.
2. Seleccione Administer - Explore Database en la lista desplegable de la base
de datos MUSICDB.
Se le solicitará un ID de usuario y una contraseña para la conexión a base de
datos MUSICDB, utilice inst23 con la contraseña ibm2blue.
A la izquierda de la vista de DSM, puede ver una estructura en árbol de los
objetos de esta base de datos.
3. Pulse Open SQL Editor.
4. Pulse Upload (puede formar parte de una lista etiquetada como More Actions).
5. Pulse Browse para localizar y abrir el archivo C:\inst23\ddl\stock_insert2.sql.
6. Pulse OK para completar la carga del texto SQL en el editor SQL.
Revise las sentencias SQL.
7. Pulse Run y espere a que se procesen las sentencias SQL.
8. En la parte inferior de la sección Results, registre los resultados siguientes:
Tamaño de tabla actual: ____________ (resultado 1)
Fecha local: _____________ (resultado 1)
Hora local: _____________ (resultado 1)
A continuación, ejecutará otra vez el script INSERT para generar un segundo
conjunto de cambios registrados.
9. Pulse Run y espere a que se procesen las sentencias SQL.
10. Registre los siguientes datos del resultado de la sentencia SQL:
Tamaño de tabla actual: ____________ (resultado 2)
Fecha local: _____________ (resultado 2)
Hora local: _____________ (resultado 2)

© Copyright IBM Corp. 2015 7-58


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Tarea 4. Recuperar la base de datos a un punto en el tiempo


concreto.
Ahora, utilizaremos el mandato de base de datos RECOVER para restaurar la
base de datos MUSICDB al punto en el tiempo de la primera ejecución del
script insert de SQL. El mandato RECOVER DATABASE localizará la imagen
de copia de seguridad necesaria utilizando el archivo del historial de
recuperación de base de datos. El mandato RESTORE DATABASE necesitará
que se especifique la ubicación de la copia de seguridad.
El valor del tiempo de destino de la recuperación se especificará como
indicación de fecha y hora, una cadena de caracteres de 7 partes que identifica
una fecha y una hora combinadas.
El formato es aaaa-mm-dd-hh.mm.ss.nnnnnn (año, mes, día, hora, minutos,
segundos, microsegundos).
db2 recover database musicdb to yyyy-mm-dd-hh.mm.ss
(Utilice la fecha y la hora registradas en la Tarea 3 para la primera ejecución).
1. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• db2 terminate
• db2 force application all
• db2 recover database musicdb to aaaa-mm-dd-hh.mm.ss
(Utilice la fecha y la hora registradas para la primera ejecución de
stock_insert2.sql).
A continuación, se conectará a la base de datos y comprobará el recuento de
filas en la tabla MUSIC.TEMP_STOCK.

© Copyright IBM Corp. 2015 7-59


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

2. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2.
• db2 connect to musicdb
• db2 "select count(*) from music.temp_stock "
El recuento debe coincidir con la cantidad de filas registradas para la primera
ejecución del script insert de SQL.
• db2 terminateI
Resultados:
en esta demostración, se ha utilizado la base de datos MUSICDB para ejecutar
la copia de seguridad y las tareas de recuperación relacionadas. Durante la
demostración, ha preparado la base de datos para el registro archivístico, ha
creado una imagen de copia de seguridad y ha recuperado la base de datos a
un punto en el tiempo determinado.

© Copyright IBM Corp. 2015 7-60


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 7 Copia de seguridad y recuperación

Resumen de la unidad
• Describir los principios y métodos más importantes para la copia de
seguridad y la recuperación
• Establecer los tres tipos de recuperación que utiliza DB2
• Explicar la importancia del registro en la copia de seguridad y la
recuperación
• Describir cómo se produce el registro de datos, también el registro
circular y el registro archivístico
• Utilizar los mandatos BACKUP, RESTORE, ROLLFORWARD y
RECOVER
• Ejecutar una copia de seguridad y recuperación del espacio de tabla
• Restaurar una base de datos a un punto en el tiempo o al final de los
registros
• Examinar los parámetros de configuración y el archivo del historial de
recuperación, y utilizarlos para gestionar distintos escenarios de copia
de seguridad y recuperación
Copia de seguridad y recuperación © Copyright IBM Corporation 2015

Resumen de la unidad

© Copyright IBM Corp. 2015 7-61


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8. Bloqueo y simultaneidad

Bloqueo y simultaneidad

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

© Copyright IBM Corp. 2015 8-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Objetivos de la unidad
• Explicar por qué se necesita el bloqueo
• Listar los objetos que se pueden bloquear
• Describir y analizar las distintas modalidades de bloqueo y su
compatibilidad
• Explicar cuatro niveles distintos de protección de datos
• Establecer el nivel de aislamiento y la hora de bloqueo de la actividad
actual
• Explicar el escalamiento y la conversión de bloqueo
• Describir la situación que provoca puntos muertos

Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 8-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

¿Por qué ejecutar un bloqueo?

Anomalía Descripción
Escritura incorrecta Una transacción modifica los datos no validados
modificados por otra transacción que no ha
ejecutado todavía COMMIT o ROLLBACK
Lectura incorrecta Una transacción lee los datos modificados por otra
transacción que no ha ejecutado todavía COMMIT o
ROLLBACK
Lectura aproximada Una transacción que lee los datos no ve los mismos
Lectura no repetible datos que ha visto antes.
Lectura fantasma Una transacción que está leyendo datos ve los
nuevos datos más adelante, en la misma
transacción. Esto sucede cuando otra transacción
inserta o actualiza datos que satisfacen la consulta
de transacciones
Las aplicaciones de DB2 exigen un nivel de aislamiento basado en la
necesidad de evitar estas anomalías

Bloqueo y simultaneidad © Copyright IBM Corporation 2015

¿Por qué ejecutar un bloqueo?


Dado que hay muchos usuarios que acceden a los datos de una base de datos
relacional, y los cambian, el gestor de bases de datos tiene que tener capacidad para
permitir a los usuarios realizar estos cambios y para garantizar la integridad de los
datos. La simultaneidad se refiere al uso compartido de recursos por parte de varios
usuarios o programas de aplicación al mismo tiempo.
Estas son las razones principales por las que los bloqueos son necesarios:
• Garantizar la integridad de los datos. Impedir que una aplicación acceda a un
registro, o lo modifique, mientras otra aplicación tenga el registro bloqueado para
utilizarlo.
• Acceder a datos no validados. La aplicación A puede actualizar un valor de la
base de datos y la aplicación B puede leer el valor antes de confirmarlo. Si más
adelante no se confirma el valor de A, sino que se restituye, los cálculos
efectuados por B se basarán en datos no validados (y, posiblemente, no válidos).
Es posible que quiera leer también los datos no validados para, por ejemplo,
obtener un recuento aproximado del número de registros de un tipo determinado
sin garantía de precisión instantánea. Para hacerlo, puede utilizar un nivel de
aislamiento de Lectura no confirmada (UR). Profundizaremos en el tema más
adelante.

© Copyright IBM Corp. 2015 8-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

El gestor de bases de datos controla este acceso para evitar efectos no deseados,
como los siguientes:
• Actualizaciones perdidas. Dos aplicaciones, A y B, podrían leer la misma fila
de la base de datos y calcular nuevos valores para una de sus columnas en
función de los datos que lean estas aplicaciones. Si A actualiza la fila con el
nuevo valor y B actualiza también la fila, se perderá la actualización efectuada
por A.
• Lecturas no repetibles. Algunas aplicaciones implican la siguiente secuencia de
sucesos: la aplicación A lee una fila de la base de datos y luego pasa a procesar
otras solicitudes SQL. Entretanto, la aplicación B no modifica ni suprime la fila y
confirma el cambio. Si, más adelante, la aplicación A trata de volver a leer la fila
original, recibirá la fila modificada o descubrirá que la fila original se ha suprimido.
• Fenómeno de lectura fantasma. El fenómeno de la lectura fantasma se da
cuando:
1. La aplicación ejecuta una consulta que lee un conjunto de filas en función de
los criterios de búsqueda.
2. Otra aplicación inserta nuevos datos o actualiza datos ya existentes que
satisfacen las consultas de la aplicación.
3. La aplicación repite la consulta desde el Paso 1
(en la misma unidad de trabajo).
4. Se devuelven, como parte del conjunto de resultados, algunas filas
adicionales (fantasma) que no se devolvieron cuando se ejecutó la consulta
inicial (Paso 1).

© Copyright IBM Corp. 2015 8-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Objetos que pueden estar bloqueados


• Los bloqueos del espacio de tabla se
utilizan sobre todo para controlar la
ejecución simultánea en programas Bloqueo
de utilidad como BACKUP, LOAD, de tabla
REORG
Bloqueos de fila
• En el caso de tablas estándar, DB2
adquirirá un bloqueo de tabla y podría
ejecutar también un bloqueo de fila
• En el caso de tablas de clústeres Bloqueo
multidimensionales (MDC), el bloqueo de tabla

podría realizarse también a nivel de Bloqueos


de bloques
bloque (extensión)
Bloqueos de Bloqueo
• En el caso de tablas particionadas fila de tabla
Bloqueo de
por rangos, el bloqueo podría rango de datos
efectuarse en el nivel de partición de Bloqueos de
datos fila
Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Objetos que pueden estar bloqueados


DB2 aplicará bloqueos a los objetos de base de datos en función del tipo de acceso y
el nivel de aislamiento en vigor para la conexión o la sentencia que accede a los datos.
Cuando las aplicaciones acceden a los datos de DB2, no siempre se mantienen los
bloqueos a nivel de espacio de tabla. Los utilizan sobre todo los programas de utilidad
de DB2 para asegurarse de que no se realicen dos operaciones incompatibles al
mismo tiempo. Por ejemplo, un BACKUP en línea no ejecutará al mismo tiempo un
programa de utilidad LOAD que esté procesando una tabla del mismo espacio de
tabla.
En el caso de tablas de DB2 estándar, DB2 adquirirá un bloqueo a nivel de tabla en
función del tipo de acceso. Se necesitaría una sentencia SELECT para adquirir un
bloqueo que permita el acceso de lectura. Una sentencia UPDATE adquiriría un
bloqueo de tabla que permitiese el acceso de escritura.
En la mayoría de los casos, DB2 adquirirá bloqueos de lectura y escritura a nivel de
fila, a fin de permitir a muchas aplicaciones compartir el acceso a la tabla. En algunos
casos, en función del nivel de aislamiento y de la cantidad de datos a los que se va a
acceder, DB2 podría determinar que resulta más eficaz adquirir un único bloqueo de
nivel de tabla y omitir el bloqueo de filas.

© Copyright IBM Corp. 2015 8-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

En el caso de tablas de clústeres multidimensionales (MDC), los datos se almacenan y


se indexan a nivel de bloque (extensión). DB2 puede utilizar los bloqueos a nivel de
bloque para que estas tablas reduzcan la cantidad de bloqueos que serían necesarios
para proteger el acceso a una aplicación. Por ejemplo, una tabla MDC podría tener
unas dimensiones basadas en las columnas de fecha y región. Si los predicados de la
sentencia SQL indican que se recuperarán todas las filas de un intervalo de fechas y
de productos seleccionados, DB2 podrá utilizar los bloqueos a nivel de bloque para
evitar la creación de una larga lista de bloqueos de fila.
En el caso de tablas particionadas por rangos, DB2 puede adquirir bloqueos a nivel de
partición de datos y complementar así los bloqueos de tablas y filas que también se
podrían estar utilizando. Los bloqueos de partición de datos se utilizan también para
controlar el acceso a la tabla cuando se adjunta un nuevo intervalo o se desconecta un
intervalo existente.

© Copyright IBM Corp. 2015 8-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Modalidades de bloqueo de tablas

IN Intent None
IS Intention Share

IX Intention eXclusive

SIX Share with Intention eXclusive

S Share

U Update

X eXclusive

Z superexclusive

Bloqueo de fila también utilizado Bloqueo de tabla estricto

(Vea la página siguiente)

Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Modalidades de bloqueo de tablas


DB2 utiliza las modalidades de bloqueo que se muestran más arriba en el nivel de
tabla. Estas son sus definiciones:
• IN - Intent None: el propietario del bloqueo puede leer los datos en la tabla,
incluidos los datos no validados, pero no los puede actualizar. Otras aplicaciones
simultáneas pueden leer o actualizar la tabla. El propietario del bloqueo no
adquiere bloqueos de fila. En esta modalidad, se pueden bloquear tanto los
espacios de tabla como las tablas.
• IS - Intention Share: el propietario del bloqueo puede leer los datos de la tabla
bloqueada si se puede obtener un bloqueo S en las filas de destino. El
propietario del bloqueo no puede actualizar los datos de la tabla. Otras
aplicaciones pueden leer o actualizar la tabla, siempre que no estén actualizando
aquellas filas en las que el propietario del bloqueo tenga un bloqueo S. En esta
modalidad, se pueden bloquear tanto los espacios de tabla como las tablas.
• IX - Intention Exclusive: el propietario del bloqueo puede leer y actualizar los
datos, siempre que se pueda obtener un bloqueo X en las filas que se van a
modificar y un bloqueo U o S en las filas que se van a leer. Otras aplicaciones
simultáneas pueden leer y actualizar la tabla, siempre que no lean ni actualicen
las filas sobre las que el propietario del bloqueo tenga un bloqueo X. En esta
modalidad, se pueden bloquear tanto los espacios de tabla como las tablas.

© Copyright IBM Corp. 2015 8-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

• SIX - Share with Intention Exclusive: el propietario del bloqueo puede leer los
datos de la tabla y modificar las filas de esta siempre que pueda obtener un
bloqueo X en las filas de destino que se van a modificar. No se obtienen
bloqueos de fila para la lectura. Otras aplicaciones simultáneas pueden leer la
tabla. En esta modalidad, solo se puede bloquear un objeto de tabla. El bloqueo
de tabla SIX constituye un caso especial. Se obtiene si una aplicación es
propietaria de un bloqueo IX sobre una tabla y solicita un bloqueo S, o viceversa.
El resultado de la conversión de bloqueo en estos casos es el bloqueo SIX.
• S - Share: el propietario del bloqueo y todas las aplicaciones simultáneas puede
leer, pero no actualizar, ninguno de los datos de la tabla, ni obtener bloqueos de
fila. En esta modalidad, se pueden bloquear las tablas.
• U - Update: el propietario del bloqueo puede leer los datos de la tabla y modificar
los datos si se puede obtener un bloqueo X en la tabla. No se obtienen bloqueos
de fila. Este tipo de bloqueo puede obtenerse si una aplicación emite una
sentencia SELECT...'for update'. Otras unidades de trabajo pueden leer los datos
del objeto bloqueado, pero no pueden tratar de actualizarlo. En esta modalidad,
se pueden bloquear las tablas.
• X - Exclusive: el propietario del bloqueo puede leer o actualizar los datos de la
tabla. No se obtienen bloqueos de fila. Solo las aplicaciones de lectura no
confirmada pueden acceder al objeto bloqueado. En esta modalidad, se pueden
bloquear las tablas.
• Z - Super Exclusive: este bloqueo se adquiere en una tabla en determinadas
condiciones, por ejemplo, si la tabla se modifica o se descarta, o en algunos tipos
de reorganización de tabla. Ninguna otra aplicación simultánea puede leer ni
actualizar la tabla. En esta modalidad, se pueden bloquear las tablas y los
espacios de tabla. No se obtienen bloqueos de fila.
Las modalidades IS, IX, y SIX se utilizan en el nivel de tabla para dar soporte
(SUPPORT) a los bloqueos de fila. Permiten el bloqueo a nivel de fila y, al mismo
tiempo, evitan otros bloqueos exclusivos en la tabla por parte de otras aplicaciones.
Los ejemplos siguientes se utilizan para aclarar en profundidad las modalidades de
bloqueo de IS, IX, y SIX:
• Una aplicación obtiene un bloqueo IS sobre una tabla. Dicha aplicación podría
adquirir un bloqueo en una fila solo para la lectura. Otras aplicaciones pueden
leer (READ) también la misma fila. Además, otras aplicaciones pueden modificar
(CHANGE) datos de otras filas de la tabla.
• Una aplicación obtiene un bloqueo IX sobre una tabla. Dicha aplicación podría
adquirir un bloqueo en una fila para modificarla. Otras aplicaciones pueden leer o
modificar (READ/CHANGE) los datos de otras* filas de la tabla.

© Copyright IBM Corp. 2015 8-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

• Una aplicación obtiene un bloqueo SIX sobre una tabla. Dicha aplicación podría
adquirir un bloqueo en una fila para modificarla. Otras aplicaciones solo pueden
leer (ONLY READ) otras* filas de la tabla.
Las modalidades S, U, X y Z se utilizan a nivel de tabla para imponer la estrategia de
bloqueo de tabla estricto. Las aplicaciones que cuentan con una de estas
modalidades utilizan el bloqueo que no se aplica al nivel de fila.
Los ejemplos siguiente se utilizan para aclarar en profundidad las modalidades de
bloqueo de S, U, X y Z:
• Una aplicación obtiene un bloqueo S sobre una tabla. Dicha aplicación puede
leer cualquier dato de la tabla. Permitirá a otras aplicaciones obtener bloqueos
que den soporte a solicitudes de solo lectura para todos los datos de la tabla.
Ninguna aplicación puede cambiar (CHANGE) los datos de la tabla hasta que se
libere el bloqueo S.
• Una aplicación obtiene un bloqueo U sobre una tabla. Dicha aplicación puede
leer todos los datos de dicha tabla y podría modificar sus datos si obtuviese un
bloqueo X. Otras aplicaciones solo pueden leer (READ) los datos de la tabla.
• Una aplicación obtiene un bloqueo X sobre una tabla. Dicha aplicación puede
leer y modificar alguno de los datos de la tabla, o todos ellos. Ninguna otra
aplicación puede acceder a los datos de toda la tabla para leerlos o modificarlos
(READ* o CHANGE).
• Una aplicación obtiene un bloqueo Z sobre una tabla. Dicha aplicación puede
leer y modificar alguno de los datos de la tabla, o todos ellos. Ninguna otra
aplicación puede acceder a los datos de toda la tabla para leerlos o modificarlos
(READ o CHANGE).
La modalidad IN se utiliza en la tabla para permitir el concepto de Lectura no
confirmada. Una aplicación que utilice este bloqueo no obtendrá bloqueos a nivel de
fila.
* Indica una excepción para un caso de ejemplo de aplicación determinado. Las
aplicaciones que utilizan la Lectura no confirmada pueden leer las filas que se han
modificado. Más adelante, en esta misma unidad, se proporciona información sobre la
Lectura no confirmada.
Nota: algunas de las modalidades de bloqueo analizadas están disponibles también
al nivel del espacio de tabla. Por ejemplo, un bloqueo IS al nivel del espacio de
tabla admite un bloqueo IS o S al nivel de tabla. Sin embargo, en esta unidad no se
ofrecerá información detallada sobre el bloqueo del espacio de tabla.

© Copyright IBM Corp. 2015 8-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Modalidades de bloqueo de filas

Bloqueo de tabla
Bloqueo de fila
mínimo* admitido

S Share IS
U Update IX
X eXclusive IX
W Weak exclusive IX
NS Next key Share IS
NW Next key Weak exclusive IX

DB2 no necesita adquirir Bloqueos de fila


si existe uno de estos S, U, X o Z
bloqueos en un nivel superior
(tabla, bloque)
Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Modalidades de bloqueo de filas


Las modalidades anteriores se refieren a los bloqueos de fila. Las definiciones son
parecidas a las de los bloqueos de tabla correspondientes, salvo porque el objeto del
bloqueo es una fila
• S - Share: una aplicación está leyendo (READ) la fila y está disponible solo para
lectura (READ ONLY) por parte de otras aplicaciones.
• U - Update: Una aplicación está leyendo (READ) la fila, pero es posible que
dicha aplicación la modifique. La fila está a disposición de otras aplicaciones,
pero solo para lectura (READ ONLY). La principal diferencia entre el bloqueo U y
el bloqueo S radica en INTENT TO UPDATE. El bloqueo U admite los cursores
abiertos con la cláusula FOR UPDATE OF. Solo una aplicación puede ser
propietaria de un bloqueo U en la fila.
• X - Exclusive: la fila está siendo modificada por una aplicación y no está a
disposición de otras aplicaciones, salvo aquellas que permiten la Lectura no
confirmada.

© Copyright IBM Corp. 2015 8-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

• W - Weak Exclusive: este bloqueo se adquiere en la fila cuando se inserta una


fila en una tabla que no es de catálogo y se encuentra una clave duplicada para
un índice exclusivo. El propietario del bloqueo puede modificar la fila bloqueada.
Este bloqueo es parecido a un bloqueo X, salvo por el hecho de que no es
compatible con el bloqueo NW.
• NS - Next Key Share: el propietario del bloqueo y todas las aplicaciones
simultáneas pueden leer, pero no modificar, la fila bloqueada. Solo se pueden
bloquear filas individuales en modalidad NS. Este bloqueo se adquiere en lugar
de un bloqueo compartido (S) en los datos que se leen con los niveles de
aislamiento RS o CS.
• NW - Next Key Weak Exclusive: este bloqueo se adquiere en la fila siguiente
cuando se inserta una fila en el índice de una tabla que no es de catálogo. El
propietario del bloqueo puede leer, pero no modificar, la fila bloqueada. Es similar
a los bloqueos X y NX, salvo por el hecho de que es compatible con los bloqueos
W y NS.
Los bloqueos de fila solo los solicitan las aplicaciones que tienen bloqueos de soporte
a nivel de tabla. Estos bloqueos de soporte son los bloqueos INTENT: IS, IX y SIX.
* Indica el bloqueo menos restrictivo admisible. Sin embargo, esto no quiere decir que
el bloqueo de tabla que aparece en la lista sea el único bloqueo de tabla que da
soporte al bloqueo de fila mostrado. Por ejemplo, una aplicación propietaria de un
bloqueo de tabla IX podría ser propietaria de los bloqueos S, U o X en las filas. Del
mismo modo, una aplicación propietaria de un bloqueo de tabla SIX podría ser
propietaria bloqueos X en las filas.

© Copyright IBM Corp. 2015 8-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Compatibilidad de modalidad de bloqueo


MODALIDAD MODALIDAD DEL BLOQUEO B
DEL
BLOQUEO A IN IS S IX SIX U X Z
IN SÍ SÍ SÍ SÍ SÍ SÍ SÍ NO
IS SÍ SÍ SÍ SÍ SÍ SÍ NO NO
S SÍ SÍ SÍ NO NO SÍ NO NO
IX SÍ SÍ NO SÍ
Bloqueos de tabla
NO NO NO NO
SIX SÍ SÍ NO NO NO NO NO NO
U SÍ SÍ SÍ NO NO NO NO NO
X SÍ NO NO NO NO NO NO NO
Z NO NO NO NO NO NO NO NO

MODALIDAD MODALIDAD DEL BLOQUEO B


DEL
BLOQUEO A S U NW
X W NS
S SÍ SÍ NO NO SÍ NO
U SÍ NO NO NO SÍ NO
Bloqueos de fila X NO NO NO NO NO NO
W NO NO NO NO NO SÍ
NS SÍ SÍ NO NO SÍ SÍ
NW NO NO NO SÍ SÍ NO
Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Compatibilidad de modalidad de bloqueo


Los símbolos A y B de los diagramas anteriores se utilizan para representar dos
aplicaciones distintas. El gráfico relacionado con los bloqueos de tabla se puede utilizar
para determinar si las dos aplicaciones se pueden ejecutar simultáneamente en caso
de que estén solicitando acceso a la misma tabla con una modalidad de bloqueo
determinada.
Por ejemplo, si la aplicación A obtiene un bloqueo IS sobre una tabla determinada, la
aplicación B podría obtener un bloqueo IN, IS, S, IX, SIX o U sobre la misma tabla al
mismo tiempo. Sin embargo, no se permitiría un bloqueo X o Z al mismo tiempo.
Este ejemplo concreto ilustra el concepto del bloqueo IS en un caso en el que actúa
como bloqueo de soporte para un nivel de bloqueo inferior. Los únicos bloqueos de
tabla que no son compatibles son los bloqueos X y Z, que requieren el uso exclusivo
de la tabla. La presencia del bloqueo IS indica que se necesita un nivel inferior de
bloqueo para la tabla, pero no aparecen las solicitudes de bloqueo X o Z.

© Copyright IBM Corp. 2015 8-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

El análisis del gráfico refuerza las definiciones de las modalidades de bloqueo de filas y
tablas presentadas en las dos páginas anteriores. Revise la fila de IX bajo la aplicación
A. Presuponga que la aplicación A obtiene un bloqueo IX en la tabla Y. Este bloqueo
indica que la aplicación pretende obtener bloqueos que den soporte a las
modificaciones a nivel de filas. La aplicación permite que se lean y se actualicen otras
filas, pero impide el acceso a las filas de destino (excepto las de las aplicaciones de
Lectura no confirmada).
Examine cada uno de los posibles bloqueos de tabla candidatos que podría solicitar la
aplicación B:
• IN: sin propósito de bloqueo de fila. Este bloqueo es compatible. No habrá
contienda, ya que la aplicación B solicita una Lectura no confirmada. También
están disponibles las filas modificadas y no confirmadas por la aplicación A. (El
bloqueo Z es la única modalidad que no es compatible con IN).
• IS: propósito de bloqueo de solo lectura a nivel de fila. Este bloqueo es
compatible. Puede haber contienda a nivel de fila si la aplicación A modifica la
misma fila que la aplicación B quiere leer. Sería necesario examinar la tabla
Bloqueos de fila: si la aplicación A ha adquirido un bloqueo X o W en la fila que la
aplicación B está intentando leer, la aplicación B tendrá que esperar. De lo
contrario, las dos aplicaciones pueden continuar en simultaneidad.
• S: compartir bloqueo a nivel de tabla. Este bloqueo NO es compatible, ya que el
bloqueo S indica que toda la tabla está disponible solo para lectura (READ
ONLY) para la aplicación propietaria del bloqueo y el resto de las aplicaciones. El
bloqueo IX indica el propósito de modificar los datos a nivel de fila, lo que
contradice el requisito de solo lectura (READ ONLY). Por lo tanto, la aplicación B
no podría obtener el bloqueo S.
• IX: propósito de bloqueo para efectuar modificaciones a nivel de fila. Este
bloqueo es compatible. Puede haber contienda a nivel de fila si la aplicación A
modifica la misma fila que la aplicación B quiere modificar. Sería necesario
examinar la tabla Bloqueos de fila: si la aplicación A ha adquirido un bloqueo X o
W en la fila que la aplicación B está intentando modificar, la aplicación B tendrá
que esperar. De lo contrario, las dos aplicaciones pueden continuar en
simultaneidad.
• SIX: el bloqueo SIX indica que la aplicación propietaria del bloqueo podría
necesitar una solicitud de bloqueo para modificar los datos a nivel de fila.
Además, el resto de la tabla está disponible para aplicaciones de solo lectura
(READ ONLY). El bloqueo IX implica también el cambio a nivel de fila. La
aplicación B no podía obtener el bloqueo SIX en la tabla debido a la
característica S del bloqueo SIX, que no es compatible con el bloqueo IX ya
propiedad de la aplicación A.

© Copyright IBM Corp. 2015 8-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

• U: lectura con propósito de actualización. Este bloqueo a nivel de tabla indica


que la aplicación propietaria del bloqueo podría leer cualquier dato y cambiar el
bloqueo U por un bloqueo X. Sin embargo, hasta que se efectúe este cambio,
otras aplicaciones pueden obtener bloqueos con soporte para solo lectura
(READ ONLY). La aplicación B NO podría obtener el bloqueo U mientras la
aplicación A fuese propietaria de un bloqueo IX sobre la misma tabla.
• X: la aplicación propietaria de esta modalidad de bloqueo sobre la tabla necesita
utilizar la tabla en exclusiva. No se permite ningún otro acceso, excepto el de las
aplicaciones Lectura no confirmada. El bloqueo IX propiedad de la aplicación A
evitaría que la aplicación B obtuviese un bloqueo X.
• Z: la aplicación propietaria de esta modalidad de bloqueo excluye cualquier otro
acceso a la tabla, incluidas las aplicaciones de Lectura no confirmada. Dado que
la aplicación A ha obtenido un bloqueo incompatible (IX), la aplicación B no
podría obtener el bloqueo Z al mismo tiempo.
Este mismo tipo de sentencias podrían derivarse de forma lógica de otras filas del
gráfico.
Muchas aplicaciones distintas podrían disponer de bloqueos compatibles en el mismo
objeto. Por ejemplo, diez transacciones podrían tener bloqueos IS sobre una tabla,
mientras que cinco transacciones distintas podrían tener bloqueos IX sobre la misma
tabla. No existe ningún problema de simultaneidad a nivel de tabla en un escenario de
este tipo. Sin embargo, podría existir una contención de bloqueo a nivel de fila:
• El concepto básico de la matriz de bloqueo de fila es que las filas que está
leyendo (READ) una aplicación también las pueden leer otras aplicaciones y que
las filas que está modificando una aplicación no están a disposición de otras
aplicaciones que utilizan el bloqueo de fila.
Tenga en cuenta que el bloqueo de fila U no es compatible con otro bloqueo de fila U.
Solo una aplicación puede leer una fila con propósito de actualizar (INTENT TO
UPDATE). Este bloqueo U reduce el número de puntos muertos que se producen
cuando las aplicaciones efectúan actualizaciones y supresiones utilizando cursores. Si
una fila se captura (FETCHED) utilizando un cursor declarado ...FOR UPDATE OF...,
se utiliza el bloqueo de fila U.

© Copyright IBM Corp. 2015 8-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Selección de niveles de aislamiento (1 de 2)


• Un nivel de aislamiento determina cómo se bloquean o se aíslan los
datos, con respecto a otros procesos, cuando se está accediendo a
ellos
• DB2 proporciona distintos niveles de protección para aislar los datos:
 Lectura no confirmada (UR)
 Estabilidad de cursor (CS): (valor predeterminado) el comportamiento del
bloqueo depende de CUR_COMMIT en la configuración de base de datos:
− ON: el acceso de solo lectura no adquiere bloqueos a nivel de fila
− AVAILABLE: las aplicaciones pueden seleccionar la modalidad "currently
committed" para evitar el bloqueo de filas
− DISABLE: el acceso de solo lectura adquirirá bloqueos a nivel de fila (anterior a la
modalidad DB2 9.7)
 Estabilidad de lectura (RS)
 Lectura repetible (RR)

Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Selección de niveles de aislamiento


El nivel de aislamiento asociado a un proceso de aplicaciones determina el grado de
bloqueo o aislamiento de los datos a los que está accediendo el proceso con respecto
a otros procesos activos simultáneos. El nivel de aislamiento está vigente mientras se
ejecuta la unidad de trabajo.
Por lo tanto, el nivel de aislamiento de un proceso de aplicaciones especifica:
• En qué medida las filas leídas o actualizadas por la aplicación están a
disposición de otros procesos de aplicación activos simultáneos
• En qué medida la actividad de actualización de otros procesos de aplicación
activos simultáneos puede afectar a la aplicación
• El nivel de aislamiento de las sentencias de SQL estático se especifica como
atributo de un paquete y se aplica a los procesos de aplicación que utilizan dicho
paquete. El nivel de aislamiento se especifica durante el proceso de preparación
del programa definiendo la opción para precompilar o enlazar el aislamiento
(ISOLATION).

© Copyright IBM Corp. 2015 8-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

• En el caso de sentencias de SQL dinámico, el nivel de aislamiento


predeterminado es el nivel de aislamiento predeterminado especificado para el
paquete que está preparando la sentencia. Utilice la sentencia SET CURRENT
ISOLATION para especificar un nivel de aislamiento distinto para las sentencias
de SQL dinámico emitidas en una sesión. Para obtener más información,
consulte el "registro especial CURRENT ISOLATION".
• Para las sentencias de SQL dinámico y SQL estático, la cláusula de aislamiento
de una sentencia SELECT sustituye al registro especial (si está definido) y al
valor de la opción de enlace. Para obtener más información, consulte "sentencia
SELECT".
• Los niveles de aislamiento los imponen los bloqueos y el tipo de bloqueo
utilizado limita o impide el acceso a los datos por parte de procesos de
aplicaciones simultáneos.
• Las tablas temporales declaradas y sus filas no pueden estar bloqueadas porque
solo la aplicación que las declaró puede acceder a ellas.
Nota: la opción de configuración de base de datos CUR_COMMIT se puede utilizar
para especificar el tipo de bloqueo efectuado para el acceso de solo lectura que es
requerido con el nivel de aislamiento Estabilidad de cursor (CS). El bloqueo de DB2
tradicional efectuado para el aislamiento de CS adquiere un único bloqueo de lectura a
nivel de fila para la fila a la que se está accediendo actualmente. Con el método
"currently committed", no se adquieren estos bloqueos de fila. Si DB2 detecta una
condición según la que una fila a la que es necesario acceder se define como cambio
no validado, se recuperarán y se devolverán en su lugar los datos de la fila anteriores
al cambio.

© Copyright IBM Corp. 2015 8-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Selección de niveles de aislamiento (2 de 2)


• Se puede especificar el nivel de aislamiento de una sesión, una
conexión de cliente o una aplicación antes de una conexión a base de
datos o para una sentencia SQL específica:
 Para el SQL incorporado: el nivel se establece a la hora de enlace
 Para el SQL dinámico: el nivel se establece en el tiempo de ejecución
 SELECT … WITH UR | CS | RS | RR
select * from prod.department with UR
 SET CURRENT ISOLATION
Set current isolation RS

Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Opciones para seleccionar el nivel de aislamiento


• A nivel de sentencia:
Utilice la cláusula WITH. La cláusula WITH no se puede utilizar con
subconsultas. La opción WITH UR se aplica solo a operaciones de solo lectura.
En otros casos, la sentencia se cambia automáticamente de UR a CS.
Este nivel de aislamiento sustituye al nivel de aislamiento especificado para el
paquete en el que se encuentra la sentencia. Puede especificar un nivel de
aislamiento para las siguientes sentencias SQL:
• DECLARE CURSOR
• Searched DELETE
• INSERT
• SELECT
• SELECT INTO
• Searched UPDATE
Nota: los niveles de aislamiento de las sentencias XQuery no se pueden
especificar al nivel de sentencia.

© Copyright IBM Corp. 2015 8-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

• En el caso de SQL dinámico en la sesión actual:


Utilice la sentencia SET CURRENT ISOLATION para definir el nivel de
aislamiento para el SQL dinámico emitido en una sesión. Al emitir esta sentencia,
se define el registro especial CURRENT ISOLATION en un valor que especifica
el nivel de aislamiento de las sentencias de SQL dinámico emitidas en la sesión
actual. Una vez definido, el registro especial CURRENT ISOLATION proporciona
el nivel de aislamiento de cualquier sentencia subsiguiente de SQL dinámico
compilada en la sesión, independientemente del paquete que haya emitido la
sentencia. Este nivel de aislamiento estará vigente hasta que la sesión finalice o
hasta que se emita la sentencia SET CURRENT ISOLATION...RESET.
• Durante la precompilación o el enlace:
Para una aplicación escrita en un lenguaje compilado compatible, utilice la
opción ISOLATION de los mandatos PREP o BIND. También puede utilizar la
API sqlaprep o sqlabndx para especificar el nivel de aislamiento.
• Si crea un archivo de enlace durante la precompilación, el nivel de aislamiento
se almacenará en el archivo de enlace. Si no especifica un nivel de
aislamiento durante el enlace, el valor predeterminado será el del nivel de
aislamiento utilizado durante la precompilación.
• Si no especifica un nivel de aislamiento, se utilizará el valor predeterminado
de estabilidad de cursor (CS).

© Copyright IBM Corp. 2015 8-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Niveles de aislamiento de DB2 y ANSI:


cómo permitir o impedir anomalías

DB2 ANSI Dirty Dirty Fuzzy Read Phantom


Isolation Isolation Write Read Read
Uncommitted Read
Read Uncommitted
(UR) (Level 0)

Cursor Read
Stability Committed
(CS) (Level 1)

Read Repeatable
Stability Read
(RS) (Level 2)

Repeatable Serializable
Read (Level 3)
(RR)

Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Niveles de aislamiento de DB2 y ANSI: cómo permitir o impedir anomalías


Se pueden utilizar niveles de aislamiento de DB2 para controlar las anomalías que
podría experimentar una aplicación.
Escritura incorrecta: actualizaciones perdidas. Dado que se utilizan bloqueos
exclusivos para todas las actualizaciones, independientemente del nivel de
aislamiento, DB2 siempre impedirá que otra aplicación modifique una fila que contenga
un cambio no validado.
Lectura incorrecta: acceso a datos no validados. Solo el nivel de aislamiento de la
lectura no confirmada permite a las aplicaciones acceder a un cambio no validado en la
base de datos. Los restantes niveles de aislamiento impiden las lecturas incorrectas.
Lecturas no repetibles: los niveles de aislamiento RS y RR contienen bloqueos de
lectura en todas las filas recuperadas hasta que la transacción finaliza, lo que permite
impedir las lecturas no repetibles.
Fenómeno de lectura fantasma: solo el nivel de aislamiento RR adquiere los
bloqueos necesarios para impedir que se produzcan lecturas fantasma.

© Copyright IBM Corp. 2015 8-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Bloqueo para disponer de acceso de solo lectura


Nivel de Métodos de bloqueo para el acceso de solo lectura Acceso permitido a los
aislamiento cambios no validados
Lectura no IN: bloqueo de tabla Sí
confirmada Sin bloqueos de fila para el acceso de solo lectura
Se accede a las filas no confirmadas desde la agrupación de
almacenamiento intermedio

Estabilidad de IS: bloqueo de tabla No


cursor Sin bloqueos de fila para el acceso de solo lectura
Utiliza Currently La versión antigua de las filas con cambios no validados se leen
Committed desde las entradas del registro

Estabilidad de IS: bloqueo de tabla No


cursor Bloqueo de fila NS mantenido en la fila actual del conjunto de
No utiliza resultados
Currently Espera de bloqueo utilizada para retrasar el acceso a cambios no
Committed validados en la agrupación de almacenamiento intermedio.

Estabilidad de IS: bloqueo de tabla No


lectura Bloqueos de fila NS mantenidos en el conjunto de resultados
hasta la confirmación
Espera de bloqueo utilizada para retrasar el acceso a cambios no
validados en la agrupación de almacenamiento intermedio.

Lectura repetible IS: bloqueo de tabla No


Bloqueos de fila S mantenidos en todas las filas a las que se
accede hasta la confirmación
Espera de bloqueo utilizada para retrasar el acceso a cambios no
validados en la agrupación de almacenamiento intermedio.
Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Bloqueo para disponer de acceso de solo lectura


Los tipos de bloqueos de tabla y fila utilizados para el acceso de solo lectura variarán
en función del nivel de aislamiento en vigor para dicha sentencia.
En el caso de la lectura no confirmada (UR), DB2 adquirirá el bloqueo Intent None (IN)
para la tabla, pero no los bloqueos de nivel de fila. En esta modalidad, un cambio no
validado puede ser leído por la aplicación.
En el caso de la Estabilidad de cursor (CS), el bloqueo efectuado dependerá de si se
está utilizando la modalidad actualmente confirmada.
• Si la opción "currently committed" está activada, DB2 adquirirá el bloqueo Intent
Share (IS) para la tabla, pero no los bloqueos a nivel de fila. Si DB2 encuentra
una fila con un cambio no validado, se leen y se devuelven los datos anteriores.
• Si la opción "currently committed" está desactivada, DB2 adquirirá el bloqueo
Intent Share (IS) para la tabla y un bloqueo de fila NS para la fila actual en un
resultado. El bloqueo se libera cuando se accede a la fila siguiente. Si DB2
encuentra una fila con un cambio no validado, se generará una condición de
espera.

© Copyright IBM Corp. 2015 8-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

En el caso de la Estabilidad de lectura (RS), DB2 adquirirá el bloqueo Intent Share (IS)
para la tabla y adquirirá un bloqueo de fila NS para la fila actual en un resultado. Estos
bloqueos de fila no se liberarán hasta que la transacción se haya confirmado o
retrotraído. Si DB2 encuentra una fila con un cambio no validado, se generará una
condición de espera.
En el caso de Lectura repetible (RR), DB2 adquirirá el bloqueo Intent Share (IS) para la
tabla y adquirirá un bloqueo de fila S para cualquier fila a la que se acceda para
generar el resultado. En algunos casos, DB2 podría procesar un número muy grande
de filas para generar un resultado relativamente pequeño. En esta modalidad, se
necesitaría una gran cantidad de bloqueos de fila. Estos bloqueos de fila no se
liberarán hasta que la transacción se haya confirmado o retrotraído. Si DB2 encuentra
una fila con un cambio no validado, se generará una condición de espera.

© Copyright IBM Corp. 2015 8-22


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Cómo funciona el método "Currently Committed"


(Actualmente confirmado) para el aislamiento de CS
Aplicación A Aplicación B
Actualiza varias filas Lee las filas confirmadas utilizando datos
de registro cuando se necesitan
Nuevos datos de la agrupación de
almacenamiento intermedio

Almacenamiento
200 nuevas 300 nuevas intermedio de registro
Agrupaciones de
Solo lectura 200 antiguas 200 nuevas
almacenamiento intermedio
201 nuevas 301 nuevas Actualización Lector de registros
100 101 confirmada Grabador de
registros
Actualización
no confirmada
Servidores Limpiadores de Archivos de
de E/S página registro activos

300 nuevas 300 antiguas


100 300 antiguas
301 nuevas 201 nuevas 201 nuevas 201 antiguas

301 nuevas 301 antiguas


101 200 antiguas

No se accede a los registros archivados


Espacio de tabla
para recuperar la fila de datos validados
Contenedores
Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Cómo funciona el método "Currently Committed" (Actualmente confirmado) para el


aislamiento de CS
Cuando una aplicación realiza un cambio en una fila, este se refleja de inmediato en la
página de datos que se encuentra en la agrupación de almacenamiento intermedio. El
cambio se registra en las entradas del registro que se encuentran en el
almacenamiento intermedio de registro de la memoria y, a continuación, se escriben en
un archivo de registro.
Con la opción "currently committed" activada, DB2 gestiona el bloqueo y el acceso a
los datos en solicitudes de solo lectura utilizando de otra manera el aislamiento de
estabilidad de cursor.
En la imagen, se muestran dos aplicaciones que acceden a una base de datos DB2.
La aplicación A ha ejecutado algunas lecturas (fila 100) y ha realizado varios cambios
(filas 200 y 201), pero no ha confirmado dichos cambios. La entrada del registro que
contiene el cambio de la fila 200 se mantiene en el almacenamiento intermedio de
registro, pero el cambio realizado en la fila 201 ya se ha escrito en un archivo de
registro del disco.

© Copyright IBM Corp. 2015 8-23


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

La aplicación B se ejecuta bajo el aislamiento de estabilidad de cursor y la opción


"currently committed" está activada. La aplicación tiene que leer y devolver los datos de
las filas 101, 200, 201 y 300. Las filas 101 y 300 se encuentran actualmente en la
agrupación de almacenamiento intermedio y no existe ningún cambio no validado, por
lo que se pueden devolver sin utilizar ningún bloqueo de fila. Dado que las versiones
de las filas 200 y 201 que se encuentran en la agrupación de almacenamiento
intermedio contienen cambios no validados, DB2 no puede permitir que una aplicación
B vea dichos cambios, con arreglo a las reglas de estabilidad de cursor. En lugar de
esperar a que los cambios se validen o se retrotraigan, DB2 accederá a la versión
anterior de la fila grabada en las entradas del registro y devolverá dichos datos a la
aplicación B. Tampoco se necesitarán bloqueos de fila para estas filas.
La ventaja es el beneficio de rendimiento que se obtiene al evitar una espera de
bloqueo y al reducir la necesidad de memoria de bloqueo.
Esta modalidad necesita que la versión anterior completa de una fila se incluya en la
entrada del registro, lo que podría incrementar la cantidad de información registrada.
En algunos casos, el registro incrementado podría impactar en el rendimiento global de
la base de datos.
Para dar soporte a la opción de bloqueo "currently committed", DB2 solo accederá a la
información del almacenamiento intermedio de registro o desde un archivo de registro
activo en el disco. DB2 no recuperará ningún archivo de registro para dar soporte a
una aplicación que utilice la modalidad "currently committed" y, en su lugar, pasará a
adquirir bloqueos.

© Copyright IBM Corp. 2015 8-24


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Sentencia LOCK TABLE


IS IX

S X
S X
El gestor de base de datos
S ha determinado la estrategia X

Problemas de la aplicación:
LOCK TABLE name
EN MODALIDAD

SHARE EXCLUSIVE
S X

—o—
El administrador modifica la tabla:
ALTER TABLE tbl
LOCKSIZE {TABLE | ROW}
Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Sentencia LOCK TABLE


El nivel de aislamiento y la estrategia de acceso son factores que incluyen en el gestor
de base de datos cuando decide qué estrategia de bloqueo utilizar al leer o manipular
los datos. Normalmente, se utilizan bloqueos INTENT a nivel de tabla, y en bloqueos
de fila, para dar soporte a las aplicaciones orientadas a transacciones.
Sin embargo, el uso de bloqueos INTENT puede no ser la opción adecuada para una
aplicación determinada.
La sentencia LOCK TABLE proporciona al programador de aplicaciones la flexibilidad
necesaria para bloquear una tabla en una modalidad más restrictiva que la solicitada
por el gestor de base de datos. Solo las aplicaciones que necesitan una modalidad de
bloqueo más restrictiva deben emitir la sentencia LOCK TABLE. Dichas aplicaciones
podrían incluir los programas de informes que muestran instantáneas de los datos en
un punto en el tiempo específico o los datos que modifican programas que,
normalmente, no realizan cambios en partes significativas de una tabla, salvo durante
determinados periodos, como el procesamiento de cierre de mes.
• SHARE MODE permite que otros procesos seleccionen (SELECT) datos en la
tabla (TABLE), pero no permiten operaciones de tipo INSERT, UPDATE o
DELETE.

© Copyright IBM Corp. 2015 8-25


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

• EXCLUSIVE MODE evita que otros procesos ejecuten operaciones en la tabla,


con la salvedad de las aplicaciones de lectura no confirmada.
Los bloqueos obtenidos con la sentencia LOCK TABLE se adquieren cuando se
ejecuta la sentencia. Estos bloqueos se liberan mediante confirmación o retrotracción.
También es posible modificar la tabla para indicar el tamaño (granularidad) de los
bloqueos utilizados cuando se accede a la tabla. Si se indica LOCKSIZE TABLE, se
adquiere el bloqueo exclusivo o compartido adecuado para la tabla y no se utilizan los
bloqueos INTENT (a excepción de Intent None). El uso de este valor podría mejorar el
rendimiento de las consultas, al limitar la cantidad de bloqueos que es necesario
adquirir. Sin embargo, también se reduce la simultaneidad, dado que todos los
bloqueos se posponen en la tabla completa.
Aunque la estrategia de bloqueos INTENT es habitual en las aplicaciones típicas
orientadas a las transacciones, existen situaciones en las que el gestor de base de
datos seleccionará el bloqueo de tabla estricto. Por ejemplo, al nivel de aislamiento
Lectura repetible, combinado con una estrategia de acceso TABLE SCAN o INDEX
SCAN sin cláusula WHERE, se le dará soporte con un bloqueo de tabla estricto. Si el
bloqueo de tabla estricto resultante genera problemas de simultaneidad inaceptables,
será necesario examinar las aplicaciones que utilicen la Lectura repetible para
determinar si se puede utilizar una estrategia de acceso distinta o si se puede modificar
el nivel de aislamiento. La Lectura repetible se puede simular de manera lógica,
aunque el código de aplicación requerido para ello puede acarrear un elevado coste de
desarrollo, mantenimiento, o ambos.
El bloqueo de tabla estricto no se puede evitar si se emite un DDL sobre una tabla o un
índice. Siempre que sea posible, el administrador de base de datos tiene que restringir
el envío de dichas sentencias a periodos de poca actividad.
En cualquier caso, los bloqueos de tabla estrictos determinados durante el proceso de
optimización se externalizan con la función Explain.

© Copyright IBM Corp. 2015 8-26


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Establecimiento de LOCKLIST y MAXLOCKS para controlar


los escalamientos de bloqueo
Es posible configurar LOCKLIST y MAXLOCKS en AUTOMATIC para utilizar
la gestión de memoria de autoajuste de DB2

m e
a x

.
.........
locklist x c
l e
o d

.........
X
X c i
k d
maxlocks s o
X
IX X

APLICACIÓN EN PROCESO DE ESCALADO OTRAS APLICACIONES

X
X
IX
l X
............

............
.
.........

locklist c ll
k e
l n
i o
s
t

Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Establecimiento de LOCKLIST y MAXLOCKS para controlar los escalamientos de


bloqueo
Para dar servicio a todas las aplicaciones posibles, el gestor de base de datos
proporciona la función de escalamiento de bloqueo. Este proceso implica la obtención
de un bloqueo de tabla y la liberación de bloqueos de fila. El efecto deseado del
proceso pasa por reducir el requisito de almacenamiento global para bloqueos del
gestor de base de datos. Esto permitirá a otras aplicaciones obtener los bloqueos
necesarios.
Dos parámetros de configuración de base de datos ejercen un impacto directo sobre el
proceso de escalamiento de bloqueo:
• locklist: número de páginas de 4 KB asignadas en la memoria global de la base
de datos para el almacenamiento de bloqueos. Este parámetro se puede
configurar en línea.
El valor predeterminado para locklist y maxlocks es AUTOMATIC, por lo que las
rutinas de gestión de memoria de autoajuste pueden ajustar el tamaño de locklist
y maxlocks para satisfacer las demandas de la carga de trabajo actual.
• maxlocks: porcentaje de locklist total que permite una única aplicación. Este
parámetro se puede configurar en línea.

© Copyright IBM Corp. 2015 8-27


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

El escalamiento de bloqueo se puede producir en dos situaciones distintas:


• Una única aplicación solicita un bloqueo que hará que la aplicación supere el
porcentaje del locklist total definido por maxlocks. El gestor de base de datos
tratará de liberar espacio de memoria obteniendo un bloqueo de tabla y liberando
bloqueos de fila para la aplicación solicitante.
• Una aplicación desencadena el escalamiento de bloqueo porque el locklist total
está completo. El gestor de base de datos tratará de liberar espacio de memoria
obteniendo un bloqueo de tabla y liberando bloqueos de fila para la aplicación
solicitante. Tenga en cuenta que la aplicación que se va a escalar podría
contener, o no, una cantidad importante de bloqueos. El volumen total de
bloqueos podría estar cerca de alcanzar un umbral debido a una elevada
actividad del sistema aunque ninguna aplicación individual haya alcanzado el
límite establecido por maxlocks.
Un intento de escalamiento de bloqueo podría fallar. Si se produce alguna anomalía, la
aplicación que se ha intentado escalar recibirá un SQLCODE -912. Este código de
retorno debe ser gestionado por la aplicación.
Importante: si LOCKLIST está establecido en AUTOMATIC, está habilitado para el
autoajuste. Así, el ajustador de memoria podrá dimensionar, de manera dinámica, el
área de memoria controlada por este parámetro si cambian los requisitos de la carga
de trabajo. Debido a que el ajustador de memoria transfiere recursos de memoria entre
distintos consumidores de memoria, tiene que haber al menos dos consumidores de
memoria habilitados para el autoajuste para que este esté activo
Aunque el valor de locklist se puede ajustar junto con el parámetro maxlocks, al
inhabilitar el autoajuste del parámetro locklist no se inhabilita automáticamente el
autoajuste del parámetro maxlocks. Al habilitar el autoajuste del parámetro locklist, se
habilita automáticamente el autoajuste del parámetro maxlocks.
El ajuste automático de este parámetro de configuración solo se producirá si la
memoria de autoajuste está habilitada para la base de datos (el parámetro de
configuración self_tuning_mem está establecido en ON).

© Copyright IBM Corp. 2015 8-28


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Espera y tiempo de espera de bloqueo


Database CFG
12
opción
30
locktimeout 9 3

6
¡Solo quiero
-1 ese!
x x x
x x x
ACAPARADOR
x
x x ¡ESPERA!
x
DE
x BLOQUEOS
x
x
x x

Si la aplicación que está acaparando los bloqueos


no CONFIRMA ni RETROTRAE, otras
aplicaciones esperarán hasta que el bloqueo esté
disponible o se supere el tiempo de espera

Las aplicaciones pueden utilizar la sentencia SET CURRENT LOCK TIMEOUT para
la modificación temporal del valor predeterminado de la configuración de base de
datos.
Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Espera y tiempo de espera de bloqueo


La detección de tiempos de espera de bloqueo es una característica del gestor de base
de datos que impide que las aplicaciones esperen indefinidamente a que se libere un
bloqueo.
Por ejemplo, una transacción podría estar esperando un bloqueo ejercido por una
aplicación de otro usuario, pero si el otro usuario ha dejado la estación de trabajo sin
que la aplicación confirme la transacción, el bloqueo se liberará. Para impedir que la
aplicación se detenga en un caso así, defina el parámetro de configuración de base de
datos locktimeout en el tiempo máximo que una aplicación tiene que esperar para
obtener un bloqueo.
Al definir este parámetro, se evitan los puntos muertos globales, especialmente en
aplicaciones de unidad de trabajo distribuida (DUOW). Si el tiempo durante el cual está
pendiente la solicitud de bloqueo es superior al valor locktimeout, se devuelve un error
a la aplicación solicitante y su transacción se retrotrae. Por ejemplo, si APPL1 intenta
adquirir un bloqueo que ya mantiene APPL2, APPL1 recibe SQLCODE -911
(SQLSTATE 40001) con el código de error 68 si caduca el periodo de tiempo de
espera. El valor predeterminado de locktimeout es -1, lo que implica que se ha
inhabilitado la detección del tiempo de espera de bloqueo.

© Copyright IBM Corp. 2015 8-29


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Para bloqueo de bloques de tablas, filas, particiones de datos y clústeres


multidimensionales (MDC), una aplicación puede alterar temporalmente el valor de
tiempo de espera de bloqueo con solo modificar el valor del registro especial
CURRENT LOCK TIMEOUT.
Se puede recopilar información sobre tiempos de espera y esperas de bloqueo
utilizando la sentencia CREATE EVENT MONITOR FOR LOCKING.
Para registrar más información sobre tiempos de espera de solicitudes de bloqueo en
los archivos de registro de db2diag, establezca el valor del parámetro de configuración
de gestor de bases de datos diaglevel en 4. La información registrada incluye el
nombre del objeto bloqueado, la modalidad de bloqueo y la aplicación que detenta el
bloqueo. También se pueden registrar la sentencia actual de SQL dinámico o XQuery,
o el nombre del paquete estático. La sentencia de SQL dinámico o XQuery solo se
registra en diaglevel 4.
Puede obtener información adicional sobre las esperas de bloqueo y los tiempos de
espera de bloqueo de los elementos del supervisor del sistema de información de
espera de bloqueo o del indicador de salud db.apps_waiting_locks.
La opción de configuración de base de datos mon_lck_msg_lvl controla el registro de
mensajes en el registro de notificaciones de administración cuando se producen
sucesos de tiempo de espera de bloqueo, punto muerto y escalamiento de bloqueo.
• Con la aparición de sucesos de tiempo de espera de bloqueo, punto muerto y
escalamiento de bloqueo, es posible registrar los mensajes en el registro de
notificaciones de administración estableciendo este parámetro de configuración
de base de datos en un valor adecuado para el nivel de notificación buscado. En
la lista siguiente, se resumen los niveles de notificación que se pueden
establecer:
• 0 - Nivel 0: no se proporciona ninguna notificación de escalamientos de
bloqueo, puntos muertos ni tiempos de espera de bloqueo
• 1 - Nivel 1: notificación de escalamientos de bloqueo
• 2 - Nivel 2: notificación de escalamientos de bloqueo y puntos muertos
• 3 - Nivel 3: notificación de escalamientos de bloqueo, puntos muertos y
tiempos de espera de bloqueo
El nivel predeterminado de valor de notificación para este parámetro de
configuración de base de datos es 1.

© Copyright IBM Corp. 2015 8-30


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Utilizar db2pd para buscar las condiciones de la espera de


bloqueo activa
• db2pd -db musicdb -wlock detail

Database Member 0 -- Database MUSICDB -- Active -- Up 0 days 00:08:39 -- Date


2014-09-11-10.17.36.928742

Locks being waited on :


AppHandl [nod-index] TranHdl Lockname Type Mode Conv
Sts
679 [000-00679] 3 090004001B0001000000000052 RowLock ..X G
688 [000-00688] 11 090004001B0001000000000052 RowLock .NS W

CoorEDU AppName AuthID AppID TableNm


SchemaNm AppNode
523 db2bp INST28 *LOCAL.inst28.140911140857 STOCK
MUSIC ibmclass
554 db2bp USER28 *LOCAL.inst28.140911141135 STOCK
MUSIC ibmclass

Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Utilizar db2pd para buscar las condiciones de la espera de bloqueo activa


El mandato db2pd puede utilizarse para generar un informe que muestra las
condiciones actuales de espera de bloqueo de una base de datos.
En la imagen, se muestra un ejemplo del informe generado. En este ejemplo, una
conexión de aplicación espera un bloqueo NS en una fila. Otra aplicación detenta el
bloqueo eXclusive X para la misma fila.
La subopción detail del mandato db2pd -wlocks muestra las columnas TableNm,
SchemaNm y AppNode para los bloqueos de aplicación que están pendientes.

© Copyright IBM Corp. 2015 8-31


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Causas y detección de puntos muertos

UNIDAD DE TRABAJO -
SUPRIMIR PARTE DE LOS CEREALES Y LA LECHE

SALVADO
CON PASAS
APLICACIÓN A
APLICACIÓN B

dlchktime 10000 milisegundos


Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Causas y detección de puntos muertos


Un punto muerto se produce cuando las aplicaciones no pueden completar una unidad
de trabajo debido a requisitos el bloqueo conflictivo que no se pueden resolver hasta
que se completa la unidad de trabajo.
En la imagen, se ilustra el concepto de puntos muertos. La unidad de trabajo que tanto
la aplicación A como la aplicación B necesitan completar antes de la confirmación
consiste en conseguir un tazón de leche con cereales. En aras de la sencillez, imagine
que solo hay leche y cereales suficientes para un tazón. (También puede imaginar que
la leche representa una única fila y los cereales representan otra única fila).
5. La aplicación A obtiene un bloqueo X sobre los cereales.
6. La aplicación B obtiene un bloqueo X sobre la leche.
7. La aplicación A quiere aplicar un bloqueo X sobre la leche, pero no lo podrá
obtener hasta que se confirme la aplicación B.
8. La aplicación B quiere aplicar un bloqueo X sobre los cereales, pero no lo
podrá obtener hasta que se confirme la aplicación A.
Ninguna de las aplicaciones puede continuar hacia un punto de confirmación.

© Copyright IBM Corp. 2015 8-32


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Detector de puntos muertos


Los puntos muertos están gestionados por un proceso en segundo plano denominado
detector de puntos muertos. Si se detecta un punto muerto, se selecciona una
víctima, que se retrotrae automáticamente y devuelve un código SQL negativo (-911) y
el código de razón 2. Al retrotraer la víctima, se liberan los bloqueos y se permite a
otros procesos continuar.
El intervalo de comprobación de puntos muertos (DLCHKTIME) define la frecuencia
con la que el gestor de base de datos comprueba si hay puntos muertos entre todas
las aplicaciones conectadas a una base de datos.
• Time_interval_for_checking_deadlock = dlchktime
• Valor predeterminado [rango]: 10.000 (10 segundos) [1000-600.000]
• Unidad de medida: milisegundos
dlchktime: parámetro de configuración que establece el intervalo de comprobación de
puntos muertos. Este valor se designa en milisegundos y determina el intervalo del
comprobador de puntos muertos asíncronos en wake up para la base de datos. El
rango válido de valores va de 1.000 a 600.000 milisegundos. Al definir este valor, se
incrementará el tiempo de espera de las aplicaciones antes de descubrir un punto
muerto, pero se mantendrá el coste de ejecución del comprobador de puntos muertos.
Si el valor definido es bajo, los puntos muertos se detectarán rápidamente, pero se
podría experimentar una bajada en el rendimiento del tiempo de ejecución debido a la
comprobación. El valor predeterminado es de 10 segundos. Este parámetro se puede
configurar en línea.

© Copyright IBM Corp. 2015 8-33


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 8 Bloqueo y simultaneidad

Resumen de la unidad
• Explicar por qué se necesita el bloqueo
• Listar los objetos que se pueden bloquear
• Describir y analizar las distintas modalidades de bloqueo y su
compatibilidad
• Explicar cuatro niveles distintos de protección de datos
• Establecer el nivel de aislamiento y la hora de bloqueo de la
actividad actual
• Explicar el escalamiento y la conversión de bloqueo
• Describir la situación que provoca puntos muertos

Bloqueo y simultaneidad © Copyright IBM Corporation 2015

Resumen de la unidad

© Copyright IBM Corp. 2015 8-34


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9. Mantenimiento de bases de datos, supervisión y
determinación de problemas

Mantenimiento de bases de
datos, supervisión y
determinación de problemas

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

© Copyright IBM Corp. 2015 9-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Objetivos de la unidad
• Planificar el uso de los programas de utilidad RUNSTATS,
REORGCHK y REORG para mantener la eficacia de la base de datos
• Configurar una instancia de DB2 para establecer la ubicación de los
datos de diagnóstico y los niveles de gravedad de mensaje para
realizar un análisis básico de problemas
• Describir los métodos que se pueden utilizar para supervisar una
actividad de aplicación y base de datos, como los mandatos db2pd, los
supervisores de sucesos y el uso de sentencias SQL para acceder a
las estadísticas
• Describir la función EXPLAIN y utilizar este recurso para ayudar en los
análisis básicos
• Utilizar el mandato db2advis para analizar una carga de trabajo en
busca de posibles mejoras de rendimiento
• Utilizar el mandato db2fodc para recopilar datos de diagnóstico
relacionados con el hecho de que el sistema se haya colgado
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 9-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Actividades de mantenimiento de la base de datos


• Recopilación de estadísticas de índices y tablas
 El mandato RUNSTATS recopila estadísticas de las tablas y los índices
utilizados para crear planes de acceso eficaces
 Las nuevas estadísticas se pueden recopilar manualmente cuando se cargan
tablas con nuevos datos o filas de actualización y supresión de aplicaciones.
 La base de datos se puede configurar para recopilar automáticamente nuevas
estadísticas en función de las tasas de modificaciones y accesos
• Las tablas y los índices se pueden reorganizar
 El mandato REORG se puede utilizar para reorganizar tablas e índices, ya sea
en línea o fuera de línea
 Se puede utilizar la reorganización para mejorar la eficacia del almacenamiento y
reducir los costes de acceso
 El mandato REORGCHK se puede utilizar para sugerir tablas e índices que
sacarían partido de la reorganización
 REORG se puede utilizar para implementar la compresión de tablas e índices

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Actividades de mantenimiento de la base de datos


Contar con unas estadísticas de índice y tabla es muy importante para el optimizador
de DB2 que selecciona planes de acceso eficaces para procesar solicitudes de
aplicación. El mandato RUNSTATS se puede utilizar para recopilar nuevas estadísticas
de tabla e índice. Si una tabla está aumentando de tamaño o se añade un índice
nuevo, es importante actualizar las estadísticas para reflejas dichos cambios. Se puede
configurar una base de datos DB2 para que seleccione automáticamente la tabla y los
índices que necesitan nuevas estadísticas.
El programa de utilidad REORG se puede utilizar para reorganizar las tablas y los
índices, a fin de mejorar la eficacia del almacenamiento y reducir los costes de acceso.
Por ejemplo, si se suprimen muchas filas de la tabla, podría haber muchas páginas en
la tabla que no contuviesen filas de datos o que contuviesen muy pocas. El programa
de utilidad REORG puede reconstruir la tabla para utilizar menos páginas, lo que
permite ahorrar espacio en disco y permite que la tabla se explore con menos
operaciones de E/S. El mandato REORGCHK se puede utilizar para comprobar una
serie de indicadores y recomendar las tablas o los índices que se beneficiarían de la
reorganización. El programa de utilidad REORG se puede utilizar para implementar la
compresión de tablas e índices existentes, así como para reconstruir el diccionario de
compresión y reflejar el contenido de los datos actuales de la tabla.

© Copyright IBM Corp. 2015 9-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Ejemplos del mandato RUNSTATS


• Recopilar estadísticas básicas de la tabla y los índices utilizando el
muestreo para la recopilación de estadísticas detalladas de índice:
RUNSTATS ON TABLE employee AND SAMPLED DETAILED INDEXES ALL

• Recopilar estadísticas de tabla en el 1,5 % de las páginas de datos y


estadísticas de índice en el 2,5 % de las páginas de índice. Se toman
muestras tanto de las páginas de índice como de las páginas de datos
de la tabla
RUNSTATS ON TABLE employee AND INDEXES ALL TABLESAMPLE SYSTEM(1.5)
INDEXSAMPLE SYSTEM(2.5)
• Recopilar estadísticas de tabla, con estadísticas de distribución en las
columnas empid, empname y empdept y los índices Xempid y
Xempname. Los límites de las estadísticas de distribución se configuran
individualmente para empdept, mientras que las otras dos columnas
utilizan un valor predeterminado común:
RUNSTATS ON TABLE employee WITH DISTRIBUTION ON COLUMNS (empid, empname,
empdept NUM_FREQVALUES 50 NUM_QUANTILES 100) DEFAULT NUM_FREQVALUES
NUM_QUANTILES 10 AND INDEXES Xempid, Xempname

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Ejemplos del mandato RUNSTATS


El programa de utilidad runstats recopila la información siguiente sobre las tablas y los
índices:
• El número de páginas que contienen filas
• El número de páginas que se están utilizando
• El número de filas de la tabla (la cardinalidad)
• El número de filas que desbordan
• En el caso de tablas de clústeres multidimensionales (MDC) y de agrupación en
clúster de plazo de inserción (ITC), el número de bloqueos que contienen datos
• En el caso de tablas particionadas, el grado de agrupación en clúster de datos en
una única partición de datos
• Las estadísticas de distribución de datos, que el optimizador utiliza para estimar
planes de acceso eficaces para tablas y vistas estadísticas cuyos datos no se
han distribuido correctamente y cuyas columnas tienen bastantes valores
duplicados
• Las estadísticas de índice detalladas, que el optimizador utiliza para determinar
la eficacia de acceder a los datos de la tabla mediante un índice

© Copyright IBM Corp. 2015 9-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

• El optimizador también utiliza las estadísticas del subelemento para predicados


LIKE, especialmente aquellos que buscan patrones en las cadenas (por ejemplo,
LIKE %disk%)
En la imagen, se muestran algunos ejemplos de mandatos RUNSTATS que pueden
recopilar estadísticas de tablas e índices.
Para recopilar estadísticas básicas en la tabla y en todos los índices que utilizan el
muestreo para la recopilación de estadísticas detalladas de índice:
RUNSTATS ON TABLE employee AND SAMPLED DETAILED INDEXES ALL
En el caso de tablas grandes, puede optar por utilizar el muestreo para recopilar
estadísticas, en lugar de procesar el conjunto completo de datos. Por ejemplo, para
recopilar estadísticas de tabla en el 1,5 % de las páginas de datos y estadísticas de
índice en el 2,5 % de las páginas de índice, podría utilizarse el siguiente mandato
RUNSTATS: (se toman muestras de las páginas de datos de la tabla y las páginas de
índice)
RUNSTATS ON TABLE employee AND INDEXES ALL TABLESAMPLE
SYSTEM(1.5)
INDEXSAMPLE SYSTEM(2.5)
En algunos casos, se pueden recopilar estadísticas de distribución para tablas con una
distribución no uniforme de valores de datos. Por ejemplo, para recopilar estadísticas
de tabla, con estadísticas de distribución en las columnas empid, empname y empdept
y los índices Xempid y Xempname. Se establecen límites de estadísticas de
distribución individuales para empdept, mientras que las otras dos columnas utilizan un
valor predeterminado común:
RUNSTATS ON TABLE employee
WITH DISTRIBUTION ON COLUMNS (empid, empname, empdept
NUM_FREQVALUES
50 NUM_QUANTILES 100)
DEFAULT NUM_FREQVALUES 5 NUM_QUANTILES 10
AND INDEXES Xempid, Xempname

© Copyright IBM Corp. 2015 9-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Utilizar REORGCHK para encontrar tablas que se


beneficiarían de la reorganización
db2 reorgchk on schema auto

Table statistics:

F1: 100 * OVERFLOW / CARD < 5


F2: 100 * (Effective Space Utilization of Data Pages) > 70
F3: 100 * (Required Pages / Total Pages) > 80

SCHEMA NAME CARD OV NP FP ACTBLK TSIZE F1 F2 F3 REORG


------------------------------------------------------------------------------------
Table: AUTO.HIST1
AUTO HIST1 137619 0 4174 5427 - 9770949 0 44 76 -**
Table: AUTO.HIST2
AUTO HIST2 39612 0 1601 1602 - 2812452 0 43 99 -*-
Table: AUTO.HIST3
AUTO HIST3 136880 0 4918 4919 - 9718480 0 49 99 -*-
------------------------------------------------------------------------------------

* Indica el potencial beneficio de la


reorganización

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Utilizar REORGCHK para encontrar tablas que se beneficiarían de la reorganización


El mandato REORGCHK devuelve información estadística sobre la organización de
datos y le puede aconsejar si es necesario o no organizar tablas o índices concretos.
El mandato REORGCHK puede recopilar nuevas estadísticas o utilizar las estadísticas
del catálogo actual para producir el informe. El informe puede incluir una tabla, un
esquema de objetos o todas las tablas.
REORGCHK calcula las estadísticas obtenidas de ocho fórmulas distintas para
determinar si el rendimiento se ha deteriorado o si se puede mejorar reorganizando
una tabla o sus índices.
En la imagen, se muestra la parte de las estadísticas de tabla de un informe
REORGCHK para un esquema con tres tablas. Se calculan tres fórmulas para cada
tabla, cualquier tabla que supere el valor recomendado se marca con un ‘*’ para indicar
cualquier posible beneficio de la reorganización.
En el informe de muestra, las tres tablas se encuentran bajo el valor de destino del
cálculo de F2, lo que indica que la tabla tiene más páginas de las necesarias para
contener el número actual de filas de datos.

© Copyright IBM Corp. 2015 9-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Utilizar REORGCHK para encontrar índices que se


beneficiarían de la reorganización
Index statistics:

F4: CLUSTERRATIO or normalized CLUSTERFACTOR > 80


F5: 100 * (Space used on leaf pages / Space available on non-empty leaf pages) > MIN(50, (100 -
PCTFREE))
F6: (100 - PCTFREE) * (Amount of space available in an index with one less level / Amount of space
required for all keys) < 100
F7: 100 * (Number of pseudo-deleted RIDs / Total number of RIDs) < 20
F8: 100 * (Number of pseudo-empty leaf pages / Total number of leaf pages) < 20

SCHEMA.NAME INDCARD LEAF ELEAF LVLS NDEL KEYS LEAF_RECSIZE NLEAF_RECSIZE


--------------------------------------------------------------------------------------------------
Table: RG.HIST1
Index: RG.HIST1IX1
137619 346 0 3 0 60728 4 4
Index: RG.HIST1IX2
137619 315 0 3 0 44671 4 4
Table: RG.HIST2
Index: RG.HIST2IX1
39612 337 0 3 0 25363 4 4
Table: RG.HIST3
Index: RG.HIST3IX1
136880 320 2 3 0 50 2 2

LEAF_PAGE_OVERHEAD NLEAF_PAGE_OVERHEAD F4 F5 F6 F7 F8 REORG


----------------------------------------------------------------
822 822 3 93 58 0 0 *----
822 822 3 93 64 0 0 *----
822 822 4 31 175 0 0 ***--
984 984 27 69 95 0 0 *----

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Utilizar REORGCHK para encontrar índices que se beneficiarían de la reorganización


En la imagen, se muestra la parte basada en el índice de un informe REORGCHK de
ejemplo. Incluye estadísticas y cálculos para cada índice de las tablas seleccionadas.
Se realizan cinco cálculos por índice y los índices que superen el límite recomendado
para una fórmula se marcarán con un ‘*’ coincidente.
Los cuatro índices del informe de ejemplo contienen, al menos, una indicación de que
el índice o la tabla pueden necesitar una reorganización. La fórmula F4 muestra la
medida en la que está cada índice agrupado en clúster en función de la secuencia
actual de filas de datos. A fin de mejorar esta proporción de agrupación en clúster para
un índice, los datos de la tabla tendrán que reorganizarse utilizando el índice concreto
seleccionado para volver a organizar en clúster la tabla con el programa de utilidad
REORG. Es habitual que cuando una tabla tiene varios índices para uno o varios de
los índices que se van a distinguir en el informe REORGCHK como no agrupados en
clúster, pero siempre que el índice que se haya seleccionado para agrupar en clúster la
tabla se haya agrupado en clúster correctamente, no se necesite reorganizar la tabla.

© Copyright IBM Corp. 2015 9-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Ejemplos del programa de utilidad Reorg


• Reorganizar una tabla y todos los índices que se encuentren fuera de
línea utilizando un espacio de tabla temporal y reorganizar el
diccionario de compresión

reorg table rgcomp.history1 use tempspace1 resetdictionary


• Reorganizar una tabla en línea
reorg table rg.hist2 index rg.hist2ix1 inplace allow write
access
• Reorganizar los índices de una tabla en línea
reorg indexes all for table rg.hist2 allow write access

• Reorganizar una partición de una tabla particionada por rangos


reorg table parttab.historypart INDEX PARTTAB.HISTPIX2 on data
partition part0

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Ejemplos del programa de utilidad Reorg


Reorganización de la tabla
Tras realizar muchos cambios en la tabla, los datos organizados en una secuencia
lógica podrían residir en páginas de datos no secuenciales, lo que podría obligar al
gestor de base de datos a ejecutar operaciones de lectura adicionales para acceder a
los datos. Asimismo, si se suprimiesen muchas filas, se necesitarían operaciones de
lectura adicionales. En este caso, podría plantearse reorganizar la tabla para que
coincidiese con el índice y para reclamar espacio.
También puede reorganizar las tablas de catálogo del sistema.
Dado que la reorganización de una tabla suele llevar más tiempo que la actualización
de estadísticas, podría ejecutar el mandato RUNSTATS para renovar las estadísticas
actuales de los datos y, a continuación, volver a enlazar las aplicaciones. Si las
estadísticas renovadas no mejoran el rendimiento, la reorganización podría resultar útil.

© Copyright IBM Corp. 2015 9-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Los factores siguientes pueden indicar la necesidad de reorganizar la tabla:


• No ha habido un gran volumen de actividades de inserción, actualización y
supresión en las tablas a las que acceden las consultas.
• Ha habido cambios significativos en el rendimiento de las consultas que utilizan
un índice con una alta proporción de clústeres.
• La ejecución del mandato RUNSTATS para renovar las estadísticas de la tabla
no mejora el rendimiento.
• La salida del mandato REORGCHK indica que es necesario reorganizar la tabla.
El programa de utilidad REORG tiene muchas opciones. Las tablas se pueden
reorganizar en línea o fuera de línea. Los índices de una tabla también se pueden
reorganizar para mejorar la eficacia de los objetos de índice.
El primer ejemplo mostrado, reorganizará la tabla rgcomp.history1offline, que
reconstruirá todos los índices definidos para la tabla. La opción RESETDICTIONARY
se utiliza para forzar a REORG a crear un nuevo diccionario de compresión durante su
procesamiento, en lugar de guardar el diccionario original. Esto se haría si los datos de
la tabla hubiesen cambiado significativamente y un nuevo diccionario de compresión
produjese mejores resultados de compresión.
En el segundo ejemplo, se reorganiza la tabla rg.hist2 utilizando el índice rg.hist2ix1
para volver a agrupar en clústeres los datos. Se trata de una reorganización en línea o
in situ que permite a las aplicaciones leer y escribir la tabla durante el procesamiento
REORG.
El tercer ejemplo del programa de utilidad REORG muestra la reorganización de una
tabla particionada por rangos denominada parttab.historypart, donde un único rango se
reorganiza en función de la opción ON DATA PARTITION. Sin la opción ON DATA
PARTITION, todos los rangos de datos de la tabla particionada por rangos se
reorganizarían de uno en uno.

© Copyright IBM Corp. 2015 9-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Programas de utilidad autónomos


• Las bases de datos DB2 se pueden configurar para ejecutar
automáticamente el mantenimiento de la base de datos:
 RUNSTATS periódicos (Database CFG auto_runstats) DEFAULT ON
− RUNSTATS en tiempo real (Database CFG auto_stmt_stats) DEFAULT ON
− Recopilación de estadísticas automáticas para vistas estadísticas (Database
auto_stats_views)
− RUNSTATS automático de muestra (Database auto_sampling)

 Reorganización automática de tabla e índice (Database CFG auto_reorg)


− Desactivado de forma predeterminada para las nuevas bases de datos
 Copia de seguridad automática de bases de datos (Database CFG
auto_db_backup)
− Desactivado de forma predeterminada para las nuevas bases de datos
• Las políticas a nivel de base de datos establecen ventanas
de tiempo cuando el procesamiento está permitido y hay
opciones de programa de utilidad, como límites de tamaño
de tabla para la reorganización y tablas que incluir o excluir
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Programas de utilidad autónomos


El entorno de informática autónoma de DB2 se configura, se recupera, se optimiza y se
protege automáticamente. Al reconocer las situaciones que se producen, y responder
ante ellas, la informática autónoma cambia la carga de gestión de un entorno
informático de los administradores de base de datos a la tecnología.
Entre los parámetros autónomos de configuración a nivel de base de datos, se incluyen
los siguientes:
• auto_runstats: este parámetro de mantenimiento de tablas automatizado
habilita o inhabilita las operaciones runstats automáticas en la tabla para una
base de datos. Se puede utilizar una política runstats (un conjunto definido de
reglas o directrices) para especificar el comportamiento automatizado. El
optimizador utiliza las estadísticas recopiladas por el programa de utilidad
Runstats para determinar el plan de acceso más eficaz para acceder a los datos
físicos. El parámetro estará habilitado cuando esté definido en On y sus
parámetros padre deberán estar también habilitados. De forma predeterminada,
este parámetro está definido en ON.

© Copyright IBM Corp. 2015 9-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

• auto_stmt_stats: este parámetro habilita e inhabilita la recopilación de


estadísticas en tiempo real. Se trata de un hijo del parámetro de configuración
auto_runstats. Esta característica solo se habilita si el padre, el parámetro de
configuración auto_runstats, también está habilitado. Por ejemplo, para habilitar
auto_stmt_stats, defina auto_maint, auto_tbl_maint, y auto_runstats en ON. Para
conservar el valor hijo, el parámetro de configuración auto_runstats puede estar
configurado en ON mientras el parámetro de configuración auto_maint está en
OFF. La característica Auto Runstats correspondiente seguirá en OFF.
Siempre que tanto Auto Runstats como Auto Reorg estén habilitados, los
valores serán los siguientes:
Puede inhabilitar las características Auto Runstats y Auto Reorg
temporalmente. Solo tiene que definir auto_tbl_maint en OFF. Ambas
características se pueden habilitar más adelante, solo hay que volver a definir
auto_tbl_maint back en ON. No es necesario emitir los mandatos db2stop o
db2start para que los cambios entren en vigor.
De forma predeterminada, este parámetro está definido en ON.
• auto_reorg: este parámetro de mantenimiento de tablas automatizado habilita o
inhabilita la reorganización automática de tablas e índices en una base de datos.
Se puede utilizar una política de reorganización (un conjunto definido de reglas o
directrices) para especificar el comportamiento automatizado. El parámetro
estará habilitado cuando esté definido en ON y sus parámetros padre deberán
estar también habilitados. De forma predeterminada, este parámetro está
definido en OFF.
• auto_db_backup: este parámetro de mantenimiento automático habilita o
inhabilita las operaciones de copia de seguridad automática de una base de
datos. Se puede utilizar una política de copia de seguridad (un conjunto definido
de reglas o directrices) para especificar el comportamiento automatizado. El
objetivo de la política de copia de seguridad es garantizar que se realice una
copia de seguridad de la base de datos con frecuencia. La política de copia de
seguridad de una base de datos se crea automáticamente la primera vez que se
ejecuta DB2 Health Monitor. De forma predeterminada, este parámetro está
definido en OFF. El parámetro estará habilitado cuando esté definido en ON y su
parámetro padre deberá estar también habilitado.

© Copyright IBM Corp. 2015 9-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

• auto_sampling: este parámetro controla si la recopilación automática de


estadísticas utiliza el muestreo para recopilar estadísticas de una tabla grande.
Para habilitar el muestreo automático, defina auto_maint, auto_tbl_maint,
auto_runstats y auto_sampling en ON. Si se habilita la recopilación automática
de estadísticas, se utiliza el muestreo a nivel de página y la tasa de muestreo se
determina automáticamente. Se toman muestras tanto de las páginas de índices
como de las de datos para las tablas base, en contraposición con las vistas
estadísticas, que no tienen índices.
• auto_stats_views: este parámetro habilita e inhabilita la recopilación automática
de estadísticas en las vistas estadísticas. Las estadísticas de las vistas
estadísticas se mantienen automáticamente cuando el parámetro está definido
en ON.

© Copyright IBM Corp. 2015 9-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Supervisión de una base de datos DB2


• La supervisión de una base de datos es una actividad vital para el
mantenimiento del rendimiento y el estado de la base de datos
• DB2 recopila información para poder realizar las siguientes tareas:
 Predecir los requisitos de hardware en función de los patrones de uso de la
base de datos.
 Analizar el rendimiento de aplicaciones individuales o consultas SQL.
 Realizar un seguimiento del uso de índices y tablas.
 Determinar la causa del bajo rendimiento del sistema.
 Evaluar el impacto de las actividades de optimización, por ejemplo,
mediante la modificación de los parámetros de configuración del gestor de
base de datos, la adición de índices o la modificación de consultas SQL.
• Mandatos de supervisión: db2pd, LIST APPLICATIONS
• Supervisar a través de sentencias SQL
• Capturar información para los análisis mediante supervisores de
sucesos
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Supervisión de una base de datos DB2


El término "supervisión de base de datos" se refiere a las tareas asociadas al examen
del estado operativo de la base de datos.
La supervisión de la base de datos es una actividad vital para mantener el rendimiento
y el estado del sistema de gestión de la base de datos. Para facilitar la supervisión,
DB2 recopila información del gestor de base de datos, sus bases de datos y cualquier
otra aplicación conectada. Con esta información, puede efectuar las siguientes tareas,
entre otras:
• Predecir los requisitos de hardware en función de los patrones de uso de la base
de datos.
• Analizar el rendimiento de aplicaciones individuales o consultas SQL.
• Realizar un seguimiento del uso de índices y tablas.
• Determinar la causa del bajo rendimiento del sistema.
• Evaluar el impacto de las actividades de optimización (por ejemplo, mediante la
modificación de los parámetros de configuración del gestor de base de datos, la
adición de índices o la modificación de consultas SQL).

© Copyright IBM Corp. 2015 9-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Existen dos métodos para supervisar las operaciones en la base de datos. Puede ver
la información que muestra el estado de distintos aspectos de la base de datos en un
momento específico. También puede configurar los supervisores de suceso para que
capturen la información histórica a medida que se generan sucesos de base de datos.
Puede supervisar las operaciones de la base de datos en tiempo real utilizando las
funciones de la tabla de supervisión. Por ejemplo, puede utilizar una función de tabla
de supervisión para examinar la cantidad total de espacio utilizado en un espacio de
tablas. Estas funciones de tabla le permiten examinar las métricas y los elementos
supervisores que dan información sobre prácticamente todos los aspectos de las
operaciones de la base de datos mediante SQL. Las funciones de la tabla de
supervisión utilizan la nueva infraestructura de supervisión, más ligera y de alta
velocidad, introducida en la versión 9.7. Además de las funciones de la tabla, también
las rutinas de supervisión de instantáneas están disponibles. Los recursos de
supervisión de instantáneas de DB2 utilizan la infraestructura de supervisión que
existía antes de la versión 9.7. Por lo general, los recursos de supervisión de
instantáneas han dejado de ampliarse en el producto. Si es posible, utilice las
funciones de tabla para recuperar los datos que quiera ver.
Los supervisores de sucesos capturan información sobre operaciones de bases de
datos a lo largo del tiempo, cuando se producen tipos de sucesos específicos. Por
ejemplo, puede crear un supervisor de sucesos para capturar información sobre
bloqueos y puntos muertos cuando se generen en el sistema. O bien puede crear un
supervisor de sucesos que actúe como registro cuando se supere un umbral
especificado (por ejemplo, el tiempo total del procesador utilizado por una carga de
trabajo o una aplicación). Los supervisores de sucesos generan una salida en distintos
formatos. Todos pueden escribir datos de suceso en tablas regulares y algunos tienen
opciones de salidas adicionales.
Información: IBM InfoSphere Optim Performance Manager ofrece una interfaz web
que se puede utilizar para aislar y analizar los problemas de rendimiento de base
de datos más comunes. También puede ver un resumen del estado de las bases de
datos y acceder a un mayor nivel de detalle si lo necesita.

© Copyright IBM Corp. 2015 9-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

db2pd: supervisar DB2 y resolver los problemas relacionados


-applications -agents -transactions -bufferpools -logs -locks
-tablespaces -dynamic -static -fcm -mempools -memsets
-dbmcfg -dbcfg -catalogcache -sysplex -tcbstats -reorg
-recovery -reopt -osinfo -hadr -utiltiies -workloads
-workclasses -thresholds -serviceclasses -ha -statisticscache -wlocks
db2pd -db tp1 -bufferpools
Database Member 0 -- Database TP1 -- Active -- Up 0 days 00:28:44 -- Date 02/06/2013 15:45:43

Bufferpools:
First Active Pool ID 1
Max Bufferpool ID 4
Max Bufferpool ID on Disk 4
Num Bufferpools 8

Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp … Automatic


0x909EC9D0 1 IBMDEFAULTBP 4096 2000 0 0 5 … False
0x909F4D40 2 TP1H16K 16384 1000 0 0 2 … False
0x909FD0B0 3 TP1ADATA 4096 7000 0 0 1 … False
0x90A05420 4 TP1AINDX 4096 6000 0 0 1 … False
0x909CBC10 4096 IBMSYSTEMBP4K 4096 16 0 0 0 … False
0x909D3F80 4097 IBMSYSTEMBP8K 8192 16 0 0 0 … False
0x909DC2F0 4098 IBMSYSTEMBP16K 16384 16 0 0 0 … False
0x909E4660 4099 IBMSYSTEMBP32K 32768 16 0 0 0 … False

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

db2pd: supervisar DB2 y resolver los problemas relacionados


El mandato db2pd se utiliza para la resolución de problemas porque puede devolver,
de forma rápida e inmediata, información de los conjuntos de memorias de DB2.
La herramienta recopila información sin adquirir mecanismos de cierre ni utilizar
recursos del motor. Por lo tanto, es posible (y previsible) recuperar información que se
está modificando mientras db2pd recopila información. Así pues, es posible que los
datos no sean del todo precisos. Si se detectan punteros de memoria en constante
evolución, se utilizará un manejador de señal para evitar que db2pd finalice de manera
inesperada. Esto podría hacer que apareciesen mensajes como "Changing data
structure forced command termination" en la salida. Sin embargo, la herramienta podría
resultar útil para la resolución de problemas. Entre los beneficios de recopilar
información sin mecanismos de cierre se incluyen una recuperación más rápida y la
eliminación de la competencia para obtener recursos del motor.
El mandato db2pd puede utilizarse para examinar el estado y las estadísticas de los
componentes de la base de datos, como agrupaciones de almacenamiento intermedio
y espacios de tabla. El informe -dynamic muestra las sentencias de SQL dinámico que
se encuentran actualmente en la memoria caché del paquete, mientras que el informe -
static muestra el SQL estático en la memoria caché del paquete.

© Copyright IBM Corp. 2015 9-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Para utilizar el mandato db2pd, se necesita una de las siguientes autoridades a nivel
de instancia:
• Nivel de autoridad SYSADM.
• Nivel de autoridad SYSCTRL.
• Nivel de autoridad SYSMAINT.
• Nivel de autoridad SYSMON.

© Copyright IBM Corp. 2015 9-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Utilizar db2pd para comprobar las estadísticas de Reorg


cuando Reorg no se puede completar
db2pd –db MUSICDB -reorg
Database Member 0 -- Database MUSICDB -- Active -- Up 0 days 00:00:46 -- Date 2013-10-24-
09.23.24.781628

Table Reorg Information:


Address TbspaceID TableID PartID MasterTbs MasterTab TableName Type IndexID
TempSpaceID
0x00007F6C60937C78 11 4 n/a n/a n/a HIST1 Offline 1
11

Table Reorg Stats:


Address TableName Start End PhaseStart
0x00007F6C60937C78 HIST1 10/24/2013 09:22:40 10/24/2013 09:22:42 10/24/2013
09:22:41

MaxPhase Phase CurCount MaxCount Status Completion


4 Build 1967 5426 Stopped

• El informe muestra que REORG no ha finalizado el proceso de la fase


Build
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Utilizar db2pd para comprobar las estadísticas de Reorg cuando Reorg no se puede
completar
El informe del mandato -reorg de db2pd se puede utilizar para mostrar el progreso del
proceso de mandato REORG. También se puede utilizar en el momento del
procesamiento en el que REORG detiene su ejecución debido a un error.
En la imagen, se muestra un ejemplo del informe del mandato -reorg de db2pd. El
informe muestra que REORG ha dejado de procesarse en la fase BUILD de una tabla
denominada HIST1.

© Copyright IBM Corp. 2015 9-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Utilizar las funciones de tabla de DB2 en sentencias SQL


para la supervisión (1 de 2)
• Utilice las funciones de la tabla para recopilar y ver datos de sistemas,
actividades u objetos de datos.
• Los datos de los elementos supervisores se acumulan de manera
continuada en la memoria
• Puede optar por recibir datos de un único objeto (por ejemplo, una
tabla TABLE1) o de todos los objetos
• Supervisión de información del sistema: engloba todo el volumen de
trabajo y los esfuerzos empleados por el servidor de datos para
procesar solicitudes de aplicación
 Por ejemplo, uso de MON_GET_CONNECTION o MON_GET_DATABASE
• Supervisión de actividades: en el contexto de las sentencias SQL, el
término "actividad" se refiere a la ejecución de la sección de una
sentencia SQL
 Por ejemplo, uso de MON_GET_ACTIVITY_DETAILS o
MON_GET_PKG_CACHE_STMT
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Utilizar las funciones de tabla de DB2 en sentencias SQL para la supervisión


Funciones de tabla para supervisión
A partir de DB2 versión 9.7, puede acceder a los datos de supervisión mediante una
alternativa ligera con respecto al supervisor de sistemas tradicional. Utilice las
funciones de la tabla para recopilar y ver datos de sistemas, actividades u objetos de
datos.
Los datos de los elementos supervisores se acumulan continuamente en la memoria y
están disponibles para la consulta. Puede optar por recibir datos de un único objeto
(por ejemplo, una clase de servicio A o una tabla TABLE1) o de todos los objetos.
Si se utilizan estas funciones de tabla en un entorno particionado en bases de datos,
podrá elegir entre recibir datos de una única partición o de todas. Si elige recibir datos
de todas las particiones, la función de tabla devolverá una fila por partición. Con SQL,
puede sumar los valores de todas las particiones para obtener el valor de un elemento
supervisor en distintas particiones.

© Copyright IBM Corp. 2015 9-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Supervisión de la información del sistema mediante funciones de tabla


La perspectiva de supervisión del sistema engloba todo el volumen de trabajo y los
esfuerzos empleados por el servidor de datos para procesar solicitudes de aplicación.
Desde esta perspectiva, puede determinar qué está haciendo el servidor de datos en
conjunto, o bien en subconjuntos concretos de solicitudes de aplicación.
• Supervisión de actividades mediante funciones de tabla
La perspectiva de supervisión de actividades se centra en el subconjunto de
proceso del servidor de datos relacionado con la ejecución de actividades. En el
contexto de las sentencias SQL, el término "actividad" se refiere a la ejecución de
la sección de una sentencia SQL.
• Otras funciones de tabla de supervisión
Además de las funciones de tabla que devuelven información sobre el sistema,
las actividades, los bloqueos o los objetos de datos, existen también funciones
de tabla que devuelven distintos tipos de información variada. Entre estas
funciones, se incluyen las que devuelven información relacionada con el gestor
de comunicaciones rápidas (FCM) y sobre el estado del movimiento de
ampliaciones de espacios de tabla.

© Copyright IBM Corp. 2015 9-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Utilizar las funciones de tabla de DB2 en sentencias SQL


para la supervisión (2 de 2)
• Supervisión de objetos de datos: la perspectiva de supervisión de
objetos de datos proporciona información sobre las operaciones
realizadas en los objetos de datos
 Por ejemplo, MON_GET_TABLE, MON_GET_INDEX y
MON_GET_BUFFERPOOL
• Supervisión de bloqueos: puede recuperar información sobre los
bloqueos
 Por ejemplo, uso de MON_GET_LOCKS y MON_GET_APPL_LOCKWAIT
• Supervisión de la memoria del sistema
 Puede recuperar información sobre el uso de la memoria del sistema
mediante MON_GET_MEMORY_SET o MON_GET_MEMORY_POOL

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Funciones de tabla adicionales para supervisión


• Supervisión de objetos de datos mediante funciones de tabla
La perspectiva de supervisión de objetos de datos proporciona información sobre las
operaciones realizadas en los objetos de datos, es decir, tablas, índices, agrupaciones
de almacenamiento, espacios de tabla y contenedores.
• Supervisión de bloqueos mediante funciones de tabla
Puede recuperar la información sobre bloqueos utilizando funciones de tabla. Al
contrario que los elementos de solicitud, actividad o supervisor de objetos de datos, la
información sobre bloqueos siempre está disponible desde el gestor de bases de
datos. No es necesario que habilite la recopilación de esta información.
• Supervisión de la memoria del sistema mediante funciones de tabla
Puede recuperar información sobre el uso de la memoria del sistema utilizando
funciones de tabla.

© Copyright IBM Corp. 2015 9-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Utilizar la función MON_GET_TABLE para ver las


estadísticas de rendimiento de la tabla

select varchar(tabname,15) as table,


varchar(tabschema,10) as schema,
rows_read, table_scans, rows_inserted, rows_updated from
table(MON_GET_TABLE('INST411',null,-1)) as mtab
where rows_read > 100 order by rows_read desc

TABLE SCHEMA ROWS_READ TABLE_SCANS ROWS_INSERTED ROWS_UPDATED


--------------- ---------- ----------- ------------- ------------- ------------
HISTORY INST411 1168373 5 3365 0
ACCT INST411 650174 4 0 3365
TELLER INST411 9730 0 0 3365
BRANCH INST411 3365 0 0 3365

4 record(s) selected.

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Utilizar la función MON_GET_TABLE para ver las estadísticas de rendimiento de la tabla


En la imagen, se muestra un ejemplo de una consulta SQL que utiliza la función
MON_GET_TABLE para devolver estadísticas de tabla seleccionadas. Esta función se
puede utilizar para obtener las estadísticas actuales de una tabla, un esquema de
tablas o todas las tablas a las que haya accedido una base de datos.
Con DB2 10, las estadísticas disponibles para cada tabla incluirán información sobre
las esperas de bloqueo y el número de lecturas de páginas lógicas y físicas para datos,
índices y páginas XML.

© Copyright IBM Corp. 2015 9-22


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Supervisar tiempos de espera de conexiones activas con


MON_GET_CONNECTION
SELECT application_handle as appl_id ,
total_wait_time , Comprobación del tiempo de
pool_read_time, pool_write_time, espera total
log_disk_wait_time, y las razones más habituales
lock_wait_time para los retrasos
FROM TABLE(MON_GET_CONNECTION(NULL,-1) )
ORDER BY total_wait_time
APPL_ID TOTAL_WAIT_TIME POOL_READ_TIME POOL_WRITE_TIME
-------------------- -------------------- -------------------- --------------------
247 486 292 1
248 166662 82517 5205
250 166702 83088 4695
249 166897 81330 5341
251 166953 82397 4840

LOG_DISK_WAIT_TIME LOCK_WAIT_TIME
-------------------- --------------------
0 0
73175 897
72975 718
74581 1059
74166 1158

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Supervisar tiempos de espera de conexiones activas con MON_GET_CONNECTION


En la imagen, se muestra un resultado de ejemplo de una consulta SQL que utiliza la
función de tabla MON_GET_CONNECTION de DB2 para recuperar parte de las
estadísticas de conexión que muestran el tiempo de espera global y algunas fuentes
específicas para retrasar las solicitudes de aplicación.
En estos ejemplos, los mayores tiempos de espera de las conexiones de base de
datos que están activas actualmente son POOL_READ_TIME, el tiempo empleado a la
espera de leer páginas en las agrupaciones de almacenamiento intermedio, y
LOG_DISK_WAIT_TIME, el tiempo empleado a la espera de que se graben las
entradas del registro. Estos retrasos en la escritura del registro estaban asociados al
proceso COMMIT de estas aplicaciones, que procesa muchas transacciones de
actualización breves.
En este ejemplo, las conexiones activas no sufren muchos retrasos a causa de
esperas de bloqueo.

© Copyright IBM Corp. 2015 9-23


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Mandato LIST APPLICATIONS

db2 LIST APPLICATIONS FOR DATABASE db_alias SHOW DETAIL

Auth Id Application Name Appl. Application Id


Handle
-------- -------------------- -------- ---------------------------
INST00 db2bp_32 78 *LOCAL.inst00.000327220543

Seq# Number of Coordinating Coordinating Status Status


Agents Node Number pid/thread Change Time
---- ---------- ------------ ------------ -------------- --------------
0001 1 0 230 UOW Waiting Not Collected

Node DBName DB Path

------- ------- --------------------------------------


0 MUSICDB /home/inst00/inst00/NODE0000/SQL00001/

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Mandato LIST APPLICATIONS


El mandato LIST APPLICATIONS muestra una entrada para cada aplicación
conectada a una base de datos específica o a todas las bases de datos de la instancia
(valor predeterminado).
La salida muestra el nombre del programa de aplicación, el ID de autorización (nombre
de usuario), el manejo de la aplicación, el ID de aplicación y el nombre de base de
datos de cada aplicación de base de datos.
Si se utiliza el parámetro SHOW DETAIL, la salida también mostrará el número de
secuencia de la aplicación, el estado, la hora de cambio de estado, el nodo y la vía de
acceso de base de datos.
Se necesita una de las autoridades siguientes para ejecutar el mandato LIST
APPLICATIONS:
• SYSADM
• SYSCTRL
• SYSMAINT
• SYSMON

© Copyright IBM Corp. 2015 9-24


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Supervisores de sucesos de DB2


La sentencia CREATE EVENT MONITOR define un supervisor que registrará
determinados sucesos que se produzcan mientras se use la base de datos. La
definición de cada supervisor de sucesos también especifica dónde debe
registrar los sucesos la base de datos.
Ejemplos de tipos de supervisores de sucesos:
• Actividades: se puede utilizar para capturar las estadísticas de las sentencias SQL
ejecutadas
• Bloqueo: se puede utilizar para realizar un seguimiento de los puntos muertos, los tiempos
de espera de bloqueo y las esperas de bloqueo
• Memoria caché de paquetes: guarda las estadísticas de sentencias dinámicas y estáticas
cuando se eliminan de la memoria de la base de datos
• Estadísticas: guarda las estadísticas de distintas categorías de gestión de carga de trabajo,
como cargas de trabajo y clases de servicio
• Infracciones de umbral: se utilizan para registrar los sucesos de infracciones de umbral de
gestión de carga de trabajo que se producen al usar la base de datos
• Unidad de trabajo. Registra las estadísticas a nivel de transacción cuando se completa una
unidad de trabajo
• Historial de cambios: puede registrar sucesos de cambios en parámetros de configuración,
variables de registro y la ejecución de programas de utilidad y sentencias DDL.
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Supervisores de sucesos de DB2


La supervisión de funciones de tabla y las rutinas de instantáneas devuelven los
valores de los elementos supervisores en el momento específico en el que se ejecuta
la rutina, lo que resulta útil si se quiere comprobar el estado actual del sistema. Sin
embargo, en muchas ocasiones es necesario capturar información sobre el estado del
sistema en el momento exacto en el que se produce un suceso concreto. Los
supervisores de sucesos son útiles en estos casos.
Se pueden crear supervisores de sucesos para capturar información de momento
específico relacionada con distintos tipos de sucesos que se producen en el sistema.
Por ejemplo, puede crear un supervisor de sucesos para capturar información si se
supera un umbral específico definido por el usuario. La información capturada incluirá
elementos como el ID de la aplicación que se estaba ejecutando cuando se superó el
umbral. También puede crear un supervisor de sucesos para determinar qué sentencia
se estaba ejecutando cuando se produjo el suceso de bloqueo.
La sentencia CREATE EVENT MONITOR define un supervisor que registrará
determinados sucesos que se produzcan mientras se use la base de datos. La
definición de cada supervisor de sucesos también especifica dónde debe registrar los
sucesos la base de datos.

© Copyright IBM Corp. 2015 9-25


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Se pueden crear distintos tipos de supervisores de sucesos utilizando esta sentencia,


como los siguientes:
• Actividades. El supervisor de sucesos registrará los sucesos de actividad que se
produzcan al usar la base de datos.
• Bloqueo. El supervisor de sucesos registrará los sucesos relacionados con el
bloqueo que se produzcan al usar la base de datos.
• Memoria caché de paquetes. El supervisor de sucesos registrará los sucesos
relacionados con la sentencia de la memoria caché de paquetes.
• Estadísticas. El supervisor de sucesos registrará los sucesos de estadísticas que
se produzcan mientras se use la base de datos.
• Infracciones de umbral. El supervisor de sucesos registrará los sucesos de
infracciones de umbral que se produzcan al usar la base de datos.
• Unidad de trabajo. El supervisor de sucesos registrará los sucesos cuando la
unidad de trabajo se complete.
• Historial de cambios: este tipo de supervisor de sucesos se puede utilizar para
realizar un seguimiento de los cambios realizados en las configuraciones de la
base de datos y el gestor de base de datos, así como de la ejecución de
programas de utilidad de DB2 como LOAD, copias de seguridad en línea,
REORG y RUNSTATS.

© Copyright IBM Corp. 2015 9-26


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Crear y utilizar un supervisor de sucesos de actividad


• Para crear un supervisor de sucesos de actividades denominado
wlmactivity que guarde información en un conjunto de tablas:
CREATE EVENT MONITOR wlmactivity
FOR ACTIVITIES WRITE TO TABLE
CONTROL (TABLE CONTROL_wlmactivity in tp1event ),
ACTIVITY (TABLE ACTIVITY_wlmactivity in tp1event ),
ACTIVITYSTMT (TABLE ACTIVITYSTMT_wlmactivity in tp1event ),
ACTIVITYVALS (TABLE ACTIVITYVALS_wlmactivity in tp1event );

• Para empezar a recopilar sucesos con este supervisor de sucesos


SET EVENT MONITOR wlmactivity STATE 1

• Para dejar de recopilar sucesos con este supervisor de sucesos


SET EVENT MONITOR wlmactivity STATE 0

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Crear y utilizar un supervisor de sucesos de actividad


Los supervisores de sucesos son objetos de bases de datos que es necesario crear.
En el ejemplo, se muestra un supervisor de sucesos, denominado wlmactivity, que se
crea para capturar actividades, como el procesamiento de sentencias SQL. Este
supervisor de sucesos está definido como supervisor de sucesos de tipo WRITE TO
TABLE. El supervisor de sucesos está definido para incluir nombres de tabla
específicos y espacios de tabla para el conjunto de tablas asociado a este supervisor
de sucesos.
Se puede utilizar la sentencia SET EVENT MONITOR para iniciar y detener la
recopilación de datos utilizando un supervisor de sucesos.

© Copyright IBM Corp. 2015 9-27


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Informe de ejemplo del supervisor de actividad


SELECT wlm_activity.QUERY_CARD_ESTIMATE,
wlm_activity.ROWS_RETURNED,
abs(wlm_activity.QUERY_CARD_ESTIMATE - wlm_activity.ROWS_RETURNED) as
estimate_error,
wlm_activity.POOL_DATA_L_READS + wlm_activity.POOL_INDEX_L_READS as logical_reads,
wlm_activity.TOTAL_SORTS,
substr(wlm_stmt.STMT_TEXT,1,100) as sql_text

FROM ACTIVITYSTMT_WLMACTIVITY AS wlm_stmt,


ACTIVITY_WLMACTIVITY AS wlm_activity

WHERE wlm_stmt.APPL_ID = wlm_activity.APPL_ID


AND wlm_stmt.ACTIVITY_ID = wlm_activity.ACTIVITY_ID
AND wlm_stmt.UOW_ID = wlm_activity.UOW_ID
ORDER BY 3 DESC
QUERY_CARD_ESTIMATE ROWS_RETURNED ESTIMATE_ERROR LOGICAL_READS TOTAL_SORTS SQL_TEXT
-------------------- -------------- --------------- ---------------- ---------------- -----------------
9857 27694 17837 30208 1
SELECT BRANCH_ID, TELLER_ID, ACCT_ID, BALANCE, ACCTNAME FROM HISTORY WHERE BRANCH_ID < 20 AND
103232 107634 4402 2401 2
SELECT BRANCH_ID, TELLER_ID, ACCT_ID, BALANCE, ACCTNAME FROM HISTORY WHERE TELLER_ID BETWE
5136 1471 3665 743 2
SELECT BRANCH_ID, TELLER_ID, ACCT_ID, BALANCE, ACCTNAME FROM HISTORY WHERE BRANCH_ID = 50
5136 1471 3665 743 2
SELECT * FROM HISTORY WHERE BRANCH_ID = 50 ORDER BY TELLER_ID ASC
5 18 13 53 1
SELECT * FROM HISTORY WHERE BRANCH_ID = 10 and teller_id = 200
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Informe de ejemplo del supervisor de actividad


La consulta de ejemplo utiliza información de dos de las tablas asociadas a un
supervisor de sucesos de actividades.
La consulta muestra el número de filas que se estima que devolverá el optimizador de
DB2 antes de la ejecución, el número de filas que se han devuelto en realidad, algunas
estadísticas adicionales, como operaciones de ordenación y páginas a las que se ha
hecho referencia, y una parte del texto de la sentencia SQL.

© Copyright IBM Corp. 2015 9-28


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Optimizador de DB2
SENTENCIAS SQL

El optimizador comprueba las autorizaciones, determina


qué datos son necesarios y, a partir de estadísticas,
determina un plan de acceso

ALGORITMOS
STATISTICS
DE COSTE CATÁLOGO
ALTERNATIVOS DB2

A continuación,
selecciona un El optimizador elige:
El orden en el que se accede a las tablas
PAQUETE El índice que se va a utilizar
(vía de acceso) El método de unión
El tipo de exploración necesaria

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Optimizador de DB2
Si el compilador de consultas optimiza los planes de consulta, sus decisiones se ven
influidas, en gran medida, por información estadística sobre el tamaño de las tablas de
bases de datos, los índices y las vistas estadísticas. Esta información se almacena en
las tablas de catálogo de sistema.
El optimizador utiliza también información sobre la distribución de los datos en
columnas específicas de tablas, índices y vistas estadísticas, siempre que estas
columnas se utilicen para seleccionar filas o para unir tablas. El optimizador utiliza esta
información para estimar los costes de los planes de acceso alternativos de cada
consulta.
También se puede recopilar información estadística sobre la proporción de clústeres en
índices, el número de páginas finales en índices, el número de filas de tabla que
desbordan sus páginas originales y el número de páginas completas y vacías de una
tabla. Puede utilizar esta información para decidir cuándo reorganizar tablas o índices.
Al compilar una sentencia SQL o XQuery, el optimizador de consultas estima el coste
de ejecución de las distintas formas de responder a una consulta.

© Copyright IBM Corp. 2015 9-29


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

En función de estas estimaciones, el optimizador selecciona el mejor plan de acceso.


Un plan de acceso especifica el orden de las operaciones que necesitan resolver una
sentencia SQL o XQuery. Cuando un programa de aplicación se enlaza, se crea un
paquete. Este paquete contiene planes de acceso para todas las sentencias XQuery y
de SQL estático de dicho programa de aplicación. Durante el tiempo de ejecución, se
crean planes de acceso para sentencias XQuery y de SQL dinámico.
Existen tres maneras de acceder a los datos de una tabla:
• Explorando la tabla completa de forma secuencial
• Accediendo a un índice de la tabla para encontrar filas específicas
• Mediante el uso compartido de la exploración
Es posible filtrar las filas en función de condiciones definidas en predicados, que se
suelen señalar en una cláusula WHERE. Las filas seleccionadas de las tablas a las
que se accede se unen para producir el conjunto de resultados. Estos datos se pueden
someter a un mayor procesamiento mediante la agrupación o la ordenación de la
salida.

© Copyright IBM Corp. 2015 9-30


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Design Advisor
• Ayuda a encontrar los índices, MQT o MDC adecuados:
 Se basa en la carga de trabajo
 Índices virtuales
• Reduce la complejidad del ajuste y el análisis de rendimiento
• El mandato db2advis estima los beneficios de los cambios sugeridos

Nuevos ÍNDICES ? Tablas de


? consulta
materializada
Tablas de agrupación
en clúster ?
multidimensional

Selección de clave de
?
distribución para la tabla en
una base de datos particionada
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Design Advisor
DB2 Design Advisor es una herramienta que le ayudará a mejorar significativamente el
rendimiento de las cargas de trabajo. La tarea de seleccionar qué índices, MQT,
dimensiones de clúster o particiones crear para una carga de trabajo completa puede
resultar abrumadora. Design Advisor identifica todos los objetos necesarios para
mejorar el rendimiento de una carga de trabajo concreta (puede incluir las sentencias
SELECT, INSERT, UPDATE y/o DELETE). Dado un conjunto de sentencias SQL,
generará recomendaciones para:
• Nuevos índices
• Nuevas tablas de consulta materializadas (MQT)
• Conversión a tablas de clústeres multidimensionales (MDC)
• Recreación de la partición de tablas
• Supresión de índices y MQT no utilizados por la carga de trabajo especificada
Puede optar por implementar algunas o todas las recomendaciones de inmediato, o
bien planificarlas para más adelante.
Design Advisor puede ayudarle a migrar desde una base de datos con una única
partición a un entorno con varias particiones.

© Copyright IBM Corp. 2015 9-31


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Por ejemplo, imagine que en un periodo de un año el gestor de base de datos tuviese
que procesar 1.000 sentencias INSERT, 10.000 UPDATE, 10.000 SELECT y 1.000
DELETE. La información de la carga de trabajo aborda el tipo y la frecuencia de
sentencias SQL en un periodo de tiempo determinado. El motor del asesor utiliza la
información sobre la carga de trabajo, junto con la información de la base de datos,
para recomendar índices. El objetivo del motor del asesor es minimizar el coste total de
la carga de trabajo. Esta información se graba en la tabla ADVISE_WORKLOAD. Con
la suficiente información o las suficientes restricciones, Design Advisor puede sugerir
las acciones más adecuadas para las tablas.
Puede ejecutar el mandato db2advis desde la línea de mandatos. La salida se
imprimirá, de manera predeterminada, en stdout y se guardará en las tablas
ADVISE_TABLE y ADVISE_INDEX. Es posible encontrar las estrategias de
particionamiento en la tabla ADVISE_PARTITION. El valor RUN_ID de todas estas
tablas se corresponde con el valor START_TIME de la tabla ADVISE_INSTANCE para
cada ejecución de Design Advisor.
Para crear las tablas ADVISE_WORKLOAD y ADVISE_INDEX, ejecute el script
EXPLAIN.DDL que se encuentra en el subdirectorio misc del subdirectorio sqllib.

© Copyright IBM Corp. 2015 9-32


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Utilizar Infosphere Optim Query Workload Tuner para


realizar una estimación de las ventajas de rendimiento de
la aceleración BLU
Sugiere convertir tres tablas
a la aceleración BLU, lo que
permitiría reducir los costes en
un 48%

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Utilizar Infosphere Optim Query Workload Tuner para realizar una estimación de las
ventajas de rendimiento de la aceleración BLU
IBM Infosphere Optim Query Workload Tuner se puede utilizar para realizar una
estimación de las ventajas de rendimiento derivadas de convertir tablas organizadas en
filas a la aceleración BLU para una carga de trabajo de aplicación concreta.
InfoSphere Optim Query Workload Tuner for DB2 for Linux, UNIX and Windows le
ayuda a:
Simplificar y agilizar el ajuste de consultas con características que le permiten
ajustar cargas de trabajo completas.
Mejorar el rendimiento con orientaciones que le ayudarán a mejorar el diseño de
consultas, la calidad de las estadísticas y el diseño de las bases de datos.
Incrementar la eficacia y reducir los costes con una plataforma de colaboración que
reduzca los requisitos de aptitudes especializadas y se integra con otras herramientas
de IBM.
Simplificar y agilizar el ajuste de consultas
Capture y agrupe las sentencias SQL en cargas de trabajo significativas para ajustar,
comparar y seguir las mejoras de rendimiento.

© Copyright IBM Corp. 2015 9-33


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Vea estimaciones de las mejoras de rendimiento y utilice análisis de situaciones


hipotéticas para probar virtualmente los índices antes de crearlos.
Simplifique la gestión de cambios con servicios de ajuste automatizados que pueda
planificar utilizando las herramientas existentes.
Mejorar el rendimiento
Reciba los consejos más precisos sobre estadísticas, índices, tablas duplicadas, tablas
organizadas en columnas, vistas estadísticas, tablas de consultas materializadas
(MQT), clústeres multidimensionales y redistribución de datos en particiones de bases
de datos.
Revise las consultas con formato, identifique las operaciones de planes de alto coste y
consiga recomendaciones para mejorar el rendimiento de las consultas.
Compare los planes de acceso anteriores y posteriores para ver las mejoras o los
empeoramientos de rendimiento y cree bloqueos cuando sea necesario.

© Copyright IBM Corp. 2015 9-34


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Herramientas del recurso EXPLAIN


Requisitos Visual Acceso SQL a db2exfmt db2expln
Explain tablas Explain

Interfaz gráfica de usuario


Texto de salida
Análisis rápido e informal
de SQL estático
SQL estático admitido

SQL dinámico admitido

Aplicaciones CLI admitidas

Requiere tablas Explain

Información detallada del


optimizador
Adecuado para el análisis de
distintas sentencias

Información disponible
desde la aplicación

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Herramientas del recurso EXPLAIN


En la tabla, se resumen las distintas herramientas disponibles en el recurso EXPLAIN
de DB2 y sus características individuales. Utilice esta tabla para seleccionar la
herramienta más adecuada a su entorno y sus necesidades. [<marker>]
• Las herramientas de Visual Explain permiten analizar el plan de acceso y la
información del optimizador de las tablas EXPLAIN a través de una interfaz
gráfica. Se pueden utilizar herramientas, como IBM Data Studio para ver los
planes de acceso de las sentencias SQL en un formato visual.
• Se puede acceder a las tablas EXPLAIN en todas las plataformas compatibles.
Pueden contener información sobre sentencias de SQL dinámico y estático.
Puede acceder a las tablas EXPLAIN utilizando sentencias SQL, que permiten
una manipular con facilidad la salida y comparar la misma consulta a lo largo del
tiempo.
• db2exfmt le permite obtener informes de las tablas Explain en un formato
predefinido.

© Copyright IBM Corp. 2015 9-35


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

• db2expln le permitirá ver la información del plan de acceso que está


almacenada en el catálogo del sistema como parte de un paquete estático.
Proporciona un informe basado en texto sobre la estrategia que va a utilizar DB2
para ejecutar las sentencias. El mandato también permite generar el informe
Explain a partir de una o varias sentencias de SQL dinámico.

© Copyright IBM Corp. 2015 9-36


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Plan de acceso de Visual Explain para SQL

Consulta original
texto

Resultado
Con costes

Nodo de
operador

Referencia
de tabla

Nodo de objeto
(índice)

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Plan de acceso de Visual Explain para SQL


En la diapositiva se muestra un ejemplo de la vista de Visual Explain proporcionada por
herramientas como IBM Data Studio.
Visual Explain permite analizar el plan de acceso y la información del optimizador de
las tablas Explain a través de una interfaz gráfica. Las sentencias de SQL dinámico se
pueden analizar utilizando la herramienta.
La vista de Visual Explain ofrece una descripción general de los pasos de
procesamiento que se utilizarán para generar el resultado de la sentencia SQL. Podrá
ver, con rapidez, el método utilizado para acceder a cada tabla, si se van a usar índices
o no y la modalidad elegida para unir tablas.
En el ejemplo, el flujo de procesamiento se inicia en la parte inferior y va subiendo. La
herramienta Data Studio Visual Explain ofrece una opción para invertir esta vista y
mostrar el procesamiento de SQL de arriba a abajo. El número mostrado en cada
operación indica el coste estimado acumulativo o timerons.

© Copyright IBM Corp. 2015 9-37


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Gestión de memoria de base de datos automática

Para habilitar la gestión de memoria de autoajuste


db2 update db cfg using SELF_TUNING_MEM ON
Almacenamiento intermedio Almacenamiento intermedio
de desbordamiento de base de datos de desbordamiento de base de datos
Almacenamiento Almacenamiento
dinámico de Almacenamiento dinámico de Almacenamiento
Memoria base de datos Memoria
base de datos dinámico de dinámico de
caché de caché de
(almacenamien- programas de (almacenamien- programas de
catálogo catálogo
to intermedio de utilidad to intermedio de utilidad
registro) registro)
Memoria
Memoria caché Memoria caché Memoria de
de paquetes de Locklist de paquetes
Locklist
ordenación
ordenación
Agrupaciones de almacenamiento Agrupaciones de almacenamiento
intermedio intermedio

BP 1 BP 2 BP 3 BP 4 BP 1 BP 2 BP 3 BP 4

db2 UPDATE DB CFG FOR SALESDB USING LOCKLIST AUTOMATIC


db2 ALTER BUFFERPOOL BP3 SIZE AUTOMATIC

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Gestión de memoria de base de datos automática


La memoria de autoajuste simplifica la tarea de configurar la memoria, ya que define
automáticamente los valores de los parámetros de configuración de memoria y
dimensiona las agrupaciones de almacenamiento intermedio. Cuando se habilita, el
ajustador de memoria distribuye de manera dinámica los recursos de memoria
disponibles entre los siguientes consumidores de memoria: agrupaciones de
almacenamiento intermedio, memoria de bloqueo, memoria caché de paquetes y
memoria de ordenación.
La memoria de autoajuste se habilita mediante el parámetro de configuración de base
de datos self_tuning_mem.
Las siguientes opciones de base de datos relacionadas con la memoria se pueden
ajustar automáticamente:
• database_memory: tamaño de la memoria compartida de base de datos
• locklist: almacenamiento máximo para la lista de bloqueos
• maxlocks: porcentaje máximo de la lista de bloqueos antes del escalamiento
• pckcachesz: tamaño de memoria caché del paquete

© Copyright IBM Corp. 2015 9-38


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

• sheapthres_shr: umbral de almacenamiento dinámico de ordenación para


ordenaciones compartidas
• sortheap: tamaño de almacenamiento dinámico de ordenación
DB2 proporciona una característica de ajuste de memoria que simplifica la tarea de
configurar la memoria, ya que define automáticamente los valores de varios
parámetros de configuración de memoria. Cuando se habilita, el ajustador de memoria
distribuye de manera dinámica los recursos de memoria disponibles entre los
siguientes consumidores de memoria: agrupaciones de almacenamiento intermedio,
memoria de bloqueo, memoria caché de paquetes y memoria de ordenación.
El ajustador trabaja dentro de los límites de la memoria definidos por el parámetro de
configuración database_memory. El valor de este parámetro también se puede ajustar
automáticamente. Si el autoajuste está habilitado (cuando el valor de
database_memory está establecido en AUTOMATIC), el ajustador determina los
requisitos de memoria globales de la base de datos e incrementa o reduce la cantidad
de memoria asignada a la memoria compartida de base de datos, según los requisitos
actuales de la base de datos. Por ejemplo, si los requisitos de base de datos actuales
son elevados y hay suficiente memoria libre en el sistema, se asignará más memoria
para la memoria compartida de base de datos. Si los requisitos de memoria de la base
de datos se reducen, o si la cantidad de memoria libre en el sistema llega a ser
demasiado baja, se liberará parte de la memoria compartida de base de datos.
Si el parámetro de configuración database_memory no se ha definido en AUTOMATIC,
la base de datos utilizará la cantidad de memoria que se haya especificado para este
parámetro y la distribuirá entre los consumidores de memoria, según sea necesario.
Para especificar la cantidad de memoria, establezca el parámetro database_memory
en un valor numérico o en COMPUTED. En este último caso, la cantidad total de
memoria se basará en la suma de los valores iniciales de los almacenamientos
dinámicos de memorias de bases de datos al iniciarse la base de datos.

© Copyright IBM Corp. 2015 9-39


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Configuración para archivos de diagnóstico


Parámetros de configuración de DBM
NIVEL DE NOTIFICACIÓN: (0-4, valor DIAGLEVEL: (0-4, valor predeterminado 3)
predeterminado 3) 0: no se capturan datos de diagnóstico
0: no se capturan mensajes de 1: solo errores graves
notificación de administración
2: todos los errores
1: errores muy graves o
irrecuperables 3: todos los errores y avisos
2: acción inmediata necesaria 4: todos los errores, avisos y
mensajes informativos
3: información importante, no se
requiere una acción inmediata
4: mensajes informativos
DIAGPATH: vía de acceso del directorio válida, puede contener
Archivo de notificación
Registro de errores
Archivos de volcado
Archivos de interrupción
DIAGSIZE: se puede utilizar para limitar el tamaño de los mensajes de diagnóstico
• Si DIAGSIZE es > 0, se utiliza un conjunto de archivos de mensaje de diagnóstico
• Denominación utilizada: db2diag.x.log e <instance>.x.nfy
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Configuración para archivos de diagnóstico


En la imagen, se muestran algunas de las opciones de configuración del gestor de
base de datos (DBM) que controlan la ubicación y los niveles de gravedad de los datos
y mensajes de diagnóstico de una instancia de DB2.
NOTIFYLEVEL
Este parámetro especifica el tipo de mensajes de notificación de administración que se
graban en el registro de notificaciones de administración.
Esto se aplica a los servidores de bases de datos (DBM) con clientes locales y
remotos.
Este parámetro configurable se modifica de inmediato (su valor predeterminado es 3).
En plataformas Linux y UNIX, el registro de notificaciones de administración es un
archivo de texto denominado instance.nfy. En Windows, todos los mensajes de
notificación de administración se graban en el Registro de eventos. Los errores los
puede grabar DB2, Health Monitor, los programas Capture y Apply y las aplicaciones
de usuario.

© Copyright IBM Corp. 2015 9-40


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Los valores válidos para este parámetro son:


• 0: no se capturan mensajes de notificación de administración. (No se
recomienda utilizar este valor).
• 1: errores muy graves o irrecuperables. Solo se registran los errores muy graves
o irrecuperables. Para recuperarse de algunas de estas condiciones, puede
necesitar ayuda del servicio de DB2.
• 2: acción inmediata necesaria. Se registran condiciones que requieren atención
inmediata del administrador del sistema o el administrador de base de datos. Si
la condición no se resuelve, podría generar un error muy grave. En este nivel,
podrían registrarse también notificaciones de actividades muy importantes que
no denotan errores (como la recuperación). Este nivel captura las alarmas de
Health Monitor.
• 3: información importante, no se requiere ninguna acción inmediata. Se registran
acciones que no suponen ninguna amenaza y que no requieren ninguna acción
inmediata, pero que podrían indicar que el sistema no es óptimo. Este nivel
capturará las alarmas de Health Monitor, los avisos de Health Monitor y las
atenciones de Health Monitor.
• 4: mensajes informativos.
El registro de notificaciones de administración incluye mensajes con valores notifylevel
o inferiores. Por ejemplo, si notifylevel se establece en 3, el registro de notificaciones
de administración incluirá mensajes aplicables a los niveles 1, 2 y 3.
DIAGLEVEL
Este parámetro especifica el tipo de errores de diagnóstico que se grabarán en el
archivo db2diag.log.
Esto se aplica a los servidores de bases de datos (DBM) con clientes locales y
remotos.
Este parámetro configurable se modifica de inmediato (su valor predeterminado es 3).
Los valores válidos para este parámetro son:
• 0: no se capturan datos de diagnóstico.
• 1: solo errores graves.
• 2: todos los errores.
• 3: todos los errores y avisos.
• 4: todos los errores, avisos y mensajes informativos.

© Copyright IBM Corp. 2015 9-41


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

El parámetro de configuración diagpath se utiliza para especificar el directorio que


contendrá el archivo de error, el archivo de registro de error y todos los archivos de
volcado que se podrían generar, en función del valor del parámetro DIAGLEVEL.

© Copyright IBM Corp. 2015 9-42


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Ejemplos del mensaje db2diag.log


2012-05-12-02.44.16.760595-240 E46785G1135 LEVEL: Error
PID : 14465 TID : 2877287328 PROC : db2sysc 0
INSTANCE: inst481 NODE : 000 DB : MUSICDB
APPHDL : 0-7 APPID: *LOCAL.inst481.120512063958
AUTHID : INST481 HOSTNAME: ibmclass
EDUID : 36 EDUNAME: db2lfrm0 0
FUNCTION: DB2 UDB, buffer pool services, sqlbAllocateExtent, probe:987
MESSAGE : ADM6044E The DMS table space "LOADTSPD" (ID "11") is full. If this is
an autoresize or automatic storage DMS tablespace, the maximum table space size
may have been reached or the existing containers or storage paths cannot grow any
more. Additional space can be added to the table space by either adding new
containers or extending existing ones using the ALTER TABLESPACE SQL statement.
If this is an autoresize or automatic storage DMS table space, additional space
can be added by adding containers to an autoresize table space or by adding new
storage paths to the storage group it is using.

2012-05-12-02.44.16.889302-240 I57251G525 LEVEL: Severe


PID : 14465 TID : 2896161696 PROC : db2sysc 0
INSTANCE: inst481 NODE : 000 DB : MUSICDB
APPHDL : 0-7 APPID: *LOCAL.inst481.120512063958
AUTHID : INST481 HOSTNAME: ibmclass
EDUID : 18 EDUNAME: db2agent (MUSICDB) 0
FUNCTION: DB2 UDB, database utilities, call_sqluvload, probe:1748
MESSAGE : Load Error: Load failed for table INST481 .LOADHIST1 in tablespace 11

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Ejemplos del mensaje db2diag.log


En la imagen, se muestran dos mensajes de ejemplo de un archivo db2diag.log.
Los mensajes tienen un formato que permite incluir muchos elementos de datos
estándar, así como algunas secciones que varían en cada mensaje.
En estos mensajes, se incluyen:
• El nombre de instancia de DB2
• El nombre de base de datos DB2
• Una indicación de la fecha y la hora de creación del mensaje
• El nivel del mensaje indica la gravedad de la condición que ha generado el error
• El ID de aplicación
• El nombre y el ID de la EDU (unidad susceptible de envío del motor)
• La función interna de DB2
• El texto de mensaje
El primer mensaje del ejemplo se generó una vez utilizado todo el espacio disponible
de un espacio de tabla. El mensaje incluye el nombre del espacio de tabla y el número
de ID del espacio de tabla. El texto de mensaje sugiere cómo asignar el espacio de
disco adicional para resolver el problema.
El segundo mensaje lo generó el programa de utilidad LOAD para indicar que la carga
no se ha podido completar debido al problema con el espacio de tabla designado.

© Copyright IBM Corp. 2015 9-43


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

First Occurrence Data Capture (FODC)


• FODC es un recurso para capturar información sobre la primera
aparición de un problema en un servidor DB2
• Se crea un paquete de información cada vez que se produce un
problema en el
servidor DB2
• Paquete de FODC proporcionado por el cliente para dar soporte a DB2
• Herramienta db2support utilizada para recopilar el paquete
• Ayuda a maximizar las oportunidades de que el soporte de DB2 pueda
ayudar a solucionar el problema tras la primera aparición
• Puede utilizar el mandato db2fodc para ejecutar una recopilación de
datos
de primera aparición

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

First Occurrence Data Capture (FODC)


First Occurrence Data Capture (FODC) recopila información de diagnóstico sobre una
instancia, un host o un miembro de DB2 cuando se produce un problema. FODC
reduce la necesidad de reproducir un problema para obtener información de
diagnóstico, ya que la información de diagnóstico se puede recopilar cuando se
produce el problema.
FODC se puede invocar de manera manual con el mandato db2fodc cuando se
observa un problema, o bien automáticamente si se detectan un síntoma o un
escenario predeterminados. Una vez recopilada la información de diagnóstico, se
utiliza para ayudar a determinar las posibles causas del problema. En algunos casos,
quizás pueda determinar la causa del problema por sí mismo. También podría
necesitar ayuda del personal de soporte de IBM.
Cuando finaliza la ejecución del mandato db2fodc, es necesario ejecutar la herramienta
db2support para recopilar los archivos de diagnóstico resultantes y preparar el paquete
de FODC para enviarlo al soporte de IBM. El mandato db2support recopilará el
contenido de todos los directorios del paquete de FODC encontrados o especificados
con el parámetro -fodcpath. Esto se hace para evitar que se envíen al soporte de IBM
solicitudes adicionales de información de diagnóstico.

© Copyright IBM Corp. 2015 9-44


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

La información de diagnóstico se puede recopilar automáticamente en un paquete de


First Occurrence Data Capture (FODC) en el mismo momento en el que se produce el
problema que afecta a una instancia, un host o un miembro. La información del
paquete de FODC también se puede recopilar a mano.
El comportamiento de la configuración de First Occurrence Data Capture (FODC),
incluida la vía de acceso utilizada para almacenar el paquete de FODC, está
controlado por la variable de registro DB2FODC, que se puede establecer de manera
persistente con el mandato db2set o modificarse de manera dinámica (solo en
memoria) mediante el mandato db2pdcfg. El comportamiento de FODC también se
puede personalizar actualizando los scripts de llamada (COS) invocados mientras se
ejecutaba FODC.
First Occurrence Data Capture (FODC) genera la creación de un directorio y
subdirectorios de paquetes de FODC donde se recopila la información de diagnóstico.
El directorio de paquete padre, los subdirectorios y los archivos que se recopilan se
denominan, en conjunto, paquete de FODC.
Si se produce una parada y se ha habilitado la opción First Occurrence Data Capture
(FODC) automática, se recopilan datos basados en los síntomas. Los datos
recopilados son específicos de lo que se necesita para diagnosticar la parada.

© Copyright IBM Corp. 2015 9-45


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

db2fodc: mandato de FOCD de DB2


• El mandato db2fodc se puede utilizar para la recopilación FODC manual
en aquellos problemas que no pueden desencadenar una recopilación
FODC automática, como los bloqueos o los problemas graves de
rendimiento.
 La herramienta db2fodc captura datos que se incluirán en el paquete de FODC y los
coloca dentro de un directorio de paquetes de FODC
 O bien en la vía de acceso de diagnóstico predeterminada o en una vía de acceso
del directorio de FODC, la especificación se realiza
utilizando el parámetro -fodcpath
• Ejemplos:
 Para recopilar datos de una base de datos específica:
− db2fodc –db SAMPLE -hang
− La recopilación de datos se limita a la base de datos SAMPLE. Se crea automáticamente
un nuevo directorio con el prefijo FODC_Hang_ bajo la vía de acceso de diagnóstico
actual.
 Para recopilar los datos de un problema de rendimiento desde una base de datos
específica que utiliza el script de colección completo:
− db2fodc –db SAMPLE -perf full
− La recopilación de datos se limita a la base de datos SAMPLE. Se crea un nuevo
directorio con el prefijo FODC_Perf_ bajo la vía de acceso actual del diagnóstico
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

db2fodc: mandato de FOCD de DB2


El programa de utilidad db2fodc captura datos basados en síntomas sobre la
instancia de DB2 para ayudar en situaciones de determinación de problemas. Su
objetivo es recopilar información sobre posibles bloqueos, problemas graves de
rendimiento y distintos tipos de errores.
El mandato db2fodc se puede utilizar para la recopilación FODC manual en
aquellos problemas que no pueden desencadenar una recopilación FODC automática,
como los bloqueos o los problemas graves de rendimiento. También se puede utilizar
para recopilar datos sobre errores de índice. La herramienta db2fodc captura datos que
se incluirán en el paquete de FODC y los coloca en un directorio de paquete de FODC,
creado en la vía de acceso del directorio predeterminada o en una vía de acceso del
directorio de FODC especificada con el parámetro -fodcpath.
La herramienta db2fodc admite los tipos de colección manual adicionales y
admite el desencadenante de una recopilación de datos de diagnóstico automática
cuando se supera la condición de umbral definida por el usuario.

© Copyright IBM Corp. 2015 9-46


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Para recopilar datos durante un bloqueo potencial sin detener el gestor de base de
datos:
db2fodc –hang -alldbs
• Se utilizan los parámetros y las variables de registro predeterminadas de
DB2FODC.
• Se crea un nuevo directorio con el prefijo FODC_Hang_ bajo la vía de acceso de
diagnóstico actual (si ya existe, se genera un error). Se ejecuta el script
db2cos_hang para recopilar datos manuales de FODC en uno o varios archivos
depositados en el directorio.
Para recopilar datos de una base de datos específica:
db2fodc –db SAMPLE -hang
• La recopilación de datos se limita a la base de datos SAMPLE. Se crea
automáticamente un nuevo directorio con el prefijo FODC_Hang_ bajo la vía de
acceso de diagnóstico actual. Se ejecuta el script db2cos_hang para recopilar
datos manuales de FODC en el paquete de FODC almacenado en el directorio.
Para recopilar los datos de un problema de rendimiento desde una base de datos
específica que utiliza el script de colección completo:
db2fodc –db SAMPLE -perf full
• La recopilación de datos se limita a la base de datos SAMPLE. Se crea un nuevo
directorio con el prefijo FODC_Perf_ bajo la vía de acceso de diagnóstico actual.
Se ejecuta el script db2cos_perf para recopilar datos manuales de FODC en uno
o varios archivos depositados en el directorio.

© Copyright IBM Corp. 2015 9-47


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Obtener un rastreo de DB2 mediante db2trc


• El mandato db2trc controla el recurso de rastreo proporcionado con DB2.
• El recurso de rastreo registra información sobre operaciones y da a la información un
formato legible.
• Recuerde que existe un uso adicional del procesador cuando se ejecuta un
seguimiento, por lo que habilitar el recurso de rastreo puede afectar al rendimiento del
sistema.
• Por lo general, tanto los equipos de desarrollo como IBM Software Support utilizan el
rastreo de DB2 para solucionar problemas
• Es importante saber cómo activar correctamente el rastreo y cómo volcar los archivos
de rastreo, por si necesita obtenerlos.
• Necesitará la autoridad SYSADM, SYSCTRL o SYSMAINT para utilizar db2trc
• A continuación, se muestra un ejemplo de la secuencia común de mandatos db2trc:
db2trc on -l 8M
db2trc clr
<Execute problem recreation commands>
db2trc dump db2trc.dmp
db2trc off
db2trc flw db2trc.dmp <filename>.flw
db2trc fmt db2trc.dmp <filename>.fmt
db2trc fmt -c db2trc.dmp <filename>.fmtc
Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Obtener un rastreo de DB2 mediante db2trc


El mandato db2trc controla el recurso de rastreo proporcionado con DB2. El recurso de
rastreo registra información sobre operaciones y da a la información un formato legible.
Recuerde que existe un uso adicional del procesador cuando se ejecuta un
seguimiento, por lo que habilitar el recurso de rastreo puede afectar al rendimiento del
sistema.
Por lo general, tanto los equipos de desarrollo como IBM Software Support utilizan el
rastreo de DB2 para solucionar problemas. Puede ejecutar un seguimiento para
obtener información sobre un problema que se está investigando, pero su uso se ve
limitado si no se conoce el código fuente de DB2.
Aun así, es importante saber cómo activar correctamente el rastreo y cómo volcar los
archivos de rastreo, por si necesita obtenerlos.
Nota: necesitará la autoridad SYSADM, SYSCTRL o SYSMAINT para utilizar db2trc

© Copyright IBM Corp. 2015 9-48


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

¿Necesita más información?

• CL463: DB2 10.5 for LUW Advanced


Database Administration with DB2 BLU
Acceleration (cinco días con prácticas de
laboratorio)

• CL413: DB2 for LUW Performance Tuning


and Monitoring Workshop (cuatro días con
prácticas de laboratorio)

• CL443: DB2 LUW Performance


Tuning/Monitoring for Single/Multiple
Partition Databases (cinco días con
prácticas de laboratorio)

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

¿Necesita más información?


En la imagen, se muestran varios cursos de formación de DB2 LUW donde se
proporcionan clases y demostraciones de un nivel más avanzado para los
administradores de bases de datos que necesitan centrarse en el ajuste del
rendimiento, la supervisión y los recursos de mantenimiento de bases de datos para
las bases de datos DB2 LUW.
Estos cursos se ofrecen en distintos formatos, incluida la clase tradicional y las
opciones basadas en web y de autoaprendizaje.

© Copyright IBM Corp. 2015 9-49


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Demostración 1
Investigación del bloqueo de DB2

• Explique cómo se puede utilizar SET ISOLATION para seleccionar un


nivel de aislamiento de una aplicación y el impacto que tiene esta
selección sobre los resultados devueltos para las sentencias SQL.
• Utilice los mandatos db2pd para supervisar los bloqueos detentados
por las aplicaciones activas y las condiciones actuales de espera de
bloqueo.
• Supervise una condición de espera de bloqueo utilizando la aplicación
Data Server Manager.

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Demostración 1: investigación del bloqueo de DB2

© Copyright IBM Corp. 2015 9-50


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Demostración 1:
investigación del bloqueo de DB2
Objetivo:
En esta demostración, se utilizan varios scripts SQL para mostrar los tipos de
bloqueos utilizados para procesar sentencias SQL con distintos niveles de
aislamiento de aplicaciones. Se crea y se analiza una condición de espera de
bloqueo.

Tarea 1. Supervisar los bloqueos adquiridos para SQL UPDATE.


1. Inicie la sesión en el sistema Windows con el ID de usuario inst23 y la
contraseña ibm2blue.
El procesador de línea de mandatos de DB2 se utilizará para emitir algunos
mandatos de sistema y de DB2. Tendrá que iniciar la ventana de mandato de
DB2 en modalidad de administrador para emitir estos mandatos de DB2.
2. Para iniciar la ventana de mandatos de DB2, pulse el icono de inicio de
Windows y luego vaya a Todos los programas > IBM DB2 DB2COPY1 >
DB2 Command Window - Administrator. Cuando aparezca la pregunta
"¿Desea permitir que este programa realice cambios en el equipo?", seleccione
Sí.
En esta tarea, ejecutará un script SQL que actualiza una tabla de DB2,
MUSIC.STOCK para ayudarle a comprender los bloqueos adquiridos para el
proceso UPDATE. También verá el efecto que los bloqueos pueden tener
sobre las aplicaciones que necesitan leer las filas actualizadas antes de
confirmar los cambios.
El procesador de línea de mandatos de DB2 puede ejecutar una serie de
sentencias SQL con la opción de confirmación automática desactivada (la
opción +C). Esto permite que los bloqueos se conserven más tiempo y resulta
útil para las pruebas.
Otorgará acceso SELECT a la tabla MUSIC.STOCK a user23. Iniciará la
sesión como dicho usuario para acceder a la tabla y leerla, mientras parte de la
tabla queda bloqueada para las actualizaciones.
Esta tarea se ejecutará utilizando el procesador de línea de mandatos de DB2.

© Copyright IBM Corp. 2015 9-51


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

3. Emita la siguiente serie de mandatos con el procesador de línea de mandatos


de DB2.
• cd C:\inst23\ddl
• db2 connect to musicdb
• db2 grant select on table music.stock to user user23
• db2 +C -tvf stock_update.sql
Las sentencias SQL muestran la suma procedente de la columna QTY de un
conjunto de filas antes y después del proceso UPDATE.
La salida tendrá un aspecto similar a la siguiente:
SELECT sum(qty) from music.stock where itemno=10
1
-----------
109
1 record(s) selected.
update music.stock set qty = qty + 1 where itemno between 10 and 15
DB20000I The SQL command completed successfully.
SELECT sum(qty) from music.stock where itemno=10
1
-----------
112
1 record(s) selected.
El mandato db2pd se puede utilizar para mostrar los bloqueos que mantienen
actualmente las aplicaciones de DB2 para una base de datos.
4. Emita la siguiente serie de mandatos con el procesador de línea de mandatos
de DB2.
• db2pd -db musicdb -locks | more
La salida del mandato tendrá un aspecto parecido a la siguiente:

Database Member 0 -- Database MUSICDB -- Active -- Up 0 days 00:01:49 -- Date


2015-09-18-10.10.14.527000
Locks:
Address TranHdl Lockname Type Mode Sts
Owner Dur HoldCount Att ReleaseFlg rrIID
0x0000000001131F80 3 09000400280001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001137280 3 09000500150000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132600 3 09000400200001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0

© Copyright IBM Corp. 2015 9-52


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

0x0000000001136A00 3 090005000D0000000000000052 RowLock ..X G 3


1 0 0x00200008 0x40000000 0
0x0000000001132C00 3 090004002B0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001132E00 3 09000500050000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131980 3 4141414141664164FE8BC714C1 PlanLock ..S G 3
1 0 0x00000000 0x40000000 0
0x0000000001131880 3 09000400230001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136D00 3 09000500100000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132800 3 090004001B0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136500 3 09000500080000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131E80 3 09000400260001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001137080 3 09000500130000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132100 3 090004001E0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136800 3 090005000B0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132A00 3 09000400290001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001132300 3 09000400210001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136B00 3 090005000E0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132D00 3 090004002C0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001132F00 3 09000500060000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131680 3 09000400240001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136E00 3 09000500110000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132400 3 090004001C0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136600 3 09000500090000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131B80 3 09000400270001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001137180 3 09000500140000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132200 3 090004001F0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136900 3 090005000C0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132B00 3 090004002A0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0

© Copyright IBM Corp. 2015 9-53


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

0x0000000001132500 3 09000500040000000000000052 RowLock ..X G 3


1 0 0x00200008 0x40000000 0
0x0000000001131C80 3 09000400220001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136C00 3 090005000F0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001136400 3 09000500070000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131D80 3 09000400250001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136F00 3 09000500120000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131A80 3 090004001D0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136700 3 090005000A0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132900 3 09000500000000000000000054 TableLock .IX G 3
1 0 0x00202000 0x40000000 0
0x0000000001132700 3 09000400000000000000000054 TableLock .IX G 3
1 0 0x00202000 0x40000000 0
Revise la lista de bloqueos adquiridos para ejecutar la sentencia UPDATE de
SQL.
• Debería ver una serie de bloqueos de fila Exclusive (X) y varios bloqueos de
tabla.
• Debería ver dos bloqueos de tabla Intent Exclusive (IX).
La sentencia UPDATE de SQL ha actualizado la tabla MUSIC.STOCK, por lo
que se necesita un bloqueo de tabla Intent Exclusive (IX) para dicha tabla. Ha
definido la tabla MUSIC.STOCK como tabla temporal de periodo de sistema
con una tabla de historial MUSIC.STOCK_HISTORY. El proceso UPDATE de
MUSIC.STOCK necesita actualizar la tabla de historial del sistema, por lo que
se necesita un bloqueo IX adicional para MUSIC.STOCK_HISTORY.

© Copyright IBM Corp. 2015 9-54


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Tarea 2. Procesar sentencias SELECT de SQL utilizando


distintos niveles de aislamiento.
Con la ejecución del script stock update en la tarea anterior se ha adquirido un
conjunto de bloqueos que no liberó el procesador de línea de mandatos de
DB2. Podría utilizar la sentencia COMMIT WORK para liberar dichos bloqueos,
pero quiere ejecutar varios scripts SELECT de SQL que utilizan distintos
niveles de aislamiento de bloqueo para ver cómo pueden afectar a una
aplicación los bloqueos mantenidos por otras aplicaciones que se ejecutan al
mismo tiempo.
Necesitará una segunda sesión del procesador de línea de mandatos de DB2
para poder iniciar una segunda conexión a base de datos que pueda ejecutar
scripts SQL mientras la primera sesión mantiene sus bloqueos de fila y tabla.
Se conectará a la base de datos MUSICDB utilizando un ID de usuario de
sistema distinto, user23, para facilitar la supervisión del bloqueo de cada
conexión.
1. Inicie una segunda ventana de mandatos de DB2, pulse el icono de inicio de
Windows y, a continuación, vaya a Todos los programas > IBM DB2
DB2COPY1 > DB2 Command Window - Administrator. Cuando aparezca la
pregunta "¿Desea permitir que este programa realice cambios en el equipo?",
seleccione Sí.
2. Utilice el segundo procesador de línea de mandatos de DB2 para emitir la
siguiente serie de mandatos:
• cd C:\inst23\ddl
• db2 connect to musicdb user user23 using ibm2blue
Empezará por ejecutar el script SQL, stock_select_ur.sql. El script empieza por
definir los registros especiales CURRENT LOCK TIMEOUT y CURRENT
ISOLATION. La sentencia SET CURRENT ISOLATION ur establece el nivel de
aislamiento de bloqueo en Uncommitted Read, el nivel de aislamiento más
bajo. Esto permite también que la conexión acceda a las filas de datos
actualizadas por otras aplicaciones que no han confirmado dichos cambios.

© Copyright IBM Corp. 2015 9-55


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

3. Utilice el segundo procesador de línea de mandatos de DB2 para emitir la


siguiente serie de mandatos:
• db2 -tvf stock_select_ur.sql
La salida del mandato tendrá un aspecto parecido a la siguiente:

set current lock timeout 300


DB20000I The SQL command completed successfully.

set current isolation ur


DB20000I The SQL command completed successfully.

select sum(qty) from music.STOCK where itemno = 10

1
-----------
112

1 record(s) selected.
El resultado de la suma sum(QTY) que utiliza el nivel de aislamiento UR refleja
los cambios realizados por el mandato UPDATE no confirmado en la otra
sesión de CLP.
A continuación, ejecutaremos el script SQL, stock_select_cs.sql. El script
empieza por definir los registros especiales CURRENT LOCK TIMEOUT y
CURRENT ISOLATION. La sentencia SET CURRENT ISOLATION cs
establece el nivel de aislamiento de bloqueo en Cursor Stability, el nivel
predeterminado para el aislamiento. Esto no permite a la conexión acceder a
las filas de datos actualizadas por otras aplicaciones que no hayan confirmado
estos cambios, pero DB2 puede utilizar las entradas del registro especial para
recuperar el contenido de las filas de datos anterior a que se produjesen los
cambios.

© Copyright IBM Corp. 2015 9-56


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

4. Utilice el segundo procesador de línea de mandatos de DB2 para emitir la


siguiente serie de mandatos:
• db2 -tvf stock_select_cs.sql
La salida del mandato tendrá un aspecto parecido a la siguiente:
set current lock timeout 300
DB20000I The SQL command completed successfully.

set current isolation cs


DB20000I The SQL command completed successfully.

select sum(qty) from music.STOCK where itemno = 10

1
-----------
109

1 record(s) selected.

El resultado de la suma(QTY) que utiliza el nivel de aislamiento CS no incluye


los cambios realizados por el mandato UPDATE no confirmado en la otra
sesión de CLP.
A continuación, se ejecutará el script SQL, stock_select_rs.sql. El script
empieza por definir los registros especiales CURRENT LOCK TIMEOUT y
CURRENT ISOLATION. La sentencia SET CURRENT ISOLATION rs
establece el nivel de aislamiento de bloqueo en Read Stability. Este nivel de
aislamiento requiere bloqueos de fila para todas las filas de datos incluidas en
el resultado de la sentencia SQL. Dado que el mandato UPDATE ejecutado en
la primera sesión de CLP no se ha confirmado, la sentencia SELECT de dichos
datos en esta segunda sesión provocará una condición de espera de bloqueo.
5. Utilice el segundo procesador de línea de mandatos de DB2 para emitir los
mandatos siguientes:
• db2 connect to musicdb user user23 using ibm2blue
• db2 -tvf stock_select_rs.sql
La sentencia SELECT de SQL no se ha podido completar debido a que se
necesitan bloqueos de fila para producir el resultado y estos están en posesión
de otra sesión de CLP.
Puede utilizar el mandato db2pd para buscar las esperas de bloqueo activas,
pero tendrá que ejecutar el mandato desde la primera sesión de CLP.

© Copyright IBM Corp. 2015 9-57


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

6. Utilice el primer procesador de línea de mandatos de DB2 para emitir la


siguiente serie de mandatos:
• db2pd -db musicdb -wlock
La salida del mandato tendrá un aspecto parecido a la siguiente:

Database Member 0 -- Database MUSICDB -- Active -- Up 0 days 00:12:13 -- Date


2015-09-18-10.20.38.667000

Locks being waited on :


AppHandl [nod-index] TranHdl Lockname Type Mode Conv
Sts CoorEDU AppName AuthID AppID
23254 [000-23254] 3 090004001B0001000000000052 RowLock ..X G
6700 db2bp.ex INST23 *LOCAL.INST23.150918140903
23265 [000-23265] 12 090004001B0001000000000052 RowLock .NS W
236 db2bp.ex USER23 *LOCAL.INST23.150918141210

La salida del mandato db2pd muestra que hay un bloqueo de fila detentado (G)
por una conexión de usuario, inst23, pero un bloqueo de lectura NS está
esperando (W) al usuario de conexión user23.
Puede utilizar el informe -lock de db2pd para ver la lista completa de bloqueos
detentados por las dos conexiones, incluido el bloqueo que se está esperando.
7. Utilice el primer procesador de línea de mandatos de DB2 para emitir la
siguiente serie de mandatos:
• db2pd -db musicdb -lock
La salida del mandato tendrá un aspecto parecido a la siguiente:

Database Member 0 -- Database MUSICDB -- Active -- Up 0 days 00:12:40 -- Date


2015-09-18-10.21.05.386000

Locks:
Address TranHdl Lockname Type Mode Sts
Owner Dur HoldCount Att ReleaseFlg rrIID
0x0000000001131F80 3 09000400280001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001137280 3 09000500150000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132600 3 09000400200001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136A00 3 090005000D0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132C00 3 090004002B0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001132E00 3 09000500050000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0

© Copyright IBM Corp. 2015 9-58


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

0x0000000001131980 3 4141414141664164FE8BC714C1 PlanLock ..S G 3


1 0 0x00000000 0x40000000 0
0x000000000113B080 12 4141414141664164FE8BC714C1 PlanLock ..S G
12 1 0 0x00000000 0x40000000 0
0x0000000001131880 3 09000400230001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136D00 3 09000500100000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132800 3 090004001B0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001139A00 12 090004001B0001000000000052 RowLock .NS W 3
0 0 0x00000000 0x00000000 0
0x0000000001136500 3 09000500080000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131E80 3 09000400260001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001137080 3 09000500130000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132100 3 090004001E0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136800 3 090005000B0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132A00 3 09000400290001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001132300 3 09000400210001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136B00 3 090005000E0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x000000000113AE00 12 01000000030000000100A032D6 VarLock ..S G
12 1 0 0x00000000 0x40000000 0
0x0000000001132D00 3 090004002C0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001132F00 3 09000500060000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131680 3 09000400240001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136E00 3 09000500110000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132400 3 090004001C0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136600 3 09000500090000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131B80 3 09000400270001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001137180 3 09000500140000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132200 3 090004001F0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136900 3 090005000C0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132B00 3 090004002A0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0

© Copyright IBM Corp. 2015 9-59


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

0x0000000001132500 3 09000500040000000000000052 RowLock ..X G 3


1 0 0x00200008 0x40000000 0
0x0000000001131C80 3 09000400220001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136C00 3 090005000F0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001136400 3 09000500070000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131D80 3 09000400250001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136F00 3 09000500120000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001131A80 3 090004001D0001000000000052 RowLock ..X G 3
1 0 0x00200000 0x40000000 0
0x0000000001136700 3 090005000A0000000000000052 RowLock ..X G 3
1 0 0x00200008 0x40000000 0
0x0000000001132900 3 09000500000000000000000054 TableLock .IX G 3
1 0 0x00202000 0x40000000 0
0x0000000001132700 3 09000400000000000000000054 TableLock .IX G 3
1 0 0x00202000 0x40000000 0
0x0000000001139B00 12 09000400000000000000000054 TableLock .IS G
12 1 0 0x00003000 0x00000001 0
El archivo de mandato SQL incluía la sentencia SET CURRENT LOCK
TIMEOUT para limitar el tiempo durante el que una sentencia SQL esperará un
bloqueo antes de que se genere un código de retorno de error de SQL.
8. En el segundo procesador de línea de mandatos, espere a que se produzca la
condición de tiempo de espera excedido del bloqueo y a que se devuelva el
mensaje de error de DB2.
La salida del mandato tendrá un aspecto parecido a la siguiente:
set current lock timeout 180
DB20000I The SQL command completed successfully.

set current isolation rs


DB20000I The SQL command completed successfully.

select sum(qty) from music.STOCK where itemno = 10


SQL0911N The current transaction has been rolled back because of a deadlock
or timeout. Reason code "68". SQLSTATE=40001

© Copyright IBM Corp. 2015 9-60


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Tarea 3. Supervisar una base de datos DB2 para ver las


condiciones de espera de bloqueo utilizando Data
Server Manager.
En esta sección, se utiliza Data Server Manager para supervisar una condición
de espera de bloqueo para una base de datos DB2.
Va a utilizar las dos sesiones del procesador de línea de mandatos de DB2 que
se abrieron en las tareas anteriores:
• Una sesión utiliza el usuario inst23 para ejecutar un archivo de mandato que
actualiza la tabla MUSIC.STOCK y detenta los bloqueos.
• La segunda sesión utiliza el usuario user23 para seleccionar las filas
bloqueadas por la primera conexión
1. Utilice el primer procesador de línea de mandatos de DB2 para emitir la
siguiente serie de mandatos:
• db2 commit
• db2 connect to musicdb
• db2 +C -tvf stock_update.sql
A continuación, se ejecutará el script SQL, stock_select_rs.sql. Dado que el
mandato UPDATE ejecutado en la primera sesión de CLP no se ha confirmado,
la sentencia SELECT de dichos datos en esta segunda sesión provocará una
condición de espera de bloqueo.
2. Utilice el segundo procesador de línea de mandatos de DB2 para emitir el
mandato siguiente:
• db2 -tvf stock_select_rs.sql
La sentencia SELECT de SQL no se ha podido completar debido a que se
necesitan bloqueos de fila para producir el resultado y estos están en posesión
de otra sesión de CLP.
3. Abra Data Server Manager escribiendo el siguiente texto de URL en Internet
Explorer: http//localhost:11080.
4. Utilice estas credenciales para iniciar la sesión en DSM:
• El ID de usuario de Windows: db2admin
• La contraseña de usuario: ibm2blue
5. A la izquierda de la aplicación DSM, pulse Monitor > Database y, a
continuación, seleccione MUSICDB.

© Copyright IBM Corp. 2015 9-61


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

6. En las opciones del menú superior, pulse Locking.


La vista Blocking and Waiting Conditions muestra que el usuario INST23 es el
bloqueador.
7. Utilice la flecha situada junto a Blocker para ampliar los datos y mostrar el
WAITER, USER23.
8. Seleccione la vista Locked Objects with Waiting Conditions.
Los datos mostrados indican que un bloqueo de fila de la tabla MUSIC.STOCK
es el objeto de bloqueo de una espera de bloqueo activa.
9. Seleccione la vista Connection statistics.
Los datos mostrados ofrecen estadísticas relacionadas con el bloqueo para
todas las conexiones, incluidas las esperas de bloqueo por minuto y el
porcentaje de tiempo de espera de bloqueo.
10. Pulse Log Out para salir de Data Server Manager.
Resultado:
En esta demostración, ha utilizado varios scripts SQL para mostrar los tipos
de bloqueos utilizados para procesar sentencias SQL con distintos niveles de
aislamiento de aplicaciones. Se ha creado y analizado una condición de
espera de bloqueo.

© Copyright IBM Corp. 2015 9-62


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 9 Mantenimiento de bases de datos, supervisión y determinación de problemas

Resumen de la unidad
• Planificar el uso de los programas de utilidad RUNSTATS,
REORGCHK y REORG para mantener la eficacia de la base de datos
• Configurar una instancia de DB2 para establecer la ubicación de los
datos de diagnóstico y los niveles de gravedad de mensaje para
realizar un análisis básico de problemas
• Describir los métodos que se pueden utilizar para supervisar una
actividad de aplicación y base de datos, como los mandatos db2pd,
los supervisores de sucesos y el uso de sentencias SQL para acceder
a las estadísticas
• Describir la función EXPLAIN y utilizar este recurso para ayudar en
los análisis básicos
• Utilizar el mandato db2advis para analizar una carga de trabajo en
busca de posibles mejoras de rendimiento
• Utilizar el mandato db2fodc para recopilar datos de diagnóstico
relacionados con el hecho de que el sistema se haya colgado

Mantenimiento de bases de datos, supervisión y determinación de problemas © Copyright IBM Corporation 2015

Resumen de la unidad

© Copyright IBM Corp. 2015 9-63


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10. Seguridad

Seguridad

IBM DB2 v10.5

© Copyright IBM Corporation 2015


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

© Copyright IBM Corp. 2015 10-2


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Objetivos de la unidad
• Utilizar los mecanismos de control de accesos de DB2 para
implementar la seguridad en la base de datos
• Explicar las tareas ejecutadas por el usuario SYSADM, el usuario
SECADM y un usuario DBADM
• Comparar el uso de los roles de base de datos con los grupos de
usuarios por cuestiones de seguridad
• Describir los privilegios necesarios para enlazar y ejecutar un paquete
de aplicaciones
• Describir la diferencia entre los privilegios explícitos y los privilegios
implícitos
• Listar los métodos para implementar el cifrado de las conexiones a
base de datos
• Listar las ventajas de crear un contexto de confianza para un sistema
de aplicaciones de tres niveles
Seguridad © Copyright IBM Corporation 2015

Objetivos de la unidad

© Copyright IBM Corp. 2015 10-3


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Autenticación y autorización
• DB2 utiliza una combinación de: Autorización
 Servicio de seguridad externo ¿Jon tiene
autorización para
 Información interna de control de Mytable
efectuar SELECT
accesos desde MYTABLE?
• Autenticación
 Identificar al usuario Autenticación
− Comprobar el nombre de usuario y la SELECT * desde mytable ¿Es esta la
contraseña especificados contraseña de Jon?

• Se efectúa en un recurso de
seguridad externo a DB2
• Autorización: Ejemplo de CONNECT TO
USUARIO jon con la contraseña pwd
 Comprobar si el usuario autenticado
puede realizar la operación solicitada
 Se efectúa en los recursos de DB2
− Información almacenada en el
catálogo de DB2, archivo de
configuración de DBM
Seguridad © Copyright IBM Corporation 2015

Autenticación y autorización
Para acceder a una instancia o a una base de datos, es necesario que el usuario esté
autenticado. El tipo de autenticación de cada instancia determina cómo y cuándo
verificar a un usuario. El tipo de autenticación se almacena en el archivo de
configuración del gestor de bases de datos en el servidor. Se define al principio,
cuando se crea la instancia. Existe un tipo de autenticación por instancia que cubre el
acceso al servidor de base de datos y a todas las bases de datos que están bajo su
control.
Se proporcionan los tipos de autenticación siguientes:
• SERVER: especifica que la autenticación se efectúa en el servidor a través de la
seguridad del sistema operativo local. Si se especifican un ID de usuario y una
contraseña durante el intento de conexión o unión, estos se comparan con las
combinaciones válidas de ID de usuario y contraseña del servidor, a fin de
determinar si el usuario tiene permiso para acceder a la instancia. Este es el
mecanismo de seguridad predeterminado.
Nota:El código de servidor detecta si una conexión es local o remota. En el caso
de las conexiones locales, si la autenticación es SERVER, no se necesitan un ID
de usuario y una contraseña para que la autenticación sea correcta.

© Copyright IBM Corp. 2015 10-4


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

• SERVER_ENCRYPT: especifica que el servidor acepta los esquemas de


autenticación cifrados de SERVER. Si no se especifica la autenticación de
cliente, el cliente se autentica utilizando el método seleccionado en el servidor.
Si la autenticación de cliente es SERVER, el cliente se autentica enviando el ID
de usuario y la contraseña al servidor. Si la autenticación de cliente es
SERVER_ENCRYPT, el cliente se autentica enviando un ID de usuario cifrado y
una contraseña cifrada.
Si se especifica SERVER_ENCRYPT en el cliente y SERVER en el servidor, se
genera un error debido a la no coincidencia de los niveles de autenticación.
• CLIENT: especifica que la autenticación se efectúa en la partición de base de
datos donde se invoca la aplicación, utilizando la seguridad del sistema
operativo. El ID de usuario y la contraseña especificados durante un intento de
conexión o unión se comparan con las combinaciones válidas de ID de usuario y
contraseña en el nodo de cliente para determinar si el ID de usuario puede
acceder a la instancia. No se realizará ningún otro proceso de autenticación en el
servidor de bases de datos. Normalmente, se denomina inicio de sesión único. Si
el usuario efectúa un inicio de sesión local o de cliente, solo la estación de
trabajo de cliente local será consciente de ello.
• KERBEROS: se utiliza cuando tanto el servidor como el cliente de DB2 se
encuentran en sistemas operativos compatibles con el protocolo de seguridad
Kerberos. El protocolo de seguridad Kerberos ejecuta la autenticación como
servicio de autenticación de terceros utilizando la criptografía convencional para
crear una clave secreta compartida. Esta clave se convierte en la credencial del
usuario y se utiliza para verificar la identidad de los usuarios en aquellas
ocasiones en las que se solicitan servicios locales o de red. La clave elimina la
necesidad de enviar el nombre de usuario y la contraseña, como texto simple, a
través de la red. El uso del protocolo de seguridad Kerberos habilita el uso de un
inicio de sesión único en un servidor DB2 remoto.
La autenticación Kerberos funciona en Windows como se indica a
continuación:
1. Un usuario inicia sesión en la máquina cliente mediante una cuenta de
dominio y, al hacerlo, se autentica en el centro de distribución de claves
(KDC) de Kerberos en el controlador de dominio. El centro de distribución de
claves emite un tíquet de otorgamiento de tíquet (TGT) para el cliente.

© Copyright IBM Corp. 2015 10-5


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

2. Durante la primera fase de la conexión, el servidor envía el nombre principal


del destino, que es el nombre de cuenta del servicio de servidor de DB2, al
cliente. Con el nombre principal de destino del servidor y el servicio de
otorgamiento de tíquets, el cliente solicita un tíquet de servicio al servicio de
otorgamiento de tíquets (TGS), que se encuentra también en el controlador
de dominio. Si tanto el tíquet de otorgamiento de tíquet del cliente como el
nombre principal de destino del servidor son válidos, el TGS emitirá un tíquet
de servicio para el cliente.
3. El cliente envía este tíquet de servicio al servidor a través del canal de
comunicación (que podría ser, por ejemplo, TCP/IP).
4. El servidor valida el tíquet de servidor del cliente. Si el tíquet de servicio del
cliente es válido, la autenticación se habrá completado.
Es posible catalogar las bases de datos de la máquina cliente y especificar
explícitamente el tipo de autenticación Kerberos con el nombre principal de
destino del servidor. De este modo, se puede omitir la primera fase de la
conexión.
Si se especifican un ID de usuario y una contraseña, el cliente solicita el
tíquet de otorgamiento de tíquet de dicha cuenta de usuario y la utiliza para
la autenticación.
• KRB_SERVER_ENCRYPT: especifica que el servidor acepta los esquemas de
autenticación cifrados de SERVER o la autenticación Kerberos. Si la
autenticación de cliente es KERBEROS, el cliente se autentica utilizando el
sistema de seguridad de Kerberos. Si la autenticación de cliente no es Kerberos,
o el servicio de autenticación Kerberos no está disponible, el tipo de
autenticación del sistema será equivalente a SERVER_ENCRYPT.
Nota:El sistema de base de datos de DB2 ofrece soporte para el protocolo de
autenticación Kerberos en sistemas operativos Windows, AIX, Solaris y Linux
IA32 y AMD64. Además, las máquinas de cliente y servidor tienen que
pertenecer al mismo dominio de Windows o a dominios de confianza. Este tipo
de autenticación es el que debe utilizarse si el servidor admite Kerberos y solo
algunas de las máquinas cliente admiten la autenticación Kerberos.
Restricciones del inicio de sesión de control de los usuarios que se conectan
en el servidor AIX
De forma predeterminada, cuando se autentica un usuario en un servidor AIX, DB2
comprueba las restricciones del inicio de sesión local del usuario que se conecta antes
de permitir la conexión. La variable de registro DB2LOGINRESTRICTIONS permite a
DB2 aplicar modalidades alternativas de restricciones de inicio de sesión.

© Copyright IBM Corp. 2015 10-6


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Si no se define el valor DB2LOGINRESTRICTIONS, el valor predeterminado es


LOCAL.
La variable se puede definir en los valores siguientes:
• REMOTE: DB2 solo aplicará las restricciones de inicio de sesión remoto
• SU: DB2 solo aplicará las restricciones su (su, en AIX, equivale a cambiar el ID
durante una sesión)
• NONE: DB2 no aplicará ninguna modalidad concreta de restricciones de inicio de
sesión
• LOCAL: DB2 solo aplicará las restricciones de inicio de sesión locales
En todos los casos, DB2 sigue comprobando las siguientes condiciones de error:
• Cuenta caducada
• Cuenta bloqueada
• Usuario no válido

© Copyright IBM Corp. 2015 10-7


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Autorización SYSADM

• Administradores del sistema: SYSADM


 Definidos por SYSADM_GROUP en la configuración de la
instancia (DBM)
 Funciones relacionadas con el sistema:
− Actualizar la instancia de base de datos y las configuraciones de bases de datos
− Crear o descartar una base de datos
− Crear, modificar o descartar espacios de tabla
− Efectuar tareas de copia de seguridad y recuperación
− Supervisar el rendimiento y gestionar la determinación de problemas (db2pd)
− Iniciar y detener la instancia
 Sin acceso implícito a los datos
− SECADM podría otorgarle DATAACCESS
 Sin capacidad implícita para otorgar y revocar privilegios de nivel de objeto
y base de datos
− SECADM podría otorgarle ACCESSCTRL

Seguridad © Copyright IBM Corporation 2015

Autorización SYSADM
A partir de DB2 9.7, los administradores del sistema, o los usuarios SYSADM,
conservan algunos de los privilegios que estaban disponibles en versiones anteriores a
nivel de instancia, aunque no todos. Un usuario SYSADM se define utilizando un grupo
de usuarios designado, SYSADM_GROUP, en la configuración de instancia. Un
usuario incluido en el grupo SYSADM puede efectuar las siguientes tareas de
administración del sistema:
• Actualizar las configuraciones de instancia y base de datos
• Crear una nueva base de datos o descartar una ya existente
• Gestionar espacios de tabla utilizando las sentencias CREATE, ALTER o DROP
• Ejecutar los mandatos de recuperación de base de datos, como BACKUP,
RESTORE, ROLLFORWARD y RECOVER
• Supervisar la actividad a nivel de instancia mediante los mandatos GET
SNAPSHOT y ejecutar el mandato db2pd
• Controlar la instancia, incluidos los mandatos de inicio (db2start) y detención
(db2stop)

© Copyright IBM Corp. 2015 10-8


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Disponer de autoridad SYSADM no permite al usuario acceder automáticamente a los


datos basados en tablas o vistas. Un usuario SECADM podría otorgar el privilegio
DATAACCESS para permitir el acceso a datos que era inherente en las versiones
anteriores.
El usuario SYSADM tampoco dispone automáticamente de autoridad para otorgar y
revocar los privilegios a nivel de objeto o base de datos de ninguna de las bases de
datos de la instancia. Un usuario SECADM podría otorgar el privilegio ACCESSCTRL
para permitir el otorgamiento o la revocación de privilegios que eran inherentes en
versiones anteriores.
Con DB2 9.7, un usuario SYSADM no tenía la autoridad necesaria para otorgar
autoridades DBADM o SECADM a otro usuario.
Estaban disponibles los grupos de usuarios SYSCTRL_GROUP, SYSMAINT_GROUP
y SYSMON_GROUP para permitir subconjuntos específicos de la autoridad de
mandatos SYSADM.
Con el objeto de permitir que un administrador del sistema cree una base de datos
DB2 y empiece a efectuar las tareas necesarias para dicha base de datos, al usuario
SYSADM que crea una nueva base de datos DB2 se le otorgan inicialmente las
autoridades SECADM y DBADM para dicha base de datos, incluidas las autoridades
ACCESSCTRL y DATAACCESS.

© Copyright IBM Corp. 2015 10-9


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Autorización DBADM

• Administrador de bases de datos: DBADM


 Solo la autoridad SECADM puede otorgarla o revocarla
 Se puede otorgar a un usuario, un grupo o un rol, pero no a
PUBLIC
 Acceso a todos los datos basado en las opciones WITH
DATAACCESS (valor predeterminado) o WITHOUT
DATAACCESS
 Capacidad para otorgar y revocar privilegios de nivel de objeto y
base de datos en función de las opciones WITH ACCESSCTRL
(valor predeterminado) o WITHOUT ACCESSCTRL
 Creación y gestión de supervisores de sucesos de bases de
datos
 Capacidad para ejecutar programas de utilidad orientados a
datos, como REORG y RUNSTATS
 La autoridad SQLADM y la autoridad WLMADM son subconjuntos
de la autoridad DBADM
Seguridad © Copyright IBM Corporation 2015

Autorización DBADM
La autoridad DBADM solo la puede otorgar o revocar el administrador de seguridad
(que ostenta la autoridad SECADM) y se puede otorgar a un usuario, un grupo o un rol.
El grupo PUBLIC no puede obtener la autoridad DBADM ni directa ni indirectamente.
La autoridad DBADM es una autoridad administrativa de una base de datos específica.
El administrador de bases de datos cuenta con los privilegios necesarios para crear
objetos y emitir algunos mandatos de base de datos. Además, los usuarios con
autoridad DBADM tienen el privilegio SELECT en las vistas y tablas de catálogo de
sistema y pueden ejecutar todas las rutinas de DB2 definidas por el sistema, excepto
las rutinas de auditoría.

© Copyright IBM Corp. 2015 10-10


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Ostentar la autoridad DBADM en una base de datos permite al usuario efectuar estas
acciones en dicha base de datos:
• Crear, modificar y descartar objetos de base de datos no relacionados con la
seguridad
• Leer archivos de registro
• Crear, activar y descartar supervisores de sucesos
• Consultar el estado de un espacio de tabla
• Actualizar los archivos del historial de registro
• Desactivar temporalmente un espacio de tabla
• Reorganizar una tabla
• Recopilar estadísticas de catálogo mediante el programa de utilidad RUNSTATS
La autoridad SQLADM y la autoridad WLMADM son subconjuntos de la autoridad
DBADM. La autoridad WLMADM tiene también la capacidad de otorgar el privilegio
USAGE en las cargas de trabajo.

© Copyright IBM Corp. 2015 10-11


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Autorización SECADM
• Administradores de seguridad: SECADM
 La debe otorgar un usuario SECADM a nivel de base de datos
 Se puede otorgar a un usuario, un grupo o un rol
 El grupo PUBLIC no puede obtener la autoridad SECADM ni directa ni indirectamente
 El propietario de instancia no ostenta la autoridad SECADM de forma predeterminada
 Es necesaria para implementar y gestionar las características de seguridad:
− Control de accesos basado en etiquetas
− Definición y gestión de roles de base de datos
− Gestión de auditorías a nivel de base de datos
− Contextos de confianza para aplicaciones de tres niveles
− Controles de acceso a filas y columnas (DB2 10)
 Tiene la capacidad de utilizar SELECT en tablas de catálogo y vistas de catálogo,
pero no puede acceder a los datos almacenados en tablas de usuario.
 Capacidad para otorgar y revocar privilegios de nivel de objeto y base de datos
 Capacidad para otorgar autoridades ACCESSCTRL, DATAACCESS y DBADM a
usuarios, grupos o roles
 El creador de una base de datos es el usuario SECADM inicial de la nueva base de
datos
Seguridad © Copyright IBM Corporation 2015

Autorización SECADM
La autoridad SECADM es la autoridad de administración de seguridad primaria para
una base de datos concreta. Esta autoridad le permite crear y gestionar objetos de
base de datos relacionados con la seguridad, además de otorgar y revocar todos los
privilegios y autoridades de las bases de datos. Además, el administrador de seguridad
puede ejecutar, y decidir quién más puede ejecutar, las rutinas del sistema de
auditoría.
La autoridad SECADM tiene la capacidad de utilizar SELECT en tablas de catálogo y
vistas de catálogo, pero no puede acceder a los datos almacenados en tablas de
usuario.
La autoridad SECADM solo la puede otorgar el administrador de seguridad (que
ostenta la autoridad SECADM), quien la puede otorgar a un usuario, un grupo o un rol.
El grupo PUBLIC no puede obtener la autoridad SECADM ni directa ni indirectamente.

© Copyright IBM Corp. 2015 10-12


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

La autoridad SECADM le da al usuario la capacidad de realizar las operaciones


siguientes:
• Crear, modificar, comentar y descartar:
• Políticas de auditoria
• Componentes de etiqueta de seguridad
• Políticas de seguridad
• Contextos de confianza
• Gestión de controles de accesos a filas y columnas
• Crear, comentar y descartar:
• Roles
• Etiquetas de seguridad
• Otorgar y revocar autoridades y privilegios de bases de datos
• Ejecutar las siguientes rutinas de auditoría para ejecutar las tareas especificadas:
• Los registros de auditoría de archivado de función de tabla y procedimiento
almacenado SYSPROC.AUDIT_ARCHIVE.
• La función de tabla SYSPROC.AUDIT_LIST_LOGS le permite localizar registros
de interés.
• El procedimiento almacenado SYSPROC.AUDIT_DELIM_EXTRACT extrae los
datos en archivos delimitados para su análisis. Además, el administrador de
seguridad puede otorgar y revocar el privilegio EXECUTE en estas rutinas,
habilitando así al administrador de seguridad para delegar estas tareas, si lo
desea. Solo el administrador de seguridad puede otorgar el privilegio EXECUTE
en estas rutinas. No se puede otorgar el privilegio EXECUTE WITH GRANT
OPTION a estas rutinas (SQLSTATE 42501).
• Utilizar la sentencia AUDIT para asociar una política de auditoría a un objeto de
base de datos o base de datos concretos en el servidor
• Utilizar la sentencia TRANSFER OWNERSHIP para transferir objetos que no son
propiedad del ID de autorización de la sentencia
Nota: Ninguna otra autoridad ofrece estas capacidades. El propietario de instancia no
dispone, de manera predeterminada, de autoridad SECADM. El creador de una base
de datos es el usuario SECADM inicial de la nueva base de datos. Solo el
administrador de seguridad tiene la capacidad de otorgar a otros usuarios, grupos o
roles las autoridades ACCESSCTRL, DATAACCESS, DBADM y SECADM.

© Copyright IBM Corp. 2015 10-13


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Otras autorizaciones de seguridad limitadas (1 de 2)


• Estas autorizaciones las debe otorgar un usuario SECADM:
 ACCESSCTRL:
− Autoridad necesaria para otorgar y revocar privilegios en los objetos de una base
de datos específica
− La autoridad ACCESSCTRL no dispone de privilegios inherentes para acceder a
los datos almacenados en tablas, salvo las vistas y tablas del catálogo
 DATAACCESS:
− La autoridad que permite el acceso a los datos en una base de datos específica
− Se puede otorgar a un usuario, un grupo o un rol

Seguridad © Copyright IBM Corporation 2015

Otras autorizaciones de seguridad limitadas


Existen varias autorizaciones de administrador adicionales que permiten otorgar
privilegios seleccionados. Se pueden utilizar para permitir que distintos grupos de
individuos o grupos realicen ciertas funciones administrativas sin contar con otros
privilegios innecesarios.
La autoridad ACCESSCTRL es la necesaria para otorgar y revocar privilegios sobre
objetos de una base de datos concreta.
La autoridad ACCESSCTRL no dispone de privilegios inherentes para acceder a los
datos almacenados en tablas, salvo las vistas y tablas del catálogo.
La autoridad ACCESSCTRL solo la puede otorgar el administrador de seguridad (que
ostenta la autoridad SECADM).
Se puede otorgar a un usuario, un grupo o una función. El grupo PUBLIC no puede
obtener la autoridad ACCESSCTRL ni directa ni indirectamente.

© Copyright IBM Corp. 2015 10-14


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

La autoridad ACCESSCTRL le da al usuario la capacidad de realizar las operaciones


siguientes:
• Otorgar y revocar las siguientes autoridades administrativas, EXPLAIN,
SQLADM y WLMADM
• Otorgar y revocar las siguientes autoridades de base de datos, BINDADD,
CONNECT, CREATETAB, CREATE_EXTERNAL_ROUTINE,
CREATE_NOT_FENCED_ROUTINE, IMPLICIT_SCHEMA, LOAD y
QUIESCE_CONNECT
Otorgar y revocar todos los privilegios de los siguientes objetos, independientemente
de quién haya otorgado el privilegio:
• Variable global
• Índice
• Apodo
• Paquete
• Rutina (excepto rutinas de auditoría)
• Esquema
• Secuencia
• Servidor
• Tabla
• Espacio de tabla
• Vista
• Objetos XSR
• Privilegio SELECT en vistas y tablas de catálogo de sistema
Esta autoridad es un subconjunto de la autoridad de administrador de seguridad
(SECADM).
DATAACCESS es la autoridad que permite acceder a datos de una base de datos
específica.
La autoridad DATAACCESS solo la puede otorgar el administrador de seguridad (que
ostenta la autoridad SECADM).
Se puede otorgar a un usuario, un grupo o una función. El grupo PUBLIC no puede
obtener la autoridad DATAACCESS ni directa ni indirectamente.

© Copyright IBM Corp. 2015 10-15


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

A todas las tablas, vistas, tablas de consulta materializada y apodos les da estas
autoridades y privilegios:
• Autoridad LOAD en la base de datos
• Privilegio SELECT (incluidas vistas y tablas de catálogo de sistema)
• Privilegio INSERT
• Privilegio UPDATE
• Privilegio DELETE
Además, la autoridad DATAACCESS proporciona los siguientes privilegios:
• EXECUTE en todos los paquetes
• EXECUTE en todas las rutinas (excepto las de auditoría)

© Copyright IBM Corp. 2015 10-16


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Otras autorizaciones de seguridad limitadas (2 de 2)


• Estas autorizaciones las puede otorgar un usuario SECADM o un
usuario con autoridad ACCESSCTRL:
 SQLADM: autoridad necesaria para supervisar y ajustar sentencias SQL
 EXPLAIN: autoridad necesaria para los planes de consulta EXPLAIN sin
obtener acceso a los datos de una base de datos específica
− La autoridad EXPLAIN es un subconjunto de la autoridad SQLADM
 WLMADM: autoridad necesaria para gestionar los objetos de carga de
trabajo de una base de datos específica:
− Le permite crear, modificar, descartar y comentar los objetos del gestor de carga
de trabajo, además de otorgar y revocar el acceso a ellos.
− Subconjunto de la autoridad de administrador de bases de datos, DBADM

Seguridad © Copyright IBM Corporation 2015

SQLADM
La autoridad SQLADM es la autoridad necesaria para supervisar y ajustar las
sentencias SQL.
La autoridad SQLADM es un subconjunto de la autoridad del administrador de
bases de datos (DBADM).
La autoridad SQLADM la puede otorgar el administrador de seguridad (que
ostenta la seguridad SECADM) o un usuario que posea la autoridad
ACCESSCTRL.
La autoridad SQLADM se puede otorgar a un usuario, un grupo, un rol o a
PUBLIC.

© Copyright IBM Corp. 2015 10-17


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

La autoridad SQLADM le da al usuario la capacidad de realizar las funciones


siguientes:
• Ejecución de las siguientes sentencias SQL:
• CREATE y DROP EVENT MONITOR
• EXPLAIN
• FLUSH EVENT MONITOR
• FLUSH OPTIMIZATION PROFILE CACHE
• FLUSH PACKAGE CACHE
• PREPARE
• REORG INDEXES/TABLE
• RUNSTATS
• SET EVENT MONITOR STATE
• Ejecución de determinadas cláusulas de las siguientes sentencias SQL del
gestor de carga de trabajo.
• Privilegio SELECT en vistas y tablas de catálogo de sistema
• Privilegio EXECUTE en todas las rutinas de DB2 definidas por el sistema
(excepto las rutinas de auditoría)
EXPLAIN
La autoridad EXPLAIN es la necesaria para los planes de la consulta EXPLAIN
sin obtener acceso a los datos de una base de datos específica.
Esta autoridad es un subconjunto de la autorización de administrador de bases
de datos y no tiene privilegios inherentes para acceder a los datos almacenados
en tablas.
La autoridad EXPLAIN la puede otorgar el administrador de seguridad (que
ostenta la autoridad SECADM) o un usuario que posea autoridad
ACCESSCTRL.
La autoridad EXPLAIN se puede otorgar a un usuario, un grupo, un rol o a
PUBLIC. Ofrece la capacidad de ejecutar las siguientes sentencias SQL:
• EXPLAIN
• PREPARE
• DESCRIBE en la salida de una sentencia SELECT o de una sentencia
XQuery

© Copyright IBM Corp. 2015 10-18


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

La autoridad EXPLAIN proporciona también el privilegio EXECUTE en las rutinas


EXPLAIN definidas por el sistema.
La autoridad EXPLAIN es un subconjunto de la autoridad SQLADM.
WLMADM
La autoridad WLMADM es la autoridad necesaria para gestionar los objetos de
carga de trabajo de una base de datos específica.
Esta autoridad le permite crear, modificar, descartar y comentar los objetos del
gestor de carga de trabajo, además de otorgar y revocar el acceso a ellos.
La autoridad WLMADM la puede otorgar el administrador de seguridad (que
ostenta la seguridad SECADM) o un usuario que posea la autoridad
ACCESSCTRL. La autoridad WLMADM se puede otorgar a un usuario, un
grupo, un rol o a PUBLIC.
La autoridad WLMADM es un subconjunto de la autoridad de administrador de
bases de datos, DBADM.

© Copyright IBM Corp. 2015 10-19


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Métodos para administrar la seguridad en DB2

Un usuario
SYSADM
El creador de la base
de datos también ostenta
SECADM y DBADM

Usuarios individuales con


autoridad expresa
Un usuario SYSADM gestiona el sistema
Un usuario DBADM gestiona los datos
Un usuario SECADM gestiona la seguridad de la base de datos
Grupos de usuarios con autoridades expresas
Varios usuarios definidos en SYSADM_GROUP
Autoridad SECADM otorgada a varios usuarios o un rol
Autoridad DBADM otorgada a varios usuarios o a un
rol WITHOUT ACCESSCTRL

Seguridad © Copyright IBM Corporation 2015

Métodos para administrar la seguridad en DB2


Hay muchas maneras de administrar la seguridad de DB2 en una base de datos.
En entornos simples, un único inicio de sesión de usuario podría ostentar todos los
privilegios necesarios para efectuar las tareas relacionadas con la base de datos.
Dicho usuario podría ser un usuario SYSADM que ejecutase todas las tareas de nivel
de sistema. Si dicho usuario crea una base de datos, al ID de usuario se le otorgará
automáticamente la autoridad SECADM para la base de datos y autoridad DBADM.
Con esto, se permite que un solo usuario gestione el sistema de base de datos,
otorgue y revoque privilegios, y acceda a todos los datos de la base de datos.
En algunos casos, podría ser necesario implementar privilegios individuales para usuarios
individuales.
Un usuario efectúa las funciones de nivel de sistema como SYSADM, pero no tiene
acceso a los datos ni otorga permisos de base de datos.
Otro usuario puede gestionar la seguridad como SECADM de la base de datos y
otorgar los privilegios necesarios para dar soporte a las aplicaciones, pero sin tener
acceso a los datos.
Un tercer usuario podría trabajar como administrador de la base de datos de aplicación
y utilizar la autoridad DBADM para ejecutar programas de utilidad y acceder a los
datos, pero sin tener autoridad para otorgar privilegios o efectuar mandatos de nivel de
sistema.

© Copyright IBM Corp. 2015 10-20


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

En el caso de entornos más grandes, las autoridades BDADM, de administrador del


sistema (SYSADM) y de administrador de seguridad (SECADM) se pueden configurar
utilizando grupos o roles que faciliten la tarea de asignar o reasignar autoridades a las
personas en función de sus proyectos y responsabilidades actuales.

© Copyright IBM Corp. 2015 10-21


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Separar los privilegios de seguridad de la base de datos


• Supongamos que el usuario SYSA1 de SYSADM crea una nueva base de
datos TEST1, durante el procesamiento de CREATE DATABASE:
 A SYSA1 se le otorga SECADM
 A SYSA1 se le otorga DBADM con ACCESSCTRL y DATAACCESS
• El usuario SECA1 tiene que gestionar todas las autorizaciones de
seguridad:
 Como único usuario SECADM, SYSA1 tiene que otorgar SECADM a SECA1
− GRANT SECADM ON DATABASE to user SECA1
 Ahora, el usuario SECA1 puede revocar los privilegios adicionales de SYSA1
− REVOKE SECADM on database from user SYSA1
− REVOKE ACCESSCTRL,DATAACCESS on database
− from user SYSA1
• El usuario APPDBA1 necesita tener acceso a los objetos de datos
de la nueva base de datos, y capacidad para gestionarlos, pero no podrá
gestionar los privilegios de seguridad
 El usuario SECA1 tiene que otorgar al usuario APPDBA1 los privilegios de
acceso necesarios
− GRANT DBADM WITHOUT ACCESSCTRL on database to user APPDBA1
Seguridad © Copyright IBM Corporation 2015

Separar los privilegios de seguridad de la base de datos


Es posible separar los privilegios de seguridad de la base de datos de tal manera que
se permita a cada persona realizar una parte del trabajo administrativo sin disponer de
privilegios innecesarios.
Supongamos que un usuario SYSADM con el ID de inicio de sesión SYSA1 crea una
nueva base de datos DB2 denominada TEST1. Durante la creación de la base de
datos, DB2 otorgará automáticamente SECADM y DBADM con ACCESSCTRL y
DATAACCESS al inicio de sesión de usuario SYSA1.
Si es necesario que otro usuario SECA1 efectúe todas las tareas de administración de
seguridad de la base de datos TEST1, el usuario SYSA1, como usuario SECADM
inicial de la base de datos, puede otorgar SECADM al usuario SECA1. En este punto,
tanto SYSA1 como SECA1 podrían otorgar o revocar los privilegios de la base de
datos TEST1.
Ahora, el usuario SECA1 puede revocar las autoridades de base de datos de SYSA1
que no se necesitan para ejecutar las tareas del sistema, que podrían incluir SECADM,
ACCESSCTRL y DATAACCESS.

© Copyright IBM Corp. 2015 10-22


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Podrían utilizarse las sentencias siguientes:


REVOKE SECADM on database from user SYSA1
REVOKE ACCESSCTRL,DATAACCESS on database from user SYSA1
Si el ID de inicio de sesión de un usuario de APPDBA1 tiene que acceder a los objetos
de datos de la base de datos TEST1, y gestionarlos, pero dicho usuario no necesita
ninguna autoridad para otorgar privilegios, el usuario SECA1 puede otorgar al
administrador de bases de datos de la aplicación la autoridad necesaria utilizando la
sentencia siguiente:
GRANT DBADM WITHOUT ACCESSCTRL on database to user APPDBA1

© Copyright IBM Corp. 2015 10-23


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Jerarquías de los privilegios de seguridad de DB2


Nivel de instancia – definido en DBM CFG Privilegios a nivel de tabla
 SYSADM_GROUP  Control
– SYSCTRL_GROUP – ALL
 SYSMAINT_GROUP  ALTER
– SYSMON_GROUP  SELECT
 INSERT
Autoridades de la tarea a nivel de base de datos
 UPDATE
 SECADM
 DELETE
– ACCESSCTRL
 INDEX
 DATAACCESS
 REFERENCES
 DBADM
– WLMADM Privilegios a nivel de vista Para el método o la
– LOAD  Control función de rutina
– SQLADM – ALL  EXECUTE
– EXPLAIN  SELECT
 INSERT
 DELETE Espacio de tabla
Privilegios a nivel de base de datos  UPDATE  USE
 BINDADD
 CONNECT
 CREATETAB Privilegios del paquete Privilegios a nivel de
 Control esquema
 CREATE_EXTERNAL_ROUTINE
– BIND  ALTERIN
 CREATE_NOT_FENCED_ROUTINE
– EXECUTE  CREATEIN
 IMPLICIT_SCHEMA
 DROPIN
 QUIESCE_CONNECT
 CREATE_SECURE_OBJECTS
Seguridad © Copyright IBM Corporation 2015

Jerarquías de los privilegios de seguridad de DB2


La configuración de instancia permite que se designen grupos de usuarios para las
autoridades SYSADM, SYSCTRL, SYSMAINT o SYSMON. Estos se aplicarían a las
bases de datos de la instancia.
Se pueden otorgar privilegios SECADM, ACCESSCTRL, DATAACCESS, DBADM,
WLMADM, LOAD, SQLADM y EXPLAIN a todas las bases de datos.
También se pueden otorgar privilegios de base de datos:
• BINDADD
• CONNECT
• CREATETAB
• CREATE_EXTERNAL_ROUTINE
• CREATE_NOT_FENCED_ROUTINE
• IMPLICIT_SCHEMA
• QUIESCE_CONNECT
En la imagen, se muestran los privilegios que se pueden otorgar a tablas, vistas,
esquemas, paquetes, rutinas, funciones, métodos y espacios de tabla de DB2.

© Copyright IBM Corp. 2015 10-24


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Sentencia GRANT: sintaxis de privilegios de tabla / vista


PRIVILEGES

GRANT ALL
,

ALTER
CONTROL
DELETE
INDEX
INSERT
REFERENCES
,
( column-name )
SELECT
UPDATE
,
( column-name )

TABLE ,

ON table-name TO authorization-name
USER
view-name GROUP
ROLE
PUBLIC

WITH GRANT OPTION


Seguridad © Copyright IBM Corporation 2015

Sentencia GRANT: sintaxis de privilegios de tabla / vista


En la imagen, se muestra la sintaxis para otorgar privilegios en tablas y vistas.

© Copyright IBM Corp. 2015 10-25


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Utilizar los roles de base de datos en cuestiones de


seguridad
• Los roles de bases de datos los crea y los gestiona un usuario SECADM
para cada base de datos
• Los roles de base de datos se pueden otorgar a un usuario, un grupo, a
PUBLIC o a otro rol (jerarquía de rol)
• Los privilegios de acceso basados en roles se pueden utilizar para crear:
 Paquetes que contengan SQL estático
 Vistas
 Tablas de consulta materializada (MQT)
 Desencadenantes
 Rutinas SQL
• Los roles se pueden utilizar para definir la seguridad en un contexto de
confianza utilizado
con sistemas de aplicaciones de tres niveles
• Se pueden seleccionar definiciones de rol en tablas de catálogo de sistema
• Las definiciones de rol de base de datos se pueden capturar utilizando
db2look
Seguridad © Copyright IBM Corporation 2015

Utilizar los roles de base de datos en cuestiones de seguridad


Roles comparados con grupos
Los privilegios y las autoridades otorgados a los grupos no se tienen en cuenta cuando
se crean vistas, tablas de consultas materializadas (MQT), rutinas SQL,
desencadenantes y paquetes que contienen SQL estático. Para evitar esta restricción,
utilice roles en lugar de grupos.
Los roles permiten a los usuarios crear objetos de base de datos utilizando los
privilegios que han adquirido mediante roles, controlados por el sistema de base de
datos DB2. Los grupos y los usuarios los controla, de manera externa y desde el
sistema de base de datos DB2, un sistema operativo o un servidor LDAP.

© Copyright IBM Corp. 2015 10-26


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Utilizar grupos de sistemas en cuestiones de seguridad


• Los grupos son listas de usuarios creados y gestionados a nivel de
sistema operativo por un administrador del sistema
• Los grupos se pueden definir y almacenar en un servidor LDAP
• Los privilegios de acceso otorgados a través de un grupo NO se
pueden utilizar para crear:
 Paquetes que contengan SQL estático
 Vistas
 Tablas de consulta materializada (MQT)
 Desencadenantes
 Rutinas SQL

Seguridad © Copyright IBM Corporation 2015

Utilizar grupos de sistemas en cuestiones de seguridad


Los grupos son una buena forma de ejecutar la autorización en una colección de
usuarios sin tener que otorgar ni revocar los privilegios de cada usuario
individualmente. Salvo que se indique lo contrario, los nombres de autorización de
grupo se pueden utilizar en cualquier lugar donde se utilicen nombres de autorización
con fines de autorización. Por lo general, la pertenencia a grupos se tiene en cuenta en
autorizaciones de objetos que no son de base de datos y SQL dinámico (como los
programas de utilidad y los mandatos a nivel de instancia), pero no en SQL estático. La
excepción a esta regla se da cuando se otorgan privilegios a PUBLIC: se tienen en
cuenta cuando se procesa el SQL estático. Los casos específicos en los que no se
aplica la pertenencia a grupos están indicados en la documentación de DB2, si
corresponde.

© Copyright IBM Corp. 2015 10-27


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Ejemplo del uso de roles para gestionar las autorizaciones


• Mary, una usuaria SECADM, crea un nuevo desarrollador de roles.
 create role developer
• Mary otorga el nuevo rol de desarrollador a dos programadores, John
y Carol:
 grant role developer to user john, user carol;
• Mary, o un usuario con ACCESSCTRL, puede otorgar
acceso a algunas tablas y vistas al rol de desarrollador:
 grant all on table dev.sales to role developer ;
grant select on table dev.products to role developer ;
• Si Carol pasa al departamento de prueba de software, la
administradora de seguridad, Mary, puede sacar a Carol del rol de
desarrollador.
 revoke role developer from user carol;

Seguridad © Copyright IBM Corporation 2015

Ejemplo del uso de roles para gestionar las autorizaciones


En el ejemplo siguiente, se muestra cómo se puede definir y utilizar un rol de base de
datos para gestionar los privilegios de seguridad.
1. Mary, una usuaria SECADM, crea un nuevo desarrollador de rol mediante la
sentencia siguiente:
create role developer
2. A continuación, Mary otorga el nuevo rol de desarrollador a dos
programadores, John y Carol:
grant role developer to user john, user carol;
3. Ahora, Mary, u otro usuario con ACCESSCTRL, pueden otorgar acceso a
algunas tablas o vistas al rol de desarrollador:
grant all on table dev.sales to role developer ;grant
select on table dev.products to role developer ;
4. Si Carol pasa al departamento de prueba de software, la administradora de
seguridad, Mary, puede sacar a Carol del rol de desarrollador:
revoke role developer from user carol;

© Copyright IBM Corp. 2015 10-28


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Si Mary intenta acceder a los objetos de base de datos basándose en los privilegios
que se han otorgado al rol de desarrollador, dichas sentencias no se ejecutarán
correctamente.

© Copyright IBM Corp. 2015 10-29


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Controlar el uso de esquemas


• Colección de objetos designada
• Constituye una parte importante de los objetos con un nombre en dos
partes, por ejemplo, MEL.T1
• El usuario con autoridad DBADM crea el esquema PAY para el usuario
MEL
 CREATE SCHEMA PAY AUTHORIZATION MEL
• Mel puede crear objetos en el esquema pay
 CREATE TABLE PAY.T1 (COL1 INT)
• Mel puede otorgar privilegios a otros usuarios:
 GRANT CREATEIN ON SCHEMA PAY TO USER CAL
 GRANT ALTERIN, CREATEIN, DROPIN ON SCHEMA PAY TO GROUP
G1 WITH GRANT OPTION
• Conseguir más control sobre los esquemas:
 REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC
 GRANT IMPLICIT_SCHEMA ON DATABASE TO USER JON
Seguridad © Copyright IBM Corporation 2015

Controlar el uso de esquemas


Un esquema se puede definir siempre que sea deseable agrupar un conjunto de
objetos. Esta agrupación podría basarse en objetos de, por ejemplo, aplicaciones,
grupos de personas o usuarios individuales. De otros mecanismos de control, como los
roles y el contexto de confianza, nos ocuparemos más adelante, en esta misma
unidad.
El esquema se define de manera explícita con la sentencia CREATE SCHEMA. Una
opción (AUTHORIZATION) en la sentencia CREATE SCHEMA permite la
especificación del propietario cuando se crea el esquema. Un esquema se define para
tener un propietario. Al propietario del esquema se le da el privilegio de crear objetos
utilizando el nombre de esquema como calificador de objeto y de descartar los objetos
que se hayan definido en el esquema (independientemente del definidor). El propietario
del esquema también tiene el privilegio de otorgar el privilegio de crear objetos en el
esquema o el privilegio de descartar objetos del esquema para otros usuarios. Esto
implica que el propietario del esquema tiene la capacidad de gestionar objetos en el
esquema y podría otorgar a otros una capacidad parecida para gestionar dichos
objetos.

© Copyright IBM Corp. 2015 10-30


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Cuando se crea una nueva base de datos, a PUBLIC se le da la autoridad de base de


datos IMPLICIT_SCHEMA. Con esta autoridad, los usuarios pueden crear un esquema
mediante la creación de un objeto y la especificación de un nombre de esquema que
no exista ya. SYSIBM se convierte en el propietario del esquema creado
implícitamente y a PUBLIC se le da el privilegio de crear objetos en este esquema.
Si es necesario controlar quién puede crear objetos de esquema de forma implícita en
la base de datos, se debe revocar la autoridad de base de datos IMPLICIT_SCHEMA
de PUBLIC. Una vez hecho esto, solo hay tres formas de que crear un objeto de
esquema:
• Cualquier usuario puede crear un esquema utilizando su propio nombre de
autorización en una sentencia
CREATE SCHEMA.
• Cualquier usuario con autoridad DBADM puede crear explícitamente un
esquema que no exista todavía y, si lo desea, puede especificar otro usuario
como propietario del esquema.
• Cualquier usuario con autoridad DBADM tiene autoridad de base de datos
IMPLICIT_SCHEMA (independiente de PUBLIC), por lo que puede crear
implícitamente un esquema con cualquier nombre mientras crea otros objetos de
base de datos.
SYSIBM se convierte en el propietario del esquema creado implícitamente y PUBLIC
tiene el privilegio de crear objetos en el esquema.
Un usuario siempre tiene la capacidad de crear explícitamente su propio esquema
utilizando su propio nombre de autorización.

© Copyright IBM Corp. 2015 10-31


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Proteger los recursos mediante programas

UNIT TEST
PGM XX
CLP
DELETE
FUNCTION
FROM
EXEC SQL TEST
PAYROLL
DELETE FROM
PROMOTION
PAYROLL
WHERE ID=
HOSTV PRODUCTION

? BOB

GRANT EXECUTE ON PACKAGE XX TO BOB

Seguridad © Copyright IBM Corporation 2015

Proteger los recursos mediante programas


Una persona puede aplicar EXECUTE en un paquete sin necesidad de tener la
autoridad de las sentencias SQL subyacentes.
Se pueden codificar, probar e instalar programas para ejecutar tareas de base de datos
en nombre del ejecutor del programa.
La autoridad para utilizar EXECUTE en un programa que ejecute una sentencia SQL
no implica autoridad para ejecutar la misma sentencia SQL en un entorno ad hoc,
como CLP, ni para utilizar herramientas como IBM Data Studio.

© Copyright IBM Corp. 2015 10-32


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Privilegios otorgados durante CREATE DATABASE (1 de 2)


• CREATE DATABASE requiere que el usuario esté en los grupos
SYSADM_GROUP o SYSCTRL_GROUP en DBM CFG
• Al usuario que crea la base de datos se le otorgan:
 ACCESSCTRL
 DATAACCESS
 DBADM
 SECADM

Seguridad © Copyright IBM Corporation 2015


© Copyright IBM Corporation 2014

Privilegios otorgados durante CREATE DATABASE


Privilegios predeterminados otorgados al crear una base de datos
Si crea una base de datos, se le otorgarán, en dicha base de datos, autoridades
predeterminadas a nivel de base de datos y privilegios predeterminados a nivel de
objeto.
Las autoridades y los privilegios que se le otorguen se mostrarán de acuerdo a las
vistas del catálogo del sistema donde se graben:
• SYSCAT.DBAUTH
Al creador de la base de datos se le otorgan las autoridades siguientes:
• ACCESSCTRL
• DATAACCESS
• DBADM
• SECADM

© Copyright IBM Corp. 2015 10-33


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Privilegios otorgados durante CREATE DATABASE (2 de 2)


• Si NO se especifica la opción RESTRICTIVE para CREATE
DATABASE, los siguientes privilegios se otorgarán a PUBLIC de
forma predeterminada:
 CREATETAB
 BINDADD
 CONNECT
 IMPLICIT_SCHEMA
 EXECUTE con GRANT en todas las funciones y procedimientos de esquemas SYSPROC
y SQLJ
 BIND en todos los paquetes creados en el esquema NULLID
 EXECUTE en todos los paquetes creados en el esquema NULLID
 CREATEIN en el esquema SQLJ y NULLID
 USE en el espacio de tabla USERSPACE1
 Acceso SELECT a las vistas y tablas de catálogo SYSIBM, SYSCAT y SYSSTAT
 Acceso UPDATE a las vistas del catálogo SYSSTAT
 Privilegio USAGE en SYSDEFAULTUSERWORKLOAD para la gestión de carga de
trabajo
Seguridad © Copyright IBM Corporation 2015

En una base de datos no restrictiva, al grupo especial PUBLIC se le otorgan las


autoridades siguientes:
• CREATETAB
• BINDADD
• CONNECT
• IMPLICIT_SCHEMA
• EXECUTE con GRANT en todas las funciones y procedimientos de esquemas
SYSPROC y SQLJ
• BIND en todos los paquetes creados en el esquema NULLID
• EXECUTE en todos los paquetes creados en el esquema NULLID
• CREATEIN en el esquema SQLJ y NULLID
• USE en el espacio de tabla USERSPACE1
• Acceso SELECT a las vistas y tablas de catálogo SYSIBM, SYSCAT y
SYSSTAT
• Acceso UPDATE a las vistas del catálogo SYSSTAT
• Privilegio USAGE en SYSDEFAULTUSERWORKLOAD para la gestión de carga
de trabajo

© Copyright IBM Corp. 2015 10-34


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Privilegios otorgados implícitamente


• GRANT DBADM:
 Estas autoridades forman parte de la autoridad DBADM. Si se revoca la
autoridad DBADM,
estas autoridades se pierden.
− BINDADD
− CONNECT
− CREATETAB
− CREATE_EXTERNAL_ROUTINE
− CREATE_NOT_FENCED_ROUTINE
− IMPLICIT_SCHEMA
− QUIESCE_CONNECT
− LOAD

• Crear objeto (tabla, índice, paquete)


 GRANT de CONTROL interno para el creador del objeto.
• Crear vista
 GRANT interno a la intersección de los privilegios del creador en las tablas
base para ver el creador.
Seguridad © Copyright IBM Corporation 2015

Privilegios otorgados implícitamente


En DB2 10, estas autoridades forman parte de la autoridad DBADM. Si se revoca la
autoridad DBADM, estas autoridades se pierden.
• BINDADD
• CONNECT
• CREATETAB
• CREATE_EXTERNAL_ROUTINE
• CREATE_NOT_FENCED_ROUTINE
• IMPLICIT_SCHEMA
• QUIESCE_CONNECT
• LOAD
Antes de la versión 9.7, la revocación de la autoridad DBADM no implicaba la
revocación de estas autoridades.
Cuando un usuario crea una tabla, DB2 otorga automáticamente el privilegio de control
al creador.
Si un usuario crea una vista, DB2 solo otorgará los privilegios sobre la vista ostentados
en las tablas base. Si un usuario ostenta la autoridad SELECT sobre una tabla y crea
una vista basada en dicha tabla, seguirá estando limitado al acceso SELECT en dicha
vista.

© Copyright IBM Corp. 2015 10-35


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Vistas del catálogo de sistema para autorizaciones (1 de 2)


• SYSCAT.COLAUTH: lista los privilegios de la columna
• SYSCAT.DBAUTH: lista los privilegios de base de datos
• SYSCAT.INDEXAUTH: lista los privilegios del índice
• SYSCAT.MODULEAUTH: lista los privilegios del módulo
• SYSCAT.PACKAGEAUTH: lista los privilegios del paquete
• SYSCAT.PASSTHRUAUTH: lista el privilegio del servidor
• SYSCAT.ROLEAUTH: lista los privilegios del rol
• SYSCAT.ROUTINEAUTH: lista los privilegios de la rutina (funciones,
métodos y procedimientos almacenados)

Seguridad © Copyright IBM Corporation 2015

Vistas del catálogo de sistema para autorizaciones


En la imagen, se listan las vistas de catálogo del sistema que contienen información
sobre los privilegios otorgados a distintos objetos de base de datos.
Si no quiere que ningún usuario sepa a qué objetos tienen acceso otros usuarios, tiene
que considerar restringir el acceso a estas vistas de catálogo.
Dado que las vistas de catálogo del sistema describen todos los objetos de la base de
datos, es posible que prefiera restringir su acceso en caso de que existan datos
confidenciales.
Las autoridades siguientes tienen el privilegio SELECT en todas las tablas de catálogo:
• ACCESSCTRL
• DATAACCESS
• DBADM
• SECADM
• SQLADM

© Copyright IBM Corp. 2015 10-36


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Vistas del catálogo de sistema para autorizaciones (2 de 2)


• SYSCAT.SCHEMAAUTH: lista los privilegios del esquema
• SYSCAT.SEQUENCEAUTH: lista los privilegios de la secuencia
• SYSCAT.SURROGATEAUTHIDS: lista los ID de autorización para los
cuales se pueden utilizar otros ID de autorización como sustitutos.
• SYSCAT.TABAUTH: lista los privilegios de las tablas y vistas
• SYSCAT.TBSPACEAUTH: lista los privilegios de los espacios de
tablas
• SYSCAT.VARIABLEAUTH: lista los privilegios de las variables
• SYSCAT.WORKLOADAUTH: lista los privilegios de las cargas de
trabajo
• SYSCAT.XSROBJECTAUTH: lista los privilegios de objeto XSR

Seguridad © Copyright IBM Corporation 2015

Además, las siguientes autoridades de nivel de instancia tienen la capacidad de


realizar una selección entre SYSCAT.BUFFERPOOLS,
SYSCAT.DBPARTITIONGROUPS, SYSCAT.DBPARTITIONGROUPDEF,
SYSCAT.PACKAGES y SYSCAT.TABLES:
• SYSADM
• SYSCTRL
• SYSMAINT
• SYSMON

© Copyright IBM Corp. 2015 10-37


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Resumen del control de accesos a filas y columnas


• Solo permite el acceso al subconjunto de datos útil para la tarea de
trabajo
 Utiliza los grupos y roles existentes
• La salida es la misma, independientemente del método de acceso
 Data Studio, vistas, aplicaciones, etc.
• Centrado en los datos y transparente para la aplicación cliente
• Mecanismo menos potente que LBAC, pero más fácil de implementar
• Ideal para
 Aplicaciones comerciales
 Control de accesos específico de la función (frente al jerárquico)
 Uso en conformidad
• SECADM es el gestor único de la política de seguridad
• Dos conjuntos de reglas
 El acceso a las filas se restringe a través de permisos
 El acceso a las columnas se restringe a través de máscaras
Seguridad © Copyright IBM Corporation 2015

Resumen del control de accesos a filas y columnas


Visión general de los controles de acceso a filas y columnas (RCAC)
En DB2 versión 10.1, se introdujo el control de acceso a filas y columnas (RCAC) como
capa adicional de la seguridad de datos. En ocasiones, el control de acceso a filas y
columnas se denomina control de acceso preciso o FGAC. RCAC controla el acceso a
una tabla a nivel de fila, de columna o de ambos. RCAC se puede utilizar para
complementar el modelo de privilegios de la tabla.
Con el objetivo de cumplir las distintas normativas gubernamentales, puede
implementar procedimientos y métodos que le permitan garantizar una correcta
protección de la información. A las personas de la empresa se les permite acceder solo
al subconjunto de datos necesario para efectuar sus tareas de trabajo. Por ejemplo, las
normativas gubernamentales de su ubicación podrían señalar que un médico está
autorizado a ver el historial de sus pacientes, pero no el de otros. Las mismas
normativas podrían señalar que, a menos que un paciente dé su consentimiento, un
proveedor de asistencia médica no puede acceder a la información personal del
paciente, como su número de teléfono particular.

© Copyright IBM Corp. 2015 10-38


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Puede utilizar el control de accesos a filas y columnas para asegurarse de que los
usuarios solo tengan acceso a los datos necesarios para su trabajo. Por ejemplo, un
sistema hospitalario que cuente con DB2 for Linux, UNIX and Windows, y que además
disponga de RCAC, podrá filtrar los datos y la información del paciente para que solo
se incluyan los datos que necesite un médico determinado. Por lo que al médico
concierne, el resto de los pacientes no existirán. Del mismo modo, cuando un
representante de servicio al paciente consulte la tabla del paciente en el mismo
hospital, podrá ver las columnas con el nombre y el número de teléfono del paciente,
pero la columna con el historial médico aparecerá enmascarada. Si los datos están
enmascarados, se mostrará un valor NULL, o un valor alternativo, en lugar del historial
médico real.

© Copyright IBM Corp. 2015 10-39


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Ejemplo de CREATE PERMISSION


• Los cajeros de un banco solo CREATE PERMISSION
TELLER_ROW_ACCESS ON CUSTOMER
pueden acceder a los clientes FOR ROWS WHERE
desde su propia sucursal. VERIFY_ROLE_FOR_USER
(SESSION_USER,'TELLER') = 1 AND
• Todos los cajeros son BRANCH = (SELECT HOME_BRANCH
miembros del rol TELLER. FROM INTERNAL_INFO
WHERE EMP_ID = SESSION_USER)
• A los representantes del ENFORCED FOR ALL ACCESS
servicio al cliente se les ENABLE;
permite acceder a todos los
clientes del banco. CREATE PERMISSION
CSR_ROW_ACCESS ON CUSTOMER
• Todos los representantes del FOR ROWS WHERE
servicio al cliente son VERIFY_ROLE_FOR_USER(SESSION_USE
R,'CSR') = 1
miembros del rol CSR
ENFORCED FOR ALL ACCESS
ENABLE;

ALTER TABLE CUSTOMER ACTIVATE ROW


ACCESS CONTROL;

Seguridad © Copyright IBM Corporation 2015

Ejemplo de CREATE PERMISSION


En la imagen, se muestra un ejemplo de dos sentencias CREATE PERMISSIONS que
se podrían utilizar para implementar el control de accesos basado en filas.
Los cajeros de un banco solo pueden acceder a los clientes desde su propia sucursal.
Todos los cajeros son miembros del rol TELLER. A los representantes del servicio al
cliente se les permite acceder a todos los clientes del banco. Todos los representantes
del servicio al cliente son miembros del rol CSR. En consecuencia, un usuario con
autoridad SECADM crea un permiso de fila para cada grupo de personal del banco.
Una vez activado el control de accesos a nivel de filas para la tabla CUSTOMER, en la
sentencia SELECT, las condiciones de búsqueda de ambos permisos de fila se
fusionarán en la sentencia y se combinarán con el operador lógico OR para controlar el
conjunto de filas al que puede acceder cada grupo.

© Copyright IBM Corp. 2015 10-40


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Por ejemplo:
CREATE PERMISSION TELLER_ROW_ACCESS ON CUSTOMER
FOR ROWS WHERE VERIFY_ROLE_FOR_USER
(SESSION_USER,'TELLER') = 1 AND
BRANCH = (SELECT HOME_BRANCH FROM INTERNAL_INFO
WHERE EMP_ID = SESSION_USER)
ENFORCED FOR ALL ACCESS
ENABLE;
CREATE PERMISSION CSR_ROW_ACCESS ON CUSTOMER
FOR ROWS WHERE VERIFY_ROLE_FOR_USER(SESSION_USER,'CSR') = 1
ENFORCED FOR ALL ACCESS
ENABLE;

© Copyright IBM Corp. 2015 10-41


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Crear máscara de columna


• Para crear una máscara para una columna
 Cree la máscara con un valor de visibilidad de columna determinado por
la expresión CASE
 Habilite o inhabilite el permiso, a fin de determinar si esta regla se acceso
se implementará cuando se habilite el control de accesos de la columna
para la tabla afectada
 Modifique la tabla para activar el control de accesos de la columna

CREATE MASK m_name on t_name FOR COLUMN c_name RETURN


case-expression {disable/enable}

ALTER TABLE/VIEW table/view ACTIVATE COLUMN ACCESS CONTROL;

El resultado de la Determina si se
expresión CASE se habilitará la máscara
devuelve como Active el control de
cuando se active el
sustituto del valor de accesos de la
control de accesos
columna columna
para la tabla
Seguridad © Copyright IBM Corporation 2015

Crear máscara de columna


Ahora, debatiremos cómo se implementaría el control de accesos de la columna.
Recuerde que RCAC proporciona controles de accesos a filas y columnas. El control
de accesos a columnas se implementa en forma de máscara, o falta de ella, en los
datos
En esta diapositiva se muestra cómo definiríamos el control de accesos a columnas.
Tenga en cuenta que se trata de tres pasos similares para definir el control de accesos
a filas
• En primer lugar, creamos la máscara y utilizamos expresiones CASE para
determinar el resultado
• En segundo lugar, habilitamos el permiso
-En tercer lugar, tenemos que activar el permiso en la tabla implicada (este paso
es tan importante como lo era con los permisos de fila).
Tenga en cuenta que la capacidad para actualizar una columna enmascarada no se
basará en la presencia de una máscara, sino en la presencia de un permiso de fila. Es
posible actualizar los datos de la columna enmascarada, aunque no se puedan ver los
datos enmascarados, siempre que se disponga de permisos de actualización en la
tabla y de capacidad para ver la fila.

© Copyright IBM Corp. 2015 10-42


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Ejemplo de CREATE MASK para una columna


• Al rol de representante del CREATE MASK ACCOUNT_COL_MASK ON
RCACTSPM.CUSTOMER FOR
servicio al cliente (CSR) se le COLUMN ACCOUNT RETURN
permite acceder a la CASE WHEN (VERIFY_ROLE_FOR_USER
información del número de (USER, ‘CSR') = 1 AND
ROUTINE_SPECIFIC_NAME =
cuenta solo si utiliza la ‘ACCTUPDATE' AND
aplicación de actualización de ROUTINE_SCHEMA = ‘ACCOUNTS' AND
la cuenta. ROUTINE_TYPE = ‘P')
THEN ACCOUNT
• Esta aplicación se identifica ELSE 'xxxx-xxxx-xxxx-‘ ||
mediante el procedimiento SUBSTR(ACCOUNT,16,4)
almacenado END
ACCOUNTS.ACCTUPDATE ENABLE;

• Si un CSR consulta estos datos ALTER TABLE RCACTSPM.CUSTOMER


fuera de la aplicación, la ACTIVATE COLUMN ACCESS CONTROL;
información de la cuenta se
enmascara y los primeros doce
dígitos se sustituyen por "x".
Seguridad © Copyright IBM Corporation 2015

Ejemplo de CREATE MASK para una columna


Las máscaras de columna se pueden utilizar para ocultar los datos devueltos a los
usuarios o las aplicaciones por columna, a menos que tengan autorización para ver los
datos.
Los representantes del servicio al cliente de un banco pueden acceder a todos los
clientes del sistema bancario, pero no se les permite ver los números de cuenta
completos a menos que utilicen una aplicación específica.
El administrador de seguridad implementa la máscara de columna mostrada en la
imagen para que al representante del servicio al cliente no se le devuelvan los datos
reales de la columna ACCOUNT a menos que el acceso proceda de un procedimiento
designado específico. La máscara de columna hace que una parte del valor de
columna ACCOUNT se devuelva con otras condiciones.
El administrador de seguridad puede observar que, incluso después de crear la nueva
máscara de columna, todos los empleados pueden seguir viendo los datos. La
máscara de columna no se aplica hasta que se activa en la tabla para la que se ha
definido.
El administrador de seguridad tiene que activar la máscara utilizando una sentencia
ALTER TABLE, como en el ejemplo mostrado en la imagen.

© Copyright IBM Corp. 2015 10-43


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Seguridad para conexiones a bases de datos


• La opción AUTHENTICATION de DBM CFG se puede configurar para
utilizar el cifrado:
 La opción de autenticación DATA_ENCRYPT utiliza el estándar de cifrado
de datos (DES), con claves de cifrado de 56 bits, para proteger el ID de
usuario, la contraseña y los datos intercambiados entre el cliente y el
servidor
 La autenticación SERVER_ENCRYPT puede utilizar el cifrado DES o AES
para cifrar la información de ID de usuario y contraseña enviada por el
cliente
• Se pueden configurar clientes y servidores DB2 para utilizar
conexiones basadas en Secure Socket Layer (SSL)

Seguridad © Copyright IBM Corporation 2015

Seguridad para conexiones a bases de datos


Un aspecto de la seguridad de los sistemas de bases de datos es la necesidad de
proteger la información de usuario y contraseña y, posiblemente, todos los datos de
aplicación que se están transfiriendo entre el sistema de aplicaciones y un servidor de
bases de datos a través de una red.
El valor de configuración de la autenticación en el archivo de configuración de DBM
especifica y determina cómo y dónde se realiza la autenticación de un usuario.
Si la autenticación es SERVER, el ID de usuario y la contraseña se envían del cliente
al servidor, a fin de que la autenticación se pueda efectuar en el servidor. El valor
SERVER_ENCRYPT muestra el mismo comportamiento que SERVER, excepto por el
hecho de que los ID de usuario y las contraseñas enviados a través de la red están
cifrados.
El valor DATA_ENCRYPT implica que el servidor acepta los esquemas de
autenticación cifrados de SERVER y el cifrado de los datos de usuario. La
autenticación funciona exactamente igual que SERVER_ENCRYPT.

© Copyright IBM Corp. 2015 10-44


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Cuando se utiliza este tipo de autenticación, se cifran los datos de usuario siguientes:
• Sentencias SQL
• Datos de la variable de programa SQL
• Datos de salida del servidor que está procesando una sentencia SQL, incluida
una descripción de los datos
• Algunos de los datos del conjunto de respuestas resultante de una consulta, o
todos
• Streaming de objetos grandes (LOB)
• Descriptores SQLDA
La opción de autenticación DATA_ENCRYPT utiliza el estándar de cifrado de datos
(DES), con claves de cifrado de 56 bits, para proteger el ID de usuario, la contraseña y
los datos intercambiados entre el cliente y el servidor.
A partir de DB2 9.7, puede cifrar el ID de usuario y la contraseña utilizando el algoritmo
Advanced Encryption Standard (AES) con claves de 256 bits de longitud.
El ID de usuario y la contraseña enviados para ser autenticados en DB2 se cifran
cuando el método de autenticación negociado entre el cliente de DB2 y el servidor DB2
es SERVER_ENCRYPT. El método de autenticación negociado depende del valor del
tipo de autenticación del parámetro de configuración de autenticación del servidor y la
autenticación solicitada por el cliente.
La elección del algoritmo de cifrado utilizado para cifrar el ID de usuario y la
contraseña, sea DES o AES, depende del valor del parámetro de configuración de
gestor de bases de datos alternate_auth_enc:
• NOT_SPECIFIED (valor predeterminado) implica que el servidor acepta el
algoritmo de cifrado que propone el cliente.
• AES_CMP implica que si el cliente que se está conectando propone DES, pero
admite el cifrado AES, el servidor renegocia el cifrado AES. Los clientes de nivel
bajo que no admitan AES se podrán conectar mediante DES.
• AES_ONLY implica que el servidor solo acepta el cifrado AES. Si el cliente no
admite el cifrado AES, se rechaza la conexión.

© Copyright IBM Corp. 2015 10-45


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Cómo se utiliza SSL para conexiones a bases de datos DB2

Base de datos
Sistema cliente
DB2
Servidor
Comunicación cifrada
Configuración Configuración
SSL basada en mediante TCP/IP
SSL
el tipo de
cliente Uso de GSkit

Base de datos
Base de datos
de certificados
de certificados
de firmantes Importar un
digitales
certificado de Extraer un
firmante certificado
Añadir o crear
certificados
Herramienta
iKeyman

Seguridad © Copyright IBM Corporation 2015

Cómo se utiliza SSL para conexiones a bases de datos DB2


El sistema de base de datos DB2 admite el uso de Secure Sockets Layer (SSL) y su
sucesor, Transport Layer Security (TLS), para habilitar a un cliente, autenticar un
servidor y proporcionar una comunicación privada entre el cliente y el servidor
utilizando el cifrado. La autenticación se efectúa intercambiando certificados digitales.
Sin el cifrado, los paquetes de información se mueven por las redes a la vista de todo
aquel que tenga acceso. Puede utilizar SSL para proteger los datos en tránsito en
todas las redes que utilicen TCP/IP (puede considerar una conexión SSL como una
conexión TCP/IP protegida).
El sistema de base de datos DB2 admite SSL, lo que significa que una aplicación
cliente de DB2 que admite también SSL se puede conectar a una base de datos DB2
utilizando un socket SSL. Tanto las aplicaciones cliente de proveedor de datos CLI,
CLP, y .Net, como las aplicaciones que utilizan IBM Data Server Driver para JDBC y
SQLJ (conexiones de tipo 4) admiten SSL.
Las bibliotecas de IBM Global Security Kit (GSKit) se instalan con el código de servidor
de DB2 para proporcionar soporte SSL. Es necesario realizar algunas tareas de
configuración en los sistemas de cliente y servidor para permitir que los certificados
digitales se almacenen e intercambien al establecer las conexiones.

© Copyright IBM Corp. 2015 10-46


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Configuración SSL para servidores DB2 (1 de 2)


• Las bibliotecas de IBM Global Security Kit (GSKit) se instalan con DB2
• Utilice las herramientas GSkit para configurar bases de datos de
claves para certificados digitales
 La contraseña se almacena en un archivo de ocultación
 Importe el certificado digital de servidor adquirido de una entidad emisora
de certificados (CA) en la base de datos de certificados
• Defina DB2COMM para que incluya SSL
 db2set DB2COMM=tcpip,ssl (admite conexiones SSL y TCPIP)

Seguridad © Copyright IBM Corporation 2015


© Copyright IBM Corporation 2014

Configuración SSL para servidores DB2


Para configurar el soporte SSL, en primer lugar tiene que crear una base de datos de
claves para gestionar los certificados digitales. Estos certificados y claves de cifrado se
utilizan para establecer las conexiones SSL. En segundo lugar, el propietario de
instancia de DB2 tiene que configurar la instancia de DB2 para el soporte SSL.
1. Cree una base de datos de claves y configure sus certificados digitales.
• Utilice la herramienta GSKCapiCmd para crear la base de datos de claves.
Debe ser una base de datos de claves de tipo CMS (Certificate
Management System).
• GSKCapiCmd es una herramienta de línea de mandatos no basada en Java
y no es necesario instalar Java en el sistema para utilizarla.

© Copyright IBM Corp. 2015 10-47


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

• GSKCapiCmd se invoca utilizando el mandato gskcapicmd, tal y como se


ha descrito en la guía de usuario de GSKCapiCmd.
Por ejemplo, el siguiente mandato crea una base de datos de claves
denominada mydbserver.kdb y un archivo de ocultación denominado
mydbserver.sth:
gsk8capicmd_64 -keydb -create -db "mydbserver.kdb" -pw
"myServerPassw0rdpw0" -stash
La opción -stash crea un archivo de ocultación en la misma vía de acceso
que la base de datos de claves, con una extensión de archivo .sth.
• Durante el inicio de la instancia, GSKit utiliza el archivo de ocultación para
obtener la contraseña a la base de datos de claves.
• Cuando se crea una base de datos de claves, se rellena automáticamente
con certificados de firmante de distintas entidades emisoras de certificados
(CA), como Verisign.
2. Añada un certificado para el servidor a la base de datos de claves. El servidor
envía este certificado a los clientes durante el reconocimiento SSL para
proporcionar autenticación al servidor.
3. Extraiga el certificado que acaba de crear a un archivo. De este modo, podrá
distribuirlo a los sistemas que ejecuten clientes que vayan a establecer
conexiones SSL con el servidor DB2.
4. Para configurar el servidor DB2 para el soporte SSL, inicie la sesión como el
propietario de la instancia de DB2 y defina los siguientes parámetros de
configuración y la variable de registro DB2COMM.
• Defina el parámetro de configuración ssl_svr_keydb como la vía de acceso
completa del archivo de base de datos de claves.
Por ejemplo:
db2 update dbm cfg using SSL_SVR_KEYDB
/home/test/sqllib/security/keystore/key.kdb
 Si ssl_svr_keydb es un valor nulo (no definido), no se habilita el
soporte SSL.

© Copyright IBM Corp. 2015 10-48


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

• Defina el parámetro de configuración ssl_svr_stash como la vía de acceso


completa del archivo de ocultación.
Por ejemplo:
db2 update dbm cfg using SSL_SVR_STASH
/home/test/sqllib/security/keystore/mydbserver.sth
 Si ssl_svr_stash es un valor nulo (no definido), no se habilita el
soporte SSL.
• Defina el parámetro de configuración ssl_svr_label como la etiqueta del
certificado digital del servidor que ha añadido. Si no se define ssl_svr_label,
se utiliza el certificado predeterminado de la base de datos de claves. Si no
hay ningún certificado predeterminado en la base de datos de claves, SSL
no se habilita.
Por ejemplo:
db2 update dbm cfg using SSL_SVR_LABEL myselfsigned
 donde myselfsigned es una etiqueta de ejemplo.
• Defina el parámetro de configuración ssl_svcename como el puerto donde el
sistema de base de datos DB2 debería escuchar las conexiones SSL. Si
tanto TCP/IP como SSL están habilitados (la variable de registro DB2COMM
está definida en 'TCPIP, SSL'), tiene que establecer ssl_svcename en un
puerto distinto al puerto en el que se ha definido svcename. El parámetro de
configuración svcename define el puerto donde el sistema de base de datos
DB2 escucha las conexiones TCP/IP. Si define ssl_svcename en el mismo
puerto que svcename, no se habilitarán TCP/IP ni SSL. Si ssl_svcename es
un valor nulo (no definido), no se habilita el soporte SSL.
Nota: Cuando la variable de registro DB2COMM está definida en
'TCPIP,SSL', si no se ha habilitado correctamente el soporte para TCPIP,
debido, por ejemplo, a que el parámetro de configuración svcename se ha
definido en null, se devuelve el error SQL5043N y no se habilita el soporte
SSL.
• (Opcional) Si quiere especificar los paquetes de cifrado que puede utilizar el
servidor, defina el parámetro de configuración ssl_cipherspecs. Si deja
ssl_cipherspecs como valor null (no definido), GSKit podrá elegir el paquete
de cifrado más sólido admitido tanto por el cliente como por el servidor.
Consulte los paquetes de cifrado admitidos para obtener información sobre
los paquetes de cifrado disponibles.

© Copyright IBM Corp. 2015 10-49


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

• Añada el valor SSL a la variable de registro DB2COMM.


Por ejemplo:
db2set -i db2inst1 DB2COMM=SSL
 donde db2inst1 es el nombre de instancia de DB2. El gestor de bases
de datos puede admitir varios protocolos al mismo tiempo.
 Por ejemplo, para habilitar los protocolos de comunicación TCP/IP y
SSL:
db2set -i db2inst1 DB2COMM=SSL,TCPIP
• Reinicie la instancia de DB2.

© Copyright IBM Corp. 2015 10-50


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Configuración SSL para servidores DB2 (2 de 2)


• Actualizar configuración de DBM:
 Defina el parámetro de configuración ssl_svr_keydb como la vía de acceso
completa del archivo de base de datos de claves.
db2 update dbm cfg using
SSL_SVR_KEYDB/home/db2/sqllib/security/ssl/mydb.kdb
 Defina el parámetro de configuración ssl_svr_stash como la vía de acceso
completa del archivo de ocultación.
db2 update dbm cfg using SSL_SVR_STASH
/home/db2/sqllib/security/ssl/mydb.sth
 Defina el parámetro de configuración ssl_svr_label como la etiqueta del
certificado digital del servidor.
 Defina el parámetro de configuración ssl_svcename como el puerto donde el
sistema de base de datos DB2 debería escuchar las conexiones SSL. No
debe ser igual al puerto SVCENAME.
 Si lo desea, puede definir opciones para seleccionar un paquete de cifrado:
− SSL_CIPHERSPECS: paquete de cifrado permitido
− SSL_VERSIONS: versiones SSL/TLS permitidas

Seguridad © Copyright IBM Corporation 2015

© Copyright IBM Corp. 2015 10-51


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Seguridad de bases de datos para sistemas de aplicaciones


de tres niveles
• Para muchos sistemas de aplicaciones en tres niveles:
 El servidor de aplicaciones autentica a usuarios individuales
 Para conectarse a un servidor DB2 desconocido para el usuario final, se utilizan un
nombre de usuario común y una contraseña
 Todo el procesamiento de bases de datos/SQL se efectúa utilizando un único nombre
de usuario
 Al nombre de inicio de sesión común de la aplicación, se le otorga un conjunto de
privilegios de acceso a la base de datos que permite que se ejecuten todos los
aspectos del procesamiento de aplicaciones
 Estas características pueden llevar a que se otorguen demasiados privilegios a un
único nombre de usuario, que podría utilizarse de forma indebida para saltarse las
políticas de seguridad

Seguridad © Copyright IBM Corporation 2015

Seguridad de bases de datos para sistemas de aplicaciones de tres niveles


El modelo de aplicación en tres niveles amplía el modelo estándar de cliente y servidor
de dos niveles, al añadir un nivel intermedio entre la aplicación cliente y el servidor de
bases de datos. Ha conseguido una gran popularidad en los últimos años,
especialmente con la aparición de las tecnologías basadas en web y la plataforma
Java 2 Enterprise Edition (J2EE). Un ejemplo de producto de software con soporte
para el modelo de aplicación de tres niveles es IBM WebSphere Application Server
(WAS).
En un modelo de aplicación de tres niveles, el nivel intermedio es el responsable de
autenticar a los usuarios que ejecutan las aplicaciones cliente y de gestionar las
interacciones con el servidor de bases de datos. Tradicionalmente, todas las
interacciones con el servidor de bases de datos se producen a través de una conexión
a base de datos establecida por el nivel intermedio utilizando una combinación de ID
de usuario y credencial que identifique dicho nivel intermedio en el servidor de bases
de datos. En otras palabras, el servidor de bases de datos utiliza los privilegios de base
de datos asociados al ID de usuario del nivel intermedio para todas las
comprobaciones y auditorías de autorización que se producen antes de acceder a una
base de datos, incluido el acceso ejecutado por el nivel intermedio en nombre de un
usuario.

© Copyright IBM Corp. 2015 10-52


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

¿Qué es un contexto de confianza?


• Un objeto de base de datos creado por un usuario SECADM que define
una relación de confianza entre una base de datos DB2 y una entidad
externa, como un servidor de nivel intermedio.
• La relación de confianza se basa en los siguientes atributos de confianza:
 ID de autorización del sistema
 Dirección IP (o nombre de dominio)
 Cifrado continuo de datos

Seguridad © Copyright IBM Corporation 2015

¿Qué es un contexto de confianza?


Un contexto de confianza es un objeto de base de datos que define una relación de
confianza para una conexión entre la base de datos y la entidad externa, como un
servidor de aplicaciones.
La relación de confianza se basa en el siguiente conjunto de atributos:
• ID de autorización del sistema: representa al usuario que establece una
conexión a base de datos
• Dirección IP (o nombre de dominio): representa el host desde el que se
establece una conexión a base de datos
• Cifrado continuo de datos: representa el valor de cifrado (si lo hubiese) para la
comunicación de datos entre el servidor de base de datos y el cliente de base de
datos
Cuando un usuario establece una conexión de base de datos, el sistema de base de
datos DB2 comprueba si la conexión coincide con la definición de un objeto de
contexto de confianza en la base de datos. Cuando se produce una coincidencia, se
dice que la conexión a base de datos es de confianza.

© Copyright IBM Corp. 2015 10-53


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Una conexión de confianza permite que su iniciador adquiera prestaciones adicionales


que podrían no estar disponibles fuera del ámbito de la conexión de confianza. Las
prestaciones adicionales varían en función de si la conexión de confianza es explícita o
implícita.
El contexto de confianza solo se puede crear si entre los privilegios ostentados por el
ID de autorización de la sentencia se incluye la autoridad SECADM.
La definición de un contexto de confianza puede designar un rol para un ID de
autorización específico, así como un rol predeterminado que se utilizará para los ID de
autorización para los cuales no se haya especificado un rol concreto en la definición del
contexto de confianza. Este rol se puede utilizar con una conexión de confianza en
función del contexto de confianza, pero no hace que el rol esté disponible fuera de una
conexión de confianza basada en el contexto de confianza.
Cuando se emite una sentencia SQL de lenguaje de manipulación de datos (DML)
utilizando una conexión de confianza, los privilegios ostentados por un rol asignado en
contexto, en vigor para el ID de autorización dentro de la definición del contexto de
confianza asociado, complementan los restantes privilegios ostentados directamente
por el ID de autorización de la sentencia, o indirectamente por otros roles que ostenta
el ID de autorización de la sentencia.
Los privilegios ostentados por un rol asignado en contexto, en vigor para el ID de
autorización dentro de la definición del contexto de confianza asociado, no se tienen en
cuenta para las sentencias SQL del lenguaje de definición de datos (DDL). Por
ejemplo, para crear un objeto, el ID de autorización de la sentencia debe ser capaz de
hacerlo sin incluir los privilegios ostentados por el rol asignado en contexto.
Al instalar una nueva aplicación que se autentica en DB2 con las mismas credenciales
que otra aplicación existente en la misma máquina, y que utiliza un contexto de
confianza, la nueva aplicación puede usar el mismo objeto de contexto de confianza
(por ejemplo, si hereda el rol del contexto de confianza). Esta podría no ser la intención
del administrador de seguridad. Es posible que el administrador de seguridad quiera
activar el recurso de comprobación de DB2 para averiguar qué aplicaciones están
utilizando los objetos del contexto de confianza.

© Copyright IBM Corp. 2015 10-54


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Contexto de confianza: ejemplo


• La sentencia crea un contexto de confianza con estas características:
 La conexión se debe realizar desde la dirección IP 9.26.113.204 con el ID de
usuario BERNARD
 El contexto de confianza tiene un rol predeterminado denominado appserv_role.
Esto implica que los usuarios que trabajan dentro de los límites de este contexto
de confianza heredan los privilegios asociados al rol appserv_role.
 La aplicación puede efectuar una solicitud explícita para cambiar entre dos ID
de usuario distintos:
− Cuando el usuario actual de la conexión cambie al ID de usuario JOE, no se necesitará
autenticación.
− La autenticación sí es necesaria si el usuario actual de la conexión cambia al
ID de usuario BOB.

CREATE TRUSTED CONTEXT APPSERVER


BASED UPON CONNECTION USING SYSTEM AUTHID BERNARD
DEFAULT ROLE APPSERV_ROLE ENABLE
ATTRIBUTES (ADDRESS '9.26.113.204')
WITH USE FOR JOE WITHOUT AUTHENTICATION
BOB WITH AUTHENTICATION

Seguridad © Copyright IBM Corporation 2015

Contexto de confianza: ejemplo


El ejemplo define un contexto de confianza denominado APPSERVER.
DB2 consideraría que una conexión coincide con el contexto de confianza solo si:
• El nombre de usuario de la conexión coincidiese con BERNARD
• La conexión se realizase desde el sistema con la dirección tcpip ip 9.26.113.204
• Se pudiese utilizar cualquier tipo de cifrado. El tipo de cifrado predeterminado es
NONE.
El rol de seguridad predeterminada de APPSERV_ROLE se asigna a las conexiones
que coinciden con este contexto de confianza.
Cuando el usuario actual de la conexión cambie al ID de usuario JOE, no se necesitará
autenticación. Sin embargo, la autenticación sí es necesaria si el usuario actual de la
conexión cambia al ID de usuario BOB.

© Copyright IBM Corp. 2015 10-55


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
Unidad 10 Seguridad

Resumen de la unidad
• Utilizar los mecanismos de control de accesos de DB2 para implementar
la seguridad en la base de datos
• Explicar las tareas ejecutadas por el usuario SYSADM, el usuario
SECADM y un usuario DBADM
• Comparar el uso de los roles de base de datos con los grupos de usuarios
por cuestiones de seguridad
• Describir los privilegios necesarios para enlazar y ejecutar un paquete de
aplicaciones
• Describir la diferencia entre los privilegios explícitos y los privilegios
implícitos
• Listar los métodos para implementar el cifrado de las conexiones a base
de datos
• Listar las ventajas de crear un contexto de confianza para un sistema de
aplicaciones de tres niveles

Seguridad © Copyright IBM Corporation 2015

Resumen de la unidad

© Copyright IBM Corp. 2015 10-56


Los materiales del curso no se pueden reproducir, en su totalidad ni en parte, sin el permiso de IBM por escrito.
IBM Training

© Copyright IBM Corporation 2015. All Rights Reserved.

También podría gustarte