Transcript
Page 1: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

DB2 versión 9.1 para z/OS

Introducción a DB2 para z/OS

SC11-3682-02

���

Page 2: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Contenido

Acerca de esta información . . . . . . . . . . . . . . . . . . . . . . . . . . . ixA quién va dirigido este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . ixConjunto de programas de utilidad de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . ixTerminología y referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xCaracterísticas de accesibilidad para DB2 Version 9.1 for z/OS . . . . . . . . . . . . . . . . . . xCómo enviar comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

Capítulo 1. Visión general de DB2 y gestión de información . . . . . . . . . . . . . 1Casos de ejemplo para utilizar DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Disponibilidad y escalabilidad para empresas grandes . . . . . . . . . . . . . . . . . . . . 1Información empresarial crítica para los encargados de tomar decisiones . . . . . . . . . . . . . . 4Distribución de datos y acceso de web. . . . . . . . . . . . . . . . . . . . . . . . . . 6

Estrategia de gestión de información de IBM . . . . . . . . . . . . . . . . . . . . . . . . 6Servidores de datos y entornos de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Servidores empresariales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Ediciones distribuidas de DB2 Database . . . . . . . . . . . . . . . . . . . . . . . . . 11DB2 en servidores a escala más reducida . . . . . . . . . . . . . . . . . . . . . . . . 12Entornos personales, móviles y dominantes. . . . . . . . . . . . . . . . . . . . . . . . 12Entornos de varias transacciones y aplicaciones . . . . . . . . . . . . . . . . . . . . . . 12DB2 y comunicación de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Clientes soportados por servidores de datos de DB2 . . . . . . . . . . . . . . . . . . . . . 13Fuentes de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Herramientas de gestión de información. . . . . . . . . . . . . . . . . . . . . . . . . . 14Herramientas de desarrollo de aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . 15Componentes de middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

DB2 Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17WebSphere Application Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18WebSphere Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18WebSphere Host Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Soporte de base de datos federada mediante WebSphere Information Integrator . . . . . . . . . . . 19Réplica de datos mediante WebSphere Replication Server . . . . . . . . . . . . . . . . . . . 20WebSphere DataStage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20WebSphere QualityStage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Interfaces de programación de aplicaciones cliente . . . . . . . . . . . . . . . . . . . . . . 20Estándares abiertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Capítulo 2. Conceptos de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . 23Lenguaje de consulta estructurado. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Visión general de pureXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Estructuras de datos de DB2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Tablas de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Índices de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Claves de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Vistas de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Esquemas y calificadores de esquemas de DB2 . . . . . . . . . . . . . . . . . . . . . . 33Espacios de tablas de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Espacios de índice de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Grupos de almacenamiento de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . 36Bases de datos de DB2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Objetos del sistema DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Catálogo de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Directorio de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Registros activo y de archivado. . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Conjunto de datos del programa de arranque . . . . . . . . . . . . . . . . . . . . . . . 42Agrupaciones de almacenamientos intermedios . . . . . . . . . . . . . . . . . . . . . . 42

© Copyright IBM Corp. 2001, 2008 iii

||

||

Page 3: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Base de datos de soporte de control de definición de datos . . . . . . . . . . . . . . . . . . 43Base de datos de recurso de límite de recursos . . . . . . . . . . . . . . . . . . . . . . 43Base de datos de archivos de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Soporte de alta disponibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Imposición de reglas empresariales . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Integridad de entidad, integridad de referencia y restricciones de referencia . . . . . . . . . . . . . 44Restricciones de comprobación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Desencadenantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Procesos de aplicaciones y transacciones. . . . . . . . . . . . . . . . . . . . . . . . . . 47Paquetes y planes de aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Rutinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Datos distribuidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Servidores remotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Conectividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

Capítulo 3. Arquitectura de DB2 para z/OS . . . . . . . . . . . . . . . . . . . . 53z/Architecture y el sistema operativo z/OS . . . . . . . . . . . . . . . . . . . . . . . . 53DB2 en el entorno z/OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Gestor de bloqueos de recursos interno de DB2 . . . . . . . . . . . . . . . . . . . . . . . 56DB2 y z/OS Security Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56DB2 y DFSMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Recursos de conexión de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Recurso de conexión de CICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Recurso de conexión de IMS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Recurso de conexión de TSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Recurso de conexión de llamada . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Recurso de conexión de RRS (Resource Recovery Services) . . . . . . . . . . . . . . . . . . 62

Recurso de datos distribuidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62DB2 en un entorno Sysplex paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Capítulo 4. Objetos de DB2 y sus relaciones . . . . . . . . . . . . . . . . . . . 67Diseño lógico de bases de datos utilizando creación de modelos de relación de entidad . . . . . . . . . . 67

Creación de modelos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Entidades para diferentes tipos de relaciones . . . . . . . . . . . . . . . . . . . . . . . 71Aplicación de reglas empresariales a relaciones . . . . . . . . . . . . . . . . . . . . . . 72Atributos para entidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Normalización para evitar redundancias. . . . . . . . . . . . . . . . . . . . . . . . . 75

Diseño lógico de bases de datos con Unified Modeling Language (Lenguaje de creación de modelos unificados) . 80Diseño físico de base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Desnormalización para mejorar el rendimiento . . . . . . . . . . . . . . . . . . . . . . 83Utilización de vistas para personalizar los datos que ve un usuario. . . . . . . . . . . . . . . . 85Utilización de índices para mejorar el rendimiento . . . . . . . . . . . . . . . . . . . . . 85

Capítulo 5. SQL: lenguaje de DB2 . . . . . . . . . . . . . . . . . . . . . . . . 87Modos de acceder a datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Modos de seleccionar datos de columnas . . . . . . . . . . . . . . . . . . . . . . . . 87Cómo funciona una sentencia SELECT . . . . . . . . . . . . . . . . . . . . . . . . . 90Funciones y expresiones de SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Modos de filtrar el número de filas devueltas . . . . . . . . . . . . . . . . . . . . . . . 97Modos de ordenar filas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Modos de resumir valores de grupo . . . . . . . . . . . . . . . . . . . . . . . . . . 106Modos de fusionar listas de valores . . . . . . . . . . . . . . . . . . . . . . . . . . 108Modos de especificar condiciones de búsqueda . . . . . . . . . . . . . . . . . . . . . . 109Modos de unir datos de más de una tabla . . . . . . . . . . . . . . . . . . . . . . . . 110Subconsultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Modos de acceder a datos de DB2 que no están en una tabla . . . . . . . . . . . . . . . . . 118

Modos de modificar datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Inserciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

iv Introducción a DB2 para z/OS

Page 4: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Actualizaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Supresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

Modos de ejecutar SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121SQL estático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121SQL dinámico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121DB2 ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Acceso a DB2 para Java: SQLJ y JDBC . . . . . . . . . . . . . . . . . . . . . . . . . 121SQL interactivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Tablas de ejemplo de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Tabla de actividades (DSN8910.ACT) . . . . . . . . . . . . . . . . . . . . . . . . . 124Tabla de departamentos (DSN8910.DEPT) . . . . . . . . . . . . . . . . . . . . . . . . 125Tabla de empleados (DSN8910.EMP) . . . . . . . . . . . . . . . . . . . . . . . . . 127Tabla de fotografías y currículums de empleados (DSN8910.EMP_PHOTO_RESUME) . . . . . . . . . 130Tabla de proyectos (DSN8910.PROJ) . . . . . . . . . . . . . . . . . . . . . . . . . . 132Tabla de actividades de proyectos (DSN8910.PROJACT) . . . . . . . . . . . . . . . . . . . 133Tabla de empleados de actividades de proyectos (DSN8910.EMPPROJACT) . . . . . . . . . . . . 134Tabla de ejemplo Unicode (DSN8910.DEMO_UNICODE) . . . . . . . . . . . . . . . . . . . 135Relaciones entre las tablas de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . 136Vistas en las tablas de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Almacenamiento de tablas de aplicaciones de ejemplo. . . . . . . . . . . . . . . . . . . . 141

Capítulo 6. Programación de aplicaciones para DB2 . . . . . . . . . . . . . . . 147Desarrollo de aplicaciones de DB2 en entornos de desarrollo integrados . . . . . . . . . . . . . . . 147

WebSphere Studio Application Developer . . . . . . . . . . . . . . . . . . . . . . . . 148DB2 Development Add-In for Visual Studio .NET . . . . . . . . . . . . . . . . . . . . . 148Herramientas de desarrollo de aplicaciones de estación de trabajo . . . . . . . . . . . . . . . . 149

Lenguajes de programación y métodos para desarrollar programas de aplicaciones . . . . . . . . . . . 149Proceso de preparación para un programa de aplicación . . . . . . . . . . . . . . . . . . . . 150Aplicaciones de SQL estático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

Declaración de definiciones de tablas y vistas . . . . . . . . . . . . . . . . . . . . . . 155Acceso de datos con variables de lenguaje principal . . . . . . . . . . . . . . . . . . . . 156Acceso de datos con matrices de variables de lenguaje principal . . . . . . . . . . . . . . . . 157Acceso de datos con estructuras de lenguaje principal . . . . . . . . . . . . . . . . . . . . 158Recuperación de filas con un cursor . . . . . . . . . . . . . . . . . . . . . . . . . . 158Modos de comprobar la ejecución de sentencias de SQL . . . . . . . . . . . . . . . . . . . 161

Aplicaciones de SQL dinámico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Tipos de SQL dinámico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Conceptos sobre programación de SQL dinámico . . . . . . . . . . . . . . . . . . . . . 163Utilización de ODBC para ejecutar SQL dinámico . . . . . . . . . . . . . . . . . . . . . 164

Utilización de Java para ejecutar SQL estático y dinámico . . . . . . . . . . . . . . . . . . . 165Soporte de SQLJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166Soporte de JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Utilización de un programa de aplicación como un procedimiento almacenado . . . . . . . . . . . . 168Lenguajes utilizados para crear procedimientos almacenados . . . . . . . . . . . . . . . . . 169Proceso de procedimientos almacenados . . . . . . . . . . . . . . . . . . . . . . . . 170Utilización del lenguaje de procedimiento de SQL para crear un procedimiento almacenado . . . . . . . 172Utilización de DB2 Developer Workbench para crear un procedimiento almacenado . . . . . . . . . . 173Configuración del entorno de procedimientos almacenados . . . . . . . . . . . . . . . . . . 173Preparación de un procedimiento almacenado . . . . . . . . . . . . . . . . . . . . . . 174Cómo pueden llamar las aplicaciones a procedimientos almacenados . . . . . . . . . . . . . . . 174

Capítulo 7. Implementación del diseño de base de datos . . . . . . . . . . . . . 177Creación de tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

Tipos de tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178Creación de tablas base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Creación de tablas temporales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Creación de tablas de consultas materializadas . . . . . . . . . . . . . . . . . . . . . . 182Creación de una tabla con particionamiento controlado por tabla . . . . . . . . . . . . . . . . 183

Definición de columnas de una tabla . . . . . . . . . . . . . . . . . . . . . . . . . . 183Nombres de columna. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

Contenido v

Page 5: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Valores nulos y por omisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Utilización de restricciones de comprobación para imponer la validez de valores de columnas . . . . . . 196

Diseño de una fila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Longitudes de registro y páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Diseños que desperdician espacio . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Creación de espacios de tablas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Tipos de espacios de tablas de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . 198Cómo DB2 crea implícitamente un espacio de tablas . . . . . . . . . . . . . . . . . . . . 208CómoDB2 crea implícitamente un espacio de tabla XML . . . . . . . . . . . . . . . . . . . 208Asignación de espacios de tablas a almacenamiento físico . . . . . . . . . . . . . . . . . . 212

Creación de índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Tipos de índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Cómo pueden ayudar los índices a evitar clasificaciones . . . . . . . . . . . . . . . . . . . 216Claves de índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Atributos de índices generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Atributos de índices XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Atributos de índices de tablas particionadas . . . . . . . . . . . . . . . . . . . . . . . 225

Creación de vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Vista de una única tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Vista que combina información de varias tablas . . . . . . . . . . . . . . . . . . . . . . 232Inserciones y actualizaciones de datos mediante vistas. . . . . . . . . . . . . . . . . . . . 232

Creación de objetos grandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Creación de bases de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Creación de relaciones con restricciones de referencia . . . . . . . . . . . . . . . . . . . . . 236

Cómo DB2 impone restricciones de referencia . . . . . . . . . . . . . . . . . . . . . . 236Construcción de una estructura de referencia . . . . . . . . . . . . . . . . . . . . . . . 239Tablas de una estructura de referencia . . . . . . . . . . . . . . . . . . . . . . . . . 240Creación de tablas de excepción . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

Creación de desencadenantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241Creación de funciones definidas por el usuario . . . . . . . . . . . . . . . . . . . . . . . 241

Capítulo 8. Gestión del rendimiento de DB2 . . . . . . . . . . . . . . . . . . . 245Pasos iniciales para la gestión del rendimiento . . . . . . . . . . . . . . . . . . . . . . . 245

Objetivos de rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245Diseño de las aplicaciones para el rendimiento . . . . . . . . . . . . . . . . . . . . . . 246Origen de problemas de rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . 246Herramientas para análisis del rendimiento . . . . . . . . . . . . . . . . . . . . . . . 247

Modos de mover datos eficazmente en el sistema . . . . . . . . . . . . . . . . . . . . . . 248Rol de las agrupaciones de almacenamientos intermedios en la puesta en antememoria de datos . . . . . 248Efecto de la compresión de datos en el rendimiento . . . . . . . . . . . . . . . . . . . . 251Cómo puede afectar al rendimiento la organización de los datos . . . . . . . . . . . . . . . . 251

Modos de mejorar el rendimiento para varios usuarios . . . . . . . . . . . . . . . . . . . . 255Rendimiento mejorado mediante la utilización de bloqueos . . . . . . . . . . . . . . . . . . 256Rendimiento mejorado mediante control de simultaneidad . . . . . . . . . . . . . . . . . . 260

Modos de mejorar el rendimiento de las consultas . . . . . . . . . . . . . . . . . . . . . . 261Utilización de EXPLAIN para comprender la vía de acceso . . . . . . . . . . . . . . . . . . 262Herramientas que ayudan a mejorar el rendimiento de las consultas . . . . . . . . . . . . . . . 263Análisis del rendimiento de consultas y aplicaciones . . . . . . . . . . . . . . . . . . . . 265

Capítulo 9. Gestión de operaciones de DB2 . . . . . . . . . . . . . . . . . . . 269Herramientas que le ayudan a gestionar DB2. . . . . . . . . . . . . . . . . . . . . . . . 269

Centro de control de DB2 y herramientas relacionadas . . . . . . . . . . . . . . . . . . . 269DB2 Administration Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270DB2 Interactive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

Utilización de mandatos y programas de utilidad para controlar las operaciones de DB2 . . . . . . . . . 271Mandatos de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Programas de utilidad de DB2. . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

Gestión de conjuntos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272Mecanismos de autorización y seguridad para el acceso a datos . . . . . . . . . . . . . . . . . 273

vi Introducción a DB2 para z/OS

||

||

Page 6: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cómo controlan el acceso a datos los ID de autorización . . . . . . . . . . . . . . . . . . . 274Cómo mantienen privilegios y autoridades los ID de autorización . . . . . . . . . . . . . . . . 274Modos de controlar el acceso a subsistemas DB2 . . . . . . . . . . . . . . . . . . . . . 276Modos de controlar el acceso a los datos . . . . . . . . . . . . . . . . . . . . . . . . 278Modos de controlar el acceso a objetos de DB2 mediante autoridades y privilegios explícitos . . . . . . . 279Utilización de seguridad de varios niveles para controlar el acceso . . . . . . . . . . . . . . . 281Utilización de vistas para controlar el acceso . . . . . . . . . . . . . . . . . . . . . . . 281Utilización de otorgamiento y revocación de privilegios para controlar el acceso . . . . . . . . . . . 282

Copia de seguridad, recuperación y reinicio . . . . . . . . . . . . . . . . . . . . . . . . 284Recursos y herramientas de copia de seguridad y recuperación. . . . . . . . . . . . . . . . . 286Reinicio de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289Copias de seguridad y comprobaciones de datos regulares . . . . . . . . . . . . . . . . . . 289Control de los cambios en las bases de datos y de la coherencia de los datos . . . . . . . . . . . . 290Sucesos del proceso de recuperación. . . . . . . . . . . . . . . . . . . . . . . . . . 292Optimización de la disponibilidad durante la copia de seguridad y la recuperación . . . . . . . . . . 293

Capítulo 10. DB2 y la web . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Entorno de aplicaciones web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

Componentes de aplicaciones basadas en la web . . . . . . . . . . . . . . . . . . . . . 298Características arquitectónicas de aplicaciones basadas en la web . . . . . . . . . . . . . . . . 299Ventajas de DB2 para z/OS como servidor . . . . . . . . . . . . . . . . . . . . . . . 302

Aplicaciones basadas en la web y WebSphere Studio Application Developer . . . . . . . . . . . . . 303XML y DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

Ventajas de utilizar XML con DB2 para z/OS. . . . . . . . . . . . . . . . . . . . . . . 305Modos de utilizar XML con DB2 para z/OS . . . . . . . . . . . . . . . . . . . . . . . 306

SOA, XML y servicios web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

Capítulo 11. Acceso a datos distribuidos . . . . . . . . . . . . . . . . . . . . 309Modos de implementar datos distribuidos en programas . . . . . . . . . . . . . . . . . . . . 310

Sentencias CONNECT explícitas . . . . . . . . . . . . . . . . . . . . . . . . . . . 310Nombres en tres partes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

Modos en que los datos distribuidos afectan a otras tareas . . . . . . . . . . . . . . . . . . . 313Efectos de los datos distribuidos en la planificación . . . . . . . . . . . . . . . . . . . . 313Efectos de los datos distribuidos en la programación . . . . . . . . . . . . . . . . . . . . 313Efectos de los datos distribuidos en la preparación de programas . . . . . . . . . . . . . . . . 314

Cómo se coordinan las actualizaciones entre sistemas distribuidos. . . . . . . . . . . . . . . . . 315Soporte de gestor de transacciones de DB2 . . . . . . . . . . . . . . . . . . . . . . . 315Servidores que dan soporte a confirmación en dos fases . . . . . . . . . . . . . . . . . . . 316Servidores que no dan soporte a confirmación en dos fases . . . . . . . . . . . . . . . . . . 316

Modos de reducir el tráfico de la red . . . . . . . . . . . . . . . . . . . . . . . . . . 317Mejoras en la eficacia de las consultas . . . . . . . . . . . . . . . . . . . . . . . . . 317Reducción del volumen de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . 318Optimización para conjuntos de resultados grandes y pequeños . . . . . . . . . . . . . . . . 319Mejoras del rendimiento para SQL dinámico . . . . . . . . . . . . . . . . . . . . . . . 320

Capítulo 12. Compartimiento de datos con los datos de DB2 . . . . . . . . . . . . 321Ventajas del compartimiento de datos de DB2 . . . . . . . . . . . . . . . . . . . . . . . 321

Disponibilidad mejorada de los datos . . . . . . . . . . . . . . . . . . . . . . . . . 322Crecimiento escalable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322Configuraciones flexibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Inversiones protegidas en personas y habilidades . . . . . . . . . . . . . . . . . . . . . 329

Cómo DB2 protege la coherencia de los datos en un entorno de compartimiento de datos . . . . . . . . . 329Cómo se realizan actualizaciones en un entorno de compartimiento de datos . . . . . . . . . . . . . 331Cómo escribe DB2 los datos cambiados en disco en un entorno de compartimiento de datos . . . . . . . . 335Modos en que el compartimiento de datos afecta a otras tareas. . . . . . . . . . . . . . . . . . 336Modos en que el compartimiento de datos afecta a la disponibilidad . . . . . . . . . . . . . . . . 337

Recursos de información para DB2 for z/OS y productos relacionados . . . . . . . 339

Cómo obtener información de DB2 . . . . . . . . . . . . . . . . . . . . . . . 345

Contenido vii

Page 7: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cómo utilizar la biblioteca de DB2 . . . . . . . . . . . . . . . . . . . . . . . 349

Avisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Información de interfaz de programación . . . . . . . . . . . . . . . . . . . . . . . . . 355

Interfaz de programación de uso general e información de ayuda asociada . . . . . . . . . . . . . 355Marcas registradas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

Índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

viii Introducción a DB2 para z/OS

Page 8: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Acerca de esta información

Esta información proporciona una amplia introducción a IBM DB2 para z/OS.Explica los conceptos básicos que se asocian en general a los sistemas de gestiónde bases de datos relacionales y, en concreto, a DB2 para z/OS.

Después de leer esta información, el usuario adquiere una comprensión de losconceptos básicos sobre DB2.

Esta información asume que el subsistema de DB2 se está ejecutando en la versión9.1, en la modalidad de nueva función. En general, las funciones nuevas descritas,incluendo cambios en las funciones existentes, sentencias y límtes, solo estándisponibles en la modalidad de nuevas fuciones. Hay dos nuevas excepciones aesta sentencia general y mejoras de la optimización y programas de utilidadmodificados, que también están disponibles en la modalidad de conversión, salvoque se especifique lo contrario.

A quién va dirigido este manualSi no conoce DB2 para z/OS, esta información va dirigida a usted.

Quizás ha trabajado con DB2 en otros sistemas operativos (Windows, Linux, AIX,iSeries, VM o VSE). Quizás ha trabajado en sistemas de gestión de bases de datos(DBMS) no IBM o en el DBMS jerárquico de IBM, denominado InformationManagement System (IMS). Quizás nunca ha trabajado con DBMS, pero deseatrabajar con este producto, que muchas empresas utilizan para datos de tareascríticas y programas de aplicaciones. Independientemente de sus conocimientos, sidesea aprender sobre DB2 para z/OS, esta información puede resultarle útil.

Si va a trabajar con DB2 para z/OS y ya conoce la tarea específica que va arealizar, empiece por leer los tres primeros capítulos. A continuación, puedeconsiderar cuál será su rol al elegir la lectura de todos los capítulos restantes o dealgunos de ellos. Por ejemplo, supongamos que sabe que será un administrador debases de datos (DBA) para una organización que tiene algunas aplicacionesdistribuidas y empieza a planificar para ser un negocio bajo demanda. En este casoprobablemente decidirá leer los capítulos sobre diseño de objetos y datos,implementación del diseño de base de datos, DB2 y la Web, y acceso a datosdistribuidos.

Esta información se ha escrito suponiendo que la mayoría de lectores sonprofesionales del proceso de datos.

Conjunto de programas de utilidad de DB2

Importante: En esta versión de DB2 para z/OS, el conjunto de programas deutilidad de DB2 está disponible como producto opcional. Debe solicitar y adquirirpor separado una licencia para dichos programas de utilidad, y cuando en estapublicación se habla de las funciones de estos programas de utilidad no implicaque tenga una licencia sobre los mismos.

El conjunto de programas de utilidad de DB2 se ha diseñado para trabajar con elprograma DFSORT, para el que dispone de licencia de uso en soporte de

© Copyright IBM Corp. 2001, 2008 ix

Page 9: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

programas de utilidad de DB2 incluso aunque no disponga de licencia de DFSORTpara uso general. Si el principal producto de clasificación no es DFSORT, no olvideleer los APAR informativo de lectura obligada:v II14047/II14213: USE OF DFSORT BY DB2 UTILITIESv II13495: HOW DFSORT TAKES ADVANTAGE OF 64-BIT REAL

ARCHITECTURE

Estos APAR informativos se actualizan periódicamente.Información relacionada

Empaquetado de los programas de utilidad de DB2 (Guía de utilidad)

Terminología y referenciasEn esta información, se hace referencia a DB2 Versión 9.1 para z/OS como ″DB2for z/OS.″ En los casos en que el contexto ofrece un significado claro, se hacereferencia a DB2 for z/OS como ″DB2.″ Cuando esta información se refiere atítulos de publicaciones DB2 for z/OS, se utiliza un título abreviado. (Por ejemplo,″Consulte DB2 SQL Reference″ es una referencia a la publicación IBM DB2 Version9.1 for z/OS SQL Reference.)

Cuando se hace referencia a un producto de DB2 distinto a DB2 for z/OS, en estainformación se utiliza el nombre completo del producto para evitar ambigüedades.

Los términos siguientes se utilizan de la forma indicada:

DB2 Representa el programa bajo licencia DB2 o un subsistema concreto deDB2.

OMEGAMONConsulte cualquiera de los productos siguientes:v IBM Tivoli OMEGAMON XE for DB2 Performance Expert on z/OSv IBM Tivoli OMEGAMON XE for DB2 Performance Monitor on z/OSv IBM DB2 Performance Expert for Multiplatforms and Workgroupsv IBM DB2 Buffer Pool Analyzer for z/OS

C, C++ y lenguaje CRepresenta el lenguaje de programación C o C++.

CICS Representa CICS Transaction Server para z/OS.

IMS Representa el Gestor de bases de datos IMS o el Gestor de transaccionesIMS.

MVS Representa el elemento MVS del sistema operativo z/OS, que equivale alcomponente Programa de control base (BCP - Base Control Program) delsistema operativo z/OS.

RACF Representa las funciones que proporciona el componente RACF delServidor de seguridad de z/OS.

Características de accesibilidad para DB2 Version 9.1 for z/OSLas características de accesibilidad ayudan al usuario con incapacidades físicas,como por ejemplo movilidad restringida o visión limitada, a utilizarsatisfactoriamente productos de tecnología de la información.

x Introducción a DB2 para z/OS

|

Page 10: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Características de accesibilidad

La lista siguiente incluye las principales características de accesibilidad enproductos z/OS, incluyendo DB2 Version 9.1 for z/OS. Estas características dansoporte a lo siguiente:v Utilización solamente mediante el teclado.v Interfaces utilizadas habitualmente por lectores de pantalla y amplificadores de

pantalla.v Personalización de atributos de visualización como color, contraste y tamaño de

font

Consejo: Centro de información de Information Management Software for z/OSSolutions (que incluye información para DB2 Version 9.1 for z/OS) y suspublicaciones relacionadas están habilitadas para la accesibilidad para IBM HomePage Reader. Puede utilizar todas las características utilizando el teclado en lugardel ratón.

Navegación mediante el teclado

Puede acceder a las funciones de los paneles de ISPF de DB2 Version 9.1 for z/OSutilizando un teclado o atajos de teclado.

Para obtener información sobre la navegación por los paneles de ISPF de DB2Version 9.1 for z/OS utilizando TSO/E o ISPF, consulte el manual z/OS TSO/EPrimer, z/OS TSO/E User’s Guide y z/OS ISPF User’s Guide. Estas guías describencómo navegar por cada una de estas interfaces, incluyendo la utilización de atajosde teclado o teclas de función (teclas PF). Esta guía incluye los valores por omisiónpara las teclas PF y explica cómo modificar estas funciones.

Información relacionada con la accesibilidad

Hay disponible documentación en línea para DB2 Version 9.1 for z/OS en elCentro de información de Information Management Software for z/OS Solutions,en el siguiente sitio web: http://publib.boulder.ibm.com/infocenter/dzichelp

IBM y accesibilidad

Consulte IBM Accessibility Center en http://www.ibm.com/able para obtener másinformación acerca del compromiso que IBM tiene con la accesibilidad.

Cómo enviar comentariosSus comentarios ayudan a IBM a ofrecer información de calidad. Le agradeceremosque envíe sus comentarios sobre esta publicación y otro tipo de documentación deDB2 for z/OS. Puede utilizar los métodos siguientes para hacernos llegar suscomentarios:v Envíe sus comentarios por correo electrónico a [email protected] e incluya el

nombre del producto, el número de la versión del producto y el número de lapublicación. Si va a comentar un texto específico, indique la ubicación del texto(por ejemplo, un capítulo y el título del apartado o un título del tema de ayuda).

v Puede enviar los comentarios desde la web. Visite el sitio web DB2 for z/OS -Recursos técnicos en:

http://www.ibm.com/support/docview.wss?&uid=swg27011656

Acerca de esta información xi

Page 11: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Este sitio web tiene un formulario de comentarios del lector en línea que puedeutilizar para enviar sus comentarios.

v También puede enviar sus comentarios utilizando el enlace de comentarios queencontrará en el pie de cada página en el Centro de información de InformationManagement Software for z/OS Solutions en el siguiente sitio webhttp://publib.boulder.ibm.com/infocenter/db2zhelp.

xii Introducción a DB2 para z/OS

Page 12: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 1. Visión general de DB2 y gestión de información

Si no tiene experiencia en DB2 for z/OS o desea saber más sobre éste, estainformación le proporcionará la información básica que necesita conocer. (Estainformación a veces utiliza el nombre abreviado de DB2 cuando el contexto haceque el significado sea claro.)

Una buena forma de empezar a aprender sobre un producto de software esobservar cómo lo utilizan organizaciones reales. En el caso de DB2, miles deempresas de todo el mundo utilizan este sistema de gestión de bases de datos pararealizar sus negocios. Incluso observar un pequeño porcentaje de estas empresaspuede resultar poco práctico. Los casos de ejemplo pueden ayudarle a imaginaralgunas de las posibilidades mediante la descripción de unos cuantas formas enque las organizaciones dependen de DB2 para conseguir sus objetivosempresariales.

Además de comprender cómo las organizaciones dependen de DB2 para conseguirsus objetivos empresariales, también necesita comprender la estrategia global deIBM para ayudar a sus clientes a gestionar datos empresariales de forma eficaz.

También necesita comprender cómo funciona DB2 con una amplia variedad desistemas operativos.

Casos de ejemplo para utilizar DB2Esta información proporciona casos de ejemplo que ilustran cómo algunasorganizaciones pueden utilizar satisfactoriamente DB2.

¿Qué tienen en común las siguientes situaciones?v Un banco internacional que proporciona servicios ininterrumpidos a sus clientes

24 horas al día.v Un sistema de universitario de varios campus que educa a miles de estudiantes

y ofrece cientos de cursos.v Una compañía de electricidad que proporciona electricidad a una extensa región

geográfica.

La característica común en cada situación es que DB2 es un componente clave en elentorno de proceso de datos de cada organización.

Si es nuevo en DB2, quizás se pregunte cómo estas y otras organizaciones utilizanel producto. Quizás se pregunte qué tipos de organizaciones utilizan DB2. Esposible que se pregunte si las organizaciones que utilizan DB2 tienen la totalidad,o sólo una parte, de sus datos en el servidor de la empresa. (A veces, se hacereferencia al servidor de la empresa como ″sistema principal.″) Quizás se preguntepor qué las organizaciones siguen colocando sus principales datos empresariales enel sistema principal.

Disponibilidad y escalabilidad para empresas grandesLas empresas grandes eligen DB2 for z/OS debido a que necesitan un servidor debases de datos eficaz que asegure una disponibilidad y escalabilidad superiores.

© Copyright IBM Corp. 2001, 2008 1

||

|||||||

Page 13: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Quizás piense que los términos “servidor empresarial” y “sistema principal”implican que empresas muy grandes utilizan un producto como DB2 for z/OS.

Puede preguntarse: “¿Por qué las empresas grandes eligen DB2 for z/OS?” Larespuesta es “Porque estas empresas necesitan un servidor de bases de datos eficazque asegure una disponibilidad y escalabilidad superiores.”

Una disponibilidad y escalabilidad superiores en un entorno Sysplex paralelo sonlas características clave que distinguen DB2 for z/OS de otros servidores de basesde datos. Debido a estas cualidades, DB2 for z/OS está ampliamente desplegadoen industrias que incluyen:v Las principales compañías de tarjetas de créditov Bancosv Compañías de segurosv Compañías de correduríav Compañías de información de créditos

Son empresas que procesan volúmenes muy grandes de transacciones querequieren millones de actualizaciones simultáneas cada día.

Considere algunos ejemplos.v El volumen de operaciones que se produce en las principales bolsas puede

alcanzar mil millones de acciones en un solo día.v Una compañía de correduría puede tener una red de miles de consejeros

financieros y cientos de miles de clientes que diariamente necesitan acceder enlínea a información financiera altamente sensible.

v Una compañía de transportes puede entregar más de 10 millones de paquetes enun solo día. Cada paquete requiere varios pasos dentro del proceso de entregacomo, por ejemplo, la recogida, los puntos de tránsito y la entrega final. Elestado del paquete se puede mostrar a los clientes en la web.

v Una compañía de información de créditos necesita proporcionar un millón deinformes sobre créditos cada día, a la vez que necesita mantener los datos al díacon más de 100 millones de actualizaciones en un solo día.

Resulta fácil comprender por qué estas empresas necesitan que el sistema de basesde datos que procesa estas transacciones sea continuamente disponible, escalable yseguro. Estos sistemas empresariales deben estar disponibles para los clientes quebuscan y confían en sus servicios 24 horas al día.v Los sistemas deben proporcionar una disponibilidad continua.

Si espera que una transacción financiera se procese y la aplicación que ejecutadicha transacción de repente falla, puede perder la oportunidad de realizar unnegocio en la bolsa en un momento crítico. El objetivo clave de una altadisponibilidad es asegurar que un sistema no tenga un único punto de anomalía.

v Los sistemas deben ser escalables.A medida que las empresas crecen, el proceso de los datos también debe crecer.Las acciones de las empresas como, por ejemplo, fusiones, adquisiciones yservicios nuevos, o las nuevas regulaciones del gobierno, pueden acelerar larapidez con qué crecen las necesidades de proceso de datos de las empresas. Amedida que se produce un crecimiento rápido, las empresas necesitan un modopara ajustar sus empresas de forma satisfactoria.Las empresas necesitan un sistema de bases de datos grande diseñado paraabsorber fácilmente las adiciones actuales de nuevos tipos de información yprocesos de aplicaciones sin perjudicar el rendimiento ni la disponibilidad. Estesistema de bases de datos nunca debe imponer una restricción en el crecimiento.

2 Introducción a DB2 para z/OS

||||

|||

||||

Page 14: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

A medida que las empresas añaden más capacidad informática, el sistema debases de datos debe ampliarse de acuerdo con ello para asegurar que lasempresas obtengan el beneficio completo de la capacidad añadida y que tenganacceso continuo a los datos.

Los casos de ejemplo siguientes describen cómo un banco internacional grande sebeneficia de estas capacidades de DB2 for z/OS para proporcionar a sus clientes lacalidad de servicio más alta.

Caso de ejemplo 1: Con frecuencia se producen fusiones de bancos. Cuando dosbancos combinan operaciones, ¿cómo fusiona el banco recién formado lasaplicaciones no relacionadas?

El compartimiento de datos de DB2 for z/OS en un entorno Sysplex paraleloproporciona la solución que el banco nuevo necesita para poder fusionar los dossistemas bancarios.

La tecnología de clúster Sysplex paralelo en DB2 es la respuesta a la disponibilidady escalabilidad. Sysplex paralelo es un clúster, o complejo, de sistemas z/OS quefuncionan juntos para manejar varias transacciones y aplicaciones. Esta tecnologíaimplementa un diseño de compartimiento de datos.

El diseño de compartimiento de datos de DB2 proporciona a las empresas lacapacidad de añadir nuevos subsistemas DB2 a un grupo de compartimiento dedatos, o clúster, cuando es necesario y sin ninguna interrupción. Dado que lasaplicaciones se ejecutan en más de un subsistema DB2, pueden leer del mismoconjunto de datos compartidos o escribir en él simultáneamente.

Sysplex paralelo puede crecer incrementalmente sin perjudicar el rendimiento. Laarquitectura de Sysplex paralelo está diseñada para integrar un máximo de 32sistemas en un clúster. En un clúster de disco compartido, cada sistema esmiembro del clúster y tiene acceso a los datos compartidos.

Un componente integral de Sysplex paralelo es el recurso de acoplamiento, unmecanismo que coordina las transacciones entre los distintos miembros de unclúster. Otras soluciones intentan implementar posibilidades similares mediantesoftware, pero la mensajería utilizando software puede causar una mayorsobrecarga y afectar directamente la capacidad de escalabilidad y ejecución.

Cuando se utiliza la tecnología de Sysplex paralelo, las aplicaciones de cada bancopueden integrarse fácilmente en un grupo de compartimiento de datos y puedenacceder a los datos compartidos.

Caso de ejemplo 2: El banco ejecuta trabajos por lotes cada noche y la carga detrabajo en línea se ejecuta cerca de 24 horas al día. ¿Cómo puede ejecutar el bancocargas de trabajo variadas, mantenerlas equilibradas y evitar problemas en lashoras punta?

DB2 trabaja estrechamente con el componente z/OS Workload Manager (WLM).WLM proporciona el mejor modo de ejecutar cargas de trabajo mixtassimultáneamente y el compartimiento de datos proporciona al banco muchaflexibilidad en el modo de ejecutar las cargas de trabajo.

La tecnología de Sysplex paralelo está diseñada para manejar eficazmente cargasde trabajo variadas e imprevisibles. Workload Manager asegura que las cargas detrabajo del banco estén óptimamente equilibradas entre los sistemas de Sysplex.

Capítulo 1. Visión general de DB2 y gestión de información 3

||||

||||

|||||

||||

Page 15: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Por ejemplo, cuando el banco añade un nuevo subsistema o la carga de trabajo sedesequilibra, no es necesario volver a distribuir los datos. El nuevo subsistematiene el mismo acceso directo a los datos que todos los subsistemas existentes en elgrupo de compartimiento de datos.

El compartimiento de datos funciona con WLM para proporcionar al banco laflexibilidad que necesita para manejar fácilmente cargas en periodos de mayoractividad. WLM proporciona la capacidad de iniciar servidores y subsistemas bajodemanda basándose en objetivos de servicios predefinidos. Por ejemplo, el bancopuede iniciar miembros del compartimiento de datos para manejar cargas enperiodos de mayor actividad en el proceso de final de trimestre y detenerloscuando finalice el período de mayor actividad de final de trimestre.

DB2 es el único servidor de datos en System z10 para sacar el máximo partido alas posibilidades de WLM.

Caso de ejemplo 3: El banco crea un sitio web para proporcionar a sus clientesservicios bancarios en línea 24 horas al día. En este caso DBMS no puede estarnunca fuera de servicio a causa de actividades de mantenimiento. ¿Cómo puede elbanco aplicar mantenimiento a su DBMS si tiene que estar operativo 24 horas aldía?

El compartimiento de datos y la tecnología Sysplex paralelo proporcionan al bancouna forma de aplicar mantenimiento de software (interrupción planificada) a la vezque se mantiene siempre un subconjunto de sus subsistemas DB2 activo y enejecución.

El entorno Sysplex paralelo proporciona varias vías de acceso a los datos y crearedundancia en el recurso de acoplamiento para evitar un único punto deanomalía. Con la tecnología de Sysplex paralelo, el banco puede añadirmantenimiento a un miembro a la vez mientras sus sistemas siguen ejecutándose ypermanecen actualizados en servicio. Esta tecnología también permite al bancomigrar a un nuevo release de software al aplicar el nuevo release a un miembro ala vez. Con este diseño, el banco evita interrupciones.

En caso de que se produzca una anomalía de aplicación o sistema en un sistema(interrupción no planificada), Workload Manager asegura que los otros sistemas deSysplex puedan tomar el relevo de la carga de trabajo completa. De nuevo, elbanco evita interrupciones.

Conceptos relacionados

“DB2 en un entorno Sysplex paralelo” en la página 63Capítulo 12, “Compartimiento de datos con los datos de DB2”, en la página 321

Información empresarial crítica para los encargados de tomardecisiones

La mayoría de organizaciones utilizan diversos productos de hardware y softwarepara almacenar una gran cantidad de datos. Los encargados de tomar decisionesclave necesitan un acceso oportuno a la información que necesitan para tomardecisiones empresariales críticas.

Considere un sistema universitario con varios campus. Un grupo de expertos eneducación gestiona el sistema día a día. Estas personas toman decisiones queafectan a todos los campus universitarios. Los encargados de tomar decisiones

4 Introducción a DB2 para z/OS

||

Page 16: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

utilizan un depósito de datos para poder ″extraer″ datos de las numerosas bases dedatos del sistema y tomar las mejores decisiones para la organización.

Quizás ha oído hablar los términos depósito de datos y minería de datos. Puedeimaginar un depósito de datos como un sistema que proporciona informaciónempresarial crítica a una organización. Minería de datos es la acción de recopilarinformación empresarial crítica del depósito de datos, correlacionarla y descubrirasociaciones, patrones y tendencias. El sistema de depósito de datos depura losdatos para que sean exactos y actuales. El sistema de depósito de datos tambiénpresenta los datos a los encargados de tomar decisiones para que puedaninterpretarlos y utilizarlos de forma efectiva y eficiente.

Depósito de datos y minería de datos son términos relacionados que incluye eltérmino más global inteligencia empresarial.

La mayoría de organizaciones utilizan diversos productos de hardware y softwarepara almacenar una gran cantidad de datos. Sin embargo, los encargados de tomardecisiones clave de muchas empresas no tienen el acceso oportuno a lainformación que necesitan para tomar decisiones empresariales críticas. Si tuvieranla información, podrían tomar decisiones más inteligentes para sus empresas; deaquí viene el término inteligencia empresarial.

El sistema de depósito de datos de la universidad, que se basa en DB2, transformala enorme cantidad de datos operativos en informativos. Un ejemplo de datosoperativos en una universidad son las identidades de las personas que se inscribenen las distintas clases. Obviamente, la universidad necesita esta información parafuncionar. Estos datos operativos se convierten en informativos cuando, porejemplo, los encargados de tomar decisiones descubren que la mayoría deestudiantes que se inscriben en Cálculo avanzado también se inscriben en Críticamusical. La universidad no necesita esta información para funcionar, pero losencargados de tomar decisiones pueden gestionar una institución más eficazmentesi disponen de datos informativos. Como resultado de tener acceso a estos datosinformativos, el personal universitario puede tomar unas decisiones másadecuadas. Las personas que planifican las clases pueden asegurar que estas clasesno se impartan al mismo tiempo, permitiendo de este modo que los alumnospuedan inscribirse en ambas clases. La utilización de DB2 como depósito de datosempresariales asegura que se tomen decisiones empresariales clave basadas en losdatos correctos.

La universidad también utiliza las posibilidades de Internet. Cada campus tiene unsitio web, que proporciona la información pertinente a los encargados de tomardecisiones en la universidad, a los alumnos, a los padres y a los miembros de lascomunidades que rodean cada campus.

La utilización de DB2 for z/OS como servidor empresarial, la universidad puederealizar lo siguiente:v Evaluar la eficacia de los currículums, los gastos, los profesores y el desarrollo

profesionalv Identificar las tendencias emergentes suficientemente pronto para una acción

eficazv Completar aplicaciones para otorgar de una forma más rápida y eficazv Compilar un informe de resumen completo sobre cualquier alumno individualv Permitir que los usuarios finales autorizados utilicen la web para realizar

cualquiera de estas acciones, además de otras

Capítulo 1. Visión general de DB2 y gestión de información 5

||||||||||||||||

||

Page 17: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Distribución de datos y acceso de webLa capacidad de distribuir datos y proporcionar acceso de web a dichos datos esvital para los proveedores de servicios y sus clientes.

Una compañía de electricidad proporciona electricidad a una extensa regióngeográfica. Trabajando desde una única oficina, los representantes de servicios decliente de la empresa responden a las llamadas de los clientes y someten peticionesde servicios. La compañía de electricidad tiene cientos de representantes del campoque proporcionan servicios en las ubicaciones de los clientes. Los representantesdel campo trabajan desde numerosas oficinas locales y necesitan acceder a laspeticiones de servicios de cliente que la oficina central recibe.

Los representantes de servicios de cliente documentan las peticiones de los clientesen sus estaciones de trabajo, que disponen de DB2 Connect Personal Edition. Estainformación se sube a DB2 for z/OS. A continuación, los representantes del campopueden utilizar aplicaciones de Java para acceder a la información de peticiones decliente en DB2 desde sus oficinas locales.

En este caso de ejemplo, en entorno distribuido de la compañía de electricidad sebasa en el recurso de datos distribuidos (DDF), que forma parte de DB2 for z/OS.Las aplicaciones de DB2 pueden utilizar DDF para acceder a datos de otros sitiosde DB2 y a sistemas de bases de datos relacionales remotos que soportenDistributed Relational Database Architecture (DRDA). DRDA es un estándar paraconectividad distribuida. Una organización denominada The Open Group hadesarrollado el estándar, con la participación activa de varias empresas de laindustria, una de las cuales es IBM. Todos los servidores de datos de IBM DB2soportan el estándar DRDA.

DDF también permite que las aplicaciones se ejecuten en un entorno remoto quesoporte DRDA. Estas aplicaciones pueden utilizar DDF para acceder a los datos deservidores de DB2. Entre los ejemplos de peticionarios de aplicaciones se incluyenIBM DB2 Connect y otros productos cliente compatibles con DRDA.

Conceptos relacionados

“Recurso de datos distribuidos” en la página 62Capítulo 10, “DB2 y la web”, en la página 297

Estrategia de gestión de información de IBMLa estrategia de información de IBM está formada por tres componentes básicosque le permiten capturar datos, integrar y analizar datos, y gestionar todos lostipos de contenido empresarial.

La gestión de información de DB2 es una capacidad esencial para IBM. Por lotanto, IBM dispone de una organización amplia de varios sitios dedicada aayudarle a gestionar los datos y a mejorar la información empresarial. La estrategiade gestión de información de IBM ha evolucionado con el tiempo a medida que losavances tecnológicos y las necesidades de los clientes de IBM han ido cambiado.

Uno de los principales cambios recientes en la industria es la introducción delnegocio bajo demanda. Negocio bajo demanda es la integración de procesosempresariales (de un extremo a otro de la empresa, con business partners,proveedores y clientes) que permite que una empresa pueda responder con rapideza las demandas de los clientes y mercados. La estrategia de gestión de informaciónde IBM reconoce y soporta completamente la necesidad de las empresas de pasaral mundo del negocio bajo demanda.

6 Introducción a DB2 para z/OS

Page 18: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La estrategia de gestión de información de IBM consta de tres componentesbásicos:

Captura de datos.Para mejorar los datos empresariales, primero es necesario capturar losdatos necesarios.

Integración y análisis de datos.A continuación, debe integrar y analizar los datos que ha capturado parapoder obtener una comprensión valiosa para las operaciones y loscomponentes. Los componentes incluyen clientes, empleados, proveedores,business partners y miembros de la comunidad.

Gestión de todos los tipos de contenido empresarial.Por último, puede beneficiarse de la extensión y profundidad de lassoluciones de Gestión de información de IBM gestionando todas las formasde contenido empresarial como, por ejemplo, información de la web ydocumentos grandes.

La figura siguiente muestra DB2 en la base de otros segmentos de la estrategia.DB2 se ejecuta en muchos sistemas operativos como, por ejemplo, z/OS, i5/OS,Linux, UNIX, Windows y Solaris, como se puede ver en la parte inferior de lafigura. Alrededor de los sistemas de gestión de información existe una estructuraque incluye herramientas para análisis, réplica de datos, gestión de depósitos,gestión de contenido e integración de información. Como complemento de lasherramientas existen tecnologías de base de datos clave, como XML, SOA(Arquitectura orientada a servicios) y servicios web, y grupos de comunidades dedesarrolladores con los que trabaja IBM para completar las solucionesempresariales. Estas comunidades de desarrolladores incluyen PL\I, C, C++, Java y.NET, además de comunidades de código abierto (open source) para PHP, Perl,Python y Ruby on Rails.

Capítulo 1. Visión general de DB2 y gestión de información 7

||||||||||||

Page 19: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

El lado izquierdo de la figura muestra los servicios de información empresarial quesatisfacen las principales necesidades empresariales de la organización como, porejemplo, Master Data Management y Entity Analytics. Además de estos productosde IBM, la organización puede adquirir aplicaciones de varios proveedores desoftware independientes.

En el lado izquierdo de la figura también puede ver el segmento de gestiónempresarial de la estrategia de gestión de información de IBM. Productos comoIBM DB2 y la colección de herramientas de Gestión de información ofrecen a lasorganizaciones una amplia gama de herramientas para todo desde la gestión debases de datos hasta el análisis del rendimiento. El Centro de control de DB2también proporciona herramientas para la gestión del entorno. Además, muchosproductos de IBM ofrecen soporte de herramientas de Tivoli, lo cual ayuda a lasorganizaciones a gestionar información empresarial.

El fondo de la parte central de la figura demuestra el objetivo de la estrategia degestión de información: proporcionar una infraestructura de información queavance al mismo paso que el desarrollo de aplicaciones que cambian rápidamente

Figura 1. Estrategia de gestión de información de IBM DB2

8 Introducción a DB2 para z/OS

Page 20: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

y que la gestión de información para un negocio bajo demanda integrado. Hoy endía, las aplicaciones necesitan más que nunca trabajar con una diversidad másamplia de datos.

Además de fuentes de aplicaciones tradicionales, las empresas necesitan integrarfuentes como XML, documentos de texto, imágenes escaneadas, contenido web ycorreo electrónico. La tecnología de integración de información proporciona unacceso rápido a datos diversos y distribuidos. La utilización de tecnologíasinnovadoras y emergentes, que incluyen tecnología de federación, réplica, ETL yXML, ayuda a que las empresas mejoren la información para seguir siendocompetitivas. La tecnología de federación proporciona acceso a todas las formas defuentes de datos diversas y distribuidas. La réplica de datos permite renovar datosen múltiples fuentes y destinos de datos relacionales y no relacionales, que seejecutan en sistemas de IBM y de muchos otros proveedores. Puede utilizar réplicade datos cuando necesite una carga de trabajo de alto rendimiento y tiempos derespuesta inmediatos. El soporte de XML se está integrando en el motor de DB2 yestá disponible en herramientas de WebSphere Studio.

Los segmentos de la parte central de la figura representan tres componentes clavede la estrategia de gestión de información de IBM:

Gestión de contenidoLa variedad y volumen actual de contenido digital están llevando a lasempresas más avanzadas a centrarse en la gestión de su contenidoelectrónico. Para dar soporte a un servicio de cliente mejor, más rápido ymás útil y para agilizar los procesos internos, las empresas deben potenciartodo el contenido pertinente. IBM Content Manager es un almacén dedatos entre plataformas muy sólido para todo tipo de contenido como, porejemplo, imágenes, salida del sistema, documentos y soporte enriquecido.Almacén de datos es un término genérico para un lugar (por ejemplo, unsistema de bases de datos, archivo o directorio) donde se guardan datos.IBM Content Manager permite la integración rápida de contenido enprocesos de actividad principal.

AnálisisLas personas que toman decisiones en las organizaciones necesitan poderobtener respuestas a preguntas que requieren un análisis multidimensional.Las herramientas de análisis que IBM ofrece son las Herramientas de DB2e IMS, Query Management Facility (QMF) y DB2 Alphablox. QMF es unaherramienta de consulta e informe bien integrada, eficaz y de confianzaestablecida para los DBMS de bases de datos de DB2. DB2 Alphabloxproporciona la capacidad de crear de forma rápida aplicaciones analíticasbasadas en la web y personalizadas.

Gestión de depósitosLas organizaciones dependen de sus depósitos de datos para acceder ainformación empresarial crítica. El software de inteligencia empresarial queIBM proporciona da soporte a este segmento de la estrategia de gestión deinformación. Estos productos, tales como WebSphere DataStage, amplían laescalabilidad, la capacidad de gestión y la accesibilidad del depósito deDB2.

IBM da mucha importancia a las relaciones con sus business partners, tales comoSAP. Esta compañía, y otras similares, desarrollan y dan soporte a aplicacionesprincipales para sus clientes. Estas aplicaciones proporcionan funcionesempresariales vitales como, por ejemplo, Gestión de relaciones con los clientes yGestión de la cadena de suministro.

Capítulo 1. Visión general de DB2 y gestión de información 9

|||||||||||||

|||||||||

|||||||

|||||

Page 21: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Conceptos relacionados

Capítulo 10, “DB2 y la web”, en la página 297“Herramientas de gestión de información” en la página 14“Utilización de DB2 Query Management Facility para Workstation” en lapágina 123

Servidores de datos y entornos de DB2Los productos de servidor de datos de DB2 se ejecutan en un amplio conjunto desistemas operativos, que incluyen Linux, UNIX, Windows, i5/OS y z/OS. Estainformación básicamente es una introducción al producto DB2 for z/OS.

Además de aprender sobre DB2 for z/OS, también deseará tener información sobrealgunos de los productos que trabajan con DB2 para z/OS. Probablemente suempresa utiliza algunos de estos otros productos.

Los servidores de datos DB2 incluyen soporte para los siguientes productos:v DB2 for z/OSv DB2 para i5/OSv DB2 Database para Linux, UNIX y Windowsv DB2 para Linux en IBM System z10

Recomendación: Descargue versiones de demostración gratis o de prueba demuchos productos y herramientas de DB2. Utilizando código de demostraciónpuede aumentar la comprensión de los distintos productos sobre los que leerá enesta información. Para descargar copias de demostración, visite el sitio web de IBMen http://www14.software.ibm.com/webapp/download/home.jsp. Acontinuación, seleccione un producto de DB2 específico y elija la opción dedescarga en la página principal del producto.

IBM ha desarrollado específicamente los servidores de datos de DB2 de modo queel código subyacente de cada DBMS pueda explotar las posibilidades individualesde los distintos sistemas operativos.

Los productos de servidor de datos de DB2 incluyen las características siguientes:v Los tipos de datos entre los servidores de datos de DB2 son compatibles.v Los estándares abiertos significan que muchos tipos diferentes de clientes

pueden acceder a los datos de los servidores de datos de DB2.v Puede desarrollar aplicaciones con SQL que sean comunes entre servidores de

datos de DB2 y trasladar estas aplicaciones de un sistema operativo de DB2 aotro con la mínima modificación. (Trasladar significa mover una aplicación deun sistema operativo a otro.)

v Los servidores de datos de DB2 pueden soportar aplicaciones de cualquiertamaño. Por ejemplo, imagine que la aplicación empieza con un númeroreducido de usuarios y volúmenes reducidos de datos y transacciones, pero acontinuación crece de forma considerable. Debido a la compatibilidad entreservidores de datos de DB2, la aplicación puede seguir funcionando eficazmenteal pasar a System z9.

v Generalmente se incorpora una función similar en cada servidor de datos deDB2 con el tiempo.

v Existen herramientas disponibles para ayudarle a gestionar todos los servidoresde datos de DB2 de un modo similar.

10 Introducción a DB2 para z/OS

|||

|

|||

|

Page 22: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Consejo: Busque una persona que esté familiarizada con el entorno I/S de laempresa. Pida a esta persona que proporcione una lista de los productos queprobablemente va a utilizar. Puede que la empresa tan solo disponga de unsubconjunto de los productos que se mencionan en esta información. Elconocimiento de la información básica sobre el entorno de su empresa le ayudará asaber qué temas le interesa más leer.

Servidores empresarialesLos servidores empresariales son los sistemas que gestionan los datosempresariales principales de una empresa y dan soporte a aplicacionesempresariales clave.

DB2 for z/OS es el sistema operativo principal de la plataforma de hardware másrobusta de IBM, IBM System z10. DB2 for z/OS sigue siendo el servidor de datosempresariales para System z10, ofreciendo la mayor disponibilidad y escalabilidaddel sector. DB2 for z/OS da soporte a cientos de clientes y a millones de usuarios.Los siguientes productos de DB2 pueden actuar como servidores empresariales:v DB2 for z/OSv DB2 Database para Linux, UNIX y Windowsv DB2 para i5/OS, que soporta aplicaciones en el entorno System i de rango

mediov DB2 para VSE y VM, que soporta aplicaciones grandes en los entornos VSE y

VMConceptos relacionados

“z/Architecture y el sistema operativo z/OS” en la página 53

Ediciones distribuidas de DB2 DatabaseEn el entorno de estación de trabajo de DB2 se ejecutan varias ediciones de DB2Database.v DB2 Enterprise Server Edition se ejecuta en un servidor de cualquier tamaño en

los entornos Linux, UNIX y Windows. Esta edición proporciona el fundamentopara las siguientes posibilidades:– Proceso de transacciones– Creación de depósitos de datos y soluciones basadas en la web– Conectividad e integración para otras fuentes de datos empresariales de DB2

y para fuentes de datos de Informix

La característica DB2 Connect proporciona funcionalidad para acceder a datosalmacenados en sistemas de bases de datos de rango medio y servidores deempresa como, por ejemplo, DB2 for z/OS y DB2 para i5/OS. Esta ediciónadmite clientes locales y remotos de DB2.

v DB2 Workgroup Server Edition se ha diseñado para un entorno empresarialpequeño con un máximo de cuatro CPU. Estas ediciones admiten clientes localesy remotos de DB2.

v DB2 Personal Edition proporciona una base de datos de un único usuario paraimplementaciones de oficina remota o conectadas ocasionalmente. Puede utilizaresta edición para crear y gestionar bases de datos locales o como cliente deservidores de bases de datos de DB2 Enterprise Server Edition o WorkgroupServer Edition. DB2 Personal Edition no acepta peticiones de clientes.

v IBM Database Enterprise Developer Edition le permite desarrollar y probaraplicaciones que se ejecutan en un sistema operativo y acceder a bases de datosen el mismo sistema operativo u otro diferente.

Capítulo 1. Visión general de DB2 y gestión de información 11

|||||

|||||

Page 23: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v DB2 Express Edition se ha diseñado para empresas de tamaño medio ypequeño.

DB2 en servidores a escala más reducidaAdemás de los servidores empresariales, la mayoría de empresas dan soporte aservidores a escala más reducida en redes de área local (LAN). Los servidores aescala más reducida manejan aplicaciones importantes que no solicitan los recursosdisponibles en los servidores empresariales más grandes.

DB2 se ejecuta en el sistema operativo Linux operating system, including LinuxenSystem z10. La plataforma System z10 ofrece cuatro sistemas operativos en losque puede ejecutar productos de servidor de datos de DB2. Los cuatro sistemasoperativos son z/OS, Linux, VM y VSE. Muchos clientes utilizan DB2 paraLinuxen System z10 como servidor de aplicaciones, se conectan con DB2 para z/OScomo servidor de datos, de modo que puedan aprovechar las ventajas dehipersockets para una comunicación rápida y segura.

Entornos personales, móviles y dominantesDB2 está disponible en dispositivos muy pequeños diseñados para un usoindividual. Se pueden escribir programas que accedan a datos de DB2 desde elpropio escritorio, un ordenador portátil u ordenador de mano (PDA) mientras estáde viaje o trabaja en casa. Más adelante puede sincronizar estas bases de datos conbases de datos corporativas de la empresa.

En entornos de estación de trabajo de escritorios y ordenadores portátiles, DB2Personal Edition proporciona un motor de servidor de datos para un únicousuario. DB2 Personal Edition se adapta a sus necesidades si trabaja de formaindependiente y de vez en cuando trabaja conectado o móvil.

Para ordenadores de mano (PDA), DB2 Everyplace permite aplicaciones de basesde datos ligeras en todo el sistema operativo Palm y en sistemas operativosWindows CE, Embedded Linux, QNX Neutrino, Linux y Symbian EPOC. DB2Everyplace está disponible en dos ediciones: Enterprise Edition y Database Edition.

Entornos de varias transacciones y aplicacionesPara optimizar el rendimiento y el tiempo de respuesta, las organizaciones puedendistribuir sus transacciones de aplicaciones y datos, y pueden ejecutar consultas debase de datos en paralelo.

Un clúster es un complejo de máquinas que funcionan juntas para manejar diversastransacciones y aplicaciones. Los siguientes productos de servidor de datos de DB2utilizan tecnología de clúster:v DB2 for z/OSv DB2 para i5/OS, que se ejecuta en el entorno System i paralelov DB2 Database para Linux, UNIX y Windows

Los productos de servidor de datos de DB2 pueden funcionar en clústeres en losentornos siguientes:v AIXv HP-UXv i5/OSv Linux

12 Introducción a DB2 para z/OS

|||||||

||

Page 24: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Solarisv Windows (Windows XP, Windows 2000 y Windows NT)v z/OS

DB2 y comunicación de redesLos productos de servidor de datos de DB2 pueden comunicarse utilizando redesde área amplia (WAN) y redes de área local (LAN).

WAN Una red de área amplia normalmente da soporte a servidoresempresariales como, por ejemplo, DB2 for z/OS; requiere TransmissionControl Protocol/Internet Protocol (TCP/IP) o Systems NetworkArchitecture (SNA).

LAN Una red de área local normalmente da soporte a servidores más pequeñosy requiere TCP/IP.

Clientes soportados por servidores de datos de DB2Los servidores de datos de DB2 dan soporte a una amplia variedad de clientes.v AIXv HP-UXv Linuxv Solarisv Windows (Windows XP, Windows 2000, Windows NT y Windows 98)v Navegadores webv APL2v Assemblerv Cv C++v C#v COBOLv Fortranv Javav Perlv PHPv PL/Iv REXXv Ruby on Railsv Lenguaje de procedimiento de SQLv TOADv Visual Basic .NET

Fuentes de datosEl acceso a datos heterogéneos es una ventaja muy útil para una organización quetiene datos de diversas fuentes.

DB2 Database para Linux, UNIX y Windows da soporte al acceso a distintasfuentes de datos con una única sentencia de SQL. Este soporte se denomina soportede base de datos federada, proporcionado por productos de WebSphere InformationIntegration. Por ejemplo, con el soporte de base de datos federada, puede

Capítulo 1. Visión general de DB2 y gestión de información 13

||

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

||||

Page 25: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

incorporar datos de una amplia variedad de fuentes de datos. La aplicación (y eldesarrollador de aplicaciones) no necesita comprender dónde están los datos o lasdiferencias de SQL entre almacenes de datos diferentes. El soporte de datosfederados incluye soporte para las siguientes fuentes de datos relacionales y norelacionales:v Todos los productos de servidor de datos de DB2v IMSv Informixv Oraclev Microsoft SQL Server, Microsoft Excelv Sybasev JDBCv Bases de datos con soporte de API JDBCv OLE DBv Teradatav EMC Documentum

Si también utiliza WebSphere Information Integrator, las aplicaciones que acceden alos DBMS de DB2 pueden tener acceso de lectura-escritura a fuentes de datosadicionales, servicios web y WebSphere Business Integration. El acceso a datosheterogéneos o diferentes significa que las aplicaciones pueden conseguir más, conmenos código. La alternativa sería que los programadores escribieran variosprogramas, cada uno de los cuales sea capaz de acceder a los datos de una de lasfuentes. A continuación, los programadores escribirían otro programa quefusionaría los resultados.

Herramientas de gestión de informaciónExisten muchos productos y herramientas diferentes disponibles en el mercadopara ayudarle a gestionar el entorno DB2, independientemente de la plataformaque utilice.

Los siguientes productos son especialmente útiles para personas que gestionan unentorno DB2:v Herramientas de DB2 e IMSv Centro de control de DB2

Herramientas de IBM DB2 e IMS

Las herramientas de información de IBM ofrecen herramientas de DB2 para z/OS,i5/OS, Linux, UNIX y Windows y herramientas para IMS, que es el DBMSjerárquico que se ejecuta en el entorno z/OS.

Estas herramientas se clasifican en seis categorías diferentes con las siguientesposibilidades:

Administración de bases de datosNavegar hasta objetos de base de datos y realizar tareas de administraciónde bases de datos en uno o más objeto a la vez. Esta categoría tambiénincluye herramientas que se utilizan para modificar, migrar y compararobjetos del mismo sistema o de diferentes sistemas DB2.

Gestión de programas de utilidadGestionar sistemas DB2 con programas de utilidad de alto rendimiento yautomatización.

14 Introducción a DB2 para z/OS

||||||||||||||||

Page 26: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Gestión de rendimientoSupervisar y ajustar sistemas y aplicaciones de DB2 para obtener unrendimiento óptimo y un coste más bajo.

Gestión de recuperaciónExaminar activos de recuperación y recuperar objetos de DB2 a un puntoen el tiempo en el caso de una interrupción del sistema o una anomalía dela aplicación. Esta categoría también incluye herramientas para ayudarle agestionar activos de recuperación.

Gestión de réplicasPropagar los cambios en los datos capturando y aplicando los cambios ensistemas remotos a través de los servidores de datos de DB2.

Gestión de aplicacionesGestionar los cambios en aplicaciones de DB2 con el mínimo esfuerzo ycrear y desplegar aplicaciones en la empresa.

La mayoría de herramientas de base de datos que dan soporte a DB2 for z/OSproporcionan una interfaz gráfica de usuario (GUI) y además contienen unainterfaz ISPF (Interactive System Productivity Facility) que le permite realizar lamayoría de tareas de DB2 de forma interactiva. Con las interfaces ISPF integradas,puede moverse perfectamente de una herramienta a otra.

Con las herramientas de DB2 e IMS puede esperar lo siguiente:v Soporte inmediato de nuevas versiones de DB2v Entrega entre plataformasv Interfaces coherentesv Prueba detallada que se realiza en las mismas cargas de trabajo que los

productos de base de datos

Puede leer más sobre herramientas de gestión de información específicas a lo largode esta información.

Centro de control de DB2

El Centro de control de DB2 es una herramienta de administración de bases dedatos que puede utilizar para administrar entornos DB2, incluyendo DB2 for z/OS.

El Centro de control de DB2 visualiza objetos de base de datos (como, por ejemplo,tablas) y las relaciones entre ellos. Mediante la utilización de la interfaz del Centrode control de DB2 puede gestionar servidores locales y remotos desde una únicaestación de trabajo. Desde el Centro de control, puede realizar operaciones enobjetos de base de datos entre varios servidores de datos de DB2. También puedeutilizar el Centro de control de DB2 para iniciar otras herramientas como, porejemplo, el Centro de réplica.

Información relacionada

″Herramientas de DB2″ en ibm.com″Herramientas de IMS″ en ibm.com

Herramientas de desarrollo de aplicacionesDB2 proporciona un conjunto de herramientas muy eficaces para el desarrollo deaplicaciones. Los desarrolladores pueden utilizar estas herramientas para crearprocedimientos almacenados, aplicaciones de DB2 y aplicaciones que admiteninteligencia empresarial y negocio bajo demanda.

Capítulo 1. Visión general de DB2 y gestión de información 15

|||||

||

|||||||

Page 27: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

WebSphere Studio Application Developer

WebSphere Studio Application Developer es un entorno de desarrollo Javacompletamente integrado. Utilizando WebSphere Studio Application Developerpuede crear, compilar y probar aplicaciones J2EE (Java 2 Enterprise Edition) paraaplicaciones de negocio bajo demanda con:v Archivos JSP (JavaServer Pages)v Componentes EJB (Enterprise JavaBeans)v Applets y servlets Java 100% puros

WebSphere Developer for System z

WebSphere Developer for System z puede mejorar la eficacia y proporciona ayudamediante desarrollo de sistema principal, desarrollo web y carga de trabajo mixtaintegrada o desarrollo compuesto. Utilizando WebSphere Developer for System z9puede acelerar el desarrollo de aplicaciones web, aplicaciones COBOL y PL/Itradicionales, servicios web e interfaces basadas en XML.

WebSphere Developer for System z proporciona un entorno de trabajo común y unconjunto de herramientas integradas que dan soporte a desarrollo de aplicacionesbasado en un modelo, de extremo a extremo, prueba en tiempo de ejecución ydespliegue rápido de aplicaciones bajo demanda. Con el entorno basado enestación de trabajo interactivo puede acceder de forma rápida a los datos de z/OS.

Rational Application Developer for WebSphere Software

El software de IBM Rational proporciona una serie completa de herramientas parasatisfacer las necesidades de análisis, diseño y construcción, tanto si se trata de undesarrollador de software, un arquitecto de software, un ingeniero de sistemas oun diseñador de bases de datos. IBM Rational Application Developer forWebSphere Software ayuda a los desarrolladores a diseñar, desarrollar, analizar,probar, crear perfiles y desplegar con rapidez aplicaciones de portal, J2EE, Java,SOA (Service Oriented Architecture) y web de alta calidad.

Utilizando Rational Application Developer puede aumentar la productividad,minimizar la trayectoria de aprendizaje y reducir los ciclos de desarrollo parapoder desplegar aplicaciones de forma rápida.

DB2 Developer Workbench

DB2 Developer Workbench es una herramienta que le ayuda a definir eimplementar procedimientos almacenados y funciones definidas por el usuario.Utilizando esta herramienta puede crear procedimientos almacenados de Java ySQL para el entorno DB2 for z/OS o para otros servidores de datos de DB2. Puedeiniciar DB2 Developer Workbench desde el Centro de control de DB2.

Conceptos relacionados

“Aplicaciones basadas en la web y WebSphere Studio Application Developer”en la página 303“Utilización de DB2 Developer Workbench para crear un procedimientoalmacenado” en la página 173

16 Introducción a DB2 para z/OS

|

|||||

|||||

|

|||||||

|||

|||||

Page 28: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Componentes de middlewareLas interfaces de programación de aplicaciones (API) de middleware y de clientecomplementan los productos del servidor de datos de DB2. Las API de middlewarey de cliente ayudan a que los productos DB2 se comuniquen y trabajenconjuntamente de una forma más eficaz.

Los componentes de middleware de IBM incluyen una amplia gama de productosWebSphere que le ayudan a conseguir el objetivo de un negocio bajo demanda. Lafamilia de productos que incluye la gama de WebSphere proporciona todo elsoftware de infraestructura necesario para crear, desplegar e integrar el negociobajo demanda. Los productos WebSphere pertenecen a las siguientes categorías:v Fundación y herramientas para el desarrollo y despliegue de aplicaciones

empresariales de alto rendimientov Portales empresariales para desarrollar portales empresariales escalables y

permitir un único punto de interacción personalizada con varios recursosempresariales

v Integración empresarial para la integración global de aplicaciones

Los productos WebSphere se ejecutan en los sistemas operativos más populares,incluidos z/OS, AIX, Linux, OS/390, i5/OS, Windows 2000, Windows NT ySolaris.

DB2 ConnectDB2 Connect mejora la información de la empresa independientemente del lugardonde está la información. DB2 Connect proporciona a las aplicaciones un accesorápido y fácil a las bases de datos existentes en servidores de empresas de IBM.Las aplicaciones pueden ser aplicaciones empresariales bajo demanda u otrasaplicaciones que se ejecutan en sistemas operativos UNIX o Windows.

DB2 Connect ofrece varias ediciones que proporcionan conectividad con el sistemaprincipal y servidores de bases de datos de i5/OS. DB2 Connect Personal Editionproporciona conectividad directa, mientras que DB2 Connect Enterprise Editionproporciona conectividad indirecta mediante el servidor de DB2 Connect.

Con DB2 Connect, puede realizar las tareas siguientes:v Ampliar el alcance de los datos empresariales proporcionando a los usuarios un

acceso rápido y seguro a los datos mediante intranets o mediante la Internetpública

v Integrar las aplicaciones empresariales principales existentes en las aplicacionesnuevas basadas en la web que se desarrollan

v Crear soluciones empresariales bajo demanda utilizando las numerosasherramientas de programación de aplicaciones que se facilitan con DB2 Connect

v Crear aplicaciones de transacción distribuidav Desarrollar aplicaciones utilizando herramientas de programación de

aplicaciones populares como, por ejemplo, Visual Studio .NET, ActiveX DataObjects (ADO), OLE DB y lenguajes populares como, por ejemplo, Java, PHP yRuby on Rails

v Gestionar y proteger los datosv Conservar la inversión actual en habilidades

Capítulo 1. Visión general de DB2 y gestión de información 17

||||

Page 29: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Los usuarios de PC portátiles y de dispositivos de informática dominantes puedenutilizar DB2 Connect para acceder a datos actualizados y de confianza desdeservidores de bases de datos de z/OS e i5/OS.

DB2 Connect proporciona el rendimiento, escalabilidad, fiabilidad y disponibilidadnecesarios para las aplicaciones más exigentes que utiliza su empresa. DB2 Connectse ejecuta en AIX, HP-UX, Linux, Solaris, Windows XP, Windows Me, Windows2000, Windows 98 y Windows NT.

WebSphere Application ServerWebSphere Application Server forma parte de la gama de Foundation & ToolsWebSphere. Este producto permite a las organizaciones pasar rápidamente de unapublicación web simple a un negocio bajo demanda seguro.

WebSphere Application Server es una plataforma basada en tecnología de serviciosweb y Java 2 Enterprise Edition (J2EE). Con WebSphere Application Server puedeaprovechar las ventajas de los siguientes servicios:v Servicios web para un desarrollo de aplicaciones más rápido.v Servicios de aplicaciones dinámicas para gestionar el entorno de negocio bajo

demanda con soporte de servicios web y J2EE 1.3 que utiliza componentesmodulares estándar para simplificar las aplicaciones empresariales.

v Soporte de herramientas integradas con WebSphere Studio ApplicationDeveloper.Conceptos relacionados

“SOA, XML y servicios web” en la página 307

WebSphere StudioWebSphere Studio forma parte de la gama de Foundation & Tools WebSphere.WebSphere Studio en realidad es una serie de herramientas que incluyen desarrollopara la web, la empresa y los dispositivos inalámbricos.

La serie de herramientas de WebSphere Studio proporciona el soporte siguiente:v Para desarrollo de aplicaciones: WebSphere Studio Application Developer

funciona con aplicaciones Java y J2EE y otras herramientas que incluyenWebSphere Studio Enterprise Developer para el desarrollo de aplicaciones web yJ2EE avanzadas.

v Para conectividad de aplicaciones: WebSphere MQ es un sistema de gestión demensajes que permite a las aplicaciones comunicarse en un entorno distribuidoentre redes y sistemas operativos diferentes.

v Para desarrollo de webs: WebSphere Studio Homepage Builder es unaherramienta de creación para desarrolladores de webs nuevos y WebSphereStudio Site Developer es para desarrolladores de webs con experiencia.Conceptos relacionados

“Aplicaciones basadas en la web y WebSphere Studio Application Developer”en la página 303

WebSphere Host IntegrationWebSphere Host Integration forma parte de la gama de Foundation & ToolsWebSphere. WebSphere Host Integration proporciona soporte para aplicacionesbasadas en la web y en entornos de sistema principal.

18 Introducción a DB2 para z/OS

Page 30: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

WebSphere Host Integration en realidad es una gama de productos que ayuda a lasorganizaciones a acceder, integrar y publicar información de sistema principal enclientes y aplicaciones basados en la web.

Soporte de base de datos federada mediante WebSphereInformation Integrator

La familia de productos de WebSphere Information Integration es la parte clave dela infraestructura de integración de información. Los componentes de losproductos incluyen un servidor de datos federado para integrar los diferentes tiposde datos.

La tecnología de integración de información proporciona acceso a diferentes tiposde datos distribuidos. Esta tecnología le permite integrar una amplia variedad dedatos, incluidos las fuentes de aplicaciones tradicionales además de XML,documentos de texto, contenido web, correo electrónico e imágenes escaneadas.

Las siguientes tecnologías clave proporcionan integración de información:v Soporte para acceder a fuentes de datos XMLv Soporte de servicios webv Tecnología de federaciónv Características adicionales como, por ejemplo, búsqueda avanzada y réplica de

datos flexible

Los sistemas de bases de datos federadas de IBM ofrecen recursos de gran utilidadpara combinar información de varias fuentes de datos. Estos recursos leproporcionan acceso de lectura y escritura a diversos datos de una amplia variedadde fuentes y sistemas operativos como si los datos fueran un único recurso. Conun sistema federado, puede:v Conservar los datos donde residen en lugar de moverlos a un único almacén de

datosv Utilizar una sola API para buscar, integrar y transformar datos como si

estuvieran en una única base de datos virtualv Enviar peticiones distribuidas a varia fuentes de datos en una sola sentencia de

SQL

Por ejemplo, puede unir datos que residen en una tabla de DB2, una tabla deOracle y un archivo codificado XML.

El producto de IBM que da soporte a la federación de datos es WebSphereInformation Integrator.

Considere la federación como una estrategia de integración cuando los requisitostécnicos del proyecto implican operaciones de búsqueda, inserción, actualización osupresión en varias fuentes relacionadas heterogéneos o en destinos con formatosdiferentes. Durante la configuración de los sistemas federados, la informaciónsobre las fuentes de datos (por ejemplo, el número y el tipo de datos de columnas,la existencia de un índice o el número de filas) es analizado por DB2 para formularrespuestas rápidas a consultas. La posibilidad de optimización de consultas de lossistemas federados puede generar automáticamente un plan óptimo basado ennumerosos factores complejos de este entorno. Este plan generado de formaautomática hace que el desarrollo de aplicaciones en un sistema federado seamucho más fácil puesto que ya no es necesario que los desarrolladores determinenlas estrategias de ejecución del programa.

Capítulo 1. Visión general de DB2 y gestión de información 19

|

Page 31: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Réplica de datos mediante WebSphere Replication ServerWebSphere Replication Server para z/OS proporciona réplica de baja latencia yalto volumen para casos de continuidad empresarial, distribución de carga detrabajo o integración empresarial.

La réplica de datos es el proceso de mantenimiento de un conjunto definido de datosen más de una ubicación. La réplica implica la copia de los cambios designados deuna ubicación (fuente) a otra ubicación (destino) y la sincronización de los datos enambas ubicaciones. La fuente y el destino pueden estar en servidores de la mismamáquina o en máquinas diferentes de la misma red.

Puede utilizar WebSphere Replication Server como ayuda para mantener eldepósito de datos y facilitar la inteligencia empresarial en tiempo real. WebSphereReplication Server proporciona la flexibilidad para distribuir, consolidar ysincronizar datos de muchas ubicaciones utilizando réplica diferencial o ETL.

WebSphere DataStageIBM WebSphere DataStage proporciona la posibilidad de realizar operaciones deextracción, transformación y carga (ETL) desde varios orígenes en varios destinos,incluyendo DB2 for z/OS.

Esta solución de ETL da soporte a recopilación, integración y transformación devolúmenes grandes de datos, con estructuras de datos que oscilan entre unacomplejidad simple y alta. WebSphere DataStage gestiona los datos que llegan entiempo real y los datos recibidos de forma periódica o planificada.

Las operaciones de ETL con WebSphere DataStage se basan en un registro y dansoporte a una amplia infraestructura de integración de datos. Puede realizartransformaciones más complejas y limpieza de datos, y puede fusionar datos deotras marcas de software de aplicaciones empresariales, incluidas SAP, Siebel yOracle.

WebSphere QualityStageIBM WebSphere QualityStage proporciona una solución de calidad de datos quepuede utilizarse para estandarizar hechos de cliente, ubicación y producto.

Puede utilizar WebSphere QualityStage para validar información de direccionesglobales y nombres internacionales y otros datos de clientes, incluyendo númerosde teléfono, direcciones de correo electrónico y comentarios descriptivos paradescubrir relaciones. WebSphere QualityStage ofrece los datos de alta calidadnecesarios para triunfar dentro de una serie de iniciativas empresariales, entre lasque se incluye inteligencia empresarial, consolidación de herencia y gestión dedatos maestros.

Interfaces de programación de aplicaciones clienteLas interfaces de programación de aplicaciones proporcionan varios métodos paraque los clientes accedan a un servidor de bases de datos de DB2.

Interfaces Java

DB2 proporciona dos interfaces de programación de aplicaciones (API) deprogramación de Java basadas en estándares para escribir programas deaplicaciones transportables que accedan a DB2:

20 Introducción a DB2 para z/OS

||||

|

|||

||||

|||||

Page 32: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

JDBC Interfaz genérica para escribir aplicaciones independientes de la plataformaque puedan acceder a cualquier base de datos de SQL.

SQLJ Otro modelo de SQL que un consorcio de los principales proveedores debases de datos ha desarrollado para complementar JDBC. ISO(International Standards Organization) define SQLJ. SQLJ es más fácil decodificar que JDBC y proporciona un mayor rendimiento, seguridad ymantenimiento de SQL estático.

Con el soporte de DB2 for z/OS para JDBC se pueden escribir aplicaciones de SQLdinámico en Java; con el soporte de SQLJ se pueden escribir aplicaciones de SQLestático en Java. Estas aplicaciones Java pueden acceder a datos locales de DB2 o adatos relacionales remotos de cualquier servidor con soporte de DRDA.

Con DB2 for z/OS se puede utilizar un procedimiento almacenado que esté escritoen Java. (La familia de DB2 Database da soporte a procedimientos almacenadosescritos en numerosos lenguajes adicionales.) Un procedimiento almacenado es unprograma de aplicación escrito por el usuario que el servidor almacena y ejecuta.Una única sentencia CALL de SQL invoca a un procedimiento almacenado. Elprocedimiento almacenado contiene sentencias de SQL que se ejecutan localmenteen el servidor. El resultado puede ser una reducción significativa de transmisionesen la red.

Se pueden desarrollar procedimientos almacenados de Java que contengan SQLestático (utilizando SQLJ) o SQL dinámico (utilizando JDBC). El usuario puededefinir los procedimientos almacenados de Java o puede utilizar las herramientasDB2 Developer Workbench y WebSphere Studio Application Developer.

ODBC

DB2 Open Database Connectivity (ODBC) es la interfaz de SQL invocable de IBMpara acceso a bases de datos relacionales. Se proporcionan funciones a losprogramas de aplicaciones para procesar sentencias de SQL dinámico. DB2 ODBCpermite a los usuarios acceder a funciones de SQL directamente a través de unainterfaz llamable. Mediante la interfaz, las aplicaciones utilizan llamadas deprocedimiento durante el tiempo de ejecución para conectarse a bases de datos,emitir sentencias de SQL y obtener datos devueltos e información de estado. Loslenguajes de programación que dan soporte a ODBC son C y C++.

Servicios web

Los servicios web son aplicaciones modulares independientes que proporcionanuna interfaz entre el proveedor y el consumidor de recursos de aplicaciones denegocio bajo demanda en Internet. Las aplicaciones cliente de servicios webpueden acceder a una base de datos de DB2.

DB2 Database Add-Ins for Visual Studio 2005

IBM DB2 Database Add-Ins for Microsoft Visual Studio 2005 es un conjunto deherramientas de administración y desarrollo de aplicaciones altamente integradasdiseñadas para DB2 Database. Los Add-Ins (accesorios) se integran en el entornode Visual Studio .NET para que los programadores de aplicaciones pueden trabajarcon facilidad dentro de su entorno de desarrollo integrado (IDE) para acceder adatos de DB2.

Las características siguientes proporcionan ventajas clave:

Capítulo 1. Visión general de DB2 y gestión de información 21

||||||||

||||||

Page 33: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Soporte para aplicaciones cliente (aplicaciones de escritorio y basadas en la web)para utilizar .NET para acceder a servidores remotos de DB2

v Una herramienta para crear procedimientos almacenados que facilita a cualquierprogramador de aplicaciones el desarrollo y la prueba de procedimientosalmacenados con DB2 for z/OS sin necesidad de tener experiencia o unconocimiento previo sobre System z10Conceptos relacionados

“Utilización de Java para ejecutar SQL estático y dinámico” en la página 165Capítulo 11, “Acceso a datos distribuidos”, en la página 309“Utilización de un programa de aplicación como un procedimientoalmacenado” en la página 168“Lenguajes de programación y métodos para desarrollar programas deaplicaciones” en la página 149“Utilización de ODBC para ejecutar SQL dinámico” en la página 164“SOA, XML y servicios web” en la página 307“DB2 Development Add-In for Visual Studio .NET” en la página 148

Estándares abiertosLos estándares abiertos proporcionan una infraestructura para negocios bajodemanda ampliamente aceptada entre la industria informática. En estándaresabiertos, los clientes y proveedores pueden escribir programas de aplicaciones quese pueden ejecutar en diferentes sistemas de bases de datos con muy poca oninguna modificación. La portabilidad de aplicaciones simplifica el desarrollo deaplicaciones y finalmente reduce los costes de desarrollo.

IBM es líder en el desarrollo de estándares industriales abiertos para sistemas debases de datos. DB2 for z/OS se ha desarrollado basado en los siguientesestándares:v Estándar SQL:2003 ANSI/ISOv Estándar técnico de The Open Group DRDA Versión 3v Especificación JDBC API 3.0, desarrollada por Java Community Process

22 Introducción a DB2 para z/OS

|||

|

Page 34: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 2. Conceptos de DB2

Muchos conceptos, estructuras y procesos están asociados a una base de datosrelacional. Los conceptos le proporcionan una comprensión básica de qué es unabase de datos relacional. Las estructuras son los componentes clave de una base dedatos de DB2 y los procesos son las interacciones que se producen cuando lasaplicaciones acceden a la base de datos.

En una base de datos relacional, se puede observar que los datos existen en una omás tablas. Cada tabla contiene un número específico de columnas y un número defilas sin ordenar. Cada columna de una tabla está relacionada de algún modo conlas otras columnas. Pensar en los datos como una colección de tablas hace que seamás fácil visualizar los datos que se almacenan en una base de datos de DB2.

Las tablas están en el núcleo de una base de datos de DB2. Sin embargo, una basede datos de DB2 implica algo más que una colección de tablas; una base de datosde DB2 también implica otros objetos como, por ejemplo, vistas e índices, ycontenedores de datos más grandes como, por ejemplo, espacios de tablas.

Lenguaje de consulta estructuradoEl lenguaje que utiliza para acceder a los datos de tablas de DB2 es el lenguaje deconsulta estructurado (SQL). SQL es un lenguaje estandarizado para definir ymanipular datos en una base de datos relacional.

El lenguaje consta de sentencias de SQL. Las sentencias de SQL le permiten llevara cabo las acciones siguientes:v Definir, modificar o descartar objetos de datos como, por ejemplo, tablas.v Recuperar, insertar, actualizar o suprimir datos en tablas.

Otras sentencias de SQL le permiten autorizar el acceso de los usuarios a recursosespecíficos como, por ejemplo, tablas o vistas.

Cuando un usuario escribe una sentencia de SQL, especifica qué desea hacer, nocómo hacerlo. Para acceder a datos, sólo necesita nombrar las tablas y columnasque contienen los datos. No es necesario que describa cómo llegar a los datos.

De acuerdo con el modelo relacional de datos:v La base de datos se percibe como un conjunto de tablas.v Las relaciones se representan mediante valores de las tablas.v Los datos se recuperan utilizando SQL para especificar una tabla de resultados que

puede proceder de una o más tablas.

DB2 transforma cada sentencia de SQL, es decir, la especificación de una tabla deresultados, en una secuencia de operaciones que optimizan la recuperación de losdatos. Esta transformación se produce cuando se prepara la sentencia de SQL. Estatransformación también se denomina vinculación.

Todas las sentencias de SQL ejecutables deben prepararse previamente parapoderse ejecutar. El resultado de la preparación es la forma operativa o ejecutable dela sentencia.

© Copyright IBM Corp. 2001, 2008 23

||

Page 35: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Como ilustra el ejemplo siguiente, SQL normalmente es intuitivo.

Ejemplo: Suponga que va a comprarse unos zapatos y desea saber qué estilos dezapatos están disponibles en el número 8. La consulta de SQL que debe escribir essimilar a la pregunta que le haría a un vendedor, ″¿Qué estilos de zapatos estándisponibles en el número 8?″ Del mismo modo que el vendedor comprueba elinventario de zapatos y regresa con una respuesta, DB2 recupera información deuna tabla (SHOES) y devuelve una tabla de resultados. La consulta sería:SELECT STYLE

FROM SHOESWHERE SIZE = 8;

Suponga que la respuesta a su pregunta es que hay disponibles dos estilos dezapatos en el número 8: mocasines y sandalias. La tabla de resultados es similar ala siguiente:STYLE=======LOAFERSSANDALS

Puede enviar una sentencia de SQL a DB2 de varias formas. Una forma esinteractivamente, entrando sentencias de SQL en un teclado. Otra forma esmediante un programa de aplicación. El programa puede contener sentencias deSQL incluidas estáticamente en la aplicación. Como alternativa, el programa puedecrear sus propias sentencias de SQL dinámicamente, por ejemplo, en respuesta a lainformación que un usuario proporciona al rellenar un formulario. En estainformación puede leer sobre estos dos métodos.

Conceptos relacionados

Capítulo 5, “SQL: lenguaje de DB2”, en la página 87Capítulo 6, “Programación de aplicaciones para DB2”, en la página 147Referencia relacionada

″DB2 for z/OS SQL Reference″

Información relacionada

″DB2 Application Programming and SQL Guide″

Visión general de pureXMLpureXML es el soporte de DB2 for z/OS para XML. pureXML permite que lasaplicaciones cliente gestionen datos XML de tablas de DB2. Puede almacenardocumentos XML con el formato correcto en su forma jerárquica y recuperar todoslos documentos o parte de ellos.

Dado que los datos XML almacenados están completamente integrados en elsistema de bases de datos de DB2, puede acceder y gestionar los datos XMLaprovechando las funciones y posibilidades de DB2.

Para gestionar eficazmente tipos de datos de SQL tradicionales y datos XML, DB2utiliza dos mecanismos de almacenamiento diferentes. Sin embargo, el mecanismode almacenamiento subyacente que se utiliza para un tipo de datos determinado estransparente para la aplicación. No es necesario que la aplicación especifiqueexplícitamente el mecanismo de almacenamiento que debe utilizarse o que gestioneel almacenamiento físico para objetos XML y no XML.

Almacenamiento de documentos XMLEl tipo de datos de columna XML se proporciona para almacenar datos

24 Introducción a DB2 para z/OS

Page 36: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

XML en tablas de DB2. La mayoría de las sentencias de SQL dan soporte altipo de datos XML. Esto le permite realizar muchas operaciones comunesde base de datos con datos XML, tales como la creación de tablas concolumnas XML, la adición de columnas XML a tablas existentes, la creaciónde índices para columnas XML, la creación de desencadenantes en tablascon columnas XML y la inserción, actualización o supresión de documentosXML.

Como alternativa se proporciona un procedimiento almacenado dedescomposición para que pueda extraer elementos de datos de undocumento XML y almacenar estos elementos de datos en columnas detablas relacionales utilizando un esquema XML que tiene anotaciones coninstrucciones sobre cómo almacenar los elementos de datos.

Recuperación de documentos XMLPuede utilizar SQL para recuperar documentos enteros de columnas XMLde forma similar a cómo se recuperan datos de cualquier otro tipo decolumna. Cuando necesita recuperar partes de documentos, puedeespecificar expresiones XPath mediante SQL con extensiones XML(SQL/XML).

Desarrollo de aplicacionesEl soporte de desarrollo de aplicaciones de XML permite a las aplicacionescombinar XML y almacenamiento y acceso a datos relacionales. Lossiguientes lenguajes de programación dan soporte al tipo de datos XML:v Assemblerv C o C++ (SQL incorporado u ODBC de DB2)v COBOLv Java (JDBC o SQLJ)v PL/I

Administración de bases de datosEl soporte de administración de bases de datos de DB2 for z/OS parapureXML incluye los elementos siguientes:

Depósito de esquemas XML (XSR)El depósito de esquemas XML (XSR) es un depósito para todos losesquemas XML necesarios para validar y procesar documentosXML almacenados en columnas XML o descompuestos en tablasrelacionales.

Soporte de programas de utilidadLos programas de utilidad de DB2 for z/OS dan soporte al tipo dedatos XML. La estructura de almacenamiento para datos e índicesXML es similar a la estructura de almacenamiento para datos eíndices LOB. Al igual que los datos LOB, los datos XML no sealmacenan en el espacio de tablas base, sino que se almacenan enespacios de tablas separados que contienen únicamente datos XML.Los espacios de tablas XML también tienen sus propios espacios deíndice. Por lo tanto, las implicaciones de la utilización deprogramas de utilidad para manipular, realizar copias de seguridady restaurar datos XML y datos LOB son similares.

RendimientoEl soporte de indexación está disponible para datos almacenados encolumnas XML. La utilización de índices para datos XML puede mejorar laeficacia de las consultas que el usuario emite para documentos XML. Uníndice XML se diferencia de un índice relacional en que un índice

Capítulo 2. Conceptos de DB2 25

||

giralte
Resaltado
giralte
Nota
Unmarked definida por giralte
Page 37: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

relacional se aplica a una columna entera mientras que un índice XML seaplica a una parte de los datos de una columna. Para indicar qué partes deuna columna XML están indexadas debe especificar un patrón XML, que esuna expresión XPath limitada.

Estructuras de datos de DB2Las estructuras de datos son los elementos necesarios para utilizar DB2. Puedeacceder y utilizar estos elementos para organizar los datos. Entre los ejemplos deestructuras de datos se incluyen tablas, espacios de tablas, índices, espacios deíndice, claves, vistas y bases de datos.

Las breves descripciones siguientes muestran cómo se organizan las estructuras enuna vista global de DB2. La figura siguiente muestra cómo las estructuras de DB2contienen otras estructuras. Hasta cierto punto, la noción de “contención”proporciona una jerarquía de estructuras.

Las estructuras de DB2 desde las más inclusivas a las menos inclusivas son lassiguientes:

Bases de datosConjunto de estructuras de DB2 que incluyen una colección de tablas, susíndices asociados y los espacios de tablas en los que residen.

Base de datos

Grupo de almacenamiento G1

Grupo de almacenamiento G2

Espacio de tabla no particionado

Espaciode tabla

particionado

Parte 2

Parte 4

Parte 3

Índice depart. Parte 1

X1Índice

X2Índice

Espaciode índice

Espaciode índice

Espaciode índice

Tabla T1 Tabla T2

TablaParte 1

Parte 2

Parte 3

Parte 4

Volumen 3

Volumen2

Volumen3

Volumen 2

Volumen 1

Volumen1

Figura 2. Jerarquía de estructuras de DB2

26 Introducción a DB2 para z/OS

Page 38: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Grupos de almacenamientoConjunto de volúmenes en discos que contienen los conjuntos de datos enlos que se almacenan realmente las tablas e índices.

Espacios de tablasConjunto de volúmenes en discos que contienen los conjuntos de datos enlos que se almacenan realmente las tablas e índices.

Tablas Todos los datos de una base de datos de DB2 se presentan en tablas, queson colecciones de filas que tienen todas las mismas columnas. Una tablaque contiene datos de usuario permanentes es una tabla base. Una tabla quealmacena datos temporalmente es una tabla temporal.

Vistas Una vista es una forma alternativa para representar datos que existen enuna o más tablas. Una vista puede incluir todas o algunas de las columnasde una o más tablas base.

ÍndicesUn índice es un conjunto ordenado de punteros hacia los datos de unatabla de DB2. El índice se almacena separadamente de la tabla.

Conceptos relacionados

“Objetos del sistema DB2” en la página 39

Tablas de DB2Las tablas son estructuras lógicas mantenidas por DB2. DB2 da soporte a diferentestipos de tablas.

Las tablas están formadas por columnas y filas. Las filas de una tabla relacional notienen un orden fijo. Sin embargo, el orden de las columnas siempre es el orden enque se han especificado al definir la tabla.

En la intersección de cada columna y fila existe un elemento de datos específicoque se denomina valor. Una columna es un conjunto de valores del mismo tipo.Una fila es una secuencia de valores en la que el valor n es el valor de la columnan de la tabla. Cada tabla debe tener una o más columnas, pero el número de filaspuede ser cero.

DB2 accede a los datos haciendo referencia a su contenido en lugar de hacerreferencia a su ubicación u organización en el almacenamiento.

DB2 da soporte a diferentes tipos de tablas:v Tablas auxiliaresv Tablas basev Tablas de clonaciónv Tablas de consultas materializadasv Tablas de resultadosv Tablas temporalesv Tablas XML

Conceptos relacionados

“Creación de tablas” en la página 177“Tipos de tablas” en la página 178

Capítulo 2. Conceptos de DB2 27

Page 39: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Índices de DB2Un índice es un conjunto ordenado de punteros hacia filas de una tabla. DB2 puedeutilizar índices para mejorar el rendimiento y asegurar la exclusividad. Lacomprensión de la estructura de los índices de DB2 puede ayudarle a obtener elmejor rendimiento para su sistema.

De modo conceptual, puede imaginar un índice de las filas de una tabla de DB2como un índice de las páginas de un libro. Cada índice se basa en los valores dedatos de una o más columnas de una tabla.

DB2 puede utilizar índices para asegurar la exclusividad y mejorar el rendimientocreando agrupaciones en clústeres de datos, particionando datos y proporcionandovías de acceso eficaces a datos en las consultas. En la mayoría de casos, el acceso alos datos es más rápido con un índice que con una exploración de los datos. Porejemplo, puede crear un índice en la columna DEPTNO de la tabla DEPT deejemplo para localizar de forma fácil un departamento específico y evitar la lecturade cada fila, o la exploración, de la tabla.

Un índice se almacena separadamente de los datos de la tabla. Cada índice sealmacena físicamente en su propio espacio de índice. Cuando se define un índiceutilizando la sentencia CREATE INDEX, DB2 crea esta estructura y la mantiene deforma automática. Sin embargo, puede realizar el mantenimiento necesario como,por ejemplo, reorganizarla o recuperar el índice.

Las finalidades principales de los índices son las siguientes:v Mejorar el rendimiento. El acceso a los datos a menudo es más rápido con un

índice que sin un índice.v Asegurar que una fila sea exclusiva. Por ejemplo, un índice exclusivo en la tabla

de empleados asegura que no existan dos empleados con el mismo número deempleado.

v Agrupar en clústeres los datos.v Determinar a qué partición se dirigen los datos.v Proporciona acceso de sólo índice a los datos.

Excepto por los cambios en el rendimiento, los usuarios de la tabla no se dancuenta de que se está utilizando un índice. DB2 decide si va a utilizar el índicepara acceder a la tabla. Algunas técnicas le permiten influir en cómo influyen losíndices en el rendimiento al calcular el tamaño de almacenamiento de un índice ydeterminar qué tipo de índice debe utilizarse.

Un índice puede ser de particionamiento o sin particionamiento, y ambos tipos sepueden agrupar en clústeres. Por ejemplo, puede repartir los datos por apellidos,posiblemente utilizando una partición para cada letra del alfabeto. La elección deun esquema de particionamiento se basa en cómo una aplicación accede a losdatos, de la cantidad de datos de que se dispone y cuánto se espera que crezca lacantidad total de datos.

Tenga en cuenta que los índices tienen tanto ventajas como desventajas. Un mayornúmero de índices puede mejorar simultáneamente el rendimiento del acceso deuna transacción determinada y necesitar proceso adicional para insertar, actualizary suprimir claves de índice. Después de crear un índice, DB2 mantiene el índice,pero puede realizar el mantenimiento necesario como, por ejemplo, sureorganización o recuperación, según convenga.

Conceptos relacionados

28 Introducción a DB2 para z/OS

|

|

|

||||||

Page 40: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

“Creación de índices” en la página 214Referencia relacionada

″CREATE INDEX″ (Consulta de DB2 SQL)

Claves de DB2Una clave es una columna o una colección ordenada de columnas que se identificaen la descripción de una tabla, un índice o una restricción de referencia. Las clavesson decisivas para una estructura de tablas en una base de datos relacional.

Las claves son importantes en una base de datos relacional debido a que aseguranque cada registro de una tabla se identifique de forma exclusiva, ayudan aestablecer e imponer integridad de referencia y establecen relaciones entre tablas.La misma columna puede formar parte de más de una clave.

Una clave compuesta es un conjunto ordenado de dos o más columnas de la mismatabla. El orden de las columnas no está restringido por su orden real dentro de latabla. El término valor, cuando se utiliza en relación a una clave compuesta, indicaun valor compuesto. Por ejemplo, considere esta regla: “El valor de la claveforánea debe ser igual al valor de la clave primaria.” Esta regla significa que cadacomponente del valor de la clave foránea debe ser igual al correspondientecomponente del valor de la clave primaria.

DB2 da soporte a varios tipos de claves.

Claves exclusivas

Una restricción exclusiva es una regla en la que los valores de una clave únicamenteson válidos si son exclusivos. Una clave restringida a tener valores exclusivos esuna clave exclusiva. DB2 utiliza un índice exclusivo para imponer la restriccióndurante la ejecución del programa de utilidad LOAD y cada vez que se utilice unasentencia INSERT, UPDATE o MERGE para añadir o modificar datos. Cada claveexclusiva es una clave de un índice exclusivo. Puede definir una clave exclusivautilizando la cláusula UNIQUE de la sentencia CREATE TABLE o ALTER TABLE.Una tabla puede tener cualquier número de claves exclusivas.

Las columnas de una clave exclusiva no pueden contener valores nulos.

Claves primarias

Una clave primaria es un tipo especial de clave exclusiva y no puede contenervalores nulos. Por ejemplo, la columna DEPTNO de la tabla DEPT es una claveprimaria.

Una tabla no puede tener más de una clave primaria. Las claves primarias sonopcionales y se pueden definir en sentencias CREATE TABLE o ALTER TABLE.

El índice exclusivo de una clave primaria se denomina índice primario. Cuando unaclave primaria se define en una sentencia CREATE TABLE o una sentencia ALTERTABLE, DB2 crea automáticamente el índice primario si se cumple una de lascondiciones siguientes:v DB2 funciona en modalidad de nueva función y el espacio de tablas se crea

implícitamente.v DB2 está funcionando y se ejecuta el procesador de esquema.

Capítulo 2. Conceptos de DB2 29

||||||||

|

||||

|

Page 41: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Si ya existe un índice exclusivo en las columnas de la clave primaria cuando sedefine en la sentencia ALTER TABLE, este índice exclusivo se designa como índiceprimario cuando DB2 funciona en modalidad de nueva función y creaimplícitamente el espacio de tablas.

Claves padre

Una clave padre es una clave primaria o una clave exclusiva de la tabla padre deuna restricción de referencia. Los valores de una clave padre determinan losvalores válidos de la clave foránea de la restricción.

Claves foráneas

Una clave foránea es una clave que se especifica en la definición de una restricciónde referencia en una sentencia CREATE o ALTER TABLE. Una clave foránea hacereferencia a una clave padre específica o está relacionada con ella.

A diferencia de otros tipos de claves, una clave foránea no necesita un índice en sucolumna o columnas subyacentes. Una tabla puede tener cero o más clavesforáneas. El valor de una clave foránea compuesta es nulo si cualquier componentedel valor es nulo.

La siguiente figura muestra la relación entre algunas columnas de la tabla DEPT yla tabla EMP.

Notas de la figura: Cada tabla tiene una clave primaria:v DEPTNO en la tabla DEPTv EMPNO en la tabla EMP

Cada tabla tiene una clave foránea que establece una relación entre las tablas:v Los valores de la clave foránea de la columna DEPT de la tabla EMP coinciden

con los valores de la columna DEPTNO de la tabla DEPT.v Los valores de la clave foránea de la columna MGRNO de la tabla DEPT

coinciden con los valores de la columna EMPNO de la tabla EMP cuando unempleado es un director.

Figura 3. Relación entre las tablas DEPT y EMP

30 Introducción a DB2 para z/OS

Page 42: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para ver una relación específica entre filas, observe cómo las filas sombreadas parael departamento C01 y el número de empleado 000030 comparten valores comunes.

Conceptos relacionados

“Integridad de entidad, integridad de referencia y restricciones de referencia”en la página 44

Vistas de DB2Una vista es una forma alternativa para representar datos que existen en una o mástablas. Una vista puede incluir todas o algunas de las columnas de una o mástablas base.

Una vista es una especificación con nombre de una tabla de resultados.Conceptualmente, una vista en cierto modo se parece a la utilización de unosanteojos. Puede mirar a través de unos anteojos para ver un paisaje entero o paraver una imagen específica dentro del paisaje como, por ejemplo, un árbol.

Puede crear una vista que:v Combina datos de varias tablas basev Se basa en otras vistas o en una combinación de vistas y tablasv Omite determinados datos, protegiendo de este modo algunos datos de la tabla

de los usuarios finales

En realidad, son motivos subyacentes comunes para utilizar una vista. Lacombinación de información de tablas base y vistas simplifica la recuperación dedatos para un usuario final y la limitación de los datos que un usuario puede veres útil para la seguridad. Puede utilizar vistas para muchos propósitos diferentes.Una vista puede:v Controlar el acceso a una tablav Facilitar la utilización de datosv Simplificar la autorización al otorgar acceso a una vista sin otorgar acceso a la

tablav Mostrar únicamente parte de los datos de la tablav Mostrar datos de resumen para una tabla determinadav Combinar dos o más tablas de formas significativasv Mostrar sólo las filas seleccionadas que corresponden al proceso que utiliza la

vista

Para definir una vista, utilice la sentencia CREATE VIEW y asigne un nombre (conun máximo de 128 caracteres de longitud) a la vista. La especificación de la vistaen otras sentencias de SQL es en efecto como ejecutar una sentencia SELECT deSQL. En cualquier momento, la vista está formada por las filas que resultan de lasentencia SELECT que contiene. Puede pensar en una vista formada por columnasy filas al igual que la tabla base en la que está definida la vista.

Ejemplo 1: La figura siguiente muestra una vista de la tabla EMP que omiteinformación confidencial sobre empleados y renombra algunas de las columnas.

Capítulo 2. Conceptos de DB2 31

Page 43: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Nota sobre la figura: La vista EMPINFO representa una tabla que incluyecolumnas denominadas EMPLOYEE, FIRSTNAME, LASTNAME, TEAM yJOBTITLE. Los datos de la vista proceden de las columnas EMPNO, FIRSTNME,LASTNAME, DEPT y JOB de la tabla EMP.

Ejemplo 2: La sentencia CREATE VIEW siguiente define la vista EMPINFO que semuestra en la figura anterior:CREATE VIEW EMPINFO (EMPLOYEE, FIRSTNAME, LASTNAME, TEAM, JOBTITLE)

AS SELECT EMPNO, FIRSTNME, LASTNAME, DEPT, JOBFROM EMP;

Cuando se define una vista, DB2 almacena la definición de la vista en el catálogode DB2. Sin embargo, DB2 no almacena datos para la misma vista puesto que losdatos ya existen en la tabla o tablas bases.

Ejemplo 3: Puede reducir el ámbito de la vista EMPINFO limitando el contenido aun subconjunto de filas y columnas que únicamente incluya los departamentos A00y C01:CREATE VIEW EMPINFO (EMPLOYEE, FIRSTNAME, LASTNAME, TEAM, JOBTITLE)

AS SELECT EMPNO, FIRSTNME, LASTNAME, DEPT, JOBWHERE DEPT = 'AOO' OR DEPT = 'C01'

FROM EMP;

En general, una vista hereda los atributos del objeto del cual deriva. Las columnasque se añaden a las tablas después de definir la vista en dichas tablas no aparecenen la vista.

Restricción: No se puede crear un índice para una vista. Además, no se puedecrear ninguna forma de clave o restricción (de referencia o de otro tipo) en unavista. Estos índices, claves o restricciones deben crearse en las tablas a las que hacereferencia la vista.

Para recuperar información o acceder a información de una vista, debe utilizarvistas del mismo modo que utiliza tablas base. Puede utilizar una sentenciaSELECT para mostrar la información de la vista. La sentencia SELECT puedenombrar otras vistas y tablas, y puede utilizar las cláusulas WHERE, GROUP BY yHAVING. No puede utilizar la cláusula ORDER BY ni nombrar una variable delenguaje principal.

El hecho de que una vista se pueda utilizar en una operación de inserción,actualización o supresión depende de su definición. Por ejemplo, si una vistaincluye una clave foránea de su tabla base, las operaciones INSERT y UPDATE queutilizan esta vista están sujetas a la misma restricción de referencia que la tabla

Figura 4. Vista de la tabla EMP

32 Introducción a DB2 para z/OS

||||

Page 44: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

base. Del mismo modo, si la tabla base de una vista es una tabla padre, lasoperaciones DELETE que utilizan esta vista están sujetas a las mismas reglas quelas operaciones DELETE en la tabla base.

Conceptos relacionados

“Creación de vistas” en la página 231Referencia relacionada

“Tabla de empleados (DSN8910.EMP)” en la página 127″CREATE VIEW″ (Consulta de DB2 SQL)

Esquemas y calificadores de esquemas de DB2Los objetos de una base de datos relacional se organizan en conjuntosdenominados esquemas. Un esquema es una colección de objetos con nombre. Laprimera parte de un nombre de esquema es el calificador.

Un esquema proporciona una clasificación lógica de objetos de la base de datos.Los objetos que un esquema puede contener incluyen tablas, índices, espacios detablas, tipos diferenciados, funciones, procedimientos almacenados ydesencadenantes. Cuando se crea un objeto, se asigna a un esquema.

Cuando se crea una tabla, un índice, un espacio de tablas, un tipo diferenciado,una función, un procedimiento almacenado o un desencadenante, se le proporcionaun nombre calificado en dos partes. La primera parte es el nombre de esquema (ocalificador), que se especifica implícita o explícitamente. El esquema por omisión esel ID de autorización del propietario del plan o paquete. La segunda parte es elnombre del objeto.

En versiones anteriores, las sentencias CREATE tenían ciertas restricciones cuandoel valor de CURRENT SCHEMA era diferente del valor de CURRENT SQLID.Aunque estas restricciones ya no existen, debe considerar cómo determinar la elcalificador y el propietario cuando CURRENT SCHEMA y CURRENT SQLIDcontienen valores diferentes. Las reglas para la determinación del propietariodependen del tipo de objeto que se crea.

CURRENT SCHEMA y CURRENT SQLID tan solo afectan a sentencias de SQLdinámico. CURRENT SCHEMA o CURRENT SQLID no afectan a sentenciasCREATE estáticas.

La tabla siguiente resume el efecto de CURRENT SCHEMA en la determinacióndel calificador de esquema y el propietario para los objetos siguientes:v Aliasv Tabla auxiliarv Tabla temporal global creadav Tablav Vista

Tabla 1. Calificador de esquema y propietario para objetos

Especificación del nombrepara un objeto nuevo que secrea

Calificador de esquema deobjeto nuevo Propietario del objeto nuevo

nombre (sin calificador) valor de CURRENTSCHEMA

Valor de CURRENT SQLID

abc.nombre (un solocalificador)

abc abc

Capítulo 2. Conceptos de DB2 33

|

|||

||||

||||||

||||||

|||

|||||||

||

||||||

||||

||||

Page 45: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 1. Calificador de esquema y propietario para objetos (continuación)

Especificación del nombrepara un objeto nuevo que secrea

Calificador de esquema deobjeto nuevo Propietario del objeto nuevo

......abc.nombre (varioscalificadores)

abc abc

La tabla siguiente resume el efecto de CURRENT SCHEMA en la determinacióndel calificador de esquema y el propietario para los objetos siguientes:v Tipo diferenciado definido por el usuariov Función definida por el usuariov Procedimientov Secuenciav Desencadenante

Tabla 2. Calificador de esquema y propietario para objetos adicionales

Especificación del nombrepara un objeto nuevo que secrea

Calificador de esquema deobjeto nuevo Propietario del objeto nuevo

nombre (sin calificador) valor de CURRENTSCHEMA

Valor de CURRENT SQLID

abc.nombre (un solocalificador)

abc Valor de CURRENT SQLID

......abc.nombre (varioscalificadores)

abc Valor de CURRENT SQLID

Espacios de tablas de DB2Un espacio de tablas de DB2 es un conjunto de volúmenes en discos que contienenlos conjuntos de datos en los que se almacenan realmente tablas. Todas las tablasse mantienen en espacios de tablas. Un espacio de tablas puede tener una o mástablas.

Un espacio de tablas puede estar formado por varios conjuntos de datos VSAM.Los conjuntos de datos son conjuntos de datos lineales (LDS) VSAM. Los espaciosde tablas se dividen en unidades de igual tamaño, llamadas páginas, que seescriben en disco o se leen desde disco en una operación. Puede especificartamaños de página (tamaños de 4 KB, 8 KB, 16 KB o 32 KB) para los datos; eltamaño de página por omisión es de 4 KB. Por regla general, debería tener comomáximo entre 10 y 20 espacios de tabla en una base de datos de DB2. Si utiliza unabase de datos de archivos de trabajo, debe crear como mínimo un espacio de tablasen la base de datos TEMP con páginas con un tamaño de 8 KB.

Los datos de la mayoría de espacios de tablas se pueden comprimir, lo que lepermite almacenar más datos en cada página de datos.

Puede definir explícitamente un espacio de tablas utilizando la sentencia CREATETABLESPACE, en la que puede especificar la base de datos a la que pertenece elespacio de tablas y el grupo de almacenamiento que utiliza.

Como alternativa, puede dejar que DB2 cree implícitamente un espacio de tablasen lugar del usuario emitiendo una sentencia CREATE TABLE que no especifique

34 Introducción a DB2 para z/OS

|

||||||

||||

|

||

|

|

|

|

|

||

||||||

||||

||||

||||

|

|

|||||||||

giralte
Resaltado
Page 46: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

un espacio de tablas existente. En este caso, DB2 asigna el espacio de tablas a labase de datos por omisión y al grupo de almacenamiento por omisión. Si DB2funciona en modalidad de conversión, se crea un espacio de tablas segmentado. Enmodalidad de nueva función, DB2 crea un espacio de tablas de partición porcrecimiento.

Cuando crea un espacio de tablas, puede especificar el tipo de espacio de tablasque crea. DB2 da soporte a diferentes tipos de espacios de tablas:

Espacios de tablas universalesProporcionan una mejor gestión del espacio (para filas de longitudvariable) y un rendimiento de supresión masiva mejorado al combinar lascaracterísticas de los esquemas de espacios de tablas particionados ysegmentados. Un espacio de tablas universal puede contener una tabla.

Espacios de tablas particionadosDividen el espacio disponible en unidades de almacenamientodenominadas particiones. Cada partición contiene un conjunto de datos deuna tabla.

Espacios de tablas segmentadosDividen el espacio disponible en grupos de páginas denominadossegmentos. Cada segmento tiene el mismo tamaño. Un segmento contienefilas de una única tabla.

Espacios de tablas de objetos grandesContienen datos de objetos grandes como, por ejemplo, gráficos, vídeo oseries de texto muy grandes. Un espacio de tablas LOB siempre estáasociado al espacio de tablas que contiene los valores de columna LOBlógicos.

Espacios de tablas simplesPueden contener más de una tabla. Las filas de tablas diferentes no semantienen por separado (a diferencia de los espacios de tablassegmentados).

Restricción: A partir de DB2 Versión 9.1 no se pueden crear espacios detablas simples. Los espacios de tablas simples creados en una versiónanterior de DB2 todavía están soportados.

Espacios de tablas XMLContienen datos XML. Un espacio de tablas XML siempre está asociado alespacio de tablas que contiene el valor de columna XML lógico.

Información relacionada

″Implementación de espacios de tablas de DB2″ (DB2 Administration Guide)

Espacios de índice de DB2Un espacio de índice es una estructura de almacenamiento de DB2 que contiene unúnico índice.

Cuando se crea un índice utilizando la sentencia CREATE INDEX, se defineautomáticamente un espacio de índice en la misma base de datos que la tabla. Elusuario puede definir un nombre exclusivo para el espacio de índice o DB2 puedeobtener un nombre exclusivo para el usuario. En algunas circunstancias, DB2 creaimplícitamente espacios de índice.

Capítulo 2. Conceptos de DB2 35

|||

|||

|||

|||

|

|

|

||

|||||

Page 47: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Grupos de almacenamiento de DB2Los grupos de almacenamiento de DB2 son un conjunto de volúmenes en discosque contienen los conjuntos de datos en los que se almacenan realmente tablas eíndices.

La descripción de un grupo de almacenamiento nombra el grupo e identifica susvolúmenes y el catálogo VSAM (virtual storage access method) que registra losconjuntos de datos. El grupo de almacenamiento por omisión, SYSDEFLT, se creacuando se instala DB2.

Dentro del grupo de almacenamiento, DB2 realiza las acciones siguientes:v Asigna almacenamiento para espacios de tablas e índicesv Define los conjuntos de datos VSAM necesariosv Amplía y suprime conjuntos de datos VSAMv Modifica conjuntos de datos VSAM

Todos los volúmenes de un grupo de almacenamiento determinado tienen elmismo tipo de dispositivo. Sin embargo, las partes de una única base de datos sepueden almacenar en diferentes grupos de almacenamiento.

DB2 puede gestionar los requisitos de almacenamiento auxiliar de una base dedatos utilizando grupos de almacenamiento de DB2. Los conjuntos de datos deestos grupos de almacenamiento de DB2 se denominan conjuntos de datosgestionados por DB2.

Estos grupos de almacenamiento de DB2 no son iguales que los grupos dealmacenamiento definidos por el subsistema de gestión de almacenamiento DFSMS(DFSMSsms).

Existen varias opciones para gestionar conjuntos de datos de DB2:v Dejar que DB2 gestione los conjuntos de datos. Esta opción significa menos

trabajo para los administradores de bases de datos de DB2.Después de definir un grupo de almacenamiento de DB2, DB2 almacenainformación sobre éste en el catálogo de DB2. (Este catálogo no es igual que elcatálogo del recurso de catálogos integrados que describe conjuntos de datosVSAM de DB2). La tabla de catálogo SYSIBM.SYSSTOGROUP tiene una fila paracada grupo de almacenamiento y SYSIBM.SYSVOLUMES tiene una fila paracada volumen. Con la autorización adecuada, puede recuperar la informacióndel catálogo sobre grupos de almacenamiento de DB2 utilizando sentencias deSQL.Al crear espacios de tablas e índices, nombra el grupo de almacenamiento delcual debe asignarse espacio. También puede asignar una base de datos completaa un grupo de almacenamiento. Intente asignar objetos accedidos con frecuencia(índices, por ejemplo) a dispositivos rápidos y asignar tablas muy pocoutilizadas a dispositivos más lentos. Este sistema para elegir grupos dealmacenamiento mejora el rendimiento.Si tiene autorización para ello y no realiza pasos específicos para gestionar elpropio almacenamiento, todavía puede definir tablas, índices, espacios de tablasy bases de datos. Se crea un grupo de almacenamiento por omisión, SYSDEFLT,cuando se instala DB2. DB2 utiliza SYSDEFLT para asignar el almacenamientoauxiliar necesario. La información sobre SYSDEFLT, como con cualquier otrogrupo de almacenamiento, se guarda en las tablas de catálogoSYSIBM.SYSSTOGROUP y SYSIBM.SYSVOLUMES.

36 Introducción a DB2 para z/OS

giralte
Resaltado
giralte
Resaltado
Page 48: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para conjuntos de datos gestionados por el usuario y gestionados por DB2necesita como mínimo un catálogo del recurso de catálogos integrados (ICF);este catálogo puede ser un catálogo del usuario o un catálogo maestro. Estoscatálogos se crean con ICF. Debe identificar el catálogo del ICF al crear un grupode almacenamiento o al crear un espacio de tablas que no utilice grupos dealmacenamiento.

v Dejar que SMS gestione algunos o todos los conjuntos de datos, al utilizargrupos de almacenamiento de DB2 o al utilizar conjuntos de datos definidos poruno mismo. Esta opción proporciona una carga de trabajo reducida para losadministradores de almacenamiento y los administradores de bases de datos deDB2. Puede especificar clases de SMS al crear o modificar un grupo dealmacenamiento.

v Definir y gestionar los propios conjuntos de datos utilizando servicios demétodo de acceso VSAM. Esta opción le permite el máximo control sobre elalmacenamiento físico de tablas e índices.

Recomendación: Utilice grupos de almacenamiento de DB2 siempre que pueda,específicamente o por omisión.

Conceptos relacionados

″Factores para determinar el tamaño de página de un espacio de tabla LOB″(DB2 Administration Guide)

Bases de datos de DB2Las bases de datos de DB2 son un conjunto de estructuras de DB2 que incluyen unacolección de tablas, sus índices asociados y los espacios de tablas en los queresiden. Para definir una base de datos utilice la sentencia CREATE DATABASE.

Cuando se crea un espacio de tablas, se asigna explícita o implícitamente a unabase de datos existente. Si crea un espacio de tablas y no especifica un nombre debase de datos, el espacio de tablas se crea en la base de datos por omisión,DSNDB04. En este caso, DB2 crea implícitamente una base de datos o utiliza unabase de datos creada implícitamente existente para la tabla. Todos los usuarios quetienen la autorización para crear espacios de tablas o tablas en la base de datosDSNDB04 tienen autorización para crear tablas y espacios de tablas en una base dedatos creada implícitamente. Si el espacio de tablas se crea implícitamente y no seespecifica la cláusula IN en la sentencia CREATE TABLE, DB2 crea implícitamentela base de datos a la que se asigna el espacio de tablas.

Una única base de datos, por ejemplo, puede contener todos los datos asociadoscon una aplicación o con un grupo de aplicaciones relacionadas. La recopilación deestos datos en una base de datos le permite iniciar o detener el acceso a todos losdatos en una operación. También puede otorgar autorización de acceso a todos losdatos como una única unidad. Si suponemos que tiene autorización para acceder alos datos, puede acceder a los datos que se almacenan en bases de datos diferentes.

Recomendación: Evite utilizar una única base de datos para un número elevado detablas. La definición de una base de datos para cada tabla mejora el rendimiento,la disponibilidad y la manejabilidad.

La figura siguiente muestra la organización de las principales estructuras de datosde DB2. Dos bases de datos, A y B, se representan en forma de cuadrados. La basede datos A contiene un espacio de tablas y dos espacios de índices. El espacio detablas está segmentado y contiene las tablas A1 y A2. Cada espacio de índicecontiene un índice, un índice en la tabla A1 y un índice en la tabla A2. La base de

Capítulo 2. Conceptos de DB2 37

||||||

||||||||||

|||

giralte
Subrayado
Page 49: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

datos B contiene un espacio de tablas y un espacio de índice. El espacio de tablasestá particionado y contiene la tabla B1, con las particiones de la 1 a la 4. Elespacio de índice contiene un índice de particionamiento, con las partes de la 1 a la4.

Cuando se migra a la versión actual, DB2 adopta la base de datos por omisión y elgrupo de almacenamiento por omisión que se ha utilizado en la versión anterior.Tiene la misma autorización para la versión actual que en la versión anterior.

Las tablas temporales globales declaradas ahora se almacenan en la base de datosWORKFILE. La base de datos TEMP ya no se utiliza.

Motivos para definir una base de datos

En DB2 para z/OS, una base de datos es una colección lógica de espacios de tablasy espacios de índices. Considere los factores siguientes cuando decida si va adefinir una nueva base de datos para un nuevo conjunto de objetos:v Puede iniciar y detener una base de datos completa como una unidad; puede

visualizar los estados de todos sus objetos utilizando un único mandato quenombre únicamente la base de datos. Por lo tanto, coloque en la misma base dedatos un conjunto de tablas que se utilicen juntas. (La misma base de datoscontiene todos los índices en dichas tablas.)

v Algunas operaciones bloquean una base de datos completa. Por ejemplo, algunasfases del programa de utilidad LOAD impiden que algunas sentencias de SQL(CREATE, ALTER y DROP) utilicen la misma base de datos simultáneamente.Por lo tanto, la colocación de muchas tablas no relacionadas en una única basede datos a menudo no resulta conveniente.Cuando un usuario ejecuta una sentencia CREATE, ALTER o DROP para unatabla, ningún otro usuario puede acceder a la base de datos que contiene dicha

Figura 5. Estructuras de datos en una base de datos de DB2

38 Introducción a DB2 para z/OS

|||

||

Page 50: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

tabla. Los usuarios de QMF, en especial, pueden llevar a cabo muchasdefiniciones de datos; las operaciones de QMF SAVE DATA y ERASE objeto-datosse realizan creando y eliminando tablas de DB2. Para conseguir la máximasimultaneidad, cree una base de datos separada para cada usuario de QMF.

v Los descriptores de base de datos internos (DBD) pueden crecer demasiado. LosDBD crecen a medida que se definen objetos nuevos, pero no se reduceninmediatamente cuando se eliminan objetos; el espacio de DBD para un objetoeliminado no se reclama hasta que se utiliza el programa de utilidad MODIFYRECOVERY para suprimir los registros de copias obsoletas deSYSIBM.SYSCOPY. Los DBD ocupan almacenamiento y son los objetos deoperaciones de entrada y salida ocasionales. Por lo tanto, la limitación deltamaño de los DBD es otro motivo para definir nuevas bases de datos.Conceptos relacionados

“Creación de bases de datos” en la página 235

Objetos del sistema DB2DB2 tiene una amplia infraestructura que le permite proporcionar integridad dedatos, rendimiento y la capacidad de recuperar datos del usuario. A diferencia delas estructuras de datos de DB2 creadas por los usuarios y a las que estos acceden,DB2 controla objetos del sistema y accede a ellos.

Además, el compartimiento de datos de Sysplex paralelo utiliza objetos del sistemacompartidos.

Conceptos relacionados

“Estructuras de datos de DB2” en la página 26

Catálogo de DB2DB2 mantiene un conjunto de tablas que contienen información sobre los datos queDB2 controla. Estas tablas se conocen colectivamente con el nombre de catálogo. Lastablas de catálogo contienen información sobre objetos de DB2 como, por ejemplotablas, vistas e índices. Cuando se crea, modifica o descarta un objeto, DB2 inserta,actualiza o suprime filas del catálogo que describen el objeto.

El catálogo de DB2 consta de tablas de datos sobre todo lo que se ha definido en elsistema DB2, incluyendo espacios de tablas, índices, tablas, copias de espacios detablas e índices, y grupos de almacenamiento. La base de datos del sistemaDSNDB06 contiene el catálogo de DB2.

Cuando se crea, modifica o descarta cualquier estructura, DB2 inserta, actualiza osuprime filas del catálogo que describen la estructura e indican cómo se relacionala estructura con otras estructuras. Por ejemplo, SYSIBM.SYSTABLES es una tablade catálogo que registra información cuando se crea una tabla. DB2 inserta una filaen SYSIBM.SYSTABLES que incluye el nombre de tabla, su propietario, su creadory el nombre de su espacio de tablas y su base de datos.

Para comprender el rol del catálogo, considere lo que sucede cuando se crea latabla EMP. DB2 registra los datos siguientes:

Información de tablaPara registrar el nombre de tabla y el nombre de su propietario, su creador,su tipo, el nombre de su espacio de tablas y el nombre de su base dedatos, DB2 inserta una fila en el catálogo.

Capítulo 2. Conceptos de DB2 39

giralte
Subrayado
giralte
Resaltado
Page 51: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Información de columnaPara registrar información sobre cada columna de la tabla, DB2 inserta elnombre de la tabla a la que pertenece la columna, su longitud, su tipo dedatos y su número de secuencia insertando una fila en el catálogo paracada columna de la tabla.

Información de autorizaciónPara registrar que el propietario de la tabla tiene autorización para crear latabla, DB2 inserta una fila en el catálogo.

Las tablas del catálogo son como cualquier otra tabla de base de datos en cuanto ala recuperación. Si dispone de autorización para ello, puede utilizar sentencias deSQL para ver datos de las tablas de catálogo del mismo modo que se recuperandatos de cualquier tabla de la base de datos de DB2. DB2 comprueba que elcatálogo contiene descripciones de objetos precisas. Si tiene autorización paraacceder a las tablas o vistas específicas del catálogo, puede aplicar SELECT alcatálogo, pero no puede utilizar sentencias INSERT, UPDATE, DELETE,TRUNCATE o MERGE en el catálogo.

La base de datos de comunicaciones (CDB) forma parte del catálogo de DB2. La CDBconsta de un conjunto de tablas que establecen conversaciones con sistemas degestión de bases de datos (DBMS) remotos. El recurso de datos distribuidos (DDF)utiliza la CDB para enviar y recibir peticiones de datos distribuidos.

Referencia relacionada

″Tablas de catálogo de DB2″ (Consulta de DB2 SQL)

Directorio de DB2El directorio de DB2 contiene información que DB2 utiliza durante la operaciónnormal.

No puede acceder al directorio utilizando SQL, aunque gran parte de la mismainformación se incluye en el catálogo de DB2, en el que puede someter consultas.Las estructuras del directorio no se describen en el catálogo de DB2.

El directorio está formado por un conjunto de tablas de DB2 que se almacenan encinco espacios de tablas de la base de datos del sistema DSNDB01. Cada uno delos espacios de tablas que se listan en la tabla siguiente están contenidos en unconjunto de datos lineal VSAM.

Tabla 3. Espacios de tablas del directorio

Nombre de espacio de tabla Descripción

SCT02Cursor de esquema (SKCT)

Contiene el formato interno de sentencias de SQLque se incluyen en una aplicación. Cuando sevincula un plan, DB2 crea una tabla de cursor deesquema en SCT02.

SPT01Paquete de esquema

Parecido a SCT02, excepto en que la tabla depaquete de esquema se crea al vincular unpaquete.

40 Introducción a DB2 para z/OS

||||||||

giralte
Resaltado
giralte
Resaltado
giralte
Nota
directorio db2 sct02 spt01 BSDS IMPORTAQNTE
Page 52: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 3. Espacios de tablas del directorio (continuación)

Nombre de espacio de tabla Descripción

SYSLGRNXRango de registro

Realiza un seguimiento de la apertura y cierre delos espacios de tablas, índices o particiones. Alrealizar un seguimiento de esta información yasociarla con direcciones de byte relativo (RBA) talcomo están contenidas en el registro de DB2, DB2puede reducir el tiempo de recuperacióndisminuyendo la cantidad de registro que debeexplorarse para un espacio de tablas, índice opartición determinados.

SYSUTILXProgramas de utilidad del sistema

Contiene una fila para cada trabajo de programade utilidad que se ejecuta. La fila permanece hastaque finaliza el programa de utilidad. Si elprograma de utilidad termina sin haber finalizado,DB2 utiliza la información de la fila al reiniciar elprograma de utilidad.

DBD01Descriptor de base de datos (DBD)

Contiene información interna, denominadadescriptores de base de datos (DBD), sobre las basesde datos que existen en el subsistema DB2.

Cada base de datos tiene exactamente un DBDcorrespondiente que describe la base de datos, losespacios de tablas, las tablas, las restricciones decomprobación de tabla, los índices y las relacionesde referencia. Un DBD también contiene otrainformación sobre el acceso a las tablas de la basede datos. DB2 crea y actualiza los DBD cada vezque se crean o actualizan las bases de datoscorrespondientes.

Registros activo y de archivadoDB2 registra todos los cambios de los datos y otros sucesos significativos en unregistro. Con este registro de cambios, DB2 puede volver a crear los cambios encaso de que se produzca una anomalía o puede retrotraer los cambios a un puntoanterior en el tiempo.

DB2 escribe cada registro del archivo de registro en un conjunto de datos de discodenominado registro activo. Cuando el registro activo está lleno, DB2 copia elcontenido del registro activo en un conjunto de datos de disco o cinta magnéticadenominado registro de archivado.

Puede elegir entre registro cronológico único y registro cronológico dual.v Un registro activo único contiene como máximo 93 conjuntos de datos de

registro activo.v Con el registro cronológico dual, el registro activo tiene el doble de capacidad

para los conjuntos de datos de registro activo debido a que se conservan doscopias idénticas de los registros del archivo de registro.

Cada subsistema DB2 gestiona varios registros activos y registros de archivado.Para cada registro activo de DB2 se cumplen los hechos siguientes:v Se puede duplicar cada registro para asegurar una alta disponibilidad.v Cada conjunto de datos de registro activo es un conjunto de datos lineal (LDS)

VSAM.

Capítulo 2. Conceptos de DB2 41

||

Page 53: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v DB2 da soporte a conjuntos de datos de registro activo separados.Conceptos relacionados

″Lectura de registros del archivo de registro″ (DB2 Administration Guide)Información relacionada

″Gestión del registro y del conjunto de datos del programa de arranque″ (DB2Administration Guide)

Conjunto de datos del programa de arranque

El conjunto de datos del programa de arranque (BSDS) es un conjunto de datos ensecuencia de clave (KSDS) de VSAM que contiene información decisiva para DB2,como por ejemplo los nombres de los registros. DB2 utiliza la información delBSDS para reinicios del sistema y para cualquier actividad que requiera lectura delregistro.

Específicamente, el BSDS contiene:v Un inventario de todos los conjuntos de datos de registro activo y de archivado

conocidos en DB2. DB2 utiliza esta información para realizar un seguimiento delos conjuntos de datos de registro activo y de archivado. DB2 también utilizaesta información para localizar registros del archivo de registro para satisfacerpeticiones de lectura de registro durante la actividad normal de DB2 y duranteel proceso de reinicio y recuperación.

v Un inventario de reinicio de toda la actividad de punto de comprobación deDB2 reciente. DB2 utiliza esta información durante el proceso de reinicio.

v El registro de comunicaciones del recurso de datos distribuidos (DDF), quecontiene la información necesaria para utilizar DB2 como un peticionario oservidor distribuido.

v Información sobre agrupaciones de almacenamientos intermedios.

Debido a que el BSDS es esencial para la recuperación en el caso de una anomalíade subsistema, DB2 crea automáticamente dos copias del BSDS y, si el espacio lopermite, las coloca en volúmenes separados.

El BSDS se puede duplicar para asegurar una alta disponibilidad.Información relacionada

″Gestión del registro y del conjunto de datos del programa de arranque″ (DB2Administration Guide)

Agrupaciones de almacenamientos intermediosLas agrupaciones de almacenamientos intermedios son áreas de almacenamiento virtualen las que DB2 almacena temporalmente páginas de espacios de tablas o índices.

Cuando un programa de aplicación accede a una fila de una tabla, DB2 recupera lapágina que contiene la fila y coloca la página en un almacenamiento intermedio. Silos datos necesarios ya están en un almacenamiento intermedio, no es necesarioque el programa de aplicación espere a que se recuperen del disco, con lo cual eltiempo y el coste de recuperación de la página se reducen significativamente.

Las agrupaciones de almacenamientos intermedios requieren supervisión y ajuste.El tamaño de las agrupaciones de almacenamientos intermedios es decisivo paralas características de rendimiento de una aplicación o un grupo de aplicaciones queaccede a los datos de dichas agrupaciones de almacenamientos intermedios.

42 Introducción a DB2 para z/OS

|||||

giralte
Resaltado
Page 54: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

DB2 le permite especificar agrupaciones de almacenamientos intermedios poromisión para datos del usuario e índices. Un tipo especial de agrupación dealmacenamientos intermedios que se utiliza únicamente en el compartimiento dedatos de Sysplex paralelo es la agrupación de almacenamientos intermedios de grupo,que reside en el recurso de acoplamiento. Las agrupaciones de almacenamientosintermedios residen en una partición lógica LPAR de PR/SM denominada recursode acoplamiento, que permite a varios subsistemas DB2 compartir información ycontrolar la coherencia de los datos.

Las agrupaciones de almacenamientos intermedios residen en el espacio dedirecciones primario DBM1 de DB2. Esta opción proporciona el mejor rendimiento.El tamaño máximo de una agrupación de almacenamientos intermedios es de 1 TB.

Base de datos de soporte de control de definición de datosLa base de datos de soporte de control de definición de datos (DDCS) hace referencia auna colección de tablas mantenidas por el usuario utilizadas por el soporte decontrol de definición de datos para limitar el sometimiento de sentencias DDL(lenguaje de definición de datos) de DB2 a identificadores de aplicacionesseleccionados (planes o colecciones de paquetes).

Esta base de datos se crea automáticamente durante la instalación. Después decrear esta base de datos, debe llenar las tablas para utilizar el recurso. El nombrede esta base de datos es DSNRGFDB.

Base de datos de recurso de límite de recursosLa base de datos de recurso de límite de recurso (DSNRLST) es un recurso que lepermite controlar la cantidad de recursos de procesador que las sentencias SELECTdinámicas utilizan.

Por ejemplo, puede elegir inhabilitar las operaciones de vinculación durantehoras críticas del día a fin de evitar contención con el catálogo de DB2.

Puede establecer un único límite para todos los usuarios, límites diferentes parausuarios individuales o ambas cosas. Puede elegir aplicar estos límites antes deejecutar la sentencia (denominado control predictivo o mientras se ejecuta unasentencia (a veces denominado control reactivo). Incluso puede utilizar ambasmodalidades de manejo. Estos límites se definen en una o más tablas de

especificación de límite de recursos (RLST).

Base de datos de archivos de trabajoUtilice la base de datos de archivos de trabajo como almacenamiento para procesarsentencias de SQL que necesitan espacio de trabajo, como el que se necesita parauna clasificación.

La base de datos de archivos de trabajo se utiliza como almacenamiento paraarchivos de trabajo de DB2 que procesan sentencias de SQL que necesitan espaciode trabajo (como el que se necesita para una clasificación) y como almacenamientopara tablas temporales globales creadas y tablas temporales globales declaradas.

DB2 crea una base de datos de archivos de trabajo y varios espacios de tablas en éldurante la instalación. Puede crear espacios de tablas de archivos de trabajo encualquier momento. Puede descartar, volver a crear y modificar la base de datos dearchivos de trabajo o los espacios de tablas de éste, o ambos, en cualquiermomento.

Capítulo 2. Conceptos de DB2 43

||||

|||||

giralte
Resaltado
Page 55: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

En un entorno sin compartimiento de datos, la base de datos de archivos detrabajo se denomina DSNDB07. En un entorno de compartimiento de datos, cadamiembro de DB2 del grupo de compartimiento de datos tiene su propia base dedatos de archivos de trabajo.

También puede utilizar la base de datos de archivos de trabajo para todas lastablas temporales.

Soporte de alta disponibilidadDebido a que DB2 proporciona soporte de alta disponibilidad, no es necesarioiniciar o detener con frecuencia DB2.

Una clave de la idea de alta disponibilidad consiste en ser capaz de obtener lacopia de seguridad del subsistema DB2 y ejecutar rápidamente después de unainterrupción no planificada.v Se puede producir algún proceso de reinicio simultáneamente con trabajo nuevo.

Además, puede optar por posponer algún proceso.v Durante un reinicio, DB2 aplica cambios en los datos desde el registro. Esta

técnica asegura que los cambios en los datos no se pierdan, incluso si no se hanescrito algunos datos durante la anomalía. Parte del proceso de aplicar cambiosdel registro se puede ejecutar en paralelo

v Puede registrar DB2 en Automatic Restart Manager de z/OS. Este recursoreinicia automáticamente DB2 si se detiene como resultado de una anomalía.Conceptos relacionados

“Copia de seguridad, recuperación y reinicio” en la página 284

Imposición de reglas empresarialesLa integridad de referencia asegura la integridad de los datos mediante laimposición de reglas con restricciones de referencia, restricciones de comprobacióny desencadenantes. Puede hacer que la base de datos funcione utilizandorestricciones y desencadenantes. Puede basarse en estos mecanismos para asegurarla integridad y validez de los datos, en lugar de basarse en aplicacionesindividuales que realizan este trabajo.

Integridad de entidad, integridad de referencia y restriccionesde referencia

DB2 asegura la integridad de referencia entre las tablas al definir restricciones dereferencia.

Integridad de referencia es el estado en que todos los valores de todas las clavesforáneas son válidos. La integridad de referencia está basada en la integridad deentidad. La integridad de entidad necesita que cada entidad tenga una claveexclusiva. Por ejemplo, si cada fila de una tabla representa relaciones para unaentidad exclusiva, la tabla debería tener una columna o un conjunto de columnasque proporcione un identificador exclusivo para las filas de la tabla. Esta columna(o conjunto de columnas) se denomina clave padre de la tabla. Para asegurar quela clave padre no contenga valores duplicados, debe definirse un índice exclusivoen la columna o columnas que forman la clave padre. La definición de la clavepadre se denomina integridad de entidad.

Una restricción de referencia es la regla de que los valores no nulos de una claveforánea sólo son válidos si también aparecen como valores de una clave padre. La

44 Introducción a DB2 para z/OS

||||

||

||||||||||

giralte
Resaltado
Page 56: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

tabla que contiene la clave padre se denomina tabla padre de la restricción dereferencia y la tabla que contiene la clave foránea es una tabla dependiente de dichatabla.

La relación entre algunas filas de las tablas DEPT y EMP, que se muestran en lasiguiente figura, ilustra los conceptos y terminología de integridad de referencia.Por ejemplo, la integridad de referencia asegura que cada valor de clave foránea dela columna DEPT de la tabla EMP coincide con un valor de clave primaria de lacolumna DEPTNO de la tabla DEPT.

Existen dos relaciones entre padre y dependiente entre las tablas DEPT y EMP.v La clave foránea de la columna DEPT establece una relación entre padre y

dependiente. La columna DEPT de la tabla EMP depende del DEPTNO de latabla DEPT. Según esta relación de clave foránea, la tabla DEPT es la tabla padrede la tabla EMP. Puede asignar un empleado a ningún departamento(especificando un valor nulo), no puede asignar un empleado a undepartamento que no exista.

v La clave foránea de la columna MGRNO también establece una relación entrepadre y dependiente. Debido a que MGRNO depende de EMPNO, EMP es latabla padre de la relación y DEPT es la tabla dependiente.

Puede definir una clave primaria en una o más columnas. Una clave primaria queincluye dos o más columnas se denomina clave compuesta. Una clave foráneatambién puede incluir una o más columnas. Cuando una clave foránea contienevarias columnas, la clave primaria correspondiente debe ser una clave compuesta.El número de columnas de clave foránea debe ser igual al número de columnas dela clave padre y los tipos de datos de las columnas correspondientes deben sercompatibles. (La tabla de actividades de proyectos de ejemplo, DSN8910.PROJACT,es un ejemplo de una tabla con una clave primaria en varias columnas PROJNO,ACTNO y ACSTDATE.)

Una tabla puede depender de sí misma; este tipo de tabla se denomina tabla deautorreferencia. Por ejemplo, la tabla DEPT es una tabla de autorreferencia debido aque el valor del departamento administrativo (ADMRDEPT) debe ser un ID de

Figura 6. Integridad de referencia de las tablas DEPT y EMP

Capítulo 2. Conceptos de DB2 45

|||||||||

Page 57: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

departamento (DEPTNO). Para imponer la restricción de autorreferencia, DB2necesita que haya definida una clave foránea.

Una terminología similar se aplica a las filas de una relación padre-hijo. Una filade una tabla dependiente, denominada fila dependiente, hace referencia a una fila deuna tabla padre, denominada fila padre. Pero una fila de una tabla padre nosiempre es una fila padre (quizás nada hace referencia a ella). De forma similar,una fila de una tabla dependiente no siempre es una fila dependiente (la claveforánea puede permitir valores nulos, que no hacen referencia a ninguna otra fila).

Las restricciones de referencia son opcionales. Las restricciones de referencia sedefinen utilizando sentencias CREATE TABLE y ALTER TABLE.

Para dar soporte a integridad de referencia, DB2 impone reglas cuando losusuarios insertan, cargan, actualizan o suprimen datos.

Otro tipo de restricción de referencia es una restricción de referencia informativa. DB2no impone este tipo de restricción durante operaciones normales. Un proceso deproceso de aplicaciones debe verificar los datos de la relación de integridad dereferencia. Una restricción de referencia informativa permite que las consultasaprovechen las ventajas de tablas de consultas materializadas.

Referencia relacionada

“Tabla de departamentos (DSN8910.DEPT)” en la página 125“Tabla de empleados (DSN8910.EMP)” en la página 127“Tabla de actividades de proyectos (DSN8910.PROJACT)” en la página 133Información relacionada

″Restricciones de referencia″ (DB2 Application Programming and SQL Guide)

Restricciones de comprobaciónUna restricción de comprobación es una regla que especifica los valores permitidos enuna o más columnas de cada fila de una tabla base.

Al igual que las restricciones de referencia, las restricciones de comprobación sonopcionales y se definen mediante las sentencias CREATE TABLE y ALTER TABLE.La definición de una restricción de comprobación limita los valores que unacolumna específica de una tabla base puede contener.

Una tabla puede contener cualquier número de restricciones de comprobación. DB2impone una restricción de comprobación aplicando la restricción a cada fila que seinserta, carga o actualiza. Una restricción es que un nombre de columna de unarestricción de comprobación de una tabla debe identificar una columna de dichatabla.

Ejemplo: Puede crear una restricción de comprobación para asegurarse de quetodos los empleados ganan un salario de 30 000 $ o más:CHECK (SALARY>= 30000)

DesencadenantesUn desencadenante define un conjunto de acciones que deben ejecutarse cuando seproduce una operación de inserción, actualización o supresión en una tablaespecificada.

46 Introducción a DB2 para z/OS

Page 58: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cuando se ejecuta una inserción, carga, actualización o supresión, se dice que eldesencadenante se activa.

Puede utilizar desencadenantes junto con restricciones de referencia y restriccionesde comprobación para imponer reglas de integridad de datos. Los desencadenantesson más eficaces que las restricciones porque se pueden utilizar para realizar lasacciones siguientes:v Actualizar otras tablasv Generar o transformar valores automáticamente para filas insertadas o

actualizadasv Invocar funciones que realizan operaciones dentro y fuera de DB2

Por ejemplo, suponga que necesita evitar que se realice una actualización en unacolumna cuando un valor nuevo exceda de una cantidad determinada. En lugar deimpedir la actualización, puede utilizar un desencadenante. El desencadenantepuede sustituir a un valor válido e invocar un procedimiento que envíe unaadvertencia a un administrador sobre la actualización no válida que se haintentado.

Para definir desencadenantes utilice la sentencia CREATE TRIGGER.

Los desencadenantes INSTEAD OF son desencadenantes que se ejecutan en lugarde la sentencia INSERT, UPDATE o DELETE que activa el desencadenante. Adiferencia de otros desencadenantes, que sólo se definen en tablas, losdesencadenantes INSTEAD OF sólo se definen en vistas. Los desencadenantesINSTEAD OF son especialmente útiles cuando es necesario que las accionesdesencadenadas para sentencias INSERT, UPDATE o DELETE en vistas seandiferentes de las acciones para sentencias SELECT. Por ejemplo, se puede utilizarun desencadenante INSTEAD OF para facilitar una actualización mediante unaconsulta de unión o para codificar o descodificar datos de una vista.

Conceptos relacionados

“Creación de desencadenantes” en la página 241

Procesos de aplicaciones y transaccionesUn proceso de aplicaciones implica la ejecución de uno o más programas. Procesosde aplicaciones diferentes pueden implicar la ejecución de programas diferentes ola ejecución del mismo programa en distintos momentos. Cuando una aplicacióninteractúa con una base de datos de DB2, se inicia una transacción.

Numerosos tipos programas diferentes acceden a datos de DB2 data: aplicacionesescritas por el usuario, sentencias de SQL que los usuarios entran dinámicamente eincluso programas de utilidad. El único término que describe cualquier tipo deacceso a datos de DB2 se denomina proceso de aplicaciones. Todos los programas deSQL se ejecutan como parte de un proceso de aplicaciones.

Una transacción es una secuencia de acciones entre la aplicación y la base de datos;la secuencia se inicia cuando se leen datos de la base de datos o se escriben datosen ella. Una transacción también se denomina unidad de trabajo.

Ejemplo: Considere lo que sucede cuando accede al capital de una cuentabancaria. Una transacción bancaria puede implicar la transferencia de capital deuna cuenta a otra. Durante la transacción, un programa de aplicación primero restael capital de la primera cuenta y, a continuación, lo añade el capital a la segunda

Capítulo 2. Conceptos de DB2 47

|||||||||

Page 59: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

cuenta. Después del paso de resta, los datos son incoherentes. La coherencia serestablece después de añadir el capital a la segunda cuenta.

Para asegurar la coherencia de los datos, DB2 utiliza varias técnicas que incluyenuna operación de confirmación, una operación de retrotracción y bloqueos.

Cuando los pasos de resta y adición de la transacción bancaria se han completado,la aplicación puede utilizar la operación de confirmación para finalizar latransacción y, de este modo, los cambios pasan a estar disponibles para otrosprocesos de aplicaciones. La operación de confirmación hace que los cambiosrealizados en la base de datos sean permanentes.

Considere lo que sucede si más de un proceso de aplicaciones solicita acceder a losmismos datos al mismo tiempo. O, en determinadas circunstancias, una sentenciade SQL puede ejecutarse simultáneamente con un programa de utilidad en elmismo espacio de tablas. DB2 utiliza bloqueos para mantener la integridad de losdatos en estas condiciones para evitar, por ejemplo, que dos procesos deaplicaciones actualicen la misma fila de datos simultáneamente.

DB2 adquiere bloqueos para evitar que los cambios sin confirmar realizados por unproceso de aplicaciones pueda percibirlo otro proceso de aplicaciones. DB2 liberaautomáticamente todos los bloqueos que ha adquirido en nombre de un proceso deaplicaciones cuando el proceso finaliza, pero un proceso de aplicaciones tambiénpuede solicitar explícitamente que los bloqueos se liberen antes. Una operación deconfirmación libera los bloqueos que un proceso de aplicaciones ha adquirido yconfirma los cambios realizados en la base de datos por el mismo proceso.

DB2 también proporciona un modo para restituir los cambios sin confirmar querealiza un proceso de aplicaciones. Puede ser necesaria una restitución en el casode una anomalía en la parte de un proceso de aplicaciones o en una situación depunto muerto. Un punto muerto se produce cuando la contención por la utilizaciónde un recurso como, por ejemplo, una tabla, no se puede resolver. Sin embargo, unproceso de aplicaciones puede solicitar explícitamente que se restituyan loscambios que ha realizado en la base de datos. Esta operación se denominaretrotracción. La interfaz que un programa de SQL utiliza para especificarexplícitamente estas operaciones de confirmación y de retrotracción depende delentorno. Por ejemplo, en el entorno JDBC las aplicaciones utilizan métodos deconfirmación y retrotracción para confirmar o retrotraer transacciones.

Conceptos relacionados

Capítulo 6, “Programación de aplicaciones para DB2”, en la página 147

Paquetes y planes de aplicacionesUn paquete contiene estructuras de control que DB2 utiliza cuando ejecutasentencias de SQL. Un plan de aplicación relaciona un proceso de aplicaciones conuna instancia local de DB2 y especifica opciones de proceso.

Los paquetes se producen durante la preparación de un programa. Puede imaginarlas estructuras de control como formularios vinculados o de operación desentencias de SQL. Todas las estructuras de control de un paquete derivan de lassentencias de SQL incorporadas en un único programa fuente.

Un plan de aplicación contiene uno o ambos elementos siguientes:v Una lista de nombres de paquetesv El formulario vinculado de sentencias de SQL

48 Introducción a DB2 para z/OS

giralte
Resaltado
Page 60: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La mayoría de aplicaciones de DB2 necesitan un plan de aplicación. Los paqueteshacen que los programas de aplicaciones sean más flexibles y fáciles de mantener.Por ejemplo, si utiliza paquetes, no necesita volver vincular el plan completo alcambiar una sentencia de SQL.

Ejemplo: La figura siguiente muestra un plan de aplicación que contiene dospaquetes. Suponga que decide cambiar la sentencia SELECT del paquete AA paraseleccionar datos de una tabla diferente. En este caso, tan solo debe volver avincular el paquete AA y no el paquete AB.

En general, los planes y paquetes se crean utilizando los mandatos BIND PLAN yBIND PACKAGE de DB2.

Un paquete desencadenante es un tipo especial de paquete que se crea al ejecutar unasentencia CREATE TRIGGER. Un paquete desencadenante sólo se ejecuta cuandose activa el desencadenante con el que está asociado.

Los paquetes para aplicaciones JDBC, SQLJ y ODBC tienen propósitos diferentessobre los que puede leer más adelante en esta información.

Conceptos relacionados

Capítulo 6, “Programación de aplicaciones para DB2”, en la página 147“Proceso de preparación para un programa de aplicación” en la página 150

RutinasUna rutina es un objeto de SQL ejecutable. Los dos tipos de rutinas son funciones yprocedimientos.

FuncionesUna función es una rutina que se puede invocar desde otras sentencias de SQL yque devuelve un valor.

Para definir funciones utilice la sentencia CREATE FUNCTION. Puede clasificar lasfunciones como funciones incorporadas, funciones definidas por el usuario ofunciones de conversión generadas para tipos diferenciados. Las funciones también

Figura 7. Plan de aplicación y paquetes

Capítulo 2. Conceptos de DB2 49

|||

Page 61: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

se pueden clasificar como funciones de totales, escalares o de tabla, dependiendo dlos valores de los datos de entada y los valores resultantes.

Una función de tabla sólo se puede utilizar en la cláusula FROM de una sentencia.Las funciones de tabla devuelven columnas de una tabla y son similares a unatabla creada mediante una sentencia CREATE TABLE. Las funciones de tabla sepueden calificar con un nombre de esquema.

Conceptos relacionados

“Creación de funciones definidas por el usuario” en la página 241Referencia relacionada

″Funciones″ (Consulta de DB2 SQL)

Procedimientos

Un procedimiento, también denominado procedimiento almacenado, es una rutinaque se puede llamar para realizar operaciones que pueden incluir sentencias deSQL.

Los procedimientos se clasifican como procedimientos de SQL o procedimientosexternos. Los procedimientos de SQL sólo contienen sentencias de SQL. Losprocedimientos externos hacen referencia a un programa de lenguaje principal quepuede o no contener sentencias de SQL.

DB2 for z/OS da soporte a los dos tipos de procedimientos de SQL siguientes:

Procedimientos de SQL externosLos procedimientos de SQL externos son procedimientos cuyo cuerpo estáescrito en SQL. DB2 da soporte a este tipo de procedimientos generandoun programa C asociado para cada procedimiento. Todos losprocedimientos de SQL creados antes de la Versión 9.1 son procedimientosde SQL externos. A partir de la Versión 9.1, se puede crear unprocedimiento de SQL externo especificando FENCED o EXTERNAL en lasentencia CREATE PROCEDURE.

Procedimientos de SQL nativosLos procedimientos de SQL nativos son procedimientos cuyo cuerpo estáescrito en SQL. Para procedimientos de SQL nativos, DB2 no genera unprograma C asociado. A partir de la Versión 9.1, todos los procedimientosde SQL creados sin las opciones FENCED o EXTERNAL en la sentenciaCREATE PROCEDURE son procedimientos de SQL nativos. Se puedencrear procedimientos de SQL nativos en un paso. Las sentencias de SQLnativos dan soporte a más funciones y generalmente proporcionan unmejor rendimiento que las sentencias de SQL externas.

Las sentencias de control de SQL están soportadas en procedimientos de SQL. Lassentencias de control son sentencias de SQL que permiten utilizar SQL de unaforma similar a la escritura de un programa en un lenguaje de programaciónestructurado. Las sentencias de control de SQL proporcionan la posibilidad decontrolar el flujo lógico, declaran y establecen variables, y manejan avisos yexcepciones. Algunas sentencias de control de SQL incluyen otras sentencias deSQL anidadas.

Los procedimientos de SQL proporcionan las mismas ventajas que losprocedimientos de un lenguaje principal. Es decir, una parte de un código debeescribirse y mantenerse una sola vez y puede llamarse desde varios programas.

50 Introducción a DB2 para z/OS

||

||||

|||

|

|||||||

Page 62: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Los procedimientos de SQL proporcionan ventajas adicionales cuando contienensentencias de SQL. En este caso, los procedimientos de SQL pueden reducir oeliminar retrasos en la red asociados con la comunicación entre el cliente y elservidor, y entre cada sentencia de SQL. Los procedimientos de SQL puedenmejorar la seguridad al permitir que el usuario invoque un único procedimiento enlugar de ejecutar el SQL que el procedimiento contiene.

Para definir procedimientos utilice la sentencia CREATE PROCEDURE.Conceptos relacionados

“Utilización de un programa de aplicación como un procedimientoalmacenado” en la página 168

Datos distribuidosLos datos distribuidos son datos que residen en un DBMS que no es el sistema local.

El DBMS local es el sistema en el que se vincula el plan de aplicación. Los demásDBMS son remotos.

Muchas empresas necesitan gestionar datos de varios orígenes y ubicaciones. Unentorno distribuido proporciona la flexibilidad necesaria para asignar recursos paradatos ubicados en diferentes sitios o sistemas de gestión de bases de datos (DBMS)de una red de sistemas.

Conceptos relacionados

Capítulo 11, “Acceso a datos distribuidos”, en la página 309

Servidores remotosUn servidor remoto puede ser físicamente remoto o puede formar parte del mismosistema operativo bajo el cual se ejecuta el DBMS local.

Cuando un usuario solicita servicios remotos de un DBMS remoto, el DBMSremoto es un servidor y el sistema local es un peticionario o cliente.Conceptualmente, un servidor es como un camarero que recoge los pedidos decomida, entrega la comida y proporciona otros servicios a los clientes. El cliente escomo la persona que realiza el pedido. La finalidad del servidor consiste enproporcionar servicios a sus clientes.

Un servidor remoto puede ser realmente remoto en el sentido físico (situado amiles de quilómetros) o puede formar parte del mismo sistema operativo bajo elcual se ejecuta el DBMS local. En esta información generalmente se supone que elDBMS local es una instancia de DB2 for z/OS. Un servidor remoto puede ser otrainstancia de DB2 for z/OS o una instancia de uno de muchos otros productos.

La figura siguiente muestra el entorno cliente/servidor.

Capítulo 2. Conceptos de DB2 51

||||||

Page 63: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

ConectividadLa conectividad en el entorno de cliente/servidor permite la comunicación entreaplicaciones y sistemas de bases de datos en sistemas operativos diferentes.

La conectividad en el entorno de cliente/servidor necesita una arquitectura quepueda manejar los requisitos de rendimiento más rigurosos de un sistema basadoen transacciones y la flexibilidad de un sistema de soporte de decisiones utilizandoODBC o JDBC. El método primario que DB2 utiliza para proporcionar conectividada cualquier número de DBMS es Distributed Relational Database Architecture(DRDA), basado en el estándar técnico de Open Group. DRDA es una arquitecturapublicada abierta que permite la comunicación entre aplicaciones y sistemas debases de datos en sistemas operativos diferentes.

Mediante la utilización de protocolos de comunicación estándar, DB2 puedevincular y volver a vincular paquetes en otros servidores y ejecutar las sentenciasen estos paquetes. Los protocolos de comunicación son reglas para gestionar elflujo de datos a través de una red de sistemas del mismo modo que los semáforosy las reglas de tráfico gestionan el flujo de tráfico de coches. Estos protocolos noson visibles para aplicaciones de DB2. Por ejemplo, un sistema que utiliza DRDA,puede invocar procedimientos almacenados de DB2 o solicitar que las sentenciasde SQL se ejecuten en cualquier servidor que cumpla el estándar DRDA.

En un entorno distribuido, las aplicaciones pueden conectarse con varias bases dedatos en servidores diferentes y pueden completar transacciones, incluyendooperaciones de confirmación y retrotracción, al mismo tiempo. Este tipo deconectividad se conoce como unidad de trabajo distribuida.

Figura 8. Entorno de proceso cliente/servidor

52 Introducción a DB2 para z/OS

Page 64: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 3. Arquitectura de DB2 para z/OS

z/OS es la siguiente generación del sistema operativo OS/390. Los sistemas z/OSand the IBM System z10, System z9 109 y zSeries 990, 900 y 800 ofrecen unaarquitectura que proporciona cualidades de servicio decisivos para e-business.

z/Architecture y el sistema operativo z/OSz/OS, que es un sistema operativo muy seguro, escalable y abierto, proporcionaalto rendimiento que da soporte a un entorno de ejecución de aplicacionesdiversas. La gran integración que DB2 tiene con la arquitectura System z y elentorno z/OS crea una sinergia que permite aprovechar a DB2 la funcionesavanzadas de z/OS.

z/OS, el sistema operativo para el hardware de IBM System z, es la próximageneración del sistema operativo z/OS. El sistema operativo z/OS está basado enz/Architecture de 64 bits. La gran capacidad de z/OS potencia las característicasmás avanzadas de la tecnología de IBM System z10 y IBM System z9 y de losservidores de IBM eServer zSeries 990 (z990), 900 (z900), 890 (z890) y 800 (z800), locual permite al usuario gestionar cargas de trabajo empresariales incalculables.

DB2 obtiene un gran beneficio de z/Architecture. La arquitectura de DB2 for z/OSse beneficia de la ventaja clave de z/Architecture: soporte de direccionamientovirtual de 64 bits. Con z/Architecture de 64 bits, DB2 obtiene una ventajainmediata en el rendimiento.

DB2 se beneficia de las siguientes características de z/Architecture:v Almacenamiento de 64 bits: el aumento de capacidad de memoria central de 2

GB a 64 GB elimina la mayoría de restricciones de almacenamiento. Unalmacenamiento de 64 bits significa 16 exabytes de espacio de direccionesvirtuales, un paso muy grande en la evolución constante del aumento delalmacenamiento virtual. Además de mejorar el rendimiento de DB2, elalmacenamiento de 64 bits mejora la disponibilidad y la escalabilidad, ysimplifica la gestión del almacenamiento.

v Comunicación de alta velocidad: HiperSockets permiten una comunicaciónTCP/IP de alta velocidad entre particiones del mismo servidor zSeries como, porejemplo, entre Linux para zSeries y DB2 for z/OS.

v Gestión dinámica de cargas de trabajo: el gestor de almacenamiento de laarquitectura de z/OS, Intelligent Resource Director (IRD), amplía lasposibilidades de Workload Manager (WLM) al gestionar los recursos de formadinámica basándose en prioridades de carga de trabajo.

v Mejoras del procesador: el procesador de System z10 más reciente para DB2 esSystem z10 Integrated Information Processor (zIIP). zIIP está diseñado paramejorar la optimización de recursos y reducir el coste de las cargas de trabajoelegibles.

Además de las ventajas de z/Architecture, DB2 se beneficia de muchas otrascaracterísticas del sistema operativo z/OS:v Alta seguridad: zSeries, z/OS y sus predecesores han proporcionado una

seguridad eficaz durante décadas. Las características de seguridad ofrecenprivacidad a usuarios, aplicaciones y datos, y estas características protegen la

© Copyright IBM Corp. 2001, 2008 53

||||||

||||

|||

giralte
Resaltado
giralte
Resaltado
giralte
Resaltado
Page 65: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

integridad y el aislamiento de los procesos en ejecución. Las funciones deseguridad actuales han evolucionado para incluir una amplia seguridad pararedes y transacciones que funciona con muchos otros sistemas. Las mejoras enz/OS Security Server proporcionan opciones de seguridad mejoradas como, porejemplo, seguridad de varios niveles. El entorno System z9 ofrece funcionescriptográficas muy seguras y proporciona un rendimiento mejorado de SSL(Secure Sockets Layer).

v Tecnologías de software abierto: z/OS da soporte a las tecnologías de softwareabierto más recientes que incluyen Enterprise JavaBeans, XML y Unicode.

v Tecnología de clúster: z/OS Sysplex paralelo proporciona tecnología de clústerque alcanza una disponibilidad de 24 horas al día, 7 días a la semana. Latecnología de clúster también proporciona la posibilidad de crecimientohorizontal. El crecimiento horizontal resuelve los problemas de sobrecarga en elrendimiento y los problemas de gestión del sistema que suelen producirsecuando se combinan varias máquinas para acceder a la misma base de datos.Con el crecimiento horizontal se consigue una mayor escalabilidad; el sistemapuede crecer más allá de los límites de una única máquina mientras que la basede datos permanece intacta.

v Procesadores más rápidos: con unos procesadores más rápidos y eficaces como,por ejemplo, System z10 Integrated Information Processor (zIIP), DB2 consigueniveles más altos de paralelismo de consultas y niveles más altos de rendimientoen transacciones. zIIP está diseñado para mejorar la optimización de recursos yreducir el coste de las cargas de trabajo elegibles mediante la mejora del rol delsistema principal como concentrador de datos de la empresa.

v Tecnología de E/S mejorada: IBM Enterprise Storage Server (ESS) aprovecha lascaracterísticas de Parallel Access Volume y Multiple Allegiance de z/OS y dasoporte a un máximo de 256 E/S por volumen de disco lógico. Un único sistemaprincipal z/OS puede emitir E/S en paralelo al mismo volumen lógico y variossistemas principales pueden emitir E/S a un volumen compartido en paralelo. Elentorno System z10 da soporte al recurso Modified Indirect Data Address Word(MIDAW), que está diseñado para mejorar la utilización de canales y elrendimiento, y que potencialmente reduce los tiempos de respuesta de E/S.

v Canales FICON: estos canales proporcionan beneficios de rendimientosignificativos para cargas de trabajo de transacciones. Las características deFICON como, por ejemplo, una velocidad de transferencia de datos rápida (4 GBpor segundo), también tienen como resultado exploraciones de tablas másrápidas y una mejora en el rendimiento de los programas de utilidad.

v Compresión de hardware mejorada: una compresión de hardware mejoradatiene un efecto positivo en el rendimiento. Por ejemplo, los programas deutilidad que ejecutan datos comprimidos se ejecutan con mayor rapidez.

DB2 en el entorno z/OSDB2 opera como un subsistema formal de z/OS y funciona de forma eficaz conotros subsistemas y componentes de z/OS.

DB2 funciona como un subsistema formal de z/OS. Un subsistema es un sistemasecundario o subordinado que por lo general es capaz de funcionarindependientemente, o de forma asíncrona con, un sistema de control. Unsubsistema de DB2 es una instancia diferenciada de un DBMS relacional. Susoftware controla la creación, organización y modificación de una base de datos yel acceso a los datos almacenados en la base de datos.

54 Introducción a DB2 para z/OS

|||||||

||||||

||||||||

|||||

Page 66: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Los procesos de z/OS se separan en regiones que se denominan espacios dedirecciones. Los procesos de DB2 for z/OS se ejecutan en diferentes direcciones,como se indica a continuación.

Servicios de bases de datosssnmDBM1 manipula la mayoría de estructuras en las bases de datoscreadas por el usuario. Las áreas de almacenamiento tales comoagrupaciones de almacenamientos intermedios residen por encima de labarra de 2 GB del espacio de direcciones ssnmDBM1. Con undireccionamiento virtual de 64 bits para acceder a estas áreas dealmacenamiento, las agrupaciones de almacenamientos intermedios puedenampliarse a tamaños sumamente grandes.

Servicios del sistemassnmMSTR realiza varias funciones relacionadas con el sistema.

Recurso de datos distribuidosssnmDIST proporciona soporte para peticiones remotas.

IRLM (gestor de bloqueo de recursos interno)IRLMPROC controla el bloqueo de DB2.

Establecidos por WLMCero para muchos espacios de direcciones para procedimientosalmacenados y funciones definidas por el usuario. Los espacios dedirecciones establecidos por WLM se manejan en orden de prioridad y seseparan de otros procedimientos almacenados o funciones definidas por elusuario que se ejecutan en otros espacios de direcciones.

Espacios de direcciones del usuarioComo mínimo uno, posiblemente varios, de los siguientes tipos de espaciosde direcciones del usuario:v TSOv Por lotesv CICSv Región dependiente de IMSv Región de control de IMSv WebSphere

DB2 funciona de forma eficaz con otros subsistemas y componentes de z/OS como,por ejemplo, z/OS Security Server y el entorno Sysplex paralelo zSeries.

Los programas de utilidad de DB2 se ejecutan en el entorno de proceso por lotes ode procedimiento almacenado de z/OS. Las aplicaciones que acceden a recursos deDB2 pueden ejecutarse en el mismo sistema z/OS en los entornos CICS, IMS, TSO,WebSphere, de procedimiento almacenado o de proceso por lotes, o en otrossistemas operativos. Estas aplicaciones pueden acceder a recursos de DB2utilizando los servicios de cliente/servidor del recurso de datos distribuidos (DDF)de DB2. IBM proporciona recursos de conexión para conectar DB2 a cada uno deestos entornos.

Conceptos relacionados

“DB2 y z/OS Security Server” en la página 56“DB2 en un entorno Sysplex paralelo” en la página 63“Recursos de conexión de DB2” en la página 57“Recurso de datos distribuidos” en la página 62

Capítulo 3. Arquitectura de DB2 para z/OS 55

|||||||

|

||||||||

giralte
Resaltado
Page 67: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Gestor de bloqueos de recursos interno de DB2El gestor de bloqueos de recursos interno (IRLM) de DB2, que es un subsistemaindividual y un componente integral de DB2, trabaja con DB2 para controlar elacceso a los datos.

IRLM se proporciona con DB2 y cada subsistema DB2 debe tener su propiainstancia de IRLM. No se puede compartir un IRLM entre subsistemas DB2 o entresubsistemas DB2 e IMS. (IRLM también se proporciona con IMS.) Si ejecuta ungrupo de compartimiento de datos de DB2, un grupo de IRLM corresponde adicho grupo de compartimiento de datos.

IRLM trabaja con DB2 para serializar el acceso a los datos. DB2 solicita bloqueosdesde IRLM para asegurar la integridad de los datos cuando aplicaciones,programas de utilidad y mandatos intentan acceder a los mismos datos.

Recomendación: Ejecute siempre con el último nivel de IRLM.

IRLM requiere control y supervisión. Las interfaces externas con IRLM incluyen:

InstalaciónInstale IRLM cuando instale DB2. Considere que los bloqueos ocupanalmacenamiento y un almacenamiento adecuado para IRLM es decisivopara el rendimiento del sistema.

Otro elemento importante para el rendimiento es hacer que el espacio dedirecciones de IRLM tenga prioridad sobre todos los espacios dedirecciones de DB2.

MandatosAlgunos mandatos de z/OS específicos de IRLM le permiten modificarparámetros, visualizar información sobre el estado de IRLM y la utilizaciónde su almacenamiento, además de iniciar y detener IRLM.

RastreoEl recurso de rastreo de DB2 le permite realizar un rastreo de lasinteracciones de bloqueo.

Puede utilizar opciones IRLMPROC y mandatos de rastreo de z/OS paracontrolar los rastreos de diagnóstico para IRLM. Normalmente estosrastreos se utilizan bajo la dirección del Servicio de soporte de software deIBM.

Conceptos relacionados

“Rendimiento mejorado mediante la utilización de bloqueos” en la página 256

DB2 y z/OS Security Serverz/OS Security Server evita accesos no autorizados al sistema y puede protegerrecursos de DB2 como, por ejemplo, tablas. A veces z/OS Security Server sedenomina como RACF, que es uno de sus componentes clave.

Para controlar el acceso al sistema z/OS puede utilizar el componente ResourceAccess Control Facility (RACF) de z/OS Security Server o un productoequivalente. Cuando los usuarios inician una sesión, z/OS Security Servercomprueba sus identidades para evitar un acceso no autorizado al sistema. z/OSSecurity Server proporciona una protección eficaz para datos de DB2 al permitirúnicamente un acceso gestionado por DB2 a conjuntos de datos de DB2.

56 Introducción a DB2 para z/OS

giralte
Resaltado
IRLM (GESTOR DE BLOQUEOS)
Page 68: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Mediante z/OS Security Server puede controlar directamente la mayoría deautorizaciones a objetos de DB2, definir autorizaciones o utilizar seguridad devarios niveles.

Recomendación: Utilice z/OS Security Server para comprobar la identidad de losusuarios de DB2 y proteger los recursos de DB2.

Conceptos relacionados

“Mecanismos de autorización y seguridad para el acceso a datos” en la página273Información relacionada

″Seguridad y auditoría″ (DB2 Administration Guide)

DB2 y DFSMSSMS (Storage Management Subsystem) DFSMSdfp se puede utilizar para gestionarconjuntos de datos de disco de DB2.

La finalidad de DFSMS es automatizar lo máximo posible la gestión delalmacenamiento físico centralizando el control, automatizando las tareas yproporcionando controles interactivos para los administradores del sistema. DFSMSpuede reducir las necesidades de los usuarios en relación con los detalles físicosdel rendimiento, espacio y gestión de dispositivos.

Consulte con el administrador de almacenamiento del sitio sobre cómo utilizarDFSMS para datos privados, copias de imágenes y registros de archivado de DB2.Los datos que son especialmente sensibles al rendimiento pueden necesitar máscontrol manual durante la situación del conjunto de datos.

Los espacios de tablas o índices con conjuntos de datos de más de 4 GB necesitanconjuntos de datos gestionados por DFSMS.

Los conjuntos de datos particionados ampliados (PDSE), una característica deDFSMSdfp, son útiles para gestionar procedimientos almacenados que se ejecutanen un espacio de direcciones de procedimientos almacenados. PDSE permiteinformación de extensión para actualizar dinámicamente las bibliotecas de carga,reducir la necesidad de iniciar y detener el espacio de direcciones deprocedimientos almacenados.

Información relacionada

DFSMS Implementing System Managed Storage

Recursos de conexión de DB2Un recurso de conexión proporciona la interfaz entre DB2 y otro entorno. Tambiénpuede iniciar sesiones de DB2 desde otros entornos en clientes como, por ejemplo,Windows o UNIX utilizando interfaces que incluyan ODBC, JDBC y SQLJ.

La figura siguiente muestra los recursos de conexión de z/OS con interfaces conDB2.

Capítulo 3. Arquitectura de DB2 para z/OS 57

Page 69: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Los entornos z/OS incluyen:v WebSpherev CICS (Customer Information Control System)v IMS (Information Management System)v TSO (Time Sharing Option)v Por lotes

Los recursos de conexión de z/OS incluyen:v CICSv IMSv TSOv CAF (recurso de conexión de llamada)v RRS (Resource Recovery Services)

Los recursos de conexión funcionan en los distintos entornos tal como se describe acontinuación:v Los productos WebSphere que están integrados con DB2 incluyen WebSphere

Application Server, WebSphere Studio y Transaction Servers & Tools. En elentorno WebSphere, puede utilizar el recurso de conexión RRS.

v CICS es un servidor de aplicaciones que proporciona gestión de transacciones enlínea para aplicaciones. En el entorno CICS, puede utilizar el recurso deconexión CICS para acceder a DB2.

v IMS es un sistema informático de bases de datos. IMS incluye el gestor de basesde datos jerárquico de IMS, el gestor de transacciones de IMS y productosmiddleware de base de datos que proporcionan acceso a bases de datos ytransacciones de IMS. En el entorno IMS, puede utilizar el recurso de conexiónIMS para acceder a DB2.

v TSO proporciona la posibilidad de compartimiento de tiempo interactivo desdeterminales remotos. En los entornos TSO y de proceso por lotes, puede utilizarlos recursos de conexión TSO, CAF (recurso de conexión de llamada) y RRS(Resource Recovery Services) para acceder a DB2.

v Los entornos de procedimientos almacenados están gestionados por elcomponente Workload Manager de z/OS. En un entorno de procedimientosalmacenados, puede utilizar el recurso de conexión RRS.

Recurso de conexión de CICSCustomer Information Control System (CICS) Transaction Server proporciona elrecurso de conexión de CICS, que le permite acceder a DB2 desde CICS.

Figura 9. Recursos de conexión con interfaces con DB2

58 Introducción a DB2 para z/OS

|

|||

Page 70: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Las operaciones de CICS, la programación de aplicaciones, la administración delsistema y las operaciones de organizaciones pueden utilizar el recurso de conexiónde CICS.

Operaciones de CICS

Después de iniciar DB2, puede utilizar DB2 desde un terminal CICS. Puedeiniciar y detener CICS y DB2 de forma independiente y puede establecer oterminar la conexión entre ellos en cualquier momento. También puedepermitir que CICS se conecte a DB2 de manera automática.

CICS Transaction Server también proporciona aplicaciones CICS con accesoa datos de DB2 mientras se opera en el entorno CICS. Por lo tanto,cualquier aplicación CICS puede acceder tanto a datos de DB2 como adatos de CICS. En el caso de una anomalía del sistema, CICS coordina larecuperación de los datos de DB2 y de los datos de CICS.

El recurso de conexión de CICS utiliza servicios de nivel de mandatos deCICS cuando es necesario.

Ejemplos::EXEC CICS WAIT EXEC CICS ABEND

Una parte del recurso de conexión de CICS se ejecuta bajo el control de latransacción mediante la emisión de peticiones de SQL. Por lo tanto, estasllamadas de servicios CICS parece que las emita la transacción deaplicaciones.

Con la planificación adecuada, se puede incluir DB2 en un caso derecuperación de XRF de CICS.

Programación de aplicaciones

Los programadores de aplicaciones que escriben programas de nivel demandatos de CICS pueden utilizar las mismas técnicas de codificación decomunicación de datos para escribir las partes de comunicación de datosde los programas de aplicaciones que acceden a datos de DB2. Tan solocambia la parte de base de datos de la programación. Para las partes debase de datos, los programadores utilizan sentencias de SQL pararecuperar o modificar datos de tablas de DB2.

Para un usuario de terminal CICS, los programas de aplicaciones queacceden a datos de CICS y de DB2 parecen idénticos a los programas deaplicaciones que únicamente acceden a datos de CICS.

DB2 da soporte a esta programación entre productos mediante lacoordinación de los recursos de recuperación con los de CICS. Por lo tanto,las aplicaciones CICS pueden acceder tanto a recursos controlados porCICS como a bases de datos de DB2.

El suministro de funciones de peticiones de SQL no está soportado. En unentorno de operación en varias regiones (MRO) de CICS, cada espacio dedirecciones de CICS puede tener su propia conexión al subsistema DB2.Sólo puede estar conectada una única región de CICS a un únicosubsistema DB2 a la vez.

Administración del sistema y operaciones

Capítulo 3. Arquitectura de DB2 para z/OS 59

Page 71: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Un operador de terminal CICS autorizado puede emitir mandatos de DB2para controlar y supervisar el recurso de conexión y DB2. Los operadoresde terminal autorizados también pueden iniciar y detener bases de datosde DB2.

Aunque ejecute funciones de DB2 a través de CICS, necesita tener elrecurso de conexión de TSO e ISPF para aprovechar las funciones en líneaque se proporcionan con DB2 para instalar y personalizar el sistema.También necesita la conexión de TSO para vincular paquetes y planes deaplicaciones.

Recurso de conexión de IMSEl recurso de conexión de IMS le permite acceder a DB2 desde IMS.

El recurso de conexión de IMS recibe e interpreta peticiones para acceder a basesde datos de DB2 utilizando rutinas de salida que forman parte de subsistemas deIMS. Una rutina de salida es un programa que se ejecuta como una extensión deDB2 cuando recibe el control desde DB2 para realizar funciones específicas.Normalmente, IMS se conecta a DB2 automáticamente sin la intervención deningún operador.

Además de llamadas de Data Language I (DL/I) (Lenguaje de datos I) y de FastPath (Vía de acceso rápida), las aplicaciones de IMS pueden realizar llamadas aDB2 utilizando sentencias de SQL incorporadas. En el caso de una anomalía delsistema, IMS coordina la recuperación de los datos de DB2 y de los datos de IMS.

Con la planificación adecuada, se puede incluir DB2 en un caso de recuperación deXRF (Extended Recovery Facility) de IMS.

Con el recurso de conexión de IMS, DB2 proporciona servicios de base de datospara regiones dependientes de IMS. El soporte de proceso por lotes DL/I permiteque cualquier usuario autorizado acceda a datos de IMS y a datos de DB2 delentorno de proceso por lotes de IMS.

La programación de aplicaciones, la administración del sistema y las operacionesde organizaciones pueden utilizar el recurso de conexión de CICS.

Programación de aplicaciones

Con el recurso de conexión de IMS, DB2 proporciona servicios de base dedatos para regiones dependientes de IMS. El soporte de proceso por lotesDL/I permite a los usuarios acceder a datos (DL/I) de IMS y a datos deDB2 del entorno de proceso por lotes de IMS, que incluye:v Acceso a DB2 y datos DL/I desde programas de aplicaciones.v Recuperación coordinada mediante un proceso de confirmación en dos

fases.v Utilización de llamadas de reinicio ampliado (XRST) de IMS y de punto

de comprobación simbólico (CHKP) por parte de programas deaplicaciones para coordinar la recuperación con IMS, DB2 y archivos demétodo de acceso secuencial generalizado (GSAM).

Los programadores de IMS que escriben la parte de comunicación de datosde los programas de aplicaciones no necesitan modificar su técnica decodificación para escribir la parte de comunicación de datos al acceder aDB2; tan solo cambian las partes de base de datos de los programas deaplicaciones. Para las partes de base de datos, los programadores codificansentencias de SQL para recuperar o modificar datos de tablas de DB2.

60 Introducción a DB2 para z/OS

Page 72: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para un usuario de terminal de IMS, los programas de aplicaciones de IMSque acceden a DB2 aparecen idénticos que en IMS.

DB2 proporciona soporte a esta programación entre productos coordinandoservicios de recuperación de base de datos con los de IMS. Cualquierprograma de IMS utiliza las mismas llamadas de sincronización yretrotracción en programas de aplicaciones que acceden a datos de DB2que utilizan en programas de aplicaciones de IMS que acceden a datosDL/I.

Otra ayuda para programación entre productos es el programa bajolicencia DataPropagator de IMS, que permite actualizaciones automáticasen tablas de DB2 cuando se actualiza información correspondiente de unabase de datos de IMS. Este producto también permite actualizacionesautomáticas en una base de datos de IMS cuando se actualiza una tabla deDB2.

Administración del sistema y operaciones

Un operador de terminal de IMS autorizado puede emitir mandatos deDB2 para controlar y supervisar DB2. El operador de terminal tambiénpuede iniciar y detener bases de datos de DB2.

Aunque ejecute funciones de DB2 mediante IMS, necesita el recurso deconexión de TSO e ISPF para beneficiarse de las funciones en líneaproporcionados con DB2 para instalar y personalizar el sistema. Tambiénnecesita el recurso de conexión de TSO para vincular paquetes y planes deaplicaciones.

Recurso de conexión de TSOPuede vincular planes y paquetes de aplicaciones y ejecutar varias funciones enlínea de DB2 mediante el recurso de conexión de TSO. TSO también permite a losusuarios o trabajos autorizados de DB2 crear, modificar y mantener bases de datosy programas de aplicaciones

Con el recurso de conexión de TSO puede acceder a DB2 ejecutando en primerplano o por lotes. Puede acceder en primer plano mediante un terminal TSO;puede acceder por lotes invocando el programa de supervisor de terminal (TMP)de TSO desde un trabajo lotes.

La mayoría de aplicaciones de TSO deben utilizar el recurso de conexión de TSO,el cual invoca el procesador de mandatos de DSN. Hay disponibles dosprocesadores de mandatos:

Procesador de mandatos de DSNProporciona un método alternativo para ejecutar programas que acceden aDB2 en un entorno TSO. Este procesador se ejecuta como un procesador demandatos de TSO y utiliza el recurso de conexión de TSO.

DB2 Interactive (DB2I)Consiste en paneles de Interactive System Productivity Facility (ISPF). ISPFdispone de una conexión interactiva con DB2, que invoca el procesador demandatos de DSN. Mediante paneles de DB2I, puede ejecutar programasde utilidad, mandatos y sentencias de SQL.

Tanto si accede a DB2 en primer plano o por lotes, la conexión mediante el recursode TSO y el procesador de mandatos de DSN hace que el acceso sea más fácil.

Capítulo 3. Arquitectura de DB2 para z/OS 61

Page 73: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

DSN y TSO juntos proporcionan servicios tales como conexión automática a DB2,soporte de tecla de atención y conversión de códigos de retorno en mensajes deerror.

Cuando se utilizan servicios de DSN, la aplicación debe ejecutarse bajo el controlde DSN. Invoque el procesador de mandatos de DSN desde primer planoemitiendo un mandato en un terminal TSO. Desde un proceso por lotes, invoqueprimero TMP desde un trabajo por lotes y, a continuación, pase mandatos a TMPen el conjunto de datos SYSTSIN.

Cuando DSN está en ejecución, puede emitir mandatos de DB2 o submandatos deDSN. Sin embargo, no puede emitir un mandato START DB2 desde DSN. Si DB2no está ejecución, DSN no puede establecer una conexión. Se requiere unaconexión para que DSN pueda transferir mandatos a DB2 para procesarlos.

Recurso de conexión de llamadaEl recurso de conexión de llamada (CAF) proporciona una conexión alternativa paraTSO y aplicaciones por lotes que necesitan un control estricto sobre el entorno desesión.

Las aplicaciones que utilizan CAF pueden controlar explícitamente el estado de susconexiones en DB2 utilizando funciones de conexión que CAF proporciona.

Recurso de conexión de RRS (Resource Recovery Services)La característica RRS de z/OS coordina el proceso de confirmación de recursosrecuperables en un sistema z/OS.DB2 da soporte a la utilización de estos serviciospara aplicaciones de DB2 que utilizan el recurso de conexión de RRS (RRSAF) queDB2 proporciona.

La implementación de z/OS Resource Recovery Services (RRS) se basa en la mismatecnología que CAF pero ofrece posibilidades adicionales. Utilice el recurso deconexión de RRS para acceder a recursos tales como tablas de SQL, bases de datosde DL/I, mensajes de MQSeries y archivos VSAM (Virtual Storage Access Method)dentro de un único ámbito de transacción. Los programas que se ejecutan por lotesy con TSO pueden utilizar RRSAF. Puede utilizar RRS con procedimientosalmacenados y en un entorno WebSphere.

La conexión de RRS es necesaria para procedimientos almacenados que se ejecutanen un espacio de direcciones establecido por WLM.

Recurso de datos distribuidosEl recurso de datos distribuidos (DDF) permite que las aplicaciones cliente que seejecutan en un entorno que da soporte a DRDA puedan acceder a datos deservidores de DB2. Además, una aplicación de DB2 puede acceder a datos de otrosservidores de DB2 y de sistemas de bases de datos relacionales remotos consoporte de DRDA.

DDF soporta los protocolos de red TCP/IP y Systems Network Architecture (SNA).DDF permite que el servidor de DB2 actúe como pasarela para clientes yservidores remotos. Un servidor de DB2 puede reenviar peticiones en nombre declientes remotos a otros servidores remotos independientemente de si los datossolicitados están en el servidor de DB2.

62 Introducción a DB2 para z/OS

|||||||

Page 74: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Con DDF, puede tener un máximo de 150 000 hebras distribuidas conectadas a unúnico servidor de DB2 al mismo tiempo. Una hebra es una estructura de DB2 quedescribe la conexión de una aplicación y realiza un rastreo de su progreso.

DDF utiliza métodos para transmitir tablas de resultados de consultas queminimizan el tráfico de la red cuando se accede a datos distribuidos. Tambiénpuede utilizar procedimientos almacenados para reducir los costes de procesador ytiempo transcurrido del acceso distribuido. Un procedimiento almacenado es unprograma de SQL escrito por el usuario que un peticionario puede invocar en elservidor. Cuando se encapsulan sentencias de SQL en un único mensaje en elservidor de DB2, circulan muchos menos mensajes por el cable.

Las aplicaciones locales de DB2 también pueden utilizar procedimientosalmacenados para aprovechar la capacidad de encapsular sentencias de SQL que secomparten entre diferentes aplicaciones.

Además de optimizar el tráfico de mensajes, DDF le permite transmitir mayorescantidades de datos de forma eficaz utilizando el ancho de banda completo de lared.

Ejemplo: Suponga que una empresa necesita satisfacer peticiones de clientes encientos de ubicaciones y los representantes de la empresa que responden a estaspeticiones trabajan en ubicaciones que abarcan una amplia área geográfica. Puededocumentar las peticiones en estaciones de trabajo que disponen de DB2 ConnectPersonal Edition. Esta información se sube a DB2 para z/OS. A continuación, losrepresentantes pueden utilizar aplicaciones de Java para acceder a la informaciónde peticiones de cliente de DB2 desde sus oficinas locales.

El entorno distribuido de la empresa se basa en el entorno de datos distribuidos(DDF), que forma parte de DB2 UDB para z/OS. Las aplicaciones de DB2 puedenutilizar DDF para acceder a datos de otros sitios de DB2 y a sistemas de bases dedatos relacionales remotos que soporten Distributed Relational Database Architecture(DRDA). DRDA es un estándar para conectividad distribuida. Todos los servidoresde IBM DB2 soportan el estándar DRDA.

DDF también permite que las aplicaciones se ejecuten en un entorno remoto quesoporte DRDA. Estas aplicaciones pueden utilizar DDF para acceder a los datos deservidores de DB2. Entre los ejemplos de peticionarios de aplicaciones se incluyenIBM DB2 Connect y otros productos cliente compatibles con DRDA.

La decisión de acceder a datos distribuidos tiene implicaciones para muchasactividades de DB2: programación de aplicaciones, recuperación de datos yautorización, entre otras.

Conceptos relacionados

Capítulo 11, “Acceso a datos distribuidos”, en la página 309Información relacionada

″Programación para DRDA″ (DB2 for z/OS Reference for Remote DRDARequesters and Servers)

DB2 en un entorno Sysplex paraleloParallel Sysplex es un ejemplo clave de la sinergia de DB2 y los entornos IBMSystem z10,IBM System z9 y zSeries.

Capítulo 3. Arquitectura de DB2 para z/OS 63

|||

Page 75: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

DB2 se beneficia del entorno Sysplex paralelo con sus posibilidades superiores deproceso. Cuando tiene dos más procesadores que comparten los mismos datos,puede:v Maximizar el rendimiento a la vez que minimiza el costev Mejorar la disponibilidad y simultaneidad del sistemav Configurar el entorno del sistema para que sea más flexiblev Hacer crecer el sistema de modo incremental

Con compartimiento de datos, las aplicaciones que se ejecutan en más de unsubsistema DB2 pueden leer desde y escribir en el mismo conjunto de datossimultáneamente. Esta posibilidad le permite acceder a datos de DB2 de formacontinuada, incluso cuando se está actualizando un nodo con software nuevo.

Los subsistemas DB2 que comparten datos deben pertenecer a un DB2 grupo decompartimiento de datos. Un grupo de compartimiento de datos es una colección deuno o más subsistemas DB2 que acceden a datos compartidos de DB2. Cadasubsistema DB2 que pertenece a un grupo de compartimiento de datosdeterminado es un miembro de este grupo. Todos los miembros de un grupoutilizan el mismo catálogo compartido de DB2. La figura siguiente muestra unejemplo de un grupo de compartimiento de datos con tres miembros.

Con un grupo de compartimiento de datos, el número de hebras que se puedenconectar a un servidor de DB2 se multiplica por el número de subsistemas delgrupo. Por ejemplo, un grupo de compartimiento de datos de ocho miembrospuede tener alrededor de un millón de hebras simultáneas conectadas a unservidor de DB2.

Con compartimiento de datos, puede hacer crecer el sistema de forma incrementalañadiendo complejos centrales de procesadores y subsistemas DB2 adicionales algrupo de compartimiento de datos. No es necesario mover parte de la carga detrabajo a otro sistema, disminuyendo la necesidad de gestionar copias de los datoso de utilizar proceso distribuido para acceder a los datos.

Puede configurar su entorno de manera flexible. Por ejemplo, puede adaptar cadaimagen de z/OS para que cumpla los requisitos para el usuario establecido en esaimagen. Para un proceso que tiene lugar durante periodos de carga de trabajo enhoras punta, puede activar un DB2 latente para ayudar a procesar el trabajo.

Conceptos relacionados

Figura 10. Grupo de compartimiento de datos de DB2

64 Introducción a DB2 para z/OS

|||

Page 76: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 12, “Compartimiento de datos con los datos de DB2”, en la página 321Información relacionada

″Compartimiento de datos″ (DB2 Data Sharing: Planning and Administration)

Capítulo 3. Arquitectura de DB2 para z/OS 65

Page 77: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 4. Objetos de DB2 y sus relaciones

La creación de modelos de datos lógicos y la creación de modelos de datos físicosson dos tareas que debe llevar a cabo para diseñar una base de daos de DB2.

Al diseñar cualquier tipo de base de datos, necesita responder a numerosaspreguntas. Lo mismo sucede al diseñar una base de datos de DB2. ¿Cómo va aorganizar los datos? ¿Cómo va a crear relaciones entre tablas? ¿Cómo deberíadefinir las columnas de las tablas? ¿Qué tipo de espacio de tablas debería utilizar?

Para diseñar una base de datos se realizan dos tareas generales. La primera tareaes la creación de modelos de datos lógicos y la segunda tarea es la creación demodelos de datos físicos. En la creación de modelos de datos lógicos, se diseña unmodelo de datos sin prestar atención a las funciones y posibilidades específicas delDBMS que almacenará los datos. En realidad, incluso podría crear un modelo dedatos lógicos sin saber qué DBMS va a utilizar. A continuación, viene la tarea decreación de modelos de datos físicos. Aquí ya se acerca más a una implementaciónfísica. La finalidad básica de la etapa de diseño físico es optimizar el rendimiento ala vez que se asegura la integridad de los datos.

Esta información empieza con una introducción a la tarea de creación de modelosde datos lógicos. El tema sobre la creación de modelos de datos lógicos se centraen el modelo de entidad-relación y proporciona una visión general del UML(Unified Modeling Language) y de IBM Rational Data Architect. La informaciónfinaliza con la tarea de diseño físico de la base de datos.

Una vez completado el diseño lógico y físico de la base de datos, se implementa eldiseño.

Conceptos relacionados

Capítulo 7, “Implementación del diseño de base de datos”, en la página 177

Diseño lógico de bases de datos utilizando creación de modelos derelación de entidad

Antes de implementar una base de datos, debe planificarla o diseñarla para quecumpla todos los requisitos. Esta primera tarea de diseñar una base de datos sedenomina diseño lógico.

Conceptos relacionados

“Diseño lógico de bases de datos con Unified Modeling Language (Lenguaje decreación de modelos unificados)” en la página 80“Diseño físico de base de datos” en la página 82

Creación de modelos de datosLa creación de modelos de datos lógicos es el proceso de documentación sobre losrequisitos de información empresarial completos en un formato preciso ycoherente.

Para el diseño y la implementación de una base de datos satisfactoria, quesatisfaga las necesidades de una organización, se requiere un modelo de datoslógicos. Los analistas que crean modelos de datos definen los elementos de datos ylas reglas empresariales que afectan a dichos elementos de datos. El proceso de

© Copyright IBM Corp. 2001, 2008 67

|||||

Page 78: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

creación de modelos de datos considera que los datos empresariales son unaventaja vital que es necesario que la organización comprenda y gestione conatención. Este tema contiene información adaptada de la publicación Handbook ofRelational Database Design.

Considere los siguientes hechos empresariales que una empresa de fabricaciónnecesita representar en su modelo de datos:v Los clientes compran productos.v Los productos constan de componentes.v Los proveedores fabrican componentes.v Los almacenes almacenan componentes.v Los vehículos de transporte transportan los componentes desde los proveedores

a los almacenes y, a continuación, a los fabricantes.

Todos ellos son hechos empresariales que un modelo de datos lógico de unaempresa de fabricación debe incluir. Muchas personas dentro y fuera de la empresacuentan con la información basada en estos hechos. Muchos informes incluyendatos sobre estos hechos.

Cualquier negocio, no únicamente las empresas de fabricación, se puede beneficiarde la tarea de creación de un modelo de datos. Los sistemas de bases de datos queproporcionan información a las personas que toman decisiones, los clientes, losproveedores y otros son más satisfactorios si se basan en un modelo de datosadecuado.

Visión general del proceso de creación de modelos de datos

Quizás se pregunte cómo se crean los modelos de datos. Los analistas de datospueden realizar la tarea de creación de modelos de varias formas. (En este procesose supone que un analista de datos realiza los pasos, pero algunas empresasasignan esta tarea a otras personas de la organización.) Muchos analistas de datossiguen estos pasos:1. Crean vistas de usuario críticas.

Los analistas empiezan la creación de un modelo de datos examinando conatención una única actividad o función empresarial. Desarrollan una vista deusuario, que es el modelo o representación de información crítica necesaria parala actividad empresarial. (En una etapa posterior, el analista combina cada vistade usuario individual con todas las otras vistas de usuario para formar unmodelo de datos lógico consolidado.) Esta etapa inicial del proceso de creaciónde modelos de datos es sumamente interactivo. Debido a que los analistas nopueden comprender por completo todas las áreas de la empresa para la querealizan el modelo, trabajan estrechamente con los usuarios reales. El hecho detrabajar juntos permite a los analistas y usuarios definir las principales entidades(objetos significativos de interés) y determinar las relaciones generales entreestas entidades.

2. Añaden reglas empresariales a vistas de usuario.

A continuación, los analistas añaden elementos de información detallada clavey las reglas empresariales más importantes. Las reglas empresariales claveafectan a las operaciones de inserción, actualización y supresión realizadas enlos datos.

Ejemplo 1: Una regla empresarial requiere que cada entidad de cliente tengacomo mínimo un identificador exclusivo. Cualquier intento de insertar o

68 Introducción a DB2 para z/OS

|

Page 79: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

actualizar un identificador de cliente que coincida con otro identificador decliente no será válido. En un modelo de datos, un identificador exclusivo recibeel nombre de clave primaria.

3. Añaden detalles a las vistas de usuario y las valida.

Después de que los analistas han trabajo junto con los usuarios para definir lasentidades y relaciones clave, añaden otros detalles descriptivos menos vitales.También asocian estos detalles descriptivos, llamados atributos, con lasentidades.

Ejemplo 2: Una entidad de cliente probablemente tiene un número de teléfonoasociado. El número de teléfono es un atributo no clave de la entidad decliente.Los analistas también validan todas las vistas de usuario que han desarrollado.Para validar las vistas, los analistas utilizan el proceso de normalización ymodelos de proceso. Los modelos de proceso documentan los detalles sobre cómola empresa utilizará los datos. Puede leer más sobre los modelos de proceso ylos modelos de datos en otras publicaciones sobre dichos temas.

4. Determinan reglas empresariales adicionales que afectan a los atributos.

A continuación, los analistas clarifican las reglas empresariales dirigidas a losdatos. Las reglas empresariales dirigidas a los datos son restricciones en valores dedatos determinados. Estas restricciones deben cumplirse, independientementede los requisitos de proceso particulares. Los analistas definen estasrestricciones durante la etapa de diseño de datos en lugar de durante el diseñode aplicaciones. La ventaja de definir reglas empresariales dirigidas a los datoses que los programadores de numerosas aplicaciones no necesitan escribircódigo para imponer estas reglas empresariales.

Ejemplo 3: Suponga que una regla empresarial necesita que una entidad decliente disponga de un número de teléfono o una dirección, o ambas cosas. Siesta regla no se aplica a los mismos datos, los programadores deben desarrollar,probar y mantener aplicaciones que verifiquen la existencia de uno de estosatributos.Los requisitos empresariales dirigidos a los datos mantienen una relacióndirecta con los datos, evitando de este modo un trabajo adicional a losprogramadores.

5. Integran vistas de usuario.

En esta última etapa de la creación de modelos de datos, los analistas combinanlas distintas vistas de usuario que han creado para formar un modelo de datoslógico consolidado. Si ya existen otros modelos de datos en la organización, losanalistas integran el nuevo modelo de datos en el existente. En esta etapa, losanalistas también se esfuerzan para hacer que el modelo de datos sea flexiblede modo que pueda soportar el entorno empresarial actual y los posiblescambios futuros.

Ejemplo 4: Suponga que una empresa minorista trabaja en un único país y quedicha empresa planea añadir una ampliación a otros países. Con elconocimiento de estos planes, los analistas pueden crear el modelo para que seasuficientemente flexible para soportar la expansión a otros países.

Recomendaciones para la creación de modelos de datos lógicos

Para crear modelos de datos adecuados, los analistas siguen un método bienplanificado, que incluye:v Trabajar interactivamente con los usuarios lo máximo posible.

Capítulo 4. Objetos de DB2 y sus relaciones 69

Page 80: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v La utilización de diagramas para representar la mayor parte posible del modelode datos lógico.

v La creación de un diccionario de datos como complemento de los diagramas demodelos de datos lógicos. (Un diccionario de datos es un depósito deinformación sobre los programas de aplicaciones, bases de datos, modelos dedatos lógicos, usuarios y autorizaciones de una organización. Un diccionario dedatos puede ser manual o automatizado.)

Creación de modelos de datos: ejemplos prácticos

Para llevar a cabo la tarea de creación de modelos de datos empiece definiendo lasentidades, los objetos significativos de interés. Las entidades son las cosas sobre lasque desea almacenar información. Por ejemplo, puede que desee definir unaentidad para los empleados denominada EMPLOYEE ya que necesita almacenarinformación sobre todos los que trabajan para su organización. También puededefinir una entidad, denominada DEPARTMENT, para los departamentos.

A continuación, define las claves primarias para las entidades. Una clave primariaes un identificador exclusivo para una entidad. En el caso de la entidadEMPLOYEE, probablemente necesita almacenar mucha información. Sin embargo,gran parte de esta información (como, por ejemplo, sexo, fecha de nacimiento,dirección y fecha de contratación) no sería una opción correcta para la claveprimaria. En este caso, podría elegir un ID o número de empleado exclusivo(EMPLOYEE_NUMBER) como clave primaria. En el caso de la entidadDEPARTMENT, utilizaría un número de departamento exclusivo(DEPARTMENT_NUMBER) como clave primaria.

Después de decidir sobre las entidades y sus claves primarias, puede definir lasrelaciones que existen entre las entidades. Las relaciones se basan en las clavesprimarias. Si tiene una entidad para EMPLOYEE y otra entidad paraDEPARTMENT, la relación que existe es que se asignan empleados adepartamentos.

Después de definir las entidades, sus claves primarias y sus relaciones, puededefinir atributos adicionales para las entidades. En el caso de la entidadEMPLOYEE, puede definir los siguientes atributos adicionales:v Fecha de nacimientov Fecha de contrataciónv Dirección particularv Número de teléfono de la oficinav Sexov Currículum

Puede leer más sobre la definición de atributos más adelante en esta información.

Por último, se normalizan los datos.Conceptos relacionados

“Claves de DB2” en la página 29“Integridad de entidad, integridad de referencia y restricciones de referencia”en la página 44“Normalización para evitar redundancias” en la página 75“Entidades para diferentes tipos de relaciones” en la página 71

70 Introducción a DB2 para z/OS

Page 81: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Entidades para diferentes tipos de relacionesEn una base de datos relacional, deben definirse entidades separadas paradiferentes tipos de relaciones.

En una base de datos relacional, puede expresar varios tipos de relaciones.Considere las posibles relaciones entre empleados y departamentos. Un empleadodeterminado puede trabajar en un único departamento; esta relación es de uno conuno para empleados. Normalmente un departamento tiene muchos empleados; estarelación es de uno con varios para departamentos. Las relaciones pueden ser de unocon varios, de varios con uno, de uno con uno o de varios con varios.

El tipo de una relación determinada puede variar según el entorno específico. Silos empleados de una empresa pertenecen a varios departamentos, la relación entreempleados y departamentos es de varios con varios.

Debe definir entidades separadas para diferentes tipos de relaciones. Cuando secrean modelos de relaciones, puede utilizar convenios de diagramas para describirlas relaciones utilizando distintos estilos de líneas para conectar las entidades.

Relaciones de uno con unoEn un diseño de base de datos, las relaciones de uno con uno son relacionesbidireccionales, lo que significa que tienen un único valor en ambas direcciones.

Por ejemplo, un empleado tiene un único currículum; cada currículum perteneceúnicamente a una persona. La figura siguiente muestra que existe una relación deuno con uno entre las dos entidades. En este caso, la relación refleja las reglas enlas que un empleado sólo puede tener un currículum y que un currículum puedepertenecer a únicamente un empleado.

Relaciones de uno con varios y de varios con unoEn un diseño de base de datos, una relación de uno con uno se produce cuandouna entidad tiene una relación de varios valores con otra entidad.

En la figura siguiente, puede ver que existe una relación de uno con varios entrelas dos entidades: empleado y departamento. Esta figura refuerza las reglasempresariales en las que un departamento puede tener varios empleados, perocada empleado individual sólo puede trabajar para un departamento.

Figura 11. Asignación de hechos de uno con uno a una entidad

Figura 12. Asignación de hechos de varios con uno a una entidad

Capítulo 4. Objetos de DB2 y sus relaciones 71

Page 82: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Relaciones de varios con variosEn un diseño de base de datos, una relación de varios con varios es una relaciónque tiene varios valores en ambas direcciones.

La siguiente figura ilustra este tipo de relación. Un empleado puede trabajar enmás de un proyecto y un proyecto puede tener asignado más de un empleado.

Si observa las tablas de ejemplo de esta información, encontrará las respuestas a lassiguientes preguntas:v ¿En qué trabaja Wing Lee?v ¿Quién trabaja en el número de proyecto OP2012?

Ambas preguntas tienen varias respuestas. Wing Lee trabaja en los números deproyecto OP2011 y OP2012. Los empleados que trabajan en el número de proyectoOP2012 son Ramlal Mehta y Wing Lee.

Referencia relacionada

“Tablas de ejemplo de DB2” en la página 124

Aplicación de reglas empresariales a relacionesTanto si una relación determinada es de uno con uno, de uno con varios, de varioscon uno o de varios con varios, es necesario que las relaciones tengan sentidoempresarialmente.

Los diseñadores de bases de datos y los analistas de datos pueden ser más eficacescuando tienen una buena comprensión de la empresa. Si comprenden los datos, lasaplicaciones y las reglas empresariales, pueden tener éxito al producir un diseño debase de datos acertado.

Al definir las relaciones, se influye mucho en la ejecución de la empresa sinproblemas. Si no se realiza un buen trabajo en esta tarea, la base de datos y lasaplicaciones asociadas pueden tener muchos problemas, algunos de los cualespueden no manifestarse durante años.

Atributos para entidadesCuando se definen atributos para las entidades, normalmente se trabaja con eladministrador de datos para decidir los nombres, los tipos de datos y los valoresadecuados para los atributos.

Conceptos relacionados

“Entidades para diferentes tipos de relaciones” en la página 71

Convenios de denominación para atributosLos convenios de denominación para atributos ayudan a los diseñadores de basesde datos a asegurar la coherencia dentro de una organización.

La mayoría de organizaciones tienen convenios de denominación. Además de lossiguientes convenios, los administradores de bases de datos también basan las

Figura 13. Asignación de hechos de varios con varios a una entidad

72 Introducción a DB2 para z/OS

Page 83: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

definiciones de atributos en palabras de clases. Una palabra de clase es una únicapalabra que indica la naturaleza de los datos a los que representa el atributo.

Ejemplo: La palabra de clase NUMBER indica un atributo que identifica elnúmero de una identidad. Por lo tanto, los nombres de atributos que identifican alos números de identidades deben incluir la palabra de clase NUMBER. Algunosejemplos son EMPLOYEE_NUMBER, PROJECT_NUMBER yDEPARTMENT_NUMBER.

Cuando una organización no tiene unas direcciones bien definidas para losnombres de atributos, los administradores de bases de datos intentan determinarcómo los diseñadores de bases de datos utilizan atributos denominadoshistóricamente. Se producen problemas cuando varias personas inventan suspropios esquemas de denominación sin consultarse entre ellos.

Tipos de datos para atributosDebe especificarse un tipo de datos para cada atributo.

La mayoría de organizaciones tienen directrices bien definidas para utilizar losdiferentes tipos de datos. A continuación se proporciona una visión general de losprincipales tipos de datos que se pueden utilizar para los atributos de lasentidades.

Serie Datos que contienen una combinación de letras, números y caracteresespeciales. Los tipos de datos de serie se listan a continuación:v CHARACTER: Series de caracteres de longitud fija. El nombre abreviado

común para este tipo de datos es CHAR.v VARCHAR: Series de caracteres de longitud variable.v CLOB: Series de objetos grandes de caracteres de longitud variable, que

se suelen utilizar cuando es posible que una serie de caracteres excedalos límites del tipo de datos VARCHAR.

v GRAPHIC: Series gráficas de longitud fija que contienen caracteres dedoble byte.

v VARGRAPHIC: Series gráficas de longitud variable que contienencaracteres de doble byte.

v DBCLOB: Series de longitud variable de caracteres de doble byte en unobjeto grande.

v BINARY: Una secuencia de bytes que no está asociada a una página decódigos.

v VARBINARY: Series binarias de longitud variable.v BLOB: Series binarias de longitud variable en un objeto grande.v XML: Serie de longitud variable que es una representación interna de

XML.

NuméricosDatos que contienen dígitos. Los tipos de datos numéricos se listan acontinuación:v SMALLINT: para enteros pequeños.v INTEGER: para enteros grandes.v BIGINT: para valores más grandes.v DECIMAL(p,s) o NUMERIC(p,s), donde p es precisión y s es escala: para

números decimales empaquetados con precisión p y escala s. Precisión esel número total de dígitos y escala es el número de dígitos que hay a laderecha del separador decimal.

Capítulo 4. Objetos de DB2 y sus relaciones 73

||

|

||

|

|

Page 84: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v DECFLOAT: para números decimales de coma flotante.v REAL: para números de coma flotante de precisión simple.v DOUBLE: para números de coma flotante de precisión doble.

Fecha y horaValores de datos que representan fechas, horas o indicaciones de fecha yhora. Los tipos de datos de fecha y hora se listan a continuación:v DATE: Fechas con un valor de tres partes que representa un año, mes y

día.v TIME: Fechas con un valor de tres partes que representa la hora del día

en horas, minutos y segundos.v TIMESTAMP: Indicaciones de fecha y hora con un valor de siete partes

que representa una fecha y hora mediante año, mes, día, hora, minuto,segundo y microsegundo.

Ejemplos: Puede utilizar los siguientes tipos de datos para los atributos de laentidad EMPLOYEE:v EMPLOYEE_NUMBER: CHAR(6)v EMPLOYEE_LAST_NAME: VARCHAR(15)v EMPLOYEE_HIRE_DATE: DATEv EMPLOYEE_SALARY_AMOUNT: DECIMAL(9,2)

Los tipos de datos que selecciona son definiciones empresariales del tipo de datos.Durante el diseño físico de bases de datos es posible que necesite cambiardefiniciones de tipos de datos o utilizar un subconjunto de estos tipos de datos.Puede que la base de datos o el lenguaje principal no dé soporte a todas estasdefiniciones o puede que realice una selección diferente por motivos derendimiento.

Por ejemplo, es posible que necesite representar cantidades monetarias, pero DB2 ymuchos lenguajes principales no tienen un tipo de datos MONEY. En EstadosUnidos, una selección natural del tipo de datos SQL en esta selección esDECMAL(10,2) para representar dólares. Pero también es posible que considere eltipo de datos INTEGER para obtener un rendimiento rápido y eficaz.

Conceptos relacionados

“Nombres de columna” en la página 184

Valores para atributos de claveCuando diseña una base de datos debe decidir qué valores son aceptables para losdistintos atributos de una entidad.

Por ejemplo, puede que no desee permitir datos numéricos en un atributo para unnombre de persona. Los tipos de datos que elige limitan los valores que se aplicana un atributo determinado, pero también puede utilizar otros mecanismos. Estosotros mecanismos son dominios, valores nulos y valores por omisión.

Dominio

Un dominio describe las condiciones que un valor de atributo debe cumplir para serun valor válido. Algunas veces el dominio identifica un rango de valores válidos.Cuando se define el dominio para un atributo determinado, se aplican reglasempresariales para asegurar que los datos tengan sentido.

Ejemplos:

74 Introducción a DB2 para z/OS

|

Page 85: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Un dominio puede establecer que un atributo de número de teléfono debe serun valor de 10 dígitos que únicamente contenga números. No querrá que elnúmero de teléfono esté incompleto ni que contenga caracteres alfabéticos oespeciales con lo cual no sería válido. Puede elegir entre utilizar un tipo dedatos numérico o un tipo de datos de caracteres. Sin embargo, el dominioestablece la regla empresarial de que el valor debe ser un valor de 10 dígitosformado por números. Antes de finalizar esta regla, considere si necesitanúmeros de teléfono internacionales, que tienen formatos diferentes.

v Un dominio puede establecer que un atributo de mes debe ser un valor de 2dígitos entre 01 y 12. De nuevo, puede elegir entre utilizar tipos de datos defecha y hora, de caracteres o numéricos para este valor, pero el dominio exigeque el valor debe estar dentro del rango de 01 a 12. En este caso, laincorporación del mes en un tipo de datos de fecha y hora es probablemente lamejor opción. Esta decisión debería revisarse de nuevo durante el diseño físicode la base de datos.

Valores nulos

Al diseñar atributos para entidades, a veces puede encontrarse con que un atributono tiene un valor válido para cada instancia de la entidad. Por ejemplo, puede quedesee un atributo para un nombre medio de persona, pero no puede exigir unvalor porque algunas personas no tienen un nombre medio. En estos casos, puededefinir el atributo de modo que pueda contener valores nulos.

Un valor nulo es un indicador especial que representa la ausencia de un valor. Laausencia del valor puede deberse a que es desconocido, todavía no se haproporcionado o no existe. DBMS trata el valor nulo como un valor real, no comoun valor cero, un blanco ni una serie vacía.

Del mismo modo que debería permitirse que algunos atributos contengan valoresnulos, otros atributos no deberían contener valores nulos.

Ejemplo: Para la entidad EMPLOYEE, puede que no desee permitir que el atributoEMPLOYEE_LAST_NAME contenga un valor nulo.

Valores por omisión

En algunos casos, puede que no desee que un atributo específico contenga unvalor nulo, pero no desea exigir que el usuario o programa proporcione siempreun valor. En este caso, puede ser apropiado utilizar un valor por omisión.

Un valor por omisión es un valor que se aplica a un atributo si no hay disponibleningún otro valor válido.

Ejemplo: Suponga que no desea que el atributo EMPLOYEE_HIRE_DATEcontenga valores nulos y que no desea exigir que los usuarios proporcionen estedato. Si los datos sobre empleados nuevos se añaden generalmente a la base dedatos el primer día de contratación del empleado, podría definir un valor poromisión de la fecha actual.

Conceptos relacionados

Capítulo 7, “Implementación del diseño de base de datos”, en la página 177

Normalización para evitar redundanciasLa normalización ayuda a evitar redundancias e incoherencias en los datos. En estainformación se describen varias formas de normalización.

Capítulo 4. Objetos de DB2 y sus relaciones 75

Page 86: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Después de definir las entidades y decidir los atributos para las entidades, senormalizan las entidades para evitar redundancias. Una entidad está normalizadasi cumple un conjunto de restricciones para una forma normal determinada, que sedescribe en esta información. Las entidades pueden tener las formas normalesprimera, segunda, tercera y cuarta, cada una de las cuales tiene unas determinadasreglas asociadas. En algunos casos, el usuario sigue estas reglas y, en otros casos,no las sigue.

Las reglas para la forma normal son acumulativas. Es decir, para que una entidadcumpla las reglas de la segunda forma normal, también debe cumplir las reglas dela primera forma normal. Una entidad que cumple las reglas de la cuarta formanormal también cumple las reglas de la primera, segunda y tercera forma normal.

En el contexto de creación de modelos de datos lógicos, una instancia es unaaparición concreta. Una instancia de una entidad es un conjunto de valores dedatos para todos los atributos que corresponden a la entidad.

Ejemplo: La figura siguiente muestra una instancia de la entidad EMPLOYEE.

Conceptos relacionados

“Desnormalización para mejorar el rendimiento” en la página 83

Primera forma normalUna entidad relacional cumple el requisito de la primera forma normal si cadainstancia de una entidad contiene únicamente un valor, pero varios atributosrepetitivos.

Los atributos repetitivos, a menudo denominados grupo repetitivo, son atributosdiferentes que son inherentemente iguales. En una entidad que cumple el requisitode la primera forma normal, cada atributo es independiente y exclusivo en susignificado y en su nombre.

Ejemplo: Suponga que una entidad contiene los atributos siguientes:EMPLOYEE_NUMBERJANUARY_SALARY_AMOUNTFEBRUARY_SALARY_AMOUNTMARCH_SALARY_AMOUNT

Esta situación viola el requisito de primera forma normal, puesto queJANUARY_SALARY_AMOUNT, FEBRUARY_SALARY_AMOUNT yMARCH_SALARY_AMOUNT son esencialmente el mismo atributo,EMPLOYEE_MONTHLY_SALARY_AMOUNT.

Segunda forma normalUna entidad cumple la segunda forma normal si cada atributo que no está en laclave primaria proporciona un hecho que depende de la clave completa.

Figura 14. Instancia de una entidad

76 Introducción a DB2 para z/OS

Page 87: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Se produce una violación de la segunda forma normal cuando un atributo de claveno primaria es un hecho sobre un subconjunto de una clave compuesta.

Ejemplo: Una entidad de inventario registra las cantidades de componentesespecíficos que se almacenan en determinados almacenes. La figura siguientemuestra los atributos de la entidad de inventario.

En este caso, la clave primaria consta de los atributos PART y WAREHOUSEjuntos. Debido a que el atributo WAREHOUSE_ADDRESS tan solo depende delvalor de WAREHOUSE, la entidad viola la regla para la segunda forma normal.Este diseño puede causar varios problemas:v Cada instancia de un componente almacenado en este almacén repite la

dirección del almacén.v Si la dirección del almacén cambia, debe actualizarse cada instancia que hace

referencia a un componente almacenado en dicho almacén.v Debido a la repetición, los datos pueden resultar incoherentes. Instancias

diferentes podrían mostrar direcciones diferentes para el mismo almacén.v Si en cualquier momento el almacén no almacena ningún componente, es posible

que la dirección del almacén no exista en ninguna instancia de la entidad.

Para cumplir la segunda forma normal, la información de la figura anterior estaríaen dos entidades, tal como muestra la figura siguiente.

Conceptos relacionados

“Claves de DB2” en la página 29

Tercera forma normalUna entidad cumple la tercera forma normal si cada atributo de clave no primariaproporciona un hecho independiente de otros atributos no de clave y que dependeúnicamente de la clave.

Se produce una violación de la tercera forma normal cuando un atributo de noprimario es un hecho sobre otro atributo no de clave.

Ejemplo: La primera entidad de la figura siguiente contiene los atributosEMPLOYEE_NUMBER y DEPARTMENT_NUMBER. Suponga que un programa oun usuario añade un atributo, DEPARTMENT_NAME, a la entidad. El nuevoatributo depende de DEPARTMENT_NUMBER, mientras que la clave primaria estáen el atributo EMPLOYEE_NUMBER. Ahora la entidad viola la tercera formanormal.

El cambio del valor de DEPARTMENT_NAME basado en la actualización de unúnico empleado, David Brown, no cambia el valor de DEPARTMENT_NAME para

Figura 15. Clave primaria que viola la segunda forma normal

Figura 16. Dos entidades que cumplen la segunda forma normal

Capítulo 4. Objetos de DB2 y sus relaciones 77

Page 88: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

otros empleados del departamento. La versión actualizada de la entidad de lafigura siguiente ilustra la incoherencia resultante. Adicionalmente, la actualizaciónde DEPARTMENT_NAME en esta tabla no lo actualiza en otra tabla que puedecontener una columna DEPARTMENT_NAME.

Puede normalizar la entidad modificando la entidad EMPLOYEE_DEPARTMENT ycreando dos entidades nuevas: EMPLOYEE y DEPARTMENT. La figura siguientemuestra las entidades nuevas. La entidad DEPARTMENT contiene atributos paraDEPARTMENT_NUMBER y DEPARTMENT_NAME. Ahora bien, una actualizaciónen la que se cambia un nombre de departamento es mucho más fácil. Tan solodebe realizar la actualización en la entidad DEPARTMENT.

Figura 17. Actualización de una entidad sin normalizar. La información de la entidad se havuelto incoherente.

78 Introducción a DB2 para z/OS

Page 89: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cuarta forma normalUna entidad pertenece a la cuarta forma normal si ninguna instancia contiene doso más hechos de varios valores independientes sobre una entidad.

Ejemplo: Considere la entidad EMPLOYEE. Cada instancia de EMPLOYEE podríatener SKILL_CODE y LANGUAGE_CODE. Un empleado puede tener variashabilidades y varios idiomas. Existen dos relaciones, una entre empleados yhabilidades y otra entre empleados e idiomas. Una entidad no pertenece a lacuarta forma normal si representa ambas relaciones, como muestra la figurasiguiente.

En lugar de ello, puede evitar esta violación creando dos entidades querepresenten a ambas relaciones, como muestra la figura siguiente.

Sin embargo, si los hechos son interdependientes (es decir, el empleado aplicadeterminados idiomas únicamente a determinadas habilidades) no debería dividirla entidad.

Figura 18. Entidades normalizadas: EMPLOYEE, DEPARTMENT yEMPLOYEE_DEPARTMENT

Figura 19. Entidad que viola la cuarta forma normal

Figura 20. Entidades que pertenecen a la cuarta forma normal

Capítulo 4. Objetos de DB2 y sus relaciones 79

Page 90: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Puede colocar cualquier dato en la cuarta forma normal. Una regla correcta quedebe seguir al realizar diseño de bases de datos lógicas consiste en organizar todoslos datos de las entidades que pertenecen a la cuarta forma normal. Acontinuación, decida si el resultado produce un nivel aceptable de rendimiento. Siel rendimiento no es aceptable, la desnormalización del diseño es una buenatécnica para mejorar el rendimiento.

Diseño lógico de bases de datos con Unified Modeling Language(Lenguaje de creación de modelos unificados)

La creación de modelos de UML se basa en principales de programación orientadaa objetos. UML define un conjunto estándar de diagramas de creación de modelospara todas las fases de desarrollo de un sistema de software.

Esta información describe el modelo de relación de entidad del diseño de base dedatos. Otro modelo que se puede utilizar es Unified Modeling Language (UML). Elgrupo de gestión de objetos es un consorcio que creó el estándar de UML. Estetema proporciona una breve visión general de UML.

La diferencia básica entre el modelo de relación de entidad y el modelo de UML esque, en lugar de diseñar entidades como describe esta información, el usuario creamodelos de objetos. Conceptualmente, los diagramas de UML son como copiasazules para el diseño de un proyecto de desarrollo de software.

A continuación se proporcionan algunos ejemplos de diagramas de UML:

Clase Identifica entidades de alto nivel, conocidas como clases. Una clase describeun conjunto de objetos que tienen los mismos atributos. Un diagrama declases muestra las relaciones entre clases.

Caso de usoPresenta una vista de alto nivel de un sistema desde la perspectiva delusuario. Un diagrama de casos de uso define las interacciones entre losusuarios y las aplicaciones o entre aplicaciones. Estos diagramas describengráficamente el comportamiento del sistema. Puede trabajar con diagramasde casos de uso para capturas requisitos del sistema, conocer cómofunciona el sistema y especificar el comportamiento del sistema.

ActividadCrea modelos del flujo de trabajo de un proceso empresarial, generalmentedefiniendo reglas para la secuencia de actividades del proceso. Porejemplo, una empresa de contabilidad puede utilizar diagramas deactividades para crear modelos de transacciones financieras.

InteracciónMuestra la secuencia necesaria de interacciones entre objetos. Losdiagramas de interacciones pueden incluir diagramas de secuencias ydiagramas de colaboraciones.v Los diagramas de secuencias muestran interacciones entre objetos en una

secuencia basada en el tiempo que establece los roles de objetos y ayudaa determinar interfaces y responsabilidades de clases.

v Los diagramas de colaboraciones muestran asociaciones entre objetosque definen la secuencia de mensajes que implementan una operación ouna transacción.

80 Introducción a DB2 para z/OS

Page 91: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

ComponenteMuestra las relaciones de dependencia entre componentes como, porejemplo, programas principales y subprogramas.

Numerosas herramientas disponibles de la familia de productos de WebSphere yRational facilitan la tarea de crear un modelo de UML. Los desarrolladores puedenrepresentar gráficamente la arquitectura de una base de datos y cómo éstainteractúa con aplicaciones utilizando las siguientes herramientas de creación demodelos de UML:v WebSphere Business Integration Workbench, que proporciona un creador de

modelos de UML para crear diagramas de UML estándar.v Un conector de WebSphere Studio Application Developer para crear modelos de

aplicaciones y servicios web de Java y para correlacionar el modelo de UML conel modelo de relación de entidad.

v Rational Rose Data Modeler, que proporciona un entorno de creación demodelos que conecta diseñadores de bases de datos que utilizan el modelo derelación de entidad con desarrolladores de aplicaciones OO.

v Rational Rapid Developer, un creador de modelos global y un generador decódigos que proporciona un entorno para diseño rápido, integración, creación ydesarrollo de aplicaciones empresariales basadas en portal, sin cables.

v IBM Rational Data Architect (RDA) tiene una funcionalidad muy completa queproporciona a los profesionales de datos la posibilidad de diseñar una base dedatos relacional o federada y de realizar análisis de impacto entre modelos.

Existen semejanzas entre componentes del modelo de relación de entidad y dediagramas de UML. Por ejemplo, la estructura de clase se corresponde exactamentecon la estructura de entidad.

La utilización de la herramienta de creación de modelos Rational Rose DataModeler permite a los desarrolladores utilizar un tipo específico de diagrama paracada tipo de modelo de desarrollo:v Modelo empresarial: diagrama de casos de uso, diagrama de actividades,

diagrama de secuenciasv Modelos lógicos de datos o modelos de aplicaciones: diagrama de clasesv Modelos físicos de datos: diagrama de modelos de datos

El modelo lógico de datos proporciona una visión general de los requisitosempresariales capturados ya que corresponden a entidades de datos. El diagramade modelo de datos representa gráficamente el modelo físico de datos. El modelofísico de datos utiliza los requisitos capturados del modelo lógico de datos y losaplica a lenguajes de DBMS específicos. Los modelos físicos de datos tambiéncapturan el detalle de nivel inferior de una base de datos DBMS.

Los diseñadores de bases de datos pueden personalizar el diagrama de modelo dedatos desde otros diagramas de UML, lo cual les permite trabajar con conceptos yterminología tales como columnas, tablas y relaciones, con los que ya estánfamiliarizados. Los desarrolladores también pueden transformar un modelo lógicode datos en un modelo físico de datos.

El hecho de que el diagrama de modelo de datos incluya diagramas para crearmodelos de un todo un sistema permite que los diseñadores de bases de datos,desarrolladores de aplicaciones y otros miembros de un equipo de desarrollopuedan compartir y realizar un seguimiento de los requisitos empresarialesdurante todo el proceso de desarrollo. Por ejemplo, los diseñadores de bases dedatos pueden capturar información como, por ejemplo, restricciones,

Capítulo 4. Objetos de DB2 y sus relaciones 81

|||

Page 92: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

desencadenantes e índices directamente en el diagrama de UML. Losdesarrolladores también pueden realizar transferencias entre modelos de objetos ydatos y utilizar tipos de transformación básicos como, por ejemplo, relaciones devarios con varios.

Conceptos relacionados

“Diseño lógico de bases de datos utilizando creación de modelos de relación deentidad” en la página 67“Diseño físico de base de datos”

Diseño físico de base de datosEl diseño físico de la base de datos optimiza el rendimiento a la vez que asegura laintegridad de los datos al evitar repeticiones innecesarias de datos. Durante eldiseño físico, se transforman las entidades en tablas, las instancias en filas y losatributos en columnas.

Una vez completado el diseño lógico de la base de datos, se pasa al diseño físico.El personal que realiza el diseño debe tomar decisiones que afectan al diseño físico,algunas de las cuales se listan a continuación.v Cómo convertir entidades en tablas físicasv Qué atributos utilizar para las columnas de las tablas físicasv Qué columnas de las tablas deben definirse como clavesv Qué índices deben definirse en las tablasv Qué vistas deben definirse en las tablasv Cómo desnormalizar las tablasv Cómo resolver relaciones de varios con varios

El diseño físico es el momento en que se abrevian los nombres que se han elegidodurante el diseño lógico. Por ejemplo, puede abreviar el nombre de columna queidentifica a los empleados, EMPLOYEE_NUMBER, como EMPNO. En DB2 paraz/OS, debe abreviar los nombres de columna y los nombres de tabla paraajustarlos a la restricción física de un máximo de 30 bytes para nombres decolumna y un máximo de 128 bytes para nombres de tabla.

La tarea de crear el diseño físico es un trabajo que realmente no acaba nunca. Esnecesario supervisar continuamente las características de rendimiento e integridadde los datos de la base de datos a medida que pasa el tiempo. Muchos factoresnecesitan mejoras periódicas en el diseño físico.

DB2 le permite cambiar muchos de los atributos clave del diseño mediantesentencias ALTER SQL. Por ejemplo, suponga que diseña una tabla particionada demodo que almacena datos para 36 meses. Más adelante descubre que necesitaampliar el diseño a datos para 84 meses. Puede añadir o rotar particiones para los36 meses actuales a fin de acomodar el nuevo diseño.

El resto de esta información incluye información valiosa que puede ayudarle acrear y mejorar el diseño físico de la base de datos. Sin embargo, esta tareageneralmente requiere tener más experiencia en DB2 que la probablemente tienenla mayoría de lectores de esta información de nivel introductorio.

Conceptos relacionados

“Diseño lógico de bases de datos utilizando creación de modelos de relación deentidad” en la página 67“Diseño lógico de bases de datos con Unified Modeling Language (Lenguaje decreación de modelos unificados)” en la página 80

82 Introducción a DB2 para z/OS

||||||

Page 93: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Desnormalización para mejorar el rendimientoLas reglas de normalización no consideran el rendimiento. En algunos casos, esnecesario considerar la desnormalización para mejorar el rendimiento.

Durante el diseño físico, los analistas transforman las entidades en tablas y losatributos en columnas. Considere de nuevo el ejemplo del apartado “Segundaforma normal” en la página 76. La columna de dirección de almacén apareceprimero como parte de una tabla que contiene información sobre componentes yalmacenes. Para normalizar adicionalmente el diseño de la tabla, los analistaseliminan la columna de dirección de almacén de la tabla. Los analistas tambiéndefinen la columna como parte de una tabla que contiene información únicamentesobre almacenes.

La normalización de tablas es la propuesta que se suele recomendar. Pero ¿quésucede si las aplicaciones necesitan información sobre componentes y almacenes,incluidas las direcciones de los almacenes? La premisa de las reglas denormalización es que las sentencias de SQL pueden recuperar la informaciónuniendo las dos tablas. El problema es que, en algunos casos, se pueden producirproblemas de rendimiento como resultado de una normalización. Por ejemplo,algunas consultas de usuario pueden ver datos que están en una o más tablasrelacionadas; el resultado es demasiadas uniones. A medida que crece el númerode tablas, los costes de acceso pueden aumentar, según el tamaño de las tablas, losíndices disponibles, etc. Por ejemplo, si no hay índices disponibles, la unión denumerosas tablas grandes puede tardar demasiado tiempo. Puede que necesitedesnormalizar las tablas. La desnormalización es la duplicación intencionada decolumnas en varias tablas y esto aumenta la redundancia de datos.

Ejemplo 1: Considere el diseño en que ambas tablas tienen una columna quecontiene las direcciones de almacenes. Si este diseño hace que no sean necesariasoperaciones de unión, podría ser que la redundancia valga la pena. Las direccionesde almacenes no cambian a menudo y si cambia alguna puede utilizar SQL paraactualizar todas las instancias con bastante facilidad.

Consejo: No suponga automáticamente que todas las uniones tardan demasiadotiempo. Si une tablas normalizadas, no es necesario mantener los mismos valoresde datos sincronizados en varias tablas. En muchos casos, las uniones son elmétodo de acceso más eficaz, a pesar de la sobrecarga que suponen. Por ejemplo,algunas aplicaciones alcanzan 44 uniones en un tiempo de respuesta desubsegundos.

Cuando crea el diseño físico, el usuario y sus colegas necesitan decidir si debendesnormalizarse los datos. Específicamente, necesita decidir si deben combinarsetablas o partes de tablas a las que accedan con frecuencia uniones que tienenrequisitos de alto rendimiento. Se trata de una decisión compleja sobre la cual estainformación no puede proporcionar un consejo específico. Para tomar esta decisiónnecesita evaluar los requisitos de rendimiento, los diferentes métodos de acceder alos datos y los costes de desnormalización de los datos. Debe tener en cuenta elcoste y el resultado; ¿es la duplicación, en varias tablas, de columnas solicitadascon frecuencia menos costosa que el tiempo de llevar a cabo las uniones?

Recomendaciones:

v No desnormalice tablas a menos que tenga una buena comprensión de los datosy las transacciones empresariales que acceden a los datos. Consulte con losdesarrolladores de aplicaciones antes de desnormalizar tablas para mejorar elrendimiento de las consultas de los usuarios.

Capítulo 4. Objetos de DB2 y sus relaciones 83

Page 94: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Cuando decida si va a desnormalizar una tabla, considere todos los programasque accedan de forma regular a la tabla, tanto para lectura como paraactualización. Si los programas actualizan con frecuencia una tabla, ladesnormalización de la tabla afecta al rendimiento de los programas deactualización puesto que las actualizaciones se aplican más a varias tablas que auna sola tabla.

En la figura siguiente, la información sobre componentes, almacenes y direccionesde almacenes aparecen en dos tablas, ambas en la forma normal.

La siguiente figura ilustra la tabla desnormalizada.

La resolución de relaciones de varios con varios es una actividad especialmenteimportante puesto que ayuda a mantener la claridad e integridad en el diseñofísico de de bases de datos. Para resolver relaciones de varios con varios, seintroducen tablas asociativas, que son tablas intermedias que se utilizan paraenlazar, o asociar, dos tablas entre sí.

Ejemplo 2: Los empleados trabajan en muchos proyectos. Los proyectos tienenmuchos empleados. En el diseño lógico de bases de datos, esta relación se muestracomo una relación de varios con varios entre proyecto y empleado. Para resolveresta relación, se crea una nueva tabla asociativa, EMPLOYEE_PROJECT. Para cadacombinación de empleado y proyecto, la tabla EMPLOYEE_PROJECT contiene unafila correspondiente. La clave primaria para la tabla estaría formada por el númerode empleado (EMPNO) y el número de proyecto (PROJNO).

Otra decisión que debe tomar está relacionada con la utilización de gruposrepetitivos.

Ejemplo 3: Suponga que una transacción que se utiliza mucho necesita el númerode cables que se venden al mes en un año específico. Los factores de rendimientopodrían justificar cambiar una tabla de modo que viole la regla de la primeraforma normal almacenando grupos repetitivos. En este caso, el grupo repetitivosería: MONTH, WIRE. La tabla contendría una fila para el número de cablesvendidos para cada mes (cables de enero, cables de febrero, cables de marzo, etc.).

Recomendación: Si decide desnormalizar los datos, documéntese en profundidadsobre la desnormalización. Describa, de forma detallada, la lógica de ladesnormalización y los pasos que ha seguido. A continuación, si en el futuro laorganización necesita normalizar los datos, los encargados de realizar este trabajodispondrán de un registro preciso.

Conceptos relacionados

“Normalización para evitar redundancias” en la página 75

Figura 21. Dos tablas que cumplen la segunda forma normal

Figura 22. Tabla desnormalizada

84 Introducción a DB2 para z/OS

Page 95: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

“Primera forma normal” en la página 76Capítulo 8, “Gestión del rendimiento de DB2”, en la página 245“Creación de índices” en la página 214

Utilización de vistas para personalizar los datos que ve unusuario

Una vista es una forma alternativa para describir los datos que existen en una omás tablas.

Algunos usuarios pueden encontrarse con que ninguna tabla individual contienetodos los datos que necesitan; en lugar de ello, los datos pueden estar diseminadosentre varias tablas. Además, una tabla puede contener más datos de los que losusuarios desean ver o más datos de los que se desea dar autorización a losusuarios para que los vean. En estas situaciones se pueden crear vistas.

Puede desear utilizar vistas por varios motivos:v Para limitar el acceso a determinados tipos de datos

Puede crear una vista que contenga sólo las columnas y filas seleccionadas deuna o más tablas. Los usuarios con la autorización apropiada sobre la vista tansolo ven la información que se especifica en la definición de vista.

Ejemplo: Puede definir una vista para la tabla EMP para mostrar todas lascolumnas excepto SALARY y COMM (comisión). Puede otorgar acceso a estavista a personas que no son directores debido a que probablemente no desea quetengan acceso a este tipo de información.

v Para combinar datos de varias tablasPuede crear una vista que utilice uno de los operadores establecidos, UNION,INTERSECT o EXCEPT, para combinar datos de forma lógica a partir de tablasde resultados intermedios. Además, puede especificar DISTINCT (valor poromisión) o ALL con un operador establecido. Puede consultar una vista definidacon un operador establecido como si fuera una tabla de resultados grande.

Ejemplo: Suponga que tres tablas contienen datos para un periodo de tiempo deun mes. Puede crear una vista que sea UNION ALL de tres seleccionescompletas, una para cada mes del primer trimestre del 2004. Al final del tercermes, puede ver datos trimestrales completos.

Puede crear una vista en cualquier momento una vez que las tablas subyacentesexisten. El propietario de un conjunto de tablas implícitamente tiene laautorización para crear una vista para estas tablas. Un usuario con autorizaciónadministrativa en el nivel del sistema o de base de datos puede crear una vistapara cualquier propietario de cualquier conjunto de tablas. Si disponen de laautorización necesaria, otros usuarios también pueden crear vistas para una tablaque no han creado.

Conceptos relacionados

“Mecanismos de autorización y seguridad para el acceso a datos” en la página273“Vista que combina información de varias tablas” en la página 232

Utilización de índices para mejorar el rendimientoLos índices se utilizan para optimizar el acceso a datos, para asegurar laexclusividad y habilitar la agrupación en clústeres.

Capítulo 4. Objetos de DB2 y sus relaciones 85

|||||

Page 96: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Si participa en el diseño físico de una base de datos, trabaja con otros diseñadorespara determinas qué columnas y expresiones deben indexarse. Se utilizan modelosde proceso que describen cómo diferentes aplicaciones accederán a los datos. Estainformación es muy importante al decidir las estrategias de indexación paraasegurar un rendimiento adecuado.

Las finalidades principales de un índice son:v Optimizar el acceso a datos. En muchos casos, el acceso a datos es más rápido

con un índice que sin un índice. Si el DBMS utiliza un índice para buscar unafila de una tabla, la exploración puede ser más rápida que cuando el DBMSexplora una tabla completa.

v Asegurar la exclusividad. Una tabla con un índice exclusivo no puede tener dosfilas con los mismos valores en la columna o columnas que forman la clave deíndice.

Ejemplo: Si las aplicaciones de nóminas utilizan números de empleado, nopueden existir dos empleados con el mismo número de empleado.

v Habilitar la agrupación en clústeres. Un índice de agrupación en clústeresmantiene las filas de una tabla en una secuencia especificada para minimizar elacceso de página para un conjunto de filas. Cuando un espacio de tablas estáparticionado, se produce un tipo especial de agrupación en clústeres; las filas seagrupan en clústeres en cada partición. La agrupación en clústeres puede estaren el mismo orden del particionamiento o el orden puede ser diferente.

Ejemplo: Si la partición está en el mes y el índice de agrupación en clústeresestá en el nombre, las filas se agrupan en clústeres en el nombre dentro del mes.

En general, los usuarios de la tabla no se dan cuenta de que se está utilizando uníndice. DB2 decide si va a utilizar el índice para acceder a la tabla.

86 Introducción a DB2 para z/OS

|||||

||||||

||

Page 97: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 5. SQL: lenguaje de DB2

Esta información contiene numerosos ejemplos de SQL para que se familiarice conlos distintos tipos de sentencias de SQL, su finalidad, su codificación y lasocasiones en que deben utilizarse.

Modos de acceder a datosPuede recuperar datos utilizando la sentencia SELECT de SQL para especificar unatabla de resultados que puede proceder de una o más tablas.

En esta información, varios ejemplos de sentencias de SQL ilustran cómo codificary utilizar cada cláusula de la sentencia SELECT para consultar una tabla. Losejemplos de consultas más avanzadas explican cómo ajustar las consultasutilizando funciones y expresiones y cómo consultar varias tablas con sentenciasmás complejas que incluyen uniones, combinaciones y subconsultas. La mejorforma de aprender sobre SQL es desarrollar sentencias de SQL similares a estosejemplos y, a continuación, ejecutarlas dinámicamente utilizando una herramientacomo, por ejemplo, DB2 QMF para Workstation.

Los datos que se recuperan mediante SQL siempre tienen formato de tabla. Comolas tablas de las que se recuperan datos, una tabla de resultados tiene filas ycolumnas. Un programa capta estos datos de una o más filas a la vez.

Ejemplo: Considere esta sentencia SELECT:SELECT LASTNAME, FIRSTNME

FROM EMPWHERE DEPT = 'D11'ORDER BY LASTNAME;

Esta sentencia SELECT devuelve la siguiente tabla de resultados:LASTNAME FIRSTNME======== ========BROWN DAVIDLUTZ JENNIFERSTERN IRVING

Muchos de los ejemplos de esta información se basan en las tablas de ejemplo, querepresentan información de ejemplo sobre una empresa de informática.

Conceptos relacionados

Capítulo 2, “Conceptos de DB2”, en la página 23

Modos de seleccionar datos de columnasHay disponibles varias técnicas para seleccionar columnas de una base de datospara las tablas de resultados.

Selección de todas las columnas

No es necesario conocer los nombres de columna para seleccionar datos de DB2.Utilice un asterisco (*) en la cláusula SELECT para indicar todas las columnas decada fila seleccionada de la tabla especificada. DB2 selecciona las columnas en elorden en que las columnas se han declarado en la tabla. Las columnas ocultas

© Copyright IBM Corp. 2001, 2008 87

||||

Page 98: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

como, por ejemplo, columnas ROWID y columnas de ID de documento XML, no seincluyen en el resultado de la sentencia SELECT *.

Ejemplo: Considere esta consulta:SELECT *

FROM DEPT;

La tabla de resultados es similar a la siguiente:

Esta sentencia SELECT recupera datos de cada columna (SELECT *) de cada filarecuperada de la tabla DEPT. Debido a que el ejemplo no especifica ningunacláusula WHERE, la sentencia recupera datos de todas las filas.

En este ejemplo, la quinta fila contiene un valor nulo debido a que no se identificaningún director para este departamento. Todos los ejemplos de salida de estainformación muestran guiones para los valores nulos.

SELECT * es lo más apropiado cuando se utiliza con SQL dinámico y definicionesde vistas.

Recomendación: Evite utilizar SELECT * en SQL estático. Las aplicaciones de SQLestático se escriben cuando se conoce el número de columnas que devolverá laaplicación. Este número puede cambiar fuera de la aplicación. Si se produce uncambio en la tabla, debe actualizar la aplicación para reflejar el número decolumnas cambiada de la tabla.

Selección de algunas columnas

Seleccione las columnas que desea especificando el nombre de cada columna.Todas las columnas aparecen en el orden que se especifica, no en el orden quetienen en la tabla.

Ejemplo: Observe que la tabla DEPT contiene la columna DEPTNO antes de lacolumna MGRNO. Considere esta consulta:SELECT MGRNO, DEPTNO

FROM DEPT;

La tabla de resultados es similar a la siguiente:MGRNO DEPTNO====== ======000010 A00000020 B01000030 C01000060 D11------ E21

Esta sentencia SELECT recupera datos contenidos en las dos columnasespecificadas de cada fila de la tabla DEPT. Puede seleccionar datos de 1 columnao hasta 750 columnas con una única sentencia SELECT.

Selección de columnas derivadas

Puede seleccionar columnas que deriven de una constante, una expresión o unafunción.

Ejemplo: Considere esta consulta, que contiene una expresión:

88 Introducción a DB2 para z/OS

||

Page 99: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

SELECT EMPNO, (SALARY + COMM)FROM EMP;

La tabla de resultados es similar a la siguiente:EMPNO====== =======000010 56970.00000020 44550.00000030 41310.00000060 34830.00...

Esta consulta selecciona datos de todas las filas de la tabla EMP, calcula elresultado de la expresión y devuelve las columnas en el orden en que indica lasentencia SELECT. En la tabla de resultados, las columnas derivadas, como(SALARY + COMM) en este ejemplo, no tienen nombres. Puede utilizar la cláusulaAS para proporcionar nombres a las columnas sin nombre.

Para ordenar las filas de la tabla de resultados según los valores de una columnaderivada, especifique un nombre para la columna utilizando la cláusula AS yutilice este nombre en la cláusula ORDER BY.

Eliminación de filas duplicadas

La palabra clave DISTINCT elimina las filas duplicadas redundantes de la tabla deresultados para que cada fila contenga datos exclusivos.

Ejemplo 1: Considere la consulta siguiente:SELECT ADMRDEPT FROM DEPT;

La tabla de resultados es similar a la siguiente:ADMRDEPT========A00A00A00D11D11

Cuando se omite la palabra clave DISTINCT, se devuelve el valor de la columnaADMRDEPT de cada fila seleccionada, aunque la tabla de resultados incluya variasfilas duplicadas.

Ejemplo 2: Compare el Ejemplo 1 con la consulta siguiente, que utiliza la palabraclave DISTINCT para listar los números de departamento de los departamentosadministrativos:SELECT DISTINCT ADMRDEPT

FROM DEPT;

La tabla de resultados es similar a la siguiente:ADMRDEPT========A00D11

Puede utilizar más de una palabra clave DISTINCT en una única consulta.

Capítulo 5. SQL: lenguaje de DB2 89

Page 100: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Denominación de columnas de resultados

Con AS, puede denominar columnas en una cláusula SELECT. Esta palabra clavees especialmente útil para una columna que deriva de una expresión o unafunción.

Ejemplo: En la consulta siguiente, la expresión SALARY+COMM se denominaTOTAL_SAL:SELECT EMPNO, SALARY + COMM AS TOTAL_SAL

FROM EMPORDER BY TOTAL_SAL;

La tabla de resultados es similar a la siguiente:EMPNO TOTAL_SAL====== =========000320 21546.00200340 25747.00000330 27400.00000200 29957.00...

Este resultado es diferente del resultado de una consulta similar que no utiliza unacláusula AS.

Conceptos relacionados

“Modos de filtrar el número de filas devueltas” en la página 97“Valores nulos” en la página 99Capítulo 6, “Programación de aplicaciones para DB2”, en la página 147“Modos de ordenar filas” en la página 104Referencia relacionada

″Sentencia select″ (Consulta de DB2 SQL)

Cómo funciona una sentencia SELECTLas sentencias SELECT (y las sentencias de SQL en general) están formadas poruna serie de cláusulas definidas por SQL como ejecutadas en un orden lógico.

La siguiente lista de cláusulas muestra el orden lógico de las cláusulas en unasentencia:1. FROM2. WHERE3. GROUP BY4. HAVING5. SELECT6. ORDER BY

Además:v Las subselecciones se procesan de la subselección más interna a la subselección

más externa. Una subselección de una cláusula WHERE o una cláusula HAVINGde otra sentencia de SQL se denomina subconsulta.

v La cláusula ORDER BY se puede incluir en una subselección, una seleccióncompleta o en una sentencia SELECT.

v Si utiliza una cláusula AS para definir un nombre en la cláusula SELECT másexterior, tan solo la cláusula ORDER BY puede hacer referencia a dicho nombre.Si utiliza una cláusula AS en una subselección, puede hacer referencia al nombreal que define fuera de la subselección.

90 Introducción a DB2 para z/OS

||

||

Page 101: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Ejemplo 1: Considere esta sentencia SELECT, que no es válida:SELECT EMPNO, (SALARY + COMM) AS TOTAL_SAL

FROM EMPWHERE TOTAL_SAL> 50000;

La cláusula WHERE no es válida porque DB2 no procesa la parte AS TOTAL_SALde la sentencia hasta después de procesar la cláusula WHERE. Por lo tanto, DB2 noreconoce el nombre TOTAL_SAL que la cláusula AS define.

Ejemplo 2: Sin embargo, la siguiente sentencia SELECT es válida porque lacláusula ORDER BY hace referencia al nombre de columna TOTAL_SAL que lacláusula AS define:SELECT EMPNO, (SALARY + COMM) AS TOTAL_SAL

FROM EMPORDER BY TOTAL_SAL;

Referencia relacionada

″Sentencia select″ (Consulta de DB2 SQL)

Funciones y expresiones de SQLPuede utilizar funciones y expresiones para controlar el aspecto y los valores de lasfilas y columnas de las tablas de resultados. DB2 ofrece muchas funcionesincorporadas, entre las que se incluyen funciones de totales y funciones escalares.

Una función incorporada es una función que se proporciona con DB2 for z/OS.

Concatenación de seriesPuede concatenar series utilizando el operador CONCAT o la función incorporadaCONCAT.

Cuando se concatenan los operandos de dos series, el resultado de la expresión esuna serie. Los operandos de concatenación deben ser series compatibles.

Ejemplo: Considere esta consulta:SELECT LASTNAME CONCAT ',' CONCAT FIRSTNME

FROM EMP;

Esta sentencia SELECT concatena el apellido, una coma y el nombre de cada fila deresultados. La tabla de resultados es similar a la siguiente:================HAAS,CHRISTINETHOMPSON,MICHAELKWAN,SALLYSTERN,IRVING...

Una sintaxis alternativa para la sentencia SELECT previamente mostrada es lasiguiente:SELECT LASTNAME CONCAT(CONCAT(LASTNAME,','),FIRSTNME)FROM EMP;

En este caso, la sentencia SELECT concatena el apellido y, a continuación,concatena el resultado con el nombre.

Referencia relacionada

″Sentencia select″ (Consulta de DB2 SQL)″CONCAT″ (Consulta de DB2 SQL)

Capítulo 5. SQL: lenguaje de DB2 91

Page 102: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cálculo de valores en una o más columnasPuede realizar cálculos en datos numéricos o de fecha y hora.

Los tipos de datos numéricos son entero binario, separador flotante decimal ydecimal. Los tipos de datos de fecha y hora son fecha, hora e indicación de fecha yhora.

Puede recuperar valores calculados, del mismo modo que se visualizan columnasde valores, para filas seleccionadas.

Ejemplo: Considere esta consulta:SELECT EMPNO,

SALARY / 12 AS MONTHLY_SAL,SALARY / 52 AS WEEKLY_SALFROM EMPWHERE DEPT = 'A00';

La tabla de resultados es similar a la siguiente:SELECT EMPNO,

SALARY / 12 AS MONTHLY_SAL,SALARY / 52 AS WEEKLY_SALFROM EMPWHERE DEPT = 'A00';

La tabla de resultados visualiza los salarios mensuales y semanales de empleadosdel departamento A00. Si prefiere los resultados con únicamente dos dígitos a laderecha del separador decimal, puede utilizar la función DECIMAL.

Ejemplo: Para recuperar el número de departamento, el número de empleado, elsalario y la comisión para los empleados cuyo salario y comisión combinados sonsuperiores a 45 000 $, escriba la consulta del modo siguiente:SELECT DEPT, EMPNO, SALARY, COMM

FROM EMPWHERE SALARY + COMM> 45000;

La tabla de resultados es similar a la siguiente:DEPT EMPNO SALARY COMM==== ====== ======== =======A00 000010 52750.00 4220.00A00 200010 46500.00 4220.00

Conceptos relacionados

“Funciones escalares” en la página 94

Cálculo de valores de totalesPuede utilizar las funciones de totales de SQL para calcular los valores basados encolumnas enteras de datos. Los valores calculados pertenecen sólo a filasseleccionadas (todas las filas que cumplen la cláusula WHERE).

Una función de totales es una operación que obtiene su resultado de la utilización devalores de una o más filas. Una función de totales también se conoce con elnombre de función de columna. El argumento de una función de totales es unconjunto de valores que se obtienen de una expresión.

Puede utilizar las siguientes funciones de totales:SUM Devuelve el valor total.MIN Devuelve el valor mínimo.AVG Devuelve el valor medio.

92 Introducción a DB2 para z/OS

Page 103: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

MAX Devuelve el valor máximo.COUNT

Devuelve el número de filas seleccionadas.COUNT_BIG

Devuelve el número de filas o valores de un conjunto de filas o valores. Elresultado puede ser mayor que el valor máximo de un entero.

XMLAGGDevuelve una concatenación de elementos XML de una colección deelementos XML.

Ejemplo 1: Esta consulta calcula, para el departamento A00, la suma de lossalarios de los empleados, el salario mínimo, medio y máximo y el número deempleados del departamento:SELECT SUM(SALARY) AS SUMSAL,

MIN(SALARY) AS MINSAL,AVG(SALARY) AS AVGSAL,MAX(SALARY) AS MAXSAL,COUNT(*) AS CNTSAL

FROM EMPWHERE DEPT = 'A00';

La tabla de resultados es similar a la siguiente:

Puede utilizar (*) en las funciones COUNT y COUNT_BIG. En este ejemplo,COUNT(*) devuelve las filas que DB2 procesa basándose en la cláusula WHERE.

Ejemplo 2: Esta consulta cuenta el número de empleados que se describen en latabla EMP:SELECT COUNT(*)

FROM EMP;

Puede utilizar DISTINCT con las funciones SUM, AVG, COUNT y COUNT_BIG.DISTINCT indica que la función seleccionada tan solo funciona en los valoresexclusivos de una columna.

Ejemplo 3: Esta consulta cuenta las distintas ocupaciones de la tabla EMP:SELECT COUNT(DISTINCT JOB)

FROM EMP;

Las funciones de totales como COUNT ignoran los nulos en los valores en los queoperan. El ejemplo anterior cuenta los valores de ocupaciones diferentes que noson nulos.

Nota: No utilice DISTINCT con las funciones MAX y MIN puesto que suutilización no afecta al resultado de estas funciones.

Tan solo puede utilizar SUM y AVG con números. Puede utilizar MIN, MAX,COUNT y COUNT_BIG con cualquier tipo de datos incorporados.

Referencia relacionada

″DECIMAL o DEC″ (Consulta de DB2 SQL)

SUMSAL MINSAL AVGSAL MAXSAL CNTSAL========= ======== ============== ======== ======128500.00 29250.00 42833.33333333 52750.00 3

Capítulo 5. SQL: lenguaje de DB2 93

|||

|||

|||

|||||||

||

|||

||

Page 104: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Funciones escalaresDB2 ofrece numerosas funciones escalares, incluidas las funciones CHAR,DECIMAL y NULLIF.

Como una función de totales, una función escalar produce un único valor. Adiferencia del argumento de una función de totales, un argumento de una funciónescalar es un único valor.

Ejemplo: YEAR: Esta consulta, que utiliza la función escalar YEAR, devuelve elaño en que se contrató a cada empleado de un departamento concreto:SELECT YEAR(HIREDATE) AS HIREYEAR

FROM EMPWHERE DEPT = 'A00';

La tabla de resultados es similar a la siguiente:HIREYEAR========

197519901985

La función escalar YEAR produce un único valor escalar para cada fila de EMPque cumpla la condición de búsqueda. En este ejemplo, tres filas cumplen lacondición de búsqueda, por lo tanto YEAR tiene como resultado tres valoresescalares.

DB2 ofrece numerosas funciones escalares, incluidas CHAR, DECIMAL y NULLIF.

CHARLa función CHAR devuelve una representación de serie del valor deentrada.

Ejemplo: CHAR: La sentencia de SQL siguiente establece la variable delenguaje principal AVERAGE en la representación de serie de caracteres delsalario medio de un empleado:SELECT CHAR(AVG(SALARY))

INTO :AVERAGEFROM EMP;

DECIMALLa función DECIMAL devuelve una representación decimal del valor deentrada.

Ejemplo: DECIMAL: Suponga que desea cambiar el tipo de datos decimalpara devolver un valor con la precisión y escala que prefiere. El ejemplosiguiente representa el salario medio de los empleados como un númerodecimal de ocho dígitos (precisión) y dos de estos dígitos están a laderecha del separador decimal (escala):SELECT DECIMAL(AVG(SALARY),8,2)

FROM EMP;

La tabla de resultados es similar a la siguiente:==========

32602.30

94 Introducción a DB2 para z/OS

|

|||

|||

|||

|||

|||||

||

|

||

Page 105: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

NULLIFNULLIF devuelve un valor nulo si los dos argumentos de la función soniguales. Si los argumentos no son iguales, NULLIF devuelve el valor delprimer argumento.

Ejemplo: NULLIF: Suponga que desea calcular los ingresos medios detodos los empleados elegibles para recibir una comisión. Todos losempleados elegibles tienen una comisión mayor que 0 y los empleados noelegibles tienen un valor 0 para la comisión:SELECT AVG(SALARY+NULLIF(COMM,0))

AS "AVERAGE EARNINGS"FROM EMP;

La tabla de resultados es similar a la siguiente:AVERAGE EARNINGS================

35248.8461538

La especificación de una expresión simple para la suma del salario y la comisiónen la lista de selección incluiría todos los empleados en el cálculo del promedio.Para evitar que se incluyan los empleados que no ganan una comisión media,puede utiliza la función NULLIF para devolver un valor nulo en su lugar. Elresultado de añadir un valor nulo para la comisión en SALARY es en sí mismo unvalor nulo y las funciones de totales, como AVG, ignoran los valores nulos. Por lotanto, esta utilización de NULLIF en AVG hace que la consulta excluya las filas enlas que el empleado no es elegible para una comisión.

Referencia relacionada

″Funciones escalares″ (Consulta de DB2 SQL)

Funciones anidadasLas funciones escalares y de totales se pueden anidar de varias formas.

Puede anidar funciones de las siguientes formas:v Funciones escalares dentro de funciones escalares

Ejemplo: Suponga que desea conocer el mes y día de contratación de unempleado concreto del departamento D11. Suponga que también desea obtenerel resultado en formato de EE.UU. (mm/dd/aaaa). Utilice esta consulta:SELECT SUBSTR((CHAR(HIREDATE, USA)),1,5)

FROM EMPWHERE LASTNAME = 'BROWN' AND DEPT = 'D11';

La tabla de resultados es similar a la siguiente:=====03/03

v Funciones escalares dentro de funciones de totalesEn algunos casos, puede que sea necesario invocar una función escalar desdeuna función de totales.

Ejemplo: Suponga que desea conocer el número medio de años de empleo paralos empleados del departamento A00. Utilice esta consulta:SELECT AVG(DECIMAL(YEAR(CURRENT DATE - HIREDATE)))

FROM EMPWHERE DEPT = 'A00';

Capítulo 5. SQL: lenguaje de DB2 95

||||

||||

|||

|

|||

|

Page 106: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La tabla de resultados es similar a la siguiente:=======20.6666

La forma real del resultado, 20.6666, depende de cómo se defina la variable delenguaje principal a la que se asigna el resultado.

v Funciones de totales dentro de funciones escalares

Ejemplo: Suponga que desea conocer el año en que se contrató el últimoempleado del departamento E21. Utilice esta consulta:SELECT YEAR(MAX(HIREDATE))

FROM EMPWHERE DEPT = 'E21';

La tabla de resultados es similar a la siguiente:====2002

Conceptos relacionados

“Tipos de datos de fecha, hora e indicaciones de fecha y hora” en la página 188Referencia relacionada

″Funciones de totales″ (Consulta de DB2 SQL)″Funciones escalares″ (Consulta de DB2 SQL)

Funciones definidas por el usuarioLas funciones definidas por el usuario son programas pequeños que se puedenescribir para realizar una operación. Puede utilizar una función definida por elusuario siempre que pueda utilizar una función incorporada.

La sentencia CREATE FUNCTION se utiliza para crear explícitamente una funcióndefinida por el usuario.

Ejemplo: Suponga que define un tipo diferenciado denominado US_DOLLAR. Esposible que desee permitir que se añadan instancias de US_DOLLAR. Puede crearuna función definida por el usuario que utilice una operación de adiciónincorporada y toma instancias de US_DOLLAR como entrada. Este tipo de función,denominada función derivada, no requiere ninguna codificación de aplicación.Como alternativa, puede crear una función definida por el usuario más complejaque puede tomar una instancia de US_DOLLAR como entrada y, a continuación,convertir de dólares de EE.UU. a otra moneda.

Indique la función y especifique su semántica de modo que la función cumpla susnecesidades de programación específicas. Puede utilizar una función definida porel usuario siempre que pueda utilizar una función incorporada.

Conceptos relacionados

“Creación de funciones definidas por el usuario” en la página 241Referencia relacionada

″Funciones definidas por el usuario″ (Consulta de DB2 SQL)

Expresiones CASESe puede utilizar una expresión CASE para ejecutar expresiones de SQL dedistintas formas, según el valor de una condición de búsqueda.

Una de las utilizaciones de una expresión CASE es para sustituir los valores deuna tabla de resultados por unos valores más significativos.

96 Introducción a DB2 para z/OS

Page 107: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Ejemplo: Suponga que desea visualizar el número de empleado, el nombre y nivelde educación de todos los representantes de campo de la tabla EMP. Los niveles deformación se almacenan en la columna EDL como enteros pequeños, pero deseasustituir los valores de esta columna por frases más descriptivas. Utilice unaconsulta como la siguiente:SELECT EMPNO, FIRSTNME, LASTNAME,

CASEWHEN EDL<=12 THEN 'HIGH SCHOOL OR LESS'WHEN EDL>12 AND EDL<=14 THEN 'JUNIOR COLLEGE'WHEN EDL>14 AND EDL<=17 THEN 'FOUR-YEAR COLLEGE'WHEN EDL>17 THEN 'GRADUATE SCHOOL'ELSE 'UNKNOWN'

ENDAS EDUCATIONFROM EMPWHERE JOB='FLD';

La tabla de resultados es similar a la siguiente:EMPNO FIRSTNME LASTNAME EDUCATION====== ======== ======== =================000320 RAMLAL MEHTA FOUR-YEAR COLLEGE000330 WING LEE JUNI0R COLLEGE200340 ROY ALONZO FOUR-YEAR COLLEGE

La expresión CASE sustituye cada valor entero pequeño de EDL por unadescripción del grado de formación de cada representante de campo. Si el valor deEDL es nulo, la expresión CASE sustituye a la palabra UNKNOWN.

Otra utilización de una expresión CASE es para evitar que se realicen operacionesno deseadas como, por ejemplo, una división entre cero, en valores de la columna.

Ejemplo: Si desea determinar la proporción de las comisiones de los empleadosrespecto a sus salarios, debe ejecutar esta consulta:SELECT EMPNO, DEPT,

COMM/SALARY AS "COMMISSION/SALARY",FROM EMP;

Sin embargo, esta sentencia SELECT tiene un problema. Si un empleado no haganado ningún salario, se produce un error de división entre cero. Al modificar lasentencia SELECT siguiente con una expresión CASE puede evitar una divisiónentre cero:SELECT EMPNO, DEPT,

(CASE WHEN SALARY=0 THEN NULLELSE COMM/SALARYEND) AS "COMMISSION/SALARY"FROM EMP;

La expresión CASE determina la proporción de comisión respecto al salarioúnicamente si el salario no es cero. De lo contrario, DB2 establece la proporción enun valor nulo.

Referencia relacionada

″Expresiones CASE″ (Consulta de DB2 SQL)

Modos de filtrar el número de filas devueltasVarios operadores de comparación diferentes en el predicado de una cláusulaWHERE le permiten filtrar el número de filas devueltas.

Capítulo 5. SQL: lenguaje de DB2 97

Page 108: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Puede utilizar una cláusula WHERE para seleccionar las filas que le interesan. Porejemplo, suponga que tan solo desea seleccionar las filas que representan a losempleados que ganan un salario superior a $40 000. Una cláusula WHEREespecifica una condición de búsqueda. Una condición de búsqueda es el criterio queDB2 utiliza para seleccionar filas. Para cualquier fila, el resultado de una condiciónde búsqueda es verdadero, falso o desconocido. Si la condición de búsqueda seevalúa como verdadera, la fila se califica para proceso adicional. Es decir, esta filapuede convertirse en una fila de la tabla de resultados que devuelve la consulta. Sila condición se evalúa como falsa o desconocida, la fila no se califica para procesoadicional.

Una condición de búsqueda consta de uno o más predicados que se combinanmediante la utilización de los operadores lógicos AND, OR y NOT. Un predicadoindividual especifica la prueba que desea que DB2 aplique a cada fila, por ejemplo,SALARY> 40000. Cuando DB2 evalúa un predicado para una fila, se evalúa comoverdadero, falso o desconocido. Los resultados sólo son desconocidos si un valor(denominado operando) del predicado es nulo. Si no se conoce el salario de unempleado determinado (y se establece en un valor nulo), el resultado del predicadoSALARY> 40000 es desconocido.

Puede utilizar varios operadores de comparación diferentes en el predicado de unacláusula WHERE, tal como se muestra en la tabla siguiente.

Tabla 4. Operadores de comparación utilizados en condiciones

Tipo decomparación Especificado con... Ejemplo de predicado con comparación

Igual a nulo IS NULL COMM IS NULL

Igual a = DEPTNO = ’X01’

No igual a <> DEPTNO <> ’X01’

Menor que < AVG(SALARY) < 30000

Menor que o igual a <= SALARY <= 50000

Mayor que > SALARY> 25000

Mayor que o igual a >= SALARY>= 50000

Similar a otro valor LIKE NAME LIKE ’ o STATUS LIKE ’N_’

Como mínimo uno de dospredicados

OR HIREDATE < ’2000-01-01’ OR SALARY < 40000

Ambos predicados AND HIREDATE < ’2000-01-01’ AND SALARY < 40000

Entre dos valores BETWEEN SALARY BETWEEN 20000 AND 40000

Igual a un valor de unconjunto

IN (X, Y, Z) DEPTNO IN (’B01’, ’C01’, ’D11’)

Compara un valor con otrovalor

DISTINCT valor 1 IS DISTINCT de valor 2

Nota: Otro predicado, EXISTS, comprueba la existencia de determinadas filas. El resultado del predicado esverdadero si la tabla de resultados que devuelve la subselección contiene como mínimo una fila. De lo contrario, elresultado es falso.

El predicado XMLEXISTS se puede utilizar para limitar el conjunto de filas que devuelve una consulta, basándose enlos valores de columnas XML. El predicado XMLEXISTS especifica una expresión XPath. Si la expresión XPathdevuelve una secuencia vacía, el valor del predicado XMLEXISTS es falso. De lo contrario, XMLEXISTS devuelve unvalor verdadero. Se devuelven las filas que corresponden a un valor verdadero de XMLEXISTS.

98 Introducción a DB2 para z/OS

||

||||

|||

|||

|||

|||

|||

|||

|||

|||

||||

|||

|||

||||

||||

|||

|||||

Page 109: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

También puede buscar las filas que no cumplen uno de los predicados utilizandola palabra clave NOT antes del predicado especificado.

Valores nulosUn valor nulo indica la ausencia de un valor de columna en una fila. Un valor nulono es igual que cero o todo blancos. Puede recuperar o excluir filas que contenganun valor nulo en una fila específica.

Ejemplo 1: Puede utilizar una cláusula WHERE para recuperar filas que contenganun valor nulo en una columna específica. Especifique:WHERE nombre-columna IS NULL

Ejemplo 2: También puede utilizar un predicado para excluir los valores nulos.Especifique:WHERE nombre-columna IS NOT NULL

No puede utilizar el signo de igualdad para recuperar filas que contengan un valornulo. (WHERE nombre-columna = NULL no está permitido.)

Igualdades y desigualdadesPuede utilizar un signo de igual (=), varios símbolos de desigualdad y la palabraclave NOT para especificar condiciones de búsqueda en la cláusula WHERE.

Cómo probar la igualdad:

Puede utilizar un signo de igual (=) para seleccionar filas para las cuales unacolumna especificada contiene un valor especificado.

Para seleccionar únicamente las filas en las que el número de departamento es A00,utilice WHERE DEPT = ’A00’ en la sentencia SELECT:SELECT FIRSTNME, LASTNAME

FROM EMPWHERE DEPT = 'A00';

Esta consulta recupera el nombre y apellido de cada empleado del departamentoA00.

Cómo probar desigualdades:

Puede utilizar operadores de desigualdad para especificar condiciones debúsqueda en sentencias SELECT.

Puede utilizar las siguientes desigualdades para especificar condiciones debúsqueda:<> < <= > >=

Ejemplo: Para seleccionar los empleados que se contrataron antes del 1 de enerode 2001, puede utilizar esta consulta:SELECT HIREDATE, FIRSTNME, LASTNAME

FROM EMPWHERE HIREDATE < '2001-01-01';

Esta sentencia SELECT recupera la fecha de contratación y el nombre de cadaempleado contratado antes del 2001.

Cómo probar la igualdad o desigualdad en un conjunto de columnas:

Capítulo 5. SQL: lenguaje de DB2 99

Page 110: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Puede utilizar el operador de igual o el operador de no igual para probar si unconjunto de columnas es igual o no es igual a un conjunto de valores.

Ejemplo 1: Para seleccionar las filas en las que el número de departamento es A00y el nivel de educación es 14, puede utilizar la consulta siguiente:SELECT FIRSTNME, LASTNAME

FROM EMPWHERE (DEPT, EDL) = ('A00', 14);

Ejemplo 2: Para seleccionar las filas en las que el número de departamento no esA00, o el nivel de educación no es 14, puede utilizar la consulta siguiente:SELECT FIRSTNME, LASTNAME

FROM EMPWHERE (DEPT, EDL) <> ('A00', 14);

Cómo probar una condición falsa:

Puede utilizar la palabra clave NOT para probar una condición falsa.

Puede utilizar la palabra clave NOT para seleccionar todas las filas para las que elpredicado es falso (pero no las filas para las que el predicado es desconocido). Lapalabra clave NOT debe preceder al predicado.

Ejemplo: Para seleccionar todos los directores cuya compensación no es superior a40 000 $, utilice:SELECT DEPT, EMPNO

FROM EMPWHERE NOT (SALARY + COMM)> 40000 AND JOB = 'MGR'ORDER BY DEPT;

La tabla siguiente compara cláusulas WHERE que utilizan una palabra clave NOTcon operadores de comparación y cláusulas WHERE que solamente utilizanoperadores de comparación. Las cláusulas WHERE son equivalentes.

Tabla 5. Cláusulas WHERE equivalentes

Que utilizan NOT Cláusula equivalente sin NOT

WHERE NOT DEPTNO = ’A00’ WHERE DEPTNO <> ’A00’

WHERE NOT DEPTNO < ’A00’ WHERE DEPTNO>= ’A00’

WHERE NOT DEPTNO> ’A00’ WHERE DEPTNO <= ’A00’

WHERE NOT DEPTNO <> ’A00’ WHERE DEPTNO = ’A00’

WHERE NOT DEPTNO <= ’A00’ WHERE DEPTNO> ’A00’

WHERE NOT DEPTNO>= ’A00’ WHERE DEPTNO < ’A00’

No puede utilizar la palabra clave NOT directamente antes de operadores decomparación de igualdad y desigualdad.

Ejemplo: La cláusula WHERE siguiente tiene como resultado un error:Erróneo:WHERE DEPT NOT = 'A00'

Ejemplo: Las dos cláusulas siguientes son equivalentes:Correcto:WHERE MGRNO NOT IN ('000010', '000020')WHERE NOT MGRNO IN ('000010', '000020')

100 Introducción a DB2 para z/OS

||

|||

Page 111: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Semejanzas de datos de caracteresPuede utilizar el predicado LIKE para especificar una serie de caracteres que seasimilar al valor de columna de las filas que desea seleccionar.

Un patrón LIKE debe coincidir con la serie de caracteres en su totalidad.v Utilice un signo de porcentaje (%) para indicar cualquier serie de cero o más

caracteres.v Utilice un signo de subrayado (_) para indicar cualquier carácter individual.

También puede utilizar NOT LIKE para especificar una serie de caracteres que noes similar al valor de columna de las filas que desea seleccionar.

Cómo seleccionar valores similares a una serie de caracteresdesconocidos

El signo de porcentaje (%) indica “cualquier serie o ninguna serie.”

Ejemplo: La consulta siguiente selecciona datos de cada fila para empleados conlas iniciales D B:SELECT FIRSTNME, LASTNAME, DEPT

FROM EMPWHERE FIRSTNME LIKE 'D%' AND LASTNAME LIKE 'B

Ejemplo: La consulta siguiente selecciona datos de cada fila de la tabla dedepartamentos, donde el nombre de departamento contiene “CENTER” encualquier lugar de su nombre:SELECT DEPTNO, DEPTNAME

FROM DEPTWHERE DEPTNAME LIKE '

Ejemplo: Suponga que la columna DEPTNO es una columna de tres caracteres delongitud fija. Puede utilizar la siguiente condición de búsqueda para devolver filascon números de departamento que empiecen con E y finalicen con 1:...WHERE DEPTNO LIKE 'E%1';

En este ejemplo, si E1 es un número de departamento, su tercer carácter es unblanco y no contiene la condición de búsqueda. Si define la columna DEPTNOcomo una columna de tres caracteres de longitud variable en lugar de longitud fila,el departamento E1 coincidiría con la condición de búsqueda. Las columnas delongitud variable pueden tener cualquier número de caracteres, hasta el númeromáximo especificado cuando se ha creado la columna, incluido éste.

Ejemplo: La consulta siguiente selecciona datos de cada fila de la tabla dedepartamentos, donde el número de departamento empieza con E y contiene un 1:SELECT DEPTNO, DEPTNAME

FROM DEPTWHERE DEPTNO LIKE 'E

Cómo seleccionar un valor similar a un carácter desconocidoindividual

El signo de subrayado (_) indica “cualquier carácter individual.”

Ejemplo: Considere la consulta siguiente:

Capítulo 5. SQL: lenguaje de DB2 101

Page 112: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

SELECT DEPTNO, DEPTNAMEFROM DEPTWHERE DEPTNO LIKE 'E_1';

En este ejemplo, ’E_1’ significa E, seguido de cualquier carácter, seguido de 1.(Tenga cuidado: ’_’ es un carácter de subrayado, no un guión.) E_1’ seleccionaúnicamente números de departamento de tres caracteres que empiezan con E yfinalizan con 1; no selecciona el número de departamento ’E1’.

Conceptos relacionados

“Tipos de datos de serie” en la página 184

Varias condicionesPuede utilizar los operadores AND y OR para combinar predicados y buscar variascondiciones.

Utilice el operador AND para especificar que una búsqueda debe cumplir ambascondiciones. Utilice el operador OR para especificar que la búsqueda debe cumplircomo mínimo una de las condiciones.

Ejemplo: Esta consulta recupera el número de empleado, la fecha de contratacióny el salario de cada empleado contratado antes de 1998 y que gana un salarioinferior a 35 000 $ al año:SELECT EMPNO, HIREDATE, SALARY

FROM EMPWHERE HIREDATE < '1998-01-01' AND SALARY < 35000;

Ejemplo: Esta consulta recupera el número de empleado, la fecha de contratacióny el salario de cada empleado tanto si fue contratado antes de 1998 como si ganaun salario inferior a 35 000 $ al año o ambas cosas

Nota: :SELECT EMPNO, HIREDATE, SALARY

FROM EMPWHERE HIREDATE < '1998-01-01' OR SALARY < 35000;

Cómo utilizar paréntesis con AND y OR

Si utiliza más de dos condiciones con los operadores AND u OR, puede utilizarparéntesis para especificar el orden en que desea que DB2 evalúe las condicionesde búsqueda. Si mueve los paréntesis, el significado de la cláusula WHERE puedecambiar significativamente.

Ejemplo: Esta consulta recupera la fila de cada empleado que cumple comomínimo una de las condiciones siguientes:v La fecha de contratación del empleado es anterior a 1998 y el salario es inferior a

40 000 $.v El nivel de formación del empleado es inferior a 18.SELECT EMPNO

FROM EMPWHERE (HIREDATE < '1998-01-01' AND SALARY < 40000) OR (EDL < 18);

Ejemplo: Esta consulta recupera la fila de cada empleado que cumple ambascondiciones siguientes:v La fecha de contratación del empleado es anterior a 1998.v El salario del empleado es inferior a 40 000 $ o el nivel de formación del

empleado es inferior a 18.

102 Introducción a DB2 para z/OS

Page 113: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

SELECT EMPNOFROM EMPWHERE HIREDATE < '1998-01-01' AND (SALARY < 40000 OR EDL < 18);

Ejemplo: Esta consulta recupera el número de empleado de cada empleado quecumple una de las condiciones siguientes:v Contratado antes de 1998 y con un salario inferior a 40 000 $.v Contratado después del 1 de enero de 1998 y con un salario superior a 40 000 $.SELECT EMPNO

FROM EMPWHERE (HIREDATE < '1998-01-01' AND SALARY < 40000)OR (HIREDATE> '1998-01-01' AND SALARY> 40000);

Cómo utilizar NOT con AND y OR

Cuando se utiliza NOT con AND y OR, la ubicación de los paréntesis esimportante.

Ejemplo: La siguiente consulta recupera el número de empleado, el nivel deformación y la ocupación de cada empleado que cumple ambas condicionessiguientes:v El salario del empleado es inferior a 50 000 $.v El nivel de formación del empleado es inferior a 18.SELECT EMPNO, EDL, JOB

FROM EMPWHERE NOT (SALARY>= 50000) AND (EDL < 18);

En esta consulta, el operador NOT afecta únicamente a la primera condición debúsqueda (SALARY>= 50000).

Ejemplo: La consulta siguiente recupera el número de empleado, el nivel deformación y la ocupación de cada empleado que cumple como mínimo una de lascondiciones siguientes:v El salario del empleado es inferior o igual a $50 000.v El nivel de formación del empleado es inferior o igual a 18.SELECT EMPNO, EDL, JOB

FROM EMPWHERE NOT (SALARY> 50000 AND EDL> 18);

Para negar un conjunto de predicados, encierre todo el conjunto entre paréntesis ypreceda el conjunto con la palabra clave NOT.

Rangos de valoresPuede utilizar BETWEEN para seleccionar filas en las que una columna tiene unvalor dentro de dos límites.

Especifique primero el límite inferior del predicado BETWEEN y, a continuación,especifique el límite superior. Los límites son inclusivos.

Ejemplo: Suponga que especifica la cláusula WHERE siguiente en la que el valorde la columna nombre-columna es un entero:WHERE nombre-columna BETWEEN 6 AND 8

DB2 selecciona todas las filas cuyo valor de nombre-columna es 6, 7 u 8. Si seespecifica un rango entre un número más grande y un número más pequeño (porejemplo, BETWEEN 8 AND 6), el predicado no se evalúa nunca como verdadero.

Capítulo 5. SQL: lenguaje de DB2 103

||

|

|||

Page 114: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Ejemplo: Esta consulta recupera el número de departamento y el número dedirector de cada departamento cuyo número esté entre C00 y D31:SELECT DEPTNO, MGRNO

FROM DEPTWHERE DEPTNO BETWEEN 'C00' AND 'D31';

También puede utilizar NOT BETWEEN para seleccionar filas en las que unacolumna tiene un valor que está fuera de los dos límites.

Valores de una listaPuede utilizar el predicado IN para seleccionar cada fila que tenga un valor decolumna igual a uno de varios valores de una lista.

En la lista de valores después del predicado IN, el orden de los elementos no esimportante y no afecta al orden del resultado. Encierre la lista completa de valoresentre paréntesis y separe los elementos mediante comas; los blancos sonopcionales.

Ejemplo: La siguiente consulta recupera el número de departamento y el númerode gestor para los departamentos B01, C01 y D11:SELECT DEPTNO, MGRNO

FROM DEPTWHERE DEPTNO IN ('B01', 'C01', 'D11');

La utilización del predicado IN proporciona los mismos resultados que unconjunto mucho más largo de condiciones separadas por la palabra clave OR.

Ejemplo: Como alternativa puede codificar la cláusula WHERE en la sentenciaSELECT del ejemplo anterior del modo siguiente:WHERE DEPTNO = 'B01' OR DEPTNO = 'C01' OR DEPTNO = 'D11';

Sin embargo, el predicado IN ahorra tiempo de codificación y es más fácil decomprender.

Ejemplo: La siguiente consulta busca los proyectos que no incluyen empleados enel departamento C01 o E21:SELECT PROJNO, PROJNAME, RESPEMP

FROM PROJWHERE DEPTNO NOT IN ('C01', 'E21');

Modos de ordenar filasPuede utilizar la cláusula ORDER BY para recuperar filas en un orden específico.

La utilización de ORDER BY es el único modo de garantizar que las filas estén enla secuencia deseada. Esta información muestra cómo utilizar la cláusula ORDERBY.

Referencia relacionada

″Cláusula order by″ (Consulta de DB2 SQL)

Clave de clasificaciónPuede especificar el orden de las filas seleccionadas utilizando claves declasificación que se identifican en la cláusula ORDER BY.

104 Introducción a DB2 para z/OS

Page 115: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Una clave de clasificación puede ser un nombre de columna, un entero querepresenta el número de una columna en la tabla de resultados o una expresión.Puede identificar más de una columna

Puede listar las filas en orden ascendente o descendente. Los valores nulos seincluyen los últimos en una clasificación ascendente y los primeros en unaclasificación descendente.

DB2 clasifica series de la secuencia de clasificación asociada con el esquema decodificación de la tabla. DB2 clasifica números de forma algebraica y clasificavalores de fecha y hora de forma cronológica.

Referencia relacionada

″Cláusula order by″ (Consulta de DB2 SQL)

Orden ascendentePuede recuperar resultados en orden ascendente especificando ASC en la cláusulaORDER BY.

Ejemplo: La consulta siguiente recupera los números de empleado, los apellidos ylas fechas de contratación de los empleados del departamento A00 en ordenascendente de fechas de contratación:SELECT EMPNO, LASTNAME, HIREDATE

FROM EMPWHERE DEPT = 'A00'ORDER BY HIREDATE ASC;

La tabla de resultados es similar a la siguiente:EMPNO LASTNAME HIREDATE====== ========= ==========000010 HAAS 1975-01-01200010 HEMMINGER 1985-01-01000120 CONNOR 1990-12-05

Esta sentencia SELECT muestra la antigüedad de los empleados. ASC es el ordende clasificación por omisión.

Referencia relacionada

″Cláusula order by″ (Consulta de DB2 SQL)

Orden descendentePuede recuperar resultados en orden descendente especificando DESC en lacláusula ORDER BY.

Ejemplo: Esta consulta recupera números de departamento, apellidos y númerosde empleados en orden descendente del número de departamento:SELECT DEPT, LASTNAME, EMPNO

FROM EMPWHERE JOB = 'SLS'ORDER BY DEPT DESC;

La tabla de resultados es similar a la siguiente:DEPT LASTNAME EMPNO==== ========= ======C01 NICHOLLS 000140A00 HEMMINGER 200010A00 CONNOR 000120

Referencia relacionada

Capítulo 5. SQL: lenguaje de DB2 105

Page 116: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Cláusula order by″ (Consulta de DB2 SQL)

Claves de clasificación con varias columnasPuede especificar más de un nombre de columna en la cláusula ORDER BY paraordenar filas por más de un valor de columna.

Cuando varias filas tienen el mismo valor de primera columna de clasificación,estas filas siguen el orden de la segunda columna que se identifica en la cláusulaORDER BY, después de la tercera columna de clasificación, etc.

Ejemplo: Considere esta consulta:SELECT JOB, EDL, LASTNAME

FROM EMPWHERE DEPT = 'A00'ORDER BY JOB, EDL;

La tabla de resultados es similar a la siguiente:JOB EDL LASTNAME==== === ==========PRES 18 HAASSLS 14 CONNORSLS 18 HEMMMINGER

Referencia relacionada

″Cláusula order by″ (Consulta de DB2 SQL)

Claves de clasificación con expresionesPuede especificar una expresión con operadores como clave de clasificación para latabla de resultados de una sentencia SELECT.

Cuando especifica una expresión con operadores como clave de clasificación, laconsulta a la que se aplica la clasificación debe ser una subselección.

Ejemplo: La consulta siguiente forma parte de una subselección. La consultarecupera los números de empleado, salarios, comisiones y compensación total(salario más comisión) para empleados con una compensación total superior a40000. Ordene los resultados por compensación total:SELECT EMPNO, SALARY, COMM, SALARY+COMM AS "TOTAL COMP"

FROM EMPWHERE SALARY+COMM> 40000ORDER BY SALARY+COMM;

La tabla de resultados es similar a la siguiente:EMPNO SALARY COMM TOTAL COMP====== ======== ======= ==========000030 38250.00 3060.00 41310.00000020 41250.00 3300.00 44550.00200010 46500.00 4220.00 50720.00000010 52750.00 4220.00 56970.00

Referencia relacionada

″Cláusula order by″ (Consulta de DB2 SQL)

Modos de resumir valores de grupoPuede utilizar la cláusula GROUP BY para resumir valores de grupo.

106 Introducción a DB2 para z/OS

Page 117: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Utilice GROUP BY para agrupar filas por los valores de una o más columnas. Acontinuación, puede aplicar funciones de totales a cada grupo. Puede utilizar unaexpresión en la cláusula GROUP BY para especificar cómo desea agrupar las filas.

Excepto las columnas indicadas en la cláusula GROUP BY, la sentencia SELECTdebe especificar las columnas seleccionadas como un operando de una de lasfunciones de totales.

Ejemplo: Esta consulta lista, para cada departamento, el nivel de formación másalto y más bajo dentro del departamento. La tabla de resultados es similar a lasiguiente:SELECT DEPT, MIN(EDL), MAX(EDL)

FROM EMPGROUP BY DEPT;

DEPT==== == ==A00 14 18B01 18 18C01 18 20D11 16 18E21 14 16

Si una columna especificada en la cláusula GROUP BY contiene valores nulos, DB2considera que estos valores nulos son iguales y todos los nulos forman un únicogrupo.

Dentro de la sentencia SELECT, la cláusula GROUP BY sigue a la cláusula FROM ycualquier cláusula WHERE, y precede a las cláusulas HAVING y ORDER BY.

También puede agrupar las filas por los valores de más de una columna.

Ejemplo: Esta consulta busca el salario medio de los empleados con la mismaocupación en los departamentos D11 y E21:SELECT DEPT, JOB, AVG(SALARY) AS AVG_SALARY

FROM EMPWHERE DEPT IN ('D11', 'E21')GROUP BY DEPT, JOB;

La tabla de resultados es similar a la siguiente:DEPT JOB AVG_SALARY==== === ==============D11 DES 28790.00000000D11 MGR 32250.00000000E21 FLD 23053.33333333

En este ejemplo, DB2 agrupa la primera fila por número de departamento y acontinuación (dentro de cada departamento) por ocupación antes de determinar elvalor de salario medio para cada grupo.

Ejemplo: Esta consulta busca el salario medio para todos los empleados que secontrataron en el mismo año. Puede utilizar la siguiente subselección para agruparlas filas por año de contratación:SELECT AVG(SALARY), YEAR(HIREDATE)

FROM EMPGROUP BY YEAR(HIREDATE);

Referencia relacionada

″Cláusula group by″ (Consulta de DB2 SQL)

Capítulo 5. SQL: lenguaje de DB2 107

Page 118: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Cláusula order by″ (Consulta de DB2 SQL)″Sentencia select″ (Consulta de DB2 SQL)

Modos de fusionar listas de valoresPuede utilizar la palabra clave UNION para fusionar listas de valores.

Una unión es una operación de SQL que combina los resultados de dos sentenciasSELECT para formar una única tabla de resultados. Cuando DB2 encuentra lapalabra clave UNION, procesa cada sentencia SELECT para formar una tabla deresultados temporales. A continuación, DB2 combina la tabla de resultadostemporales de cada sentencia. Si utiliza UNION para combinar dos columnas conel mismo nombre, la columna correspondiente de la tabla de resultados hereda estenombre.

Puede utilizar la palabra clave UNION para obtener diversas filas en la tabla deresultados de una unión o puede utilizar UNION con la palabra clave opcionalALL para obtener todas las filas, incluidos los duplicados.

Cómo eliminar duplicados

Utilice UNION para eliminar duplicados al fusionar listas de valores que seobtienen de varias tablas. El ejemplo siguiente combina valores de la tabla EMP yde la tabla EMPPROJACT.

Ejemplo 1: Liste los números de empleado de todos los empleados para los cualesse cumplen las siguientes sentencias:v El número de departamento de empleado empieza con ’D’.v El empleado se asigna a proyectos cuyos números de proyecto empiezan con

’MA’.SELECT EMPNO FROM EMP

WHERE DEPT LIKE 'D%'UNIONSELECT EMPNO FROM EMPPROJACTWHERE PROJNO LIKE 'MA

La tabla de resultados es similar a la siguiente:EMPNO======000010000020000060000200000220

El resultado es la unión de dos tablas de resultados, una formada a partir de latabla EMP y otra formada a partir de la tabla EMPPROJACT. El resultado, unatabla de una columna, es una lista de números de empleados. Las entradas de lalista son diferentes.

Cómo conservar duplicados

Si desea conservar los duplicados en el resultado de una unión, especifique lapalabra clave opcional ALL después de la palabra clave UNION.

Ejemplo 1: Sustituya la palabra clave UNION del ejemplo anterior por UNIONALL:

108 Introducción a DB2 para z/OS

Page 119: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

SELECT EMPNO FROM EMPWHERE DEPT LIKE 'D%'UNION ALLSELECT EMPNO FROM EMPPROJACTWHERE PROJNO LIKE 'MA

La tabla de resultados es similar a la siguiente:EMPNO======000220000200000060000010000020000010

Ahora, 000010 se incluye en la lista más de una vez debido a que este empleadotrabaja en un departamento que empieza con ’D’ y también trabaja en un proyectoque empieza con ’MA’.

Referencia relacionada

″Selección completa″ (Consulta de DB2 SQL)

Modos de especificar condiciones de búsquedaPuede utilizar la cláusula HAVING de varios modos para especificar condicionesde búsqueda.

Utilice HAVING para especificar una condición de búsqueda que cada gruporecuperado debe cumplir. La cláusula HAVING actúa como una cláusula WHEREpara grupos y puede contener el mismo tipo de condiciones de búsqueda que seespecifican en una cláusula WHERE. La condición de búsqueda de la cláusulaHAVING prueba las propiedades de cada grupo en lugar de las propiedades defilas individuales del grupo.

Ejemplo: Considere esta consulta:SELECT DEPT, AVG(SALARY) AS AVG_SALARY

FROM EMPGROUP BY DEPTHAVING COUNT(*)> 1ORDER BY DEPT;

La tabla de resultados es similar a la siguiente:DEPT AVG_SALARY==== ==============A00 42833.33333333C01 31696.66666666D11 29943.33333333E21 23053.33333333

La cláusula HAVING COUNT(*)> 1 asegura que sólo se visualicen losdepartamentos con más de un miembro. (En este caso, el departamento B01 no sevisualiza porque tan solo está formado por un empleado.)

Ejemplo: Puede utilizar la cláusula HAVING para recuperar el salario medio y elnivel de formación mínimo de los empleados contratados después de 1990 y queinforman a los departamentos en los que el nivel de formación es mayor o igualque 14. Si suponemos que desea obtener resultados sólo para los departamentosA00 y D11, la siguiente sentencia de SQL prueba la propiedad de grupo,MIN(EDL):

Capítulo 5. SQL: lenguaje de DB2 109

Page 120: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

SELECT DEPT, AVG(SALARY) AS AVG_SALARY,MIN(EDL) AS MIN_EDLFROM EMPWHERE HIREDATE>= '1990-01-01' AND DEPT IN ('A00', 'D11')GROUP BY DEPTHAVING MIN(EDL)>= 14;

La tabla de resultados es similar a la siguiente:DEPT AVG_SALARY MIN_EDL==== ============== =======A00 29250.00000000 14D11 29943.33333333 16

Si especifica GROUP BY y HAVING, la cláusula HAVING debe seguir a la cláusulaGROUP BY en la sintaxis. Una función de una cláusula HAVING puede incluirvarias apariciones de la cláusula DISTINCT. También puede conectar variospredicados de una cláusula HAVING con AND y OR, y puede utilizar NOT paracualquier predicado de una condición de búsqueda.

Conceptos relacionados

“Modos de resumir valores de grupo” en la página 106Referencia relacionada

″Cláusula having″ (Consulta de DB2 SQL)″Cláusula where″ (Consulta de DB2 SQL)″Sentencia select″ (Consulta de DB2 SQL)

Modos de unir datos de más de una tabla

Si desea ver información de varias tablas, puede utilizar una sentencia SELECT,que recupera y une valores de columna de una o más tablas en una única fila. Larecuperación se basa en una condición especificada, generalmente de coincidenciade valores de columna.

Normalmente, el principal componente de una unión es la coincidencia de valoresde columna de filas de cada tabla que participa en la unión. El resultado de unaunión asocia filas de una tabla con filas de otra tabla. Según el tipo de operaciónde unión, pueden formarse algunas filas que contengan valores de columna de unatabla que no coincidan con valores de columna de otra tabla.

Una tabla unida especifica una tabla de resultados intermedios que es el resultadode una unión interna o una unión externa. La tabla se obtiene aplicando uno de losoperadores de unión (INNER, FULL OUTER, LEFT OUTER o RIGHT OUTER) asus operandos.

DB2 da soporte a uniones internas y uniones externas (izquierda, derecha ycompleta).

DB2 da soporte a uniones internas y uniones externas (izquierda, derecha ycompleta).

Unión internaCombina cada fila de la tabla izquierda con cada fila de la tabla derecha,conservando sólo las filas en las que la condición de unión se cumple.

Unión externaIncluye las filas producidas por la unión interna, más las filas que faltan,según el tipo de unión externa:

110 Introducción a DB2 para z/OS

||||

||||

Page 121: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Unión externa izquierdaIncluye las filas de la tabla izquierda que faltaban en la unióninterna.

Unión externa derechaIncluye las filas de la tabla derecha que faltaban en la unióninterna.

Unión externa completaIncluye las filas de ambas tablas que faltaban en la unión interna.

La mayoría de ejemplos de este tema utilizan dos tablas de ejemplo: la tabla decomponentes (PARTS) y la tabla de productos (PRODUCTS), formada porexistencias de hardware.

La figura siguiente muestra que cada fila de la tabla PARTS contiene datos de deun único componente: el nombre de componente, el número de componente y elproveedor del componente.

La figura siguiente muestra que cada fila de la tabla PRODUCTS contiene datospara un único producto: el número, el nombre y el precio del producto.

La figura siguiente muestra las distintas formas de combinar las tablas PARTS yPRODUCTS utilizando funciones de unión externa. La ilustración se basa en unsubconjunto de columnas de cada tabla.

Figura 23. Tabla PARTS de ejemplo

Figura 24. Tabla PRODUCTS de ejemplo

Capítulo 5. SQL: lenguaje de DB2 111

Page 122: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Una unión interna consta de filas formadas a partir de las tablas PARTS yPRODUCTS, basándose en la coincidencia de igualdad de valores de columnaentre la columna PROD# de la tabla PARTS y la columna PROD# de la tablaPRODUCTS. La unión interna no contiene ninguna fila formada a partir decolumnas no coincidentes cuando las columnas PROD# no son iguales.

Se pueden especificar uniones en la cláusula FROM de una consulta. Se unen losdatos de las filas que cumplen las condiciones de búsqueda de todas las tablaspara formar la tabla de resultados.

Las columnas resultantes de una unión tienen nombres si la lista SELECT másexterior hace referencia a columnas base. Sin embargo, si se utiliza una función(por ejemplo, COALESCE) para crear una columna del resultado, dicha columnano tiene ningún nombre a menos que se utilice la cláusula AS en la lista SELECT.

Referencia relacionada

″Sentencia select″ (Consulta de DB2 SQL)

Unión internaPuede solicitar una unión interna, ejecutando una sentencia SELECT en la queespecifique las tablas a las que desea unir la cláusula FROM y especificar unacláusula WHERE o una cláusula ON para indicar la condición de unión. Lacondición de unión puede ser cualquier condición de búsqueda simple ocompuesta que no contenga ninguna referencia de subconsulta.

En el tipo más simple de unión interna, la condición de unión escolumna1=columna2.

Ejemplo: Puede unir las tablas PARTS y PRODUCTS en la columna PROD# paraformar una tabla de componentes con sus proveedores y los productos que utilizanlos componentes. Considere las dos sentencias SELECT siguientes:

Figura 25. Uniones externas de dos tablas. Cada unión se realiza en la columna PROD#.

112 Introducción a DB2 para z/OS

Page 123: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCTFROM PARTS, PRODUCTSWHERE PARTS.PROD# = PRODUCTS.PROD#;

SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCTFROM PARTS INNER JOIN PRODUCTSON PARTS.PROD# = PRODUCTS.PROD#;

Cualquiera de estas sentencias produce el resultado siguiente:PART SUPPLIER PROD# PRODUCT======= ============ ===== =========WIRE ACWF 10 GENERATORMAGNETS BATEMAN 10 GENERATORBLADES ACE_STEEL 205 SAWPLASTIC PLASTIK_CORP 30 RELAY

Observe tres cosas en este ejemplo:v Un componente de la tabla PARTS (OIL) tiene un número de producto (160) que

no está en la tabla PRODUCTS. Un producto (505, SCREWDRIVER) no tienecomponentes listados en la tabla PARTS. Ni OIL ni SCREWDRIVER aparecen enel resultado de la unión.

v La sintaxis explícita expresa que esta unión es una unión interna. Puede utilizarINNER JOIN en la cláusula FROM en lugar de la coma. ON (más que WHERE)especifica la condición de unión cuando se unen tablas explícitamente en lacláusula FROM.

v Si no especifica una cláusula WHERE en la primera forma de la consulta, latabla de resultados contiene todas las combinaciones posibles de filas para lastablas que se identifican en la cláusula FROM. Puede obtener el mismo resultadoespecificando una condición de unión que sea siempre verdadera en la segundaforma de la consulta.

Ejemplo: Considere esta consulta:SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT

FROM PARTS INNER JOIN PRODUCTSON 1=1;

El número de filas de la tabla de resultados es el producto del número de filasde cada tabla:PART SUPPLIER PROD# PRODUCT======= ============ ===== ===========WIRE ACWF 10 SCREWDRIVERWIRE ACWF 10 RELAYWIRE ACWF 10 SAWWIRE ACWF 10 GENERATOROIL WESTERN_CHEM 160 SCREWDRIVEROIL WESTERN_CHEM 160 RELAYOIL WESTERN_CHEM 160 SAWOIL WESTERN_CHEM 160 GENERATOR...

Puede especificar condiciones de unión más complicadas para obtener diferentesconjuntos de resultados.

Ejemplo: Para eliminar los proveedores que empiezan con la letra A de la tabla decomponentes, proveedores, números de producto y productos, escriba una consultacomo la siguiente:

Capítulo 5. SQL: lenguaje de DB2 113

Page 124: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCTFROM PARTS INNER JOIN PRODUCTS

ON PARTS.PROD# = PRODUCTS.PROD#AND SUPPLIER NOT LIKE 'A%';

El resultado de la consulta es todas las filas que no tienen un proveedor queempieza con la letra A:PART SUPPLIER PROD# PRODUCT======= ============ ===== =========MAGNETS BATEMAN 10 GENERATORPLASTIC PLASTIK_CORP 30 RELAY

Ejemplo: En este ejemplo se une la tabla PROJ a sí misma utilizando una unióninterna. La consulta devuelve el número y nombre de cada proyecto principal,seguido del número y nombre del proyecto que forma parte del mismo:SELECT A.PROJNO, A.PROJNAME, B.PROJNO, B.PROJNAME

FROM PROJ A, PROJ BWHERE A.PROJNO = B.MAJPROJ;

En este ejemplo, A indica la primera instancia de la tabla PROJ y B indica unasegunda instancia de esta tabla. La condición de unión es una condición en la queel valor de la columna PROJNO de la tabla PROJ A debe ser igual al valor de lacolumna MAJPROJ de la tabla PROJ B.

La tabla de resultados es similar a la siguiente:PROJNO PROJNAME PROJNO PROJNAME====== =============== ====== ====================IF2000 USER EDUCATION MA2100 DOCUMENTATIONMA2100 DOCUMENTATION MA2110 SYSTEM PROGRAMMINGOP2011 SYSTEMS SUPPORT OP2012 APPLICATIONS SUPPORT

En este ejemplo, la coma en la cláusula FROM especifica implícitamente una unióninterna y actúa del mismo modo que si se hubieran utilizado las palabras claveINNER JOIN. Cuando utiliza la coma para una unión interna, debe especificar lacondición de unión en la cláusula WHERE. Cuando utiliza las palabras claveINNER JOIN, debe especificar la condición de unión en la cláusula ON.

Conceptos relacionados

“Subconsultas” en la página 117“Modos de acceder a datos” en la página 87Referencia relacionada

″Sentencia select″ (Consulta de DB2 SQL)

Unión externa izquierda

La cláusula LEFT OUTER JOIN incluye filas de la tabla que se especifica antes deLEFT OUTER JOIN que no tienen valores coincidentes en la tabla que se especificadespués de LEFT OUTER JOIN.

Al igual que en una unión interna, la condición de unión de una unión externaizquierda puede ser cualquier condición de búsqueda simple o compuesta que nocontenga ninguna referencia de subconsulta.

Ejemplo: Para incluir filas de la tabla PARTS que no tengan valores coincidentesen la tabla PRODUCTS e incluir los precios superiores a $10.00, ejecute estaconsulta:

114 Introducción a DB2 para z/OS

|||

Page 125: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT, PRICEFROM PARTS LEFT OUTER JOIN PRODUCTSON PARTS.PROD#=PRODUCTS.PROD#AND PRODUCTS.PRICE>10.00;

La tabla de resultados es similar a la siguiente:PART SUPPLIER PROD# PRODUCT PRICE======= ============ ===== ========= =====WIRE ACWF 10 GENERATOR 45.75MAGNETS BATEMAN 10 GENERATOR 45.75OIL WESTERN_CHEM 160 --------- -----BLADES ACE_STEEL 205 SAW 18.90PLASTIC PLASTIK_CORP 30 --------- -----

Debido a que la tabla PARTS puede tener filas que no coincidan con valores de lascolumnas unidas y debido a que la columna PRICE no está en la tabla PARTS, lasfilas en las que el valor de PRICE no es superior a $10.00 se incluyen en elresultado de la unión, pero el valor de PRICE se establece como nulo.

En esta tabla de resultados, la fila para PROD# 160 tiene valores nulos en las doscolumnas de la derecha debido a que PROD# 160 no coincide con otro número deproducto. PROD# 30 tiene valores nulos en las dos columnas de la derecha debidoa que el precio de PROD# 30 es inferior a $10.00.

Conceptos relacionados

“Subconsultas” en la página 117Referencia relacionada

″Sentencia select″ (Consulta de DB2 SQL)

Unión externa derecha

La cláusula RIGHT OUTER JOIN incluye las filas de la tabla que se especificadespués de RIGHT OUTER JOIN que no tienen valores coincidentes en la tablaque se especifica antes de RIGHT OUTER JOIN.

Al igual que en una unión interna, la condición de unión de una unión externaderecha puede ser cualquier condición de búsqueda simple o compuesta que nocontenga ninguna referencia de subconsulta.

Ejemplo: Para incluir las filas de la tabla PRODUCTS que no tengan valorescoincidentes en la tabla PARTS y para incluir únicamente los precios superiores a$10.00, ejecute la consulta siguiente:SELECT PART, SUPPLIER, PRODUCTS.PROD#, PRODUCT, PRICE

FROM PARTS RIGHT OUTER JOIN PRODUCTSON PARTS.PROD# = PRODUCTS.PROD#WHERE PRODUCTS.PRICE>10.00;

La tabla de resultados es similar a la siguiente:PART SUPPLIER PROD# PRODUCT PRICE======= ============ ===== ========== =====MAGNETS BATEMAN 10 GENERATOR 45.75WIRE ACWF 10 GENERATOR 45.75BLADES ACE_STEEL 205 SAW 18.90

Debido a que la tabla PRODUCTS no puede tener filas que no coincidan convalores de las columnas unidas y debido a que la columna PRICE está en la tablaPRODUCTS, las filas en las que el valor de PRICE no es superior a $10.00 no seincluyen en el resultado de la unión.

Capítulo 5. SQL: lenguaje de DB2 115

|||

Page 126: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Referencia relacionada

″Sentencia select″ (Consulta de DB2 SQL)

Unión externa completaLa cláusula FULL OUTER JOIN produce como resultado la inclusión de filas deambas tablas. Si falta un valor cuando se unen las filas, este valor es nulo en latabla de resultados.

La condición de unión para una unión externa completa debe ser una condición debúsqueda que compare dos columnas. Los predicados de la condición de búsquedase pueden combinar únicamente con AND. Cada predicado debe tener la forma’expresión = expresión’.

Ejemplo 1: Esta consulta realiza una unión externa completa de las tablas PARTS yPRODUCTS:SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT

FROM PARTS FULL OUTER JOIN PRODUCTSON PARTS.PROD# = PRODUCTS.PROD#;

La tabla de resultados es similar a la siguiente:PART SUPPLIER PROD# PRODUCT======== ============ ===== ===========WIRE ACWF 10 GENERATORMAGNETS BATEMAN 10 GENERATOROIL WESTERN_CHEM 160 -----------BLADES ACE_STEEL 205 SAWPLASTIC PLASTIK_CORP 30 RELAY------- ------------ ----- SCREWDRIVER

Utilización de COALESCE

Esta función puede ser especialmente útil en operaciones de unión externacompleta debido a que devuelve el primer valor no nulo. Por ejemplo, observe queel resultado del ejemplo anterior es nulo para SCREWDRIVER, aunque la tablaPRODUCTS contiene un número de producto para SCREWDRIVER. Si por elcontrario selecciona PRODUCTS.PROD#, PROD# es nulo para OIL. Si seleccionaPRODUCTS.PROD# y PARTS.PROD#, el resultado contiene dos columnas y ambascolumnas contienen algunos valores nulos.

Ejemplo 2: Puede fusionar datos de ambas columnas en una única columna,eliminando los valores nulos, mediante la función COALESCE. Considere estaconsulta con las mismas tablas PARTS y PRODUCTS:SELECT PART, SUPPLIER,

COALESCE(PARTS.PROD#, PRODUCTS.PROD#) AS PRODNUM, PRODUCTFROM PARTS FULL OUTER JOIN PRODUCTSON PARTS.PROD# = PRODUCTS.PROD#;

Esta sentencia produce el resultado siguiente:PART SUPPLIER PRODNUM PRODUCT======= ============ ======= ===========WIRE ACWF 10 GENERATORMAGNETS BATEMAN 10 GENERATOROIL WESTERN_CHEM 160 -----------BLADES ACE_STEEL 205 SAWPLASTIC PLASTIK_CORP 30 RELAY------- ------------ 505 SCREWDRIVER

116 Introducción a DB2 para z/OS

Page 127: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La cláusula AS, AS PRODNUM, proporciona un nombre para el resultado de lafunción COALESCE.

Referencia relacionada

″Sentencia select″ (Consulta de DB2 SQL)

SubconsultasPuede utilizar una subconsulta para limitar una condición de búsqueda basada eninformación de una tabla intermedia.

Una subconsulta es una sentencia de SQL anidada, o subselección, que contiene unasentencia SELECT dentro de la cláusula WHERE o HAVING de otra sentencia deSQL. También puede codificar subconsultas más complejas como, por ejemplo,subconsultas correlacionadas y subconsultas con predicados cuantificados.

Puede utilizar una subconsulta cuando necesita limitar la condición de búsquedabasada en información de una tabla intermedia. Por ejemplo, puede que deseebuscar todos los números de empleado de una tabla que también existan para unproyecto concreto en una segunda tabla.

Ejemplo: Suponga que desea obtener una lista de los números de empleado,nombres y comisiones de todos los empleados que trabajan en un proyectodeterminado como, por ejemplo, el número de proyecto IF2000. La primera partede la sentencia SELECT es fácil de escribir:SELECT EMPNO, LASTNAME, COMM

FROM EMPWHERE EMPNO...

Sin embargo, no puede continuar porque la tabla EMP no incluye datos sobre elnúmero de proyecto. No puede saber qué empleados trabajan en el proyectoIF2000 sin emitir otra sentencia SELECT para la tabla EMPPROJACT.

Puede utilizar una subselección para solucionar este problema. La sentenciaSELECT que contiene la subconsulta es la sentencia SELECT externa.

Ejemplo: Esta consulta amplía la sentencia SELECT que ha iniciado en el ejemploanterior para incluir una subconsulta:SELECT EMPNO, LASTNAME, COMM

FROM EMPWHERE EMPNO IN

(SELECT EMPNOFROM EMPPROJACTWHERE PROJNO = 'IF2000');

Para comprender mejor qué sucede como resultado de esta sentencia de SQL,imagine que DB2 realiza el proceso siguiente:1. DB2 evalúa la subconsulta para obtener una lista de valores de EMPNO:

(SELECT EMPNOFROM EMPPROJACTWHERE PROJNO = 'IF2000');

El resultado es la siguiente tabla de resultados intermedios:EMPNO======000140000140000030

Capítulo 5. SQL: lenguaje de DB2 117

Page 128: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

2. A continuación, la tabla de resultados intermedios sirve como lista en lacondición de búsqueda de la sentencia SELECT externa. En realidad, DB2ejecuta esta sentencia SELECT:SELECT EMPNO, LASTNAME, COMM

FROM EMPWHERE EMPNO IN('000140', '000030');

La tabla de resultados es similar a la siguiente:EMPNO LASTNAME COMM===== ======== =======000140 NICHOLLS 2274.00000030 KWAN 3060.00

Modos de acceder a datos de DB2 que no están en una tablaPuede acceder a datos de DB2 que no están en una tabla devolviendo el valor deuna expresión de SQL (que no incluye una columna de una tabla) en una variablede lenguaje principal.

El acceso se puede llevar a cabo de dos modos.v Establezca el contenido de una variable de lenguaje principal en el valor de una

expresión utilizando la sentencia de asignación de variable de lenguaje principalSET.

Ejemplo:EXEC SQL SET :HVRANDVAL = RAND(:HVRAND);

v Además, puede utilizar la sentencia VALUES INTO para devolver el valor deuna expresión en una variable de lenguaje principal.

Ejemplo:EXEC SQL VALUES RAND(:HVRAND)INTO :HVRANDVAL;

Conceptos relacionados

“Acceso de datos con variables de lenguaje principal” en la página 156

Modos de modificar datos

Puede utilizar sentencias de SQL para añadir, modificar, fusionar y eliminar datosen tablas existentes. Esta información proporciona una visión general sobre cómoutilizar las sentencias INSERT, UPDATE, MERGE y DELETE para manipular datosde DB2.

Si inserta, actualiza, fusiona o suprime datos, puede recuperar los datosinmediatamente. Si abre un cursor y, a continuación, modifica datos, tan solo verálos datos modificados en algunas circunstancias.

Cualquier modificación debe mantener la integridad de las relaciones entre tablas.DB2 asegura que una operación de inserción, actualización o supresión no violeninguna restricción de referencia ni restricción de comprobación definida para unatabla.

Antes de modificar datos de las tablas, debe crear tablas duplicadas con fines deprueba para que los datos de las tablas originales permanezcan intactos. Supongaque ha creado dos tablas nuevas, NEWDEPT y NEWEMP, que son los duplicadosde las tablas DEPT y EMP.

118 Introducción a DB2 para z/OS

||||

Page 129: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Editor de tablas de DB2

Utilice la herramienta Editor de tablas de DB2 para acceder, actualizar, suprimir ycrear datos de forma rápida y fácil entre varios sistemas operativos de base dedatos de DB2. Las características de esta herramienta le permiten llevar a cabo lastareas siguientes:v Navegar por bases de datos, tablas y vistas de DB2 y buscar datos relacionados.v Editar tablas de DB2 utilizando puntos de entrada de usuario final que incluyan

navegadores web habilitados para Java, interfaces basadas en Java iniciadasdesde el Centro de control de DB2, Microsoft Windows o una interfaz ISPF.

v Crear formularios de edición de tablas basados en Java o Windows específicosde tareas y versátiles que contengan validación de datos incorporados y reglasempresariales.Conceptos relacionados

“Utilización de restricciones de comprobación para imponer la validez devalores de columnas” en la página 196

InsercionesPuede utilizar una sentencia INSERT o una sentencia MERGE para añadir filasnuevas a una tabla o vista.

Puede utilizar una sentencia INSERT para llevar a cabo las acciones siguientes:v Especificar los valores que deben insertarse en una única fila. Puede especificar

constantes, variables de lenguaje principal, expresiones, DEFAULT o NULL.v Utilizar matrices de variables de lenguaje principal en la cláusula VALUES de la

sentencia INSERT FOR n ROWS para insertar varias filas en una tabla. Tambiénpuede utilizar una sentencia MERGE con matrices de variables de lenguajeprincipal para insertar y actualizar datos.

v Incluir una sentencia SELECT en la sentencia INSERT para indicar a DB2 queotra tabla o vista contiene los datos para la fila o filas nuevas.

Ejemplo 1: Suponga que desea añadir una fila nueva a la tabla NEWDEPT. Utiliceesta sentencia INSERT:INSERT INTO NEWDEPT (DEPTNO, DEPTNAME, MGRNO, ADMRDEPT)

VALUES ('E31', 'PUBLISHING', '000020', 'D11');

Ejemplo 2: Después de insertar la nueva fila de departamento en la tablaNEWDEPT, puede utilizar una sentencia SELECT para ver cómo aparece la tablamodificada. Utilice esta consulta:SELECT *

FROM NEWDEPTWHERE DEPTNO LIKE 'E%'ORDER BY DEPTNO;

La tabla de resultados le proporciona la nueva fila de departamento que hainsertado para el departamento E31 y los departamentos existentes con un númerode departamento que empieza con E.DEPTNO DEPTNAME MGRNO ADMRDEPT====== ================ ====== ========E21 SOFTWARE SUPPORT ------ D11E31 PUBLISHING 000020 D11

También puede añadir datos nuevos a una tabla existente de otras formas. Quizásnecesite añadir grandes cantidades de datos a una tabla existente. Algunas

Capítulo 5. SQL: lenguaje de DB2 119

||||

||||

Page 130: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

opciones eficaces incluyen la copia de una tabla en otra tabla, la escritura de unprograma de aplicación que entre datos en una tabla y la utilización del programade utilidad LOAD de DB2 para entrar datos.

Conceptos relacionados

Capítulo 6, “Programación de aplicaciones para DB2”, en la página 147Referencia relacionada

″INSERT″ (Consulta de DB2 SQL)″MERGE″ (Consulta de DB2 SQL)

ActualizacionesPuede cambiar los datos de una tabla utilizando la sentencia UPDATE o lasentencia MERGE.

La sentencia UPDATE modifica cero o más filas de una tabla, dependiendo decuántas filas cumplan la condición de búsqueda que se especifica en la cláusulaWHERE.

Puede utilizar una sentencia UPDATE o MERGE para especificar los valores quedeben actualizarse de una única fila. Puede especificar constantes, variables delenguaje principal, expresiones, DEFAULT o NULL. Especifique NULL paraeliminar un valor de una columna de una fila (sin eliminar la fila).

Ejemplo: Suponga que un empleado obtiene un ascenso. Para actualizar varioselementos de los datos del empleado en la tabla NEWEMP que refleja elmovimiento, utilice la sentencia UPDATE:UPDATE NEWEMP

SET JOB = 'MGR',DEPT = 'E21'WHERE EMPNO = '100125';

Referencia relacionada

″UPDATE″ (Consulta de DB2 SQL)″MERGE″ (Consulta de DB2 SQL)″Cláusula where″ (Consulta de DB2 SQL)

SupresionesPuede utilizar la sentencia DELETE para eliminar filas enteras de una tabla.

La sentencia DELETE elimina cero o más filas de una tabla, dependiendo decuántas filas cumplen la condición de búsqueda que se especifica en la cláusulaWHERE. Si se omite una cláusula WHERE de una sentencia DELETE, DB2 eliminatodas las filas de la tabla o vista que se mencionan. Por lo tanto, utilice la sentenciaDELETE con cuidado. La sentencia DELETE no elimina columnas específicas de lafila.

Ejemplo: Considere esta sentencia DELETE:DELETE FROM NEWEMP

WHERE EMPNO = '000060';

Esta sentencia DELETE suprime cada fila de la tabla NEWEMP que tenga elnúmero de empleado 000060.

Referencia relacionada

″DELETE″ (Consulta de DB2 SQL)

120 Introducción a DB2 para z/OS

|||

||||

Page 131: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Cláusula where″ (Consulta de DB2 SQL)

Modos de ejecutar SQLPuede ejecutar sentencias de SQL en aplicaciones o de forma interactiva. El métodode preparación de una sentencia de SQL para ejecutarla y la persistencia de suforma operativa determinan la diferencia entre SQL estático y SQL dinámico.

SQL estáticoLa forma de origen de una sentencia de SQL estático se incluye en un programa deaplicación que se escribe en un lenguaje de programación de sistema principalcomo, por ejemplo, C. La sentencia se prepara antes de ejecutar el programa y laforma operativa de la sentencia permanece hasta después de la ejecución delprograma.

Puede utilizar SQL estático cuando sabe antes del tiempo de ejecución quésentencias de SQL necesita ejecutar la aplicación.

Conceptos relacionados

″Diferencias entre SQL estático y dinámico″ (DB2 Application Programming andSQL Guide)Referencia relacionada

″SQL estático″ (Consulta de DB2 SQL)

SQL dinámicoLas sentencias de SQL dinámico se construyen y preparan durante el tiempo deejecución.

Puede utilizar SQL dinámico si desconoce el contenido de una sentencia de SQL alescribir un programa o antes de ejecutarlo.

Conceptos relacionados

″Diferencias entre SQL estático y dinámico″ (DB2 Application Programming andSQL Guide)Referencia relacionada

″SQL dinámico″ (Consulta de DB2 SQL)

DB2 ODBCDB2 ODBC (Open Database Connectivity) es una interfaz de programación deaplicaciones (API) que permite que programas de aplicaciones C y C++ accedan abases de datos relacionales.

Esta interfaz ofrece una alternativa a la utilización de SQL estático incorporado yun modo distinto de ejecutar SQL dinámico. Mediante la interfaz, una aplicacióninvoca una función C durante el tiempo de ejecución para conectarse a una fuentede datos, para emitir sentencias de SQL de forma dinámica y recuperar datos einformación de estado.

Referencia relacionada

DB2 ODBC Guide and Reference

Acceso a DB2 para Java: SQLJ y JDBCSQLJ y JDBC son dos métodos para acceder a datos de DB2 desde el lenguaje deprogramación Java.

Capítulo 5. SQL: lenguaje de DB2 121

Page 132: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

En general, las aplicaciones de Java utilizan SQLJ para SQL estático y utilizanJDBC para SQL dinámico.

Conceptos relacionados

“Utilización de Java para ejecutar SQL estático y dinámico” en la página 165Información relacionada

DB2 Application Programming Guide and Reference for Java

SQL interactivoSQL interactivo hace referencia a sentencias de SQL que se someten a DB2utilizando una herramienta de consulta como, por ejemplo, DB2 QMF paraWorkstation.

El modo más fácil y eficaz de ejecutar SQL es utilizando una herramienta deconsulta. DB2 Query Management Facility (QMF) para Workstation es unaherramienta de consulta popular que le permite entrar y ejecutar las sentencias deSQL de un modo fácil. Este tema le informa sobre la utilización de DB2 QMF paraWorkstation para crear y ejecutar sentencias de SQL. DB2 QMF para Workstationsimplifica el acceso a DB2 desde una estación de trabajo. De hecho, QMF paraWorkstation se creó para DB2.

Aunque este tema se centra en DB2 QMF para Workstation, hay disponibles otrasopciones. Puede utilizar DB2 QMF para WebSphere para entrar y ejecutarsentencias de SQL desde el navegador web o utilizar DB2 QMF para TSO/CICSpara entrar y ejecutar sentencias de SQL desde TSO o CICS. Además, puede entrary ejecutar sentencias de SQL en un terminal TSO utilizando el recurso SPUFI(procesador de SQL utilizando entrada de archivo). SPUFI prepara y ejecuta estassentencias dinámicamente. Todas estas herramientas preparan y ejecutandinámicamente las sentencias de SQL.

La familia de tecnologías de DB2 QMF establecen una producción elevada y elcompartimiento de inteligencia empresarial para tareas orientadas a la informaciónen la organización. DB2 QMF ofrece muchas ventajas, incluyendo las siguientes:v Soporte para funcionalidad de la base de datos de DB2, incluyendo nombres

largos, Unicode y mejoras de SQLv Posibilidad de arrastrar y soltar para crear analíticas OLAP, consultas de SQL,

tablas de pivote y otros análisis e informes empresarialesv Paneles de instrumentos ejecutivos y soluciones visuales de datos que ofrecen

una funcionalidad visual completa e interactiva e interfaces para análisis dedatos

v Soporte para DB2 QMF para WebSphere, una herramienta que conviertecualquier navegador web en un cliente ligero, sin ningún mantenimiento, paraacceso visual bajo demanda a datos empresariales de DB2

v Entorno de desarrollo entre plataformas con ingeniería rediseñadav Nuevo modelo de seguridad para control y personalización de acceso

Las soluciones visuales previamente proporcionadas por DB2 QMF Visionaryactualmente se incluyen en la tecnología básica de DB2 QMF.

Además de DB2 QMF para Workstation, que se describe en este tema, la familia deDB2 QMF incluye las ediciones siguientes:

122 Introducción a DB2 para z/OS

||

|||

|

|

||

Page 133: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v DB2 QMF Enterprise Edition proporciona toda la familia de tecnologías de DB2QMF, lo que habilita la información empresarial en el ámbito de toda la empresaentre sistemas operativos de usuarios finales y bases de datos. Esta ediciónconsta de:– DB2 QMF para TSO/CICS– DB2 QMF High Performance Option (HPO)– DB2 QMF para Workstation– DB2 QMF para WebSphere

v DB2 QMF Classic Edition da soporte a usuarios finales que trabajan conterminales principales tradicionales (incluido WebSphere Host On Demand) paraacceder a bases de datos de DB2. Esta edición consta de DB2 QMF paraTSO/CICS.

Utilización de DB2 Query Management Facility para WorkstationDB2 Query Management Facility (QMF) para Workstation es una herramienta quele ayuda a crear y gestionar consultas muy eficaces sin necesidad de tenerconocimientos previos sobre SQL.

Con las características relacionadas con consultas de DB2 QMF para Workstationpuede realizar las tareas siguientes:v Crear consultas muy eficaces sin conocimientos de SQLv Analizar resultados de consultas en línea, incluido el análisis OLAPv Editar resultados de consultas para actualizar datos de DB2v Formatear informes basados en texto tradicional e informes con formato ricov Visualizar gráficas y otros visuales complejosv Enviar resultados de consultas a la aplicación que el usuario seleccionav Desarrollar aplicaciones utilizando mandatos de API de gran capacidad

Cómo se especifican y procesan sentencias de SQL

Puede crear las sentencias de SQL utilizando DB2 QMF para Workstation de variasformas:v Utilice la ventana Database Explorer para encontrar y ejecutar con facilidad

consultas guardadas (también conocida como una consulta escrita) que puedencompartir todos los usuarios del mismo servidor de bases de datos.

v Si tiene conocimientos sobre SQL, escriba la sentencia de SQL directamente en laventana.

v Si no tiene conocimientos sobre SQL, utilice la interfaz asistida o de diagramapara crear la sentencia de SQL.

Database Explorer presenta los objetos guardados en un servidor en una estructuraen árbol. Mediante la expansión y la contracción de las ramificaciones puedelocalizar y utilizar las consultas guardadas de una forma fácil. Puede abrir laconsulta seleccionada y ver las sentencias de SQL o ejecutar la consulta.

Si necesita crear una consulta nueva, puede entrar las sentencias de SQLdirectamente en la ventana de consulta o puede crear las sentencias de SQLutilizando diagramas o solicitudes. Cuando crea una consulta utilizando diagramaso solicitudes, puede abrir una vista para ver el SQL que se está creando.

Capítulo 5. SQL: lenguaje de DB2 123

Page 134: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cómo trabajar con resultados de consultas

Cuando termine de crear la consulta, puede pulsar el botón Run Query (Ejecutarconsulta) para ejecutar las sentencias de SQL. Después de ejecutar la consulta, DB2QMF para Workstation devuelve los resultados de la consulta en una ventanainteractiva.

Los resultados de la consulta se formatean con las amplias opciones de formateode DB2 QMF para Workstation. Un lenguaje de expresión eficaz le permiteformatear condicionalmente los resultados de la consulta mediante valores decolumna recuperados. Puede añadir columnas calculadas a los resultados de laconsulta y agrupar las columnas de datos en ambos ejes con o sin resúmenes.También puede utilizar las extensas posibilidades de arrastrar y soltar parareestructurar fácilmente el aspecto de los resultados de la consulta.

Además de formatear los resultados de la consulta, puede realizar las accionessiguientes:v Crear informes basados en texto tradicionales o informes más avanzados con

formato rico.v Visualizar resultados de consultas utilizando gráficas y otros visuales complejos.v Compartir informes almacenándolos en el servidor de bases de datos.v Enviar resultados de consultas a varias aplicaciones como, por ejemplo,

Microsoft Excel o Lotus 1-2-3.Información relacionada

″DB2 Query Management Facility″ en ibm.com

Tablas de ejemplo de DB2Gran parte de la información de DB2 hace referencia o se basa en tablas deejemplo de DB2. Como un grupo, las tablas incluyen información que describeempleados, departamentos, proyectos y actividades y forman una aplicación deejemplo que ilustra muchas de las características de DB2.

El grupo de almacenamiento, las bases de datos, los espacios de tablas, lastablas y vistas de ejemplo se crean cuando se ejecutan los trabajos de ejemplo deinstalación DSNTEJ1 y DSNTEJ7. Los objetos de ejemplo de DB2 que incluyen LOBse crean en el trabajo DSNTEJ7. Los demás objetos de ejemplo se crean en eltrabajo DSNTEJ1. Las sentencias CREATE INDEX para las tablas de ejemplo no semuestran aquí; también se crean mediante los trabajos de ejemplo DSNTEJ1 yDSNTEJ7.

Se proporciona la autorización PUBLIC sobre todos los objetos de ejemplo paraque los programas de ejemplo sean más fáciles de ejecutar. Puede revisar elcontenido de cualquier tabla ejecutando una sentencia de SQL, por ejemploSELECT * FROM DSN8910.PROJ. Para facilitar la interpretación de los ejemplos,

las tablas de departamentos y empleados se listan completas.

Tabla de actividades (DSN8910.ACT)La tabla de actividades describe las actividades que se pueden realizar durante unproyecto.

La tabla de actividades reside en la base de datos DSN8D91A y se crea conla siguiente sentencia:

124 Introducción a DB2 para z/OS

Page 135: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

CREATE TABLE DSN8910.ACT(ACTNO SMALLINT NOT NULL,ACTKWD CHAR(6) NOT NULL,ACTDESC VARCHAR(20) NOT NULL,PRIMARY KEY (ACTNO) )

IN DSN8D91A.DSN8S91PCCSID EBCDIC;

Contenido de la tabla de actividades

La tabla siguiente muestra el contenido de las columnas de la tabla de actividades.

Tabla 6. Columnas de la tabla de actividades

ColumnaNombre decolumna Descripción

1 ACTNO ID de actividad (clave primaria)

2 ACTKWD Palabra clave de actividad (seis caracteres comomáximo)

3 ACTDESC Descripción de actividad

La tabla de actividades contiene los índices siguientes.

Tabla 7. Índices de la tabla de actividades

Nombre En la columna Tipo de índice

DSN8910.XACT1 ACTNO Primario, ascendente

DSN8910.XACT2 ACTKWD Exclusivo, ascendente

Relación con otras tablas

La tabla de actividades es una tabla padre de la tabla de actividades de un

proyecto, mediante una clave foránea en la columna ACTNO.

Tabla de departamentos (DSN8910.DEPT)La tabla de departamentos describe cada departamento de la empresa e identificasu director y el departamento al cual informa.

La tabla de departamentos reside en el espacio de tablasDSN8D91A.DSN8S91D y se crea con la sentencia siguiente:CREATE TABLE DSN8910.DEPT

(DEPTNO CHAR(3) NOT NULL,DEPTNAME VARCHAR(36) NOT NULL,MGRNO CHAR(6) ,ADMRDEPT CHAR(3) NOT NULL,LOCATION CHAR(16) ,PRIMARY KEY (DEPTNO) )

IN DSN8D91A.DSN8S91DCCSID EBCDIC;

Debido a que la tabla de departamentos hace referencia a sí misma y tambiénforma parte de un ciclo de dependencias, sus claves foráneas deben añadirse másadelante con las sentencias siguientes:ALTER TABLE DSN8910.DEPT

FOREIGN KEY RDD (ADMRDEPT) REFERENCES DSN8910.DEPTON DELETE CASCADE;

Capítulo 5. SQL: lenguaje de DB2 125

Page 136: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

ALTER TABLE DSN8910.DEPTFOREIGN KEY RDE (MGRNO) REFERENCES DSN8910.EMP

ON DELETE SET NULL;

Contenido de la tabla de departamentos

La tabla siguiente muestra el contenido de las columnas de la tabla dedepartamentos.

Tabla 8. Columna de la tabla de departamentos

ColumnaNombre decolumna Descripción

1 DEPTNO ID de departamento, clave primaria.

2 DEPTNAME Nombre que describe las actividades generales deldepartamento.

3 MGRNO Número de empleado (EMPNO) del director dedepartamento.

4 ADMRDEPT ID del departamento al cual informa estedepartamento; el departamento en el nivel superiorinforma a sí mismo.

5 LOCATION El nombre de ubicación remota.

La tabla siguiente muestra los índices de la tabla de departamentos.

Tabla 9. Índices de la tabla de departamentos

Nombre En la columna Tipo de índice

DSN8910.XDEPT1 DEPTNO Primario, ascendente

DSN8910.XDEPT2 MGRNO Ascendente

DSN8910.XDEPT3 ADMRDEPT Ascendente

La tabla siguiente muestra el contenido de la tabla de departamentos.

Tabla 10. DSN8910.DEPT: tabla de departamentos

DEPTNO DEPTNAME MGRNO ADMRDEPT LOCATION

A00 SPIFFY COMPUTER SERVICEDIV.

000010 A00 ----------------

B01 PLANNING 000020 A00 ----------------C01 INFORMATION CENTER 000030 A00 ----------------D01 DEVELOPMENT CENTER ------ A00 ----------------E01 SUPPORT SERVICES 000050 A00 ----------------D11 MANUFACTURING SYSTEMS 000060 D01 ----------------D21 ADMINISTRATION SYSTEMS 000070 D01 ----------------E11 OPERATIONS 000090 E01 ----------------E21 SOFTWARE SUPPORT 000100 E01 ----------------F22 BRANCH OFFICE F2 ------ E01 ----------------G22 BRANCH OFFICE G2 ------ E01 ----------------H22 BRANCH OFFICE H2 ------ E01 ----------------I22 BRANCH OFFICE I2 ------ E01 ----------------J22 BRANCH OFFICE J2 ------ E01 ----------------

126 Introducción a DB2 para z/OS

Page 137: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La columna LOCATION contiene valores nulos hasta que el trabajo de ejemploDSNTEJ6 actualiza esta columna con el nombre de ubicación.

Relación con otras tablas

La tabla de departamentos hace referencia a sí misma: el valor del departamentode administración debe ser un ID de departamento válido.

La tabla de departamentos es una tabla padre de las siguientes:v La tabla de empleados, mediante una clave foránea en la columna WORKDEPTv La tabla de proyectos, mediante una clave foránea en la columna DEPTNO

La tabla de departamentos depende de la tabla de empleados, mediante su clave

primaria en la columna MGRNO.

Tabla de empleados (DSN8910.EMP)La tabla de empleados identifica todos los empleados mediante un número deempleado y lista información personal básica.

La tabla de empleados reside en el espacio de tablas particionadoDSN8D91A.DSN8S91E. Debido a que esta tabla tiene una clave primaria que hacereferencia a DEPT, esta tabla y el índice de su clave primaria deben crearseprimero. A continuación, se crea EMP con la sentencia siguiente:CREATE TABLE DSN8910.EMP

(EMPNO CHAR(6) NOT NULL,FIRSTNME VARCHAR(12) NOT NULL,MIDINIT CHAR(1) NOT NULL,LASTNAME VARCHAR(15) NOT NULL,WORKDEPT CHAR(3) ,PHONENO CHAR(4) CONSTRAINT NUMBER CHECK

(PHONENO >= '0000' ANDPHONENO <= '9999') ,

HIREDATE DATE ,JOB CHAR(8) ,EDLEVEL SMALLINT ,SEX CHAR(1) ,BIRTHDATE DATE ,SALARY DECIMAL(9,2) ,BONUS DECIMAL(9,2) ,COMM DECIMAL(9,2) ,PRIMARY KEY (EMPNO) ,FOREIGN KEY RED (WORKDEPT) REFERENCES DSN8910.DEPT

ON DELETE SET NULL )EDITPROC DSN8EAE1IN DSN8D91A.DSN8S91ECCSID EBCDIC;

Contenido de la tabla de empleados

La tabla siguiente muestra el tipo de contenido de cada una de las columnas de latabla de empleados. La tabla tiene una restricción de comprobación, NUMBER, quecomprueba que el número de teléfono de cuatro dígitos esté dentro del rangonumérico de 0000 a 9999.

Tabla 11. Columnas de la tabla de empleados

ColumnaNombre decolumna Descripción

1 EMPNO Número de empleado (clave primaria)

Capítulo 5. SQL: lenguaje de DB2 127

Page 138: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 11. Columnas de la tabla de empleados (continuación)

ColumnaNombre decolumna Descripción

2 FIRSTNME Nombre del empleado

3 MIDINIT Inicial media del empleado

4 LASTNAME Apellido del empleado

5 WORKDEPT ID de departamento en el que trabaja el empleado

6 PHONENO Número de teléfono del empleado

7 HIREDATE Fecha de contratación

8 JOB Ocupación del empleado

9 EDLEVEL Número de años de educación formal

10 SEX Sexo del empleado (M o F)

11 BIRTHDATE Fecha de nacimiento

12 SALARY Salario anual en dólares

13 BONUS Bonificación anual en dólares

14 COMM Comisión anual en dólares

La tabla siguiente muestra los índices de la tabla de empleados.

Tabla 12. Índices de la tabla de empleados

Nombre En la columna Tipo de índice

DSN8910.XEMP1 EMPNO Primario, particionado, ascendente

DSN8910.XEMP2 WORKDEPT Ascendente

La tala siguiente muestra la primera mitad (lado izquierdo) del contenido de latabla de empleados. (La Tabla 14 en la página 129 muestra el resto del contenido(lado derecho) de la tabla de empleados.)

Tabla 13. Mitad izquierda de DSN8910.EMP: tabla de empleados. Observe que un espacio en blanco en la columnaMIDINIT es un valor real de ″ ″ en lugar de un nulo.

EMPNO FIRSTNME MIDINIT LASTNAME WORKDEPT PHONENO HIREDATE

000010 CHRISTINE I HAAS A00 3978 1965-01-01000020 MICHAEL L THOMPSON B01 3476 1973-10-10000030 SALLY A KWAN C01 4738 1975-04-05000050 JOHN B GEYER E01 6789 1949-08-17000060 IRVING F STERN D11 6423 1973-09-14000070 EVA D PULASKI D21 7831 1980-09-30000090 EILEEN W HENDERSON E11 5498 1970-08-15000100 THEODORE Q SPENSER E21 0972 1980-06-19000110 VINCENZO G LUCCHESSI A00 3490 1958-05-16000120 SEAN O’CONNELL A00 2167 1963-12-05000130 DOLORES M QUINTANA C01 4578 1971-07-28000140 HEATHER A NICHOLLS C01 1793 1976-12-15000150 BRUCE ADAMSON D11 4510 1972-02-12000160 ELIZABETH R PIANKA D11 3782 1977-10-11000170 MASATOSHI J YOSHIMURA D11 2890 1978-09-15000180 MARILYN S SCOUTTEN D11 1682 1973-07-07000190 JAMES H WALKER D11 2986 1974-07-26

128 Introducción a DB2 para z/OS

Page 139: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 13. Mitad izquierda de DSN8910.EMP: tabla de empleados (continuación). Observe que un espacio en blancoen la columna MIDINIT es un valor real de ″ ″ en lugar de un nulo.

EMPNO FIRSTNME MIDINIT LASTNAME WORKDEPT PHONENO HIREDATE

000200 DAVID BROWN D11 4501 1966-03-03000210 WILLIAM T JONES D11 0942 1979-04-11000220 JENNIFER K LUTZ D11 0672 1968-08-29000230 JAMES J JEFFERSON D21 2094 1966-11-21000240 SALVATORE M MARINO D21 3780 1979-12-05000250 DANIEL S SMITH D21 0961 1969-10-30000260 SYBIL P JOHNSON D21 8953 1975-09-11000270 MARIA L PEREZ D21 9001 1980-09-30000280 ETHEL R SCHNEIDER E11 8997 1967-03-24000290 JOHN R PARKER E11 4502 1980-05-30000300 PHILIP X SMITH E11 2095 1972-06-19000310 MAUDE F SETRIGHT E11 3332 1964-09-12000320 RAMLAL V MEHTA E21 9990 1965-07-07000330 WING LEE E21 2103 1976-02-23000340 JASON R GOUNOT E21 5698 1947-05-05200010 DIAN J HEMMINGER A00 3978 1965-01-01200120 GREG ORLANDO A00 2167 1972-05-05200140 KIM N NATZ C01 1793 1976-12-15200170 KIYOSHI YAMAMOTO D11 2890 1978-09-15200220 REBA K JOHN D11 0672 1968-08-29200240 ROBERT M MONTEVERDE D21 3780 1979-12-05200280 EILEEN R SCHWARTZ E11 8997 1967-03-24200310 MICHELLE F SPRINGER E11 3332 1964-09-12200330 HELENA WONG E21 2103 1976-02-23200340 ROY R ALONZO E21 5698 1947-05-05

(La Tabla 13 en la página 128 muestra la primera mitad (lado derecho) delcontenido de la tabla de empleados.)

Tabla 14. Mitad derecha de DSN8910.EMP: tabla de empleados

(EMPNO) JOB EDLEVEL SEX BIRTHDATE SALARY BONUS COMM

(000010) PRES 18 F 1933-08-14 52750.00 1000.00 4220.00(000020) MANAGER 18 M 1948-02-02 41250.00 800.00 3300.00(000030) MANAGER 20 F 1941-05-11 38250.00 800.00 3060.00(000050) MANAGER 16 M 1925-09-15 40175.00 800.00 3214.00(000060) MANAGER 16 M 1945-07-07 32250.00 600.00 2580.00(000070) MANAGER 16 F 1953-05-26 36170.00 700.00 2893.00(000090) MANAGER 16 F 1941-05-15 29750.00 600.00 2380.00(000100) MANAGER 14 M 1956-12-18 26150.00 500.00 2092.00(000110) SALESREP 19 M 1929-11-05 46500.00 900.00 3720.00(000120) CLERK 14 M 1942-10-18 29250.00 600.00 2340.00(000130) ANALYST 16 F 1925-09-15 23800.00 500.00 1904.00(000140) ANALYST 18 F 1946-01-19 28420.00 600.00 2274.00(000150) DESIGNER 16 M 1947-05-17 25280.00 500.00 2022.00(000160) DESIGNER 17 F 1955-04-12 22250.00 400.00 1780.00(000170) DESIGNER 16 M 1951-01-05 24680.00 500.00 1974.00(000180) DESIGNER 17 F 1949-02-21 21340.00 500.00 1707.00(000190) DESIGNER 16 M 1952-06-25 20450.00 400.00 1636.00(000200) DESIGNER 16 M 1941-05-29 27740.00 600.00 2217.00(000210) DESIGNER 17 M 1953-02-23 18270.00 400.00 1462.00

Capítulo 5. SQL: lenguaje de DB2 129

Page 140: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 14. Mitad derecha de DSN8910.EMP: tabla de empleados (continuación)

(EMPNO) JOB EDLEVEL SEX BIRTHDATE SALARY BONUS COMM

(000220) DESIGNER 18 F 1948-03-19 29840.00 600.00 2387.00(000230) CLERK 14 M 1935-05-30 22180.00 400.00 1774.00(000240) CLERK 17 M 1954-03-31 28760.00 600.00 2301.00(000250) CLERK 15 M 1939-11-12 19180.00 400.00 1534.00(000260) CLERK 16 F 1936-10-05 17250.00 300.00 1380.00(000270) CLERK 15 F 1953-05-26 27380.00 500.00 2190.00(000280) OPERATOR 17 F 1936-03-28 26250.00 500.00 2100.00(000290) OPERATOR 12 M 1946-07-09 15340.00 300.00 1227.00(000300) OPERATOR 14 M 1936-10-27 17750.00 400.00 1420.00(000310) OPERATOR 12 F 1931-04-21 15900.00 300.00 1272.00(000320) FIELDREP 16 M 1932-08-11 19950.00 400.00 1596.00(000330) FIELDREP 14 M 1941-07-18 25370.00 500.00 2030.00(000340) FIELDREP 16 M 1926-05-17 23840.00 500.00 1907.00(200010) SALESREP 18 F 1933-08-14 46500.00 1000.00 4220.00(200120) CLERK 14 M 1942-10-18 29250.00 600.00 2340.00(200140) ANALYST 18 F 1946-01-19 28420.00 600.00 2274.00(200170) DESIGNER 16 M 1951-01-05 24680.00 500.00 1974.00(200220) DESIGNER 18 F 1948-03-19 29840.00 600.00 2387.00(200240) CLERK 17 M 1954-03-31 28760.00 600.00 2301.00(200280) OPERATOR 17 F 1936-03-28 26250.00 500.00 2100.00(200310) OPERATOR 12 F 1931-04-21 15900.00 300.00 1272.00(200330) FIELDREP 14 F 1941-07-18 25370.00 500.00 2030.00(200340) FIELDREP 16 M 1926-05-17 23840.00 500.00 1907.00

Relación con otras tablas

La tabla de empleados es una tabla padre de:v La tabla de departamentos, mediante una clave foránea en la columna MGRNOv La tabla de proyectos, mediante una clave foránea en la columna RESPEMP

La tabla de empleados depende de la tabla de departamentos, mediante su clave

foránea en la columna WORKDEPT.

Tabla de fotografías y currículums de empleados(DSN8910.EMP_PHOTO_RESUME)

La tabla de fotografías y currículums de empleados complementa la tabla deempleados.

Cada fila de la tabla de fotografías y currículums contiene una fotografíadel empleado, en dos formatos y el currículum del empleado. La tabla defotografías y currículums reside en el espacio de tablas DSN8D91A.DSN8S91E. Lasentencia siguiente crea la tabla:CREATE TABLE DSN8910.EMP_PHOTO_RESUME

(EMPNO CHAR(06) NOT NULL,EMP_ROWID ROWID NOT NULL GENERATED ALWAYS,PSEG_PHOTO BLOB(500K),BMP_PHOTO BLOB(100K),RESUME CLOB(5K))PRIMARY KEY (EMPNO)

IN DSN8D91L.DSN8S91BCCSID EBCDIC;

130 Introducción a DB2 para z/OS

Page 141: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

DB2 necesita una tabla auxiliar para cada columna LOB de una tabla. Lassentencias siguientes definen las tablas auxiliares para las tres columnas LOB deDSN8910.EMP_PHOTO_RESUME:CREATE AUX TABLE DSN8910.AUX_BMP_PHOTO

IN DSN8D91L.DSN8S91MSTORES DSN8910.EMP_PHOTO_RESUMECOLUMN BMP_PHOTO;

CREATE AUX TABLE DSN8910.AUX_PSEG_PHOTOIN DSN8D91L.DSN8S91LSTORES DSN8910.EMP_PHOTO_RESUMECOLUMN PSEG_PHOTO;

CREATE AUX TABLE DSN8910.AUX_EMP_RESUMEIN DSN8D91L.DSN8S91NSTORES DSN8910.EMP_PHOTO_RESUMECOLUMN RESUME;

Contenido de la tabla de fotografías y currículums

La tabla siguiente muestra el contenido de las columnas de la tabla de fotografías ycurrículums de empleados.

Tabla 15. Columnas de la tabla de fotografías y currículums de empleados

Columna Nombre de columna Descripción

1 EMPNO ID de empleado (clave primaria).

2 EMP_ROWID ID de fila para identificar exclusivamente cada filade la tabla. DB2 proporciona los valores de estacolumna.

3 PSEG_PHOTO Fotografía del empleado, en formato PSEG.

4 BMP_PHOTO Fotografía del empleado, en formato BMP.

5 RESUME Currículum del empleado.

La tabla siguiente muestra los índices para la tabla de fotografías y currículums deempleados.

Tabla 16. Índices de la tabla de fotografías y currículums de empleados

Nombre En la columna Tipo de índice

DSN8910.XEMP_PHOTO_RESUME EMPNO Primario, ascendente

La tabla siguiente muestra los índices para las tablas auxiliares que dan soporte ala tabla de fotografía y currículums de empleados.

Tabla 17. Índices de las tablas auxiliares para la tabla de fotografías y currículums deempleados

Nombre En la tabla Tipo de índice

DSN8910.XAUX_BMP_PHOTO DSN8910.AUX_BMP_PHOTO Exclusivo

DSN8910.XAUX_PSEG_PHOTO DSN8910.AUX_PSEG_PHOTO Exclusivo

DSN8910.XAUX_EMP_RESUME DSN8910.AUX_EMP_RESUME Exclusivo

Capítulo 5. SQL: lenguaje de DB2 131

Page 142: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Relación con otras tablas

La tabla de fotografías y currículums de empleados es una tabla padre de la tabla

de proyectos, mediante una clave foránea en la columna RESPEMP.

Tabla de proyectos (DSN8910.PROJ)La tabla de proyectos describe cada proyecto que la empresa está desarrollandoactualmente. Los datos contenidos en cada fila de la tabla incluyen el número deproyecto, el nombre, la persona responsable y las fechas de planificación.

La tabla de proyectos reside en la base de datos DSN8D91A. Dado que estatabla tiene claves foráneas que hacen referencia a DEPT y EMP, estas tablas y losíndices de sus claves primarias deben crearse primero. A continuación, se creaPROJ con la sentencia siguiente:CREATE TABLE DSN8910.PROJ

(PROJNO CHAR(6) PRIMARY KEY NOT NULL,PROJNAME VARCHAR(24) NOT NULL WITH DEFAULT

'PROJECT NAME UNDEFINED',DEPTNO CHAR(3) NOT NULL REFERENCES

DSN8910.DEPT ON DELETE RESTRICT,RESPEMP CHAR(6) NOT NULL REFERENCES

DSN8910.EMP ON DELETE RESTRICT,PRSTAFF DECIMAL(5, 2) ,PRSTDATE DATE ,PRENDATE DATE ,MAJPROJ CHAR(6))

IN DSN8D91A.DSN8S91PCCSID EBCDIC;

Debido a que la tabla de proyectos hace referencia a sí misma la clave foránea paraesta restricción debe añadirse más adelante con la sentencia siguiente:ALTER TABLE DSN8910.PROJ

FOREIGN KEY RPP (MAJPROJ) REFERENCES DSN8910.PROJON DELETE CASCADE;

Contenido de la tabla de proyectos

La tabla siguiente muestra el contenido de las columnas de la tabla de proyectos.

Tabla 18. Columnas de la tabla de proyectos

Columna Nombre de columna Descripción

1 PROJNO ID de proyecto (clave primaria)

2 PROJNAME Nombre de proyecto

3 DEPTNO ID del departamento responsable del proyecto

4 RESPEMP ID del empleado responsable del proyecto

5 PRSTAFF Número medio estimado de personas necesariasentre PRSTDATE y PRENDATE para completar elproyecto entero, incluidos los subproyectos

6 PRSTDATE Fecha de inicio estimada del proyecto

7 PRENDATE Fecha de finalización estimada del proyecto

8 MAJPROJ ID de cualquier proyecto del que forme parte esteproyecto

132 Introducción a DB2 para z/OS

Page 143: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La tabla siguiente muestra los índices para la tabla de proyectos:

Tabla 19. Índices de la tabla de proyectos

Nombre En la columna Tipo de índice

DSN8910.XPROJ1 PROJNO Primario, ascendente

DSN8910.XPROJ2 RESPEMP Ascendente

Relación con otras tablas

La tabla hace referencia a sí misma: un valor no nulo de MAJPROJ debe ser unnúmero de proyecto válido. La tabla es una tabla padre de la tabla de actividadesde proyectos, mediante una clave foránea en la columna PROJNO. Depende de lastablas siguientes:v La tabla de departamentos, mediante su clave foránea en DEPTNO

v La tabla de empleados, mediante su clave foránea en RESPEMP

Tabla de actividades de proyectos (DSN8910.PROJACT)La tabla de actividades de proyectos lista las actividades que se realizan para cadaproyecto.

La tabla de actividades de proyectos reside en la base de datos DSN8D91A.Debido a que esta tabla tiene claves foráneas que hacen referencia a PROJ y ACT,estas tablas y los índices de sus claves primarias deben crearse primero. Acontinuación, se crea PROJACT con la sentencia siguiente:CREATE TABLE DSN8910.PROJACT

(PROJNO CHAR(6) NOT NULL,ACTNO SMALLINT NOT NULL,ACSTAFF DECIMAL(5,2) ,ACSTDATE DATE NOT NULL,ACENDATE DATE ,PRIMARY KEY (PROJNO, ACTNO, ACSTDATE),FOREIGN KEY RPAP (PROJNO) REFERENCES DSN8910.PROJ

ON DELETE RESTRICT,FOREIGN KEY RPAA (ACTNO) REFERENCES DSN8910.ACT

ON DELETE RESTRICT)IN DSN8D91A.DSN8S91PCCSID EBCDIC;

Contenido de la tabla de actividades de proyectos

La tabla siguiente muestra el contenido de las columnas de la tabla de actividadesde proyectos.

Tabla 20. Columnas de la tabla de actividades de proyectos

ColumnaNombre decolumna Descripción

1 PROJNO ID de proyecto

2 ACTNO ID de actividad

3 ACSTAFF Número medio estimado de empleados que senecesitan para realizar la actividad

4 ACSTDATE Fecha de inicio estimada de la actividad

5 ACENDATE Fecha de finalización estimada de la actividad

Capítulo 5. SQL: lenguaje de DB2 133

Page 144: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La tabla siguiente muestra el índice de la tabla de actividades de proyectos:

Tabla 21. Índice de la tabla de actividades de proyectos

Nombre En columnas Tipo de índice

DSN8910.XPROJAC1 PROJNO, ACTNO,ACSTDATE

primario, ascendente

Relación con otras tablas

La tabla de actividades de proyectos es una tabla padre de la tabla de empleadosde actividades de proyectos, mediante una clave foránea en las columnas PROJNO,ACTNO y EMSTDATE. Depende de las tablas siguientes:v La tabla de actividades, mediante su clave foránea en la columna ACTNOv La tabla de proyectos, mediante su clave foránea en la columna PROJNO

Referencia relacionada

“Tabla de proyectos (DSN8910.PROJ)” en la página 132“Tabla de actividades (DSN8910.ACT)” en la página 124

Tabla de empleados de actividades de proyectos(DSN8910.EMPPROJACT)

La tabla de empleados de actividades de proyectos identifica el empleado querealiza una actividad para un proyecto, indica la proporción de tiempo necesariodel empleado y proporciona una planificación para la actividad.

La tabla de empleados de actividades de proyectos reside en la base dedatos DSN8D91A. Dado que esta tabla tiene claves foráneas que hacen referencia aEMP y PROJACT, estas tablas y los índices de sus claves primarias deben crearseprimero. A continuación, se crea EMPPROJACT con la sentencia siguiente:CREATE TABLE DSN8910.EMPPROJACT

(EMPNO CHAR(6) NOT NULL,PROJNO CHAR(6) NOT NULL,ACTNO SMALLINT NOT NULL,EMPTIME DECIMAL(5,2) ,EMSTDATE DATE ,EMENDATE DATE ,FOREIGN KEY REPAPA (PROJNO, ACTNO, EMSTDATE)

REFERENCES DSN8910.PROJACTON DELETE RESTRICT,

FOREIGN KEY REPAE (EMPNO) REFERENCES DSN8910.EMPON DELETE RESTRICT)

IN DSN8D91A.DSN8S91PCCSID EBCDIC;

Contenido de la tabla de empleados de actividades de proyectos

La tabla siguiente muestra el contenido de las columnas de la tabla de empleadosde actividades de proyectos.

Tabla 22. Columnas de la tabla de empleados de actividades de proyectos

Columna Nombre de columna Descripción

1 EMPNO Número de ID del empleado

2 PROJNO ID de proyecto del proyecto

134 Introducción a DB2 para z/OS

Page 145: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 22. Columnas de la tabla de empleados de actividades de proyectos (continuación)

Columna Nombre de columna Descripción

3 ACTNO ID de actividad dentro del proyecto

4 EMPTIME Proporción del tiempo completo del empleado (entre0,00 y 1,00) que debe dedicarse a la actividad

5 EMSTDATE Fecha de inicio de la actividad

6 EMENDATE Fecha de finalización de la actividad

La tabla siguiente muestra los índices para la tabla de empleados para actividadesde proyectos:

Tabla 23. Índices de la tabla de empleados de actividades de proyectos

Nombre En columnas Tipo de índice

DSN8910.XEMPPROJACT1 PROJNO, ACTNO,EMSTDATE, EMPNO

Exclusivo, ascendente

DSN8910.XEMPPROJACT2 EMPNO Ascendente

Relación con otras tablas

La tabla de empleados de actividades de proyectos depende de las tablassiguientes:v La tabla de empleados, mediante su clave foránea en la columna EMPNOv La tabla de actividades de proyectos, mediante su clave foránea en las columnas

PROJNO, ACTNO y EMSTDATE.Referencia relacionada

“Tabla de actividades de proyectos (DSN8910.PROJACT)” en la página 133“Tabla de empleados (DSN8910.EMP)” en la página 127

Tabla de ejemplo Unicode (DSN8910.DEMO_UNICODE)La tabla de ejemplo Unicode se utiliza para comprobar que las conversiones dedatos entre EBCDIC y Unicode funcionen como se espera.

La tabla reside en la base de datos DSN8D91A y se define con la sentenciasiguiente:CREATE TABLE DSN8910.DEMO_UNICODE

(LOWER_A_TO_Z CHAR(26) ,UPPER_A_TO_Z CHAR(26) ,ZERO_TO_NINE CHAR(10) ,X00_TO_XFF VARCHAR(256) FOR BIT DATA)

IN DSN8D81E.DSN8S81UCCSID UNICODE;

Contenido de la tabla de ejemplo Unicode

La tabla siguiente muestra el contenido de las columnas de la tabla de ejemploUnicode:

Tabla 24. Columnas de la tabla de ejemplo Unicode

Columna Nombre de columna Descripción

1 LOWER_A_TO_Z Matriz de caracteres, de ’a’ a ’z’

Capítulo 5. SQL: lenguaje de DB2 135

Page 146: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 24. Columnas de la tabla de ejemplo Unicode (continuación)

Columna Nombre de columna Descripción

2 UPPER_A_TO_Z Matriz de caracteres, de ’A’ a ’Z’

3 ZERO_TO_NINE Matriz de caracteres, de ’0’ a ’9’

4 X00_TO_XFF Matriz de caracteres, de x’00’ a x’FF’

Esta tabla no tiene índices.

Relación con otras tablas

Esta tabla no tiene ninguna relación con otras tablas.Información relacionada

″Conversión de caracteres en DB2″ (DB2 for z/OS Internationalization Guide)

Relaciones entre las tablas de ejemploLas relaciones entre las tablas de ejemplo se establecen mediante claves foráneas entablas dependientes que hacen referencia a claves primarias de tablas padre.

La figura siguiente muestra las relaciones entre las tablas de ejemplo.Encontrará las descripciones de las columnas en las descripciones de las tablas.

Referencia relacionada

“Tabla de actividades (DSN8910.ACT)” en la página 124“Tabla de departamentos (DSN8910.DEPT)” en la página 125

Figura 26. Relaciones entre tablas en la aplicación de ejemplo

136 Introducción a DB2 para z/OS

Page 147: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

“Tabla de empleados (DSN8910.EMP)” en la página 127“Tabla de fotografías y currículums de empleados(DSN8910.EMP_PHOTO_RESUME)” en la página 130“Tabla de proyectos (DSN8910.PROJ)” en la página 132“Tabla de actividades de proyectos (DSN8910.PROJACT)” en la página 133“Tabla de empleados de actividades de proyectos (DSN8910.EMPPROJACT)” enla página 134“Tabla de ejemplo Unicode (DSN8910.DEMO_UNICODE)” en la página 135

Vistas en las tablas de ejemploDB2 crea un número de vistas en las tablas de ejemplo para utilizarlas en lasaplicaciones de ejemplo.

La tabla siguiente indica las tablas en las que se define cada vista y lasaplicaciones de ejemplo que utilizan la vista. Todos los nombres de vista tienen elcalificador DSN8910.

Tabla 25. Vistas en tablas de ejemplo

Nombre de vista En tablas o vistas Utilizada en la aplicación

VDEPT DEPTProyecto deProyecto

VHDEPT DEPT Organización distribuida

VEMP EMPOrganización distribuidaProyecto deProyecto

VPROJ PROJ Proyecto

VACT ACT Proyecto

VPROJACT PROJACT Proyecto

VEMPPROJACT EMPPROJACT Proyecto

VDEPMG1DEPTEMP

Organización

VEMPDPT1DEPTEMP

Organización

VASTRDE1 DEPT

VASTRDE2VDEPMG1EMP

Organización

VPROJRE1PROJEMP

Proyecto

VPSTRDE1VPROJRE1 VPROJRE2

Proyecto

VPSTRDE2 VPROJRE1 Proyecto

Capítulo 5. SQL: lenguaje de DB2 137

Page 148: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 25. Vistas en tablas de ejemplo (continuación)

Nombre de vista En tablas o vistas Utilizada en la aplicación

VFORPLAVPROJRE1EMPPROJACT

Proyecto

VSTAFAC1PROJACTACT

Proyecto

VSTAFAC2EMPPROJACTACTEMP

Proyecto

VPHONEEMPDEPT

Teléfono

VEMPLP EMP Teléfono

La sentencia de SQL siguiente crea la vista denominada VDEPT.CREATE VIEW DSN8910.VDEPT

AS SELECT ALL DEPTNO ,DEPTNAME,MGRNO ,ADMRDEPT

FROM DSN8910.DEPT;

La sentencia de SQL siguiente crea la vista denominada VHDEPT.CREATE VIEW DSN8910.VHDEPT

AS SELECT ALL DEPTNO ,DEPTNAME,MGRNO ,ADMRDEPT,LOCATION

FROM DSN8910.DEPT;

La sentencia de SQL siguiente crea la vista denominada VEMP.CREATE VIEW DSN8910.VEMP

AS SELECT ALL EMPNO ,FIRSTNME,MIDINIT ,LASTNAME,WORKDEPT

FROM DSN8910.EMP;

La sentencia de SQL siguiente crea la vista denominada VPROJ.CREATE VIEW DSN8910.VPROJ

AS SELECT ALLPROJNO, PROJNAME, DEPTNO, RESPEMP, PRSTAFF,PRSTDATE, PRENDATE, MAJPROJ

FROM DSN8910.PROJ ;

La sentencia de SQL siguiente crea la vista denominada VACT.CREATE VIEW DSN8910.VACT

AS SELECT ALL ACTNO ,ACTKWD ,ACTDESC

FROM DSN8910.ACT ;

138 Introducción a DB2 para z/OS

Page 149: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La sentencia de SQL siguiente crea la vista denominada VPROJACT.CREATE VIEW DSN8910.VPROJACT

AS SELECT ALLPROJNO,ACTNO, ACSTAFF, ACSTDATE, ACENDATEFROM DSN8910.PROJACT ;

La sentencia de SQL siguiente crea la vista denominada VEMPPROJACT.CREATE VIEW DSN8910.VEMPPROJACT

AS SELECT ALLEMPNO, PROJNO, ACTNO, EMPTIME, EMSTDATE, EMENDATEFROM DSN8910.EMPPROJACT ;

La sentencia de SQL siguiente crea la vista denominada VDEPMG1.CREATE VIEW DSN8910.VDEPMG1

(DEPTNO, DEPTNAME, MGRNO, FIRSTNME, MIDINIT,LASTNAME, ADMRDEPT)

AS SELECT ALLDEPTNO, DEPTNAME, EMPNO, FIRSTNME, MIDINIT,LASTNAME, ADMRDEPTFROM DSN8910.DEPT LEFT OUTER JOIN DSN8910.EMPON MGRNO = EMPNO ;

La sentencia de SQL siguiente crea la vista denominada VEMPDPT1.CREATE VIEW DSN8910.VEMPDPT1

(DEPTNO, DEPTNAME, EMPNO, FRSTINIT, MIDINIT,LASTNAME, WORKDEPT)

AS SELECT ALLDEPTNO, DEPTNAME, EMPNO, SUBSTR(FIRSTNME, 1, 1), MIDINIT,LASTNAME, WORKDEPTFROM DSN8910.DEPT RIGHT OUTER JOIN DSN8910.EMPON WORKDEPT = DEPTNO ;

La sentencia de SQL siguiente crea la vista denominada VASTRDE1.CREATE VIEW DSN8910.VASTRDE1

(DEPT1NO,DEPT1NAM,EMP1NO,EMP1FN,EMP1MI,EMP1LN,TYPE2,DEPT2NO,DEPT2NAM,EMP2NO,EMP2FN,EMP2MI,EMP2LN)AS SELECT ALL

D1.DEPTNO,D1.DEPTNAME,D1.MGRNO,D1.FIRSTNME,D1.MIDINIT,D1.LASTNAME, '1',D2.DEPTNO,D2.DEPTNAME,D2.MGRNO,D2.FIRSTNME,D2.MIDINIT,D2.LASTNAMEFROM DSN8910.VDEPMG1 D1, DSN8910.VDEPMG1 D2WHERE D1.DEPTNO = D2.ADMRDEPT ;

La sentencia de SQL siguiente crea la vista denominada VASTRDE2.CREATE VIEW DSN8910.VASTRDE2

(DEPT1NO,DEPT1NAM,EMP1NO,EMP1FN,EMP1MI,EMP1LN,TYPE2,DEPT2NO,DEPT2NAM,EMP2NO,EMP2FN,EMP2MI,EMP2LN)AS SELECT ALL

D1.DEPTNO,D1.DEPTNAME,D1.MGRNO,D1.FIRSTNME,D1.MIDINIT,D1.LASTNAME,'2',D1.DEPTNO,D1.DEPTNAME,E2.EMPNO,E2.FIRSTNME,E2.MIDINIT,E2.LASTNAMEFROM DSN8910.VDEPMG1 D1, DSN8910.EMP E2WHERE D1.DEPTNO = E2.WORKDEPT;

La figura siguiente muestra la sentencia de SQL que crea la vista denominadaVPROJRE1.

Capítulo 5. SQL: lenguaje de DB2 139

Page 150: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La sentencia de SQL siguiente crea la vista denominada VPSTRDE1.CREATE VIEW DSN8910.VPSTRDE1

(PROJ1NO,PROJ1NAME,RESP1NO,RESP1FN,RESP1MI,RESP1LN,PROJ2NO,PROJ2NAME,RESP2NO,RESP2FN,RESP2MI,RESP2LN)AS SELECT ALL

P1.PROJNO,P1.PROJNAME,P1.RESPEMP,P1.FIRSTNME,P1.MIDINIT,P1.LASTNAME,P2.PROJNO,P2.PROJNAME,P2.RESPEMP,P2.FIRSTNME,P2.MIDINIT,P2.LASTNAME

FROM DSN8910.VPROJRE1 P1,DSN8910.VPROJRE1 P2

WHERE P1.PROJNO = P2.MAJPROJ ;

La sentencia de SQL siguiente crea la vista denominada VPSTRDE2.CREATE VIEW DSN8910.VPSTRDE2

(PROJ1NO,PROJ1NAME,RESP1NO,RESP1FN,RESP1MI,RESP1LN,PROJ2NO,PROJ2NAME,RESP2NO,RESP2FN,RESP2MI,RESP2LN)AS SELECT ALL

P1.PROJNO,P1.PROJNAME,P1.RESPEMP,P1.FIRSTNME,P1.MIDINIT,P1.LASTNAME,P1.PROJNO,P1.PROJNAME,P1.RESPEMP,P1.FIRSTNME,P1.MIDINIT,P1.LASTNAME

FROM DSN8910.VPROJRE1 P1WHERE NOT EXISTS

(SELECT * FROM DSN8910.VPROJRE1 P2WHERE P1.PROJNO = P2.MAJPROJ) ;

La sentencia de SQL siguiente crea la vista denominada VFORPLA.CREATE VIEW DSN8910.VFORPLA

(PROJNO,PROJNAME,RESPEMP,PROJDEP,FRSTINIT,MIDINIT,LASTNAME)AS SELECT ALL

F1.PROJNO,PROJNAME,RESPEMP,PROJDEP, SUBSTR(FIRSTNME, 1, 1),MIDINIT, LASTNAMEFROM DSN8910.VPROJRE1 F1 LEFT OUTER JOIN DSN8910.EMPPROJACT F2ON F1.PROJNO = F2.PROJNO;

La sentencia de SQL siguiente crea la vista denominada VSTAFAC1.CREATE VIEW DSN8910.VSTAFAC1

(PROJNO, ACTNO, ACTDESC, EMPNO, FIRSTNME, MIDINIT, LASTNAME,EMPTIME,STDATE,ENDATE, TYPE)AS SELECT ALL

PA.PROJNO, PA.ACTNO, AC.ACTDESC,' ', ' ', ' ', ' ',PA.ACSTAFF, PA.ACSTDATE,PA.ACENDATE,'1'

FROM DSN8910.PROJACT PA, DSN8910.ACT ACWHERE PA.ACTNO = AC.ACTNO ;

La sentencia de SQL siguiente crea la vista denominada VSTAFAC2.CREATE VIEW DSN8910.VSTAFAC2

(PROJNO, ACTNO, ACTDESC, EMPNO, FIRSTNME, MIDINIT, LASTNAME,EMPTIME,STDATE, ENDATE, TYPE)AS SELECT ALL

CREATE VIEW DSN8910.VPROJRE1(PROJNO,PROJNAME,PROJDEP,RESPEMP,FIRSTNME,MIDINIT,LASTNAME,MAJPROJ)AS SELECT ALL

PROJNO,PROJNAME,DEPTNO,EMPNO,FIRSTNME,MIDINIT,LASTNAME,MAJPROJFROM DSN8910.PROJ, DSN8910.EMPWHERE RESPEMP = EMPNO ;

Figura 27. VPROJRE1

140 Introducción a DB2 para z/OS

Page 151: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

EP.PROJNO, EP.ACTNO, AC.ACTDESC, EP.EMPNO,EM.FIRSTNME,EM.MIDINIT, EM.LASTNAME, EP.EMPTIME, EP.EMSTDATE,EP.EMENDATE,'2'

FROM DSN8910.EMPPROJACT EP, DSN8910.ACT AC, DSN8910.EMP EMWHERE EP.ACTNO = AC.ACTNO AND EP.EMPNO = EM.EMPNO ;

La sentencia de SQL siguiente crea la vista denominada VPHONE.CREATE VIEW DSN8910.VPHONE

(LASTNAME,FIRSTNAME,MIDDLEINITIAL,PHONENUMBER,EMPLOYEENUMBER,DEPTNUMBER,DEPTNAME)

AS SELECT ALL LASTNAME,FIRSTNME,MIDINIT ,VALUE(PHONENO,' '),EMPNO,DEPTNO,DEPTNAME

FROM DSN8910.EMP, DSN8910.DEPTWHERE WORKDEPT = DEPTNO;

La sentencia de SQL siguiente crea la vista denominada VEMPLP.CREATE VIEW DSN8910.VEMPLP

(EMPLOYEENUMBER,PHONENUMBER)

AS SELECT ALL EMPNO ,PHONENO

FROM DSN8910.EMP ;

Almacenamiento de tablas de aplicaciones de ejemploNormalmente, los datos relacionados se almacenan en la misma base de datos.

La figura siguiente muestra cómo se relacionan las tablas de ejemplo conbases de datos y grupos de almacenamientos. Se utilizan dos bases de datos parailustrar la posibilidad.

Capítulo 5. SQL: lenguaje de DB2 141

Page 152: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Además del grupo de almacenamientos y las bases de datos que se muestran en lafigura anterior, se crean el grupo de almacenamiento DSN8G91U y la base de datos

DSN8D91U cuando se ejecuta DSNTEJ2A.

Grupo de almacenamiento para datos de aplicaciones deejemploLos datos de aplicaciones de ejemplo se almacenan en el grupo de almacenamientoDSN8G910. El grupo de almacenamiento por omisión, SYSDEFLT, que se creacuando se instala DB2, no se utiliza para almacenar los datos de aplicaciones deejemplo.

El grupo de almacenamiento que se utiliza para almacenar datos deaplicaciones de ejemplo se define con la sentencia siguiente:CREATE STOGROUP DSN8G910

VOLUMES (DSNV01)VCAT DSNC910;

Bases de datos para datos de aplicaciones de ejemploLos datos de aplicaciones de ejemplo se almacenan en varias bases de datos. Labase de datos por omisión que se crea cuando se instala DB2 no se utiliza paraalmacenar los datos de aplicaciones de ejemplo.

DSN8D91P es la base de datos que se utiliza para tablas relacionadas conprogramas. Las otras bases de datos se utilizan para tablas que están relacionadascon aplicaciones. Las bases de datos se definen mediante las sentencias siguientes:CREATE DATABASE DSN8D91A

STOGROUP DSN8G910BUFFERPOOL BP0CCSID EBCDIC;

CREATE DATABASE DSN8D91PSTOGROUP DSN8G910BUFFERPOOL BP0CCSID EBCDIC;

Figura 28. Relación entre bases de datos y espacios de tablas de ejemplo

142 Introducción a DB2 para z/OS

||||||||||

Page 153: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

CREATE DATABASE DSN8D91LSTOGROUP DSN8G910BUFFERPOOL BP0CCSID EBCDIC;

CREATE DATABASE DSN8D91ESTOGROUP DSN8G910BUFFERPOOL BP0CCSID UNICODE;

CREATE DATABASE DSN8D91USTOGROUP DSN8G91UCCSID EBCDIC;

Espacios de tablas para datos de aplicaciones de ejemploLos espacios de tablas que no se definen explícitamente se crean implícitamente enla base de datos DSN8D91A, utilizando los atributos de espacio por omisión.

Las sentencias de SQL siguiente definen explícitamente una serie deespacios de tablas.CREATE TABLESPACE DSN8S91D

IN DSN8D91AUSING STOGROUP DSN8G910

PRIQTY 20SECQTY 20ERASE NO

LOCKSIZE PAGE LOCKMAX SYSTEMBUFFERPOOL BP0CLOSE NOCCSID EBCDIC;

CREATE TABLESPACE DSN8S91EIN DSN8D91AUSING STOGROUP DSN8G910

PRIQTY 20SECQTY 20ERASE NO

NUMPARTS 4(PART 1 USING STOGROUP DSN8G910

PRIQTY 12SECQTY 12,

PART 3 USING STOGROUP DSN8G910PRIQTY 12SECQTY 12)

LOCKSIZE PAGE LOCKMAX SYSTEMBUFFERPOOL BP0CLOSE NOCOMPRESS YESCCSID EBCDIC;

CREATE TABLESPACE DSN8S91BIN DSN8D91LUSING STOGROUP DSN8G910

PRIQTY 20SECQTY 20ERASE NO

LOCKSIZE PAGELOCKMAX SYSTEMBUFFERPOOL BP0CLOSE NOCCSID EBCDIC;

Capítulo 5. SQL: lenguaje de DB2 143

|||||||||||||

Page 154: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

CREATE LOB TABLESPACE DSN8S91MIN DSN8D91LLOG NO;

CREATE LOB TABLESPACE DSN8S91LIN DSN8D91LLOG NO;

CREATE LOB TABLESPACE DSN8S91NIN DSN8D91LLOG NO;

CREATE TABLESPACE DSN8S91CIN DSN8D91PUSING STOGROUP DSN8G910

PRIQTY 160SECQTY 80

SEGSIZE 4LOCKSIZE TABLEBUFFERPOOL BP0CLOSE NOCCSID EBCDIC;

CREATE TABLESPACE DSN8S91PIN DSN8D91AUSING STOGROUP DSN8G910

PRIQTY 160SECQTY 80

SEGSIZE 4LOCKSIZE ROWBUFFERPOOL BP0CLOSE NOCCSID EBCDIC;

CREATE TABLESPACE DSN8S91RIN DSN8D91AUSING STOGROUP DSN8G910

PRIQTY 20SECQTY 20ERASE NO

LOCKSIZE PAGE LOCKMAX SYSTEMBUFFERPOOL BP0CLOSE NOCCSID EBCDIC;

CREATE TABLESPACE DSN8S91SIN DSN8D91AUSING STOGROUP DSN8G910

PRIQTY 20SECQTY 20ERASE NO

LOCKSIZE PAGE LOCKMAX SYSTEMBUFFERPOOL BP0CLOSE NOCCSID EBCDIC;

CREATE TABLESPACE DSN8S81QIN DSN8D81PUSING STOGROUP DSN8G810

PRIQTY 160SECQTY 80

SEGSIZE 4LOCKSIZE PAGEBUFFERPOOL BP0CLOSE NOCCSID EBCDIC;

CREATE TABLESPACE DSN8S81UIN DSN8D81EUSING STOGROUP DSN8G810

144 Introducción a DB2 para z/OS

Page 155: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

PRIQTY 5SECQTY 5ERASE NO

LOCKSIZE PAGE LOCKMAX SYSTEMBUFFERPOOL BP0CLOSE NOCCSID UNICODE;

Capítulo 5. SQL: lenguaje de DB2 145

Page 156: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

146 Introducción a DB2 para z/OS

Page 157: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 6. Programación de aplicaciones para DB2

DB2 permite una amplia variedad de opciones para diseñar y codificar programasde aplicaciones. Las opciones de diseño de aplicaciones incluyen desdeaplicaciones de un único nivel a aplicaciones de varios niveles y hay disponibleuna amplia gama de opciones para herramientas y lenguajes para desarrollaraplicaciones.

Los programadores disponen de una amplia variedad de opciones para diseñar susaplicaciones de base de datos. Estas opciones incluyen desde aplicaciones de unúnico nivel, en las que la lógica y los datos residen en zSeries, hasta aplicacionesde varios niveles. Una aplicación de varios niveles compleja puede tener un clientenavegador con lógica de aplicaciones empresariales para acceso a datos que seejecute en un servidor de aplicaciones web de nivel medio y lógica de base dedatos que se ejecute con el servidor de bases de datos como procedimientosalmacenados.

Los usuarios disponen de una amplia gama de opciones no sólo para laarquitectura de la aplicación, sino también para las herramientas y lenguajes que seutilizan para el desarrollo. La escritura de un programa de aplicación varía paracada lenguaje de programación y para cada estilo de aplicación. Esta informaciónno pretende enseñarle cómo convertirse en un programador de aplicaciones. Enlugar de ello, describe los conceptos generales sobre codificación que necesita saberque son específicos de DB2 for z/OS. Puede aplicar estos conceptos a los distintoslenguajes. La información explica diversas técnicas que se pueden utilizar paraescribir un programa de aplicación para DB2.

Se proporcionan detalles principalmente para las partes de la aplicación que seejecutan en z/OS. Las aplicaciones cliente que se ejecutan en otros sistemasoperativos y acceden a datos de DB2 for z/OS se describen brevemente.

Desarrollo de aplicaciones de DB2 en entornos de desarrollointegrados

Puede utilizar varias herramientas y lenguajes para desarrollar aplicaciones queaccedan a datos de DB2 for z/OS. Las herramientas de desarrollo más popularesincluyen la familia de productos de IBM WebSphere Studio, las herramientas deMicrosoft Visual Studio, VisualCafe, Borland JBuilder y muchas otras. El accesodesde estas herramientas se realiza mediante varias opciones de acceso como, porejemplo servicios web y API populares. Además de estos mecanismos de acceso secrean varios estilos de código.

Tanto si se desarrollan aplicaciones de escritorio o basadas en la web, DB2 ofreceopciones para trabajar con varios lenguajes de programación, estilos de desarrollode aplicaciones y sistemas operativos. DB2 proporciona herramientas paradesarrollar aplicaciones en entornos de desarrollo Java y Microsoft. Las tres áreasprimarias del soporte de desarrollo de DB2 en entornos de desarrollo integrados(IDE) se proporcionan con WebSphere Studio, Microsoft Visual Studio y DB2Developer Workbench.v WebSphere Studio: la integración de DB2 con WebSphere Studio proporciona

desarrollo del servidor para procedimientos almacenados y funciones definidaspor el usuario e integración con el entorno de desarrollo J2EE. Este IDE facilita

© Copyright IBM Corp. 2001, 2008 147

Page 158: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

el desarrollo de funciones del servidor y el desarrollo de aplicaciones de J2EE yde aplicaciones de servicio web dentro del mismo entorno de desarrollo.

v Microsoft Visual Studio: la integración con Microsoft Visual Studio proporcionaintegración de desarrollo del servidor y aplicaciones de DB2. En este IDE, losprogramadores de aplicaciones pueden crear aplicaciones que utilicen soporte deMicrosoft.

v DB2 Developer Workbench: DB2 Developer Workbench está integrado con lasotras herramientas de administración de DB2 como, por ejemplo, el Centro decontrol de DB2. DB2 Developer Workbench está enfocado al desarrollo delservidor de DB2 para procedimientos almacenados y funciones definidas por elusuario.

El acceso desde estas herramientas se realiza mediante todas las API de utilizaciónfrecuente entre las que se incluye JDBC y ODBC, OLE DB, ADO.NET y ADO. Conestas opciones de acceso, los programadores de aplicaciones pueden utilizarmuchas otras herramientas de desarrollo actuales, que incluyen soporte de editorbásico y de línea de mandatos, para el desarrollo de aplicaciones de DB2.

Conceptos relacionados

“Utilización de DB2 Developer Workbench para crear un procedimientoalmacenado” en la página 173

WebSphere Studio Application DeveloperIBM WebSphere Studio Application Developer proporciona soporte global paradesarrollar aplicaciones que accedan a DB2.

La familia de WebSphere Studio proporciona una serie de herramientas muyeficaces para el desarrollo de aplicaciones y webs. Una herramienta clave para eldesarrollo de aplicaciones es WebSphere Studio Application Developer, quesustituye a su predecesora, IBM VisualAge para Java.

Con WebSphere Studio Application Developer puede crear aplicaciones J2EE conarchivos JSP (JavaServer Page) y componentes de EJB (Enterprise JavaBean), crearaplicaciones de servicios web y generar documentos XML.

Conceptos relacionados

“Aplicaciones basadas en la web y WebSphere Studio Application Developer”en la página 303

DB2 Development Add-In for Visual Studio .NETDB2 Development Add-In for Microsoft Visual Studio .NET proporciona soporte dedesarrollo de DB2 estrechamente integrado en el entorno de desarrollo deMicrosoft Visual Studio .NET. Las características Add-In (accesorios) facilitan a losprogramadores de aplicaciones el trabajo con servidores de DB2 y el desarrollo derutinas y objetos de DB2.

Las características Add-In permiten realizar las siguientes tareas a losdesarrolladores:v Crear objetos del lado del servidor de DB2

DB2 Connect proporciona un proveedor de datos .NET para DB2, que permite alas aplicaciones .NET acceder a DB2 for z/OS y sistemas operativos de estaciónde trabajo (Windows, UNIX y Linux).Utilizando Solution Explorer, los desarrolladores pueden utilizar archivos descript para crear objetos que incluyan rutinas, desencadenantes, tablas y vistas.

148 Introducción a DB2 para z/OS

||||

Page 159: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Acceder a conexiones de datos de DB2 y gestionarlasIBM Explorer proporciona acceso a conexiones de base de datos de IBM ypermite realizar las tareas siguientes a los desarrolladores:– Trabajar con varias conexiones de DB2– Ver propiedades de objetos– Recuperar y actualizar datos de tablas y vistas– Ver código fuente para procedimientos y funciones de DB2– Generar código ADO .NET utilizando una técnica de arrastrar y soltar

v Iniciar herramientas de administración y desarrollo de DB2Estas herramientas incluyen DB2 Developer Workbench, Centro de control,Centro de duplicación, Centro de mandatos, Centro de tareas, Diario y Centro deinformación de DB2.

Herramientas de desarrollo de aplicaciones de estación detrabajo

Existe una amplia variedad de herramientas disponibles para realizar tareas como,por ejemplo, consultar una base de datos. Estas herramientas incluyenherramientas basadas en ODBC tales como Lotus Approach, Microsoft Access,Microsoft Visual Basic, Microsoft Excel y muchas otras.

Las herramientas basadas en ODBC proporcionan una alternativa más simple paradesarrollar aplicaciones que la utilización de un lenguaje de programación de altonivel. QMF para Windows proporciona acceso a datos de DB2 para estasherramientas. Con todas estas herramientas, puede especificar DB2 for z/OS comola base de datos a la que debe accederse.

Conceptos relacionados

“Utilización de DB2 Query Management Facility para Workstation” en lapágina 123

Lenguajes de programación y métodos para desarrollar programas deaplicaciones

Puede utilizar una amplia variedad de lenguajes de programación y técnicas paradesarrollar programas de aplicaciones para DB2 for z/OS. Además, haydisponibles varios métodos para comunicarse con DB2.

Puede elegir entre los siguientes lenguajes de programación:v APL2v Cv C++v C#v COBOLv Fortranv Assembler de alto nivel (parte del sistema operativo z/OS)v Javav .NETv Perlv PHPv PL/Iv REXXv Ruby on Railsv Smalltalkv Lenguaje de procedimiento de SQL

Capítulo 6. Programación de aplicaciones para DB2 149

|

||

|

Page 160: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v TOAD para DB2v Visual Basic

Puede utilizar uno de los siguientes métodos de programación:

SQL estáticoLa forma de origen de una sentencia de SQL estático se incluye en unprograma de aplicación que se escribe en un lenguaje de programacióntradicional. (Los lenguajes de programación tradicionales incluyen C, C++,COBOL, Fortran, PL/I y Assembler.) La utilización de SQL estático es unabuena opción si sabe qué sentencias necesita ejecutar una aplicación antesde ejecutar la aplicación.

SQL dinámicoA diferencia del SQL estático, las sentencias dinámicas se crean y preparandurante el tiempo de ejecución. La utilización de SQL dinámico es unabuena opción si no conoce el formato de una sentencia de SQL al escribirun programa. También es una buena opción si el programa necesitagenerar parte o toda una sentencia de SQL basándose en entrada de sususuarios.

ODBCODBC es una interfaz de programación de aplicaciones (API) que losprogramas de aplicaciones C y C++ pueden utilizar para acceder a basesde datos relacionales. ODBC se adapta mejor al entorno cliente/servidor.

SQLJ y JDBCComo ODBC y C++, las interfaces SQLJ y JDBC de Java le permitenescribir programas de aplicaciones trasladables independientes decualquier producto de base de datos.v El soporte de aplicación SQLJ le permite escribir aplicaciones de SQL

estático en el lenguaje de programación Java. Con SQLJ, puede incluirsentencias de SQL en las aplicaciones de Java.

v El soporte de aplicación JDBC le permite escribir aplicaciones de SQLdinámico en el lenguaje de programación Java. JDBC es similar a ODBC,pero está específicamente diseñado para utilizarse con Java.

Conceptos relacionados

“Aplicaciones de SQL estático” en la página 154“Aplicaciones de SQL dinámico” en la página 162“Utilización de ODBC para ejecutar SQL dinámico” en la página 164“Utilización de Java para ejecutar SQL estático y dinámico” en la página 165“Utilización de un programa de aplicación como un procedimientoalmacenado” en la página 168Tareas relacionadas

″Planificación y diseño de aplicaciones de DB2″ (DB2 Application Programmingand SQL Guide)

Proceso de preparación para un programa de aplicaciónEl modo en que se prepara un programa de aplicación para ejecutarse depende deltipo de aplicación. Los pasos de la preparación de un programa para aplicacionesvarían según el tipo de lenguaje de programación que se utiliza.

Las aplicaciones de DB2 necesitan diferentes métodos de preparación deprogramas, según el tipo de aplicación.

150 Introducción a DB2 para z/OS

|

Page 161: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Aplicaciones que contienen sentencias de SQL estático o dinámico incorporadasLas aplicaciones de DB2 incorporan sentencias de SQL en programas delenguajes tradicionales. Para utilizar estos programas, es necesario seguirlos pasos de preparación típicos (compilación, edición de enlaces yejecución) además de los pasos de precompilación y vinculación de DB2.La primera de las figuras siguientes proporciona una visión general deestos pasos de preparación.

Aplicaciones en lenguajes interpretados como, por ejemplo, REXX y APL2Los procedimientos REXX utilizan SQL dinámico. No se precompilan,compilan, editan enlaces ni vinculan procedimientos REXX de DB2 antesde ejecutarlos.

Aplicaciones que contienen llamadas ODBCEstas aplicaciones pasan sentencias de SQL dinámico como argumentos.No se precompilan ni vinculan aplicaciones ODBC. Las aplicaciones ODBCutilizan un conjunto de funciones estándar para ejecutar sentencias de SQLy servicios relacionados durante el tiempo de ejecución.

Aplicaciones de Java, que pueden contener llamadas JDBC o sentencias de SQLincorporadas

La preparación de un programa de Java que contiene únicamente métodosJDBC es igual que la preparación de cualquier otro programa de Java. Paracompilar el programa se utiliza el mandato javac. Las aplicaciones JDBCno requieren los pasos de precompilación ni vinculación.

La preparación de un programa SQLJ requiere un paso de precompilacióny un paso de vinculación.

Los lenguajes de programación tradicionales requieren los siguientes pasos depreparación de programa.

PrecompilarAntes de compilar o ensamblar un programa de lenguaje tradicional debepreparar las sentencias de SQL que están incorporadas en el programa. Elprecompilador de DB2 prepara sentencias de SQL para aplicaciones C,COBOL, Fortran, PL/I y Assembler. Debido a que la mayoría decompiladores no reconocen sentencias de SQL debe utilizar elprecompilador de DB2 antes de compilar el programa para evitar erroresde compilador. El precompilador explora el programa y devuelve códigofuente modificado que, a continuación se puede compilar y al que sepuede aplicar edición de enlaces.

Como alternativa, puede utilizar un coprocesador de lenguaje principal deDB2 para C, C++, COBOL y PL/I cuando compile el programa. Elcoprocesador de DB2 realiza funciones de precompilador de DB2 duranteel tiempo de compilación.

La salida principal del precompilador es un módulo de petición de base dedatos (DBRM). Un DBRM es un conjunto de datos que contiene sentenciasde SQL e información de variables de lenguaje principal que se obtiene delprograma fuente durante la preparación del programa. La finalidad de unDBRM es comunicar las peticiones de SQL con DB2 durante el proceso devinculación.

VincularAntes de ejecutar la aplicación de DB2 debe utilizar el mandato BIND paravincular el DBRM con un plan o un paquete. Por ejemplo, puede decidirponer determinadas sentencias de SQL juntas en el mismo programa a finde precompilarlas en el mismo DBRM y, a continuación, vincularlas en un

Capítulo 6. Programación de aplicaciones para DB2 151

|

||

||||

Page 162: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

único paquete. Cuando se ejecuta el programa, DB2 utiliza una indicaciónde fecha y hora para verificar que el programa coincide con el plan opaquete correcto.

Un plan puede contener varios DBRM, una lista de paquetes queespecifique paquetes o colecciones de paquetes o una combinación devarios DBRM y una lista de paquetes. El plan debe contener como mínimoun paquete o como mínimo un DBRM directamente vinculado. Cadapaquete que se vincula sólo puede contener un DBRM.

Una colección es un grupo de paquetes asociados. La vinculación depaquetes en colecciones de paquetes le permite añadir paquetes a un plande aplicación existente sin necesidad de volver a vincular todo el plan. Siincluye un nombre de colección en la lista de paquetes al vincular un plan,cualquier paquete que esté en la colección estará disponible para el plan.Incluso es posible que la colección esté vacía la primera vez que vincula elplan. Más adelante, puede añadir paquetes a la colección y descartar osustituir paquetes existentes sin volver a vincular el plan.

El registro especial CURRENT PACKAGE PATH especifica un valor queidentifica una lista de colecciones que DB2 utiliza para resolver lasreferencias a paquetes que se utilizan para ejecutar sentencias de SQL.

Compilar, editar enlacesPara permitir que la aplicación intercambie información con el subsistemaDB2 debe utilizar un procedimiento de edición de enlaces para crear unmódulo de carga ejecutable que cumpla los requisitos del entorno (talescomo CICS, IMS, TSO o de proceso por lotes). El módulo de carga es unaunidad de programa que se carga en el almacenamiento principal para laejecución.

EjecutarUna vez completados los pasos anteriores puede ejecutar la aplicación deDB2. Existen varios métodos disponibles para preparar una aplicación paraejecutarse. Puede hacer lo siguiente:v Utilizar paneles de DB2 Interactive (DB2I), que le guían paso a paso

desde la preparación del programa a la ejecución del programa.v Someter una aplicación en primer plano de TSO o por lotes en segundo

plano de TSO.v Iniciar la lista de mandatos de preparación de programas (CLIST) en

primer plano de TSO o por lotes.v Utilizar el procesador de mandatos de DSN.v Utilizar procedimientos de JCL para incluirlos en conjuntos de datos

(por ejemplo, SYS1.PROCLIB) durante la instalación de DB2.

También puede precompilar y preparar un programa de aplicación utilizando unprocedimiento proporcionado por DB2. DB2 dispone de un procedimientoexclusivo para cada lenguaje soportado.

152 Introducción a DB2 para z/OS

Page 163: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Programafuente

de entrada

DB2precompilador

Compilador

Editor deenlaces

DBRM

Proceso devinculación

Módulode carga

Paqueteo plan

Figura 29. Visión general del proceso de preparación de un programa para aplicaciones quecontienen SQL incorporado cuando se utiliza el precompilador de DB2

Capítulo 6. Programación de aplicaciones para DB2 153

Page 164: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Herramienta DB2 Bind Manager

La herramienta DB2 Bind Manager ayuda a los programadores de aplicaciones a:v Predecir si una vinculación de un DBRM tendrá como resultado una vía de

acceso modificadav Ejecutar selecciones de vía de acceso en un proceso por lotes de DBRMv Eliminar los pasos de vinculación innecesarios entre los programas de

aplicaciones y la base de datosv Comparar los DBRM con subsistemas y módulos de carga

Herramienta DB2 Path Checker

DB2 Path Checker le ayuda a aumentar la estabilidad de los entornos de DB2 y aevitar interrupciones molestas y costosas. DB2 Path Checker puede ayudarle adescubrir y corregir cambios de vía de acceso inesperados antes de que se leinforme de ellos.

Tareas relacionadas

″Preparación de una aplicación para ejecutarla en DB2 para z/OS″ (DB2Application Programming and SQL Guide)

Aplicaciones de SQL estáticoPara la mayoría de usuarios de DB2, SQL estático proporciona una vía de accesodirecta y eficaz a los datos de DB2.

Figura 30. Visión general del proceso de preparación de un programa cuando se utiliza elcoprocesador de DB2

154 Introducción a DB2 para z/OS

|

||||

Page 165: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La forma de origen de una sentencia de SQL estático se incluye en un programa deaplicación que se escribe en un lenguaje de programación tradicional como, porejemplo, C. La sentencia se prepara antes de ejecutar el programa y la formaoperativa de la sentencia permanece hasta después de la ejecución del programa.Puede utilizar SQL estático cuando sabe antes del tiempo de ejecución quésentencias de SQL necesita ejecutar la aplicación.

Cuando utiliza SQL estático, no puede cambiar la forma de las sentencias de SQL amenos que realice cambios en el programa. Sin embargo, puede aumentar laflexibilidad de estas sentencias utilizando variables de lenguaje principal. Lautilización de SQL estático y variables de lenguaje principal es más segura que lautilización de SQL.

Ejemplo: Suponga que codifica SQL estático en un programa COBOL. La siguientesentencia UPDATE puede actualizar el salario de cualquier empleado. Cuandoescribe el programa sabe que deben actualizarse los salarios pero no sabe hasta eltiempo de ejecución los salarios de quién deben actualizarse ni cuánto.01 IOAREA.

02 EMPID PIC X(06).02 NEW-SALARY PIC S9(7)V9(2) COMP-3....

(Otras declaraciones)READ CARDIN RECORD INTO IOAREA

AT END MOVE 'N' TO INPUT-SWITCH....(Otras sentencias COBOL)EXEC SQL

UPDATE EMPSET SALARY = :NEW-SALARYWHERE EMPNO = :EMPID

END-EXEC.

La sentencia UPDATE no cambia, ni tampoco su estructura básica, pero la entradapuede cambiar los resultados de la sentencia UPDATE.

Se aplican los conceptos de codificación de SQL básica a los lenguajes deprogramación tradicionales: C, C++, COBOL, Fortran, PL/I y Assembler.

Suponga que escribe un programa de aplicación para acceder a los datos de unabase de datos de DB2. Cuando el programa ejecuta una sentencia de SQL, elprograma necesita comunicarse con DB2. Cuando DB2 finaliza el proceso de unasentencia de SQL, DB2 devuelve un código de retorno, denominado código deretorno de SQL. El programa debe probar el código de retorno para examinar losresultados de la operación.

Se aplican instrucciones y detalles exclusivos a cada lenguaje.Conceptos relacionados

“SQL estático” en la página 121

Declaración de definiciones de tablas y vistasLa declaración de definiciones de tablas o vistas es opcional, pero tiene variasventajas. Puede declarar una tabla o una vista incluyendo una sentencia SQLDECLARE en el programa.

Antes de que el programa emita sentencias de SQL que recuperan, actualizan,suprimen o insertan datos, debe declarar las tablas y vistas a las que accede elprograma. La declaración de tablas o vistas no es necesaria; sin embargo, su

Capítulo 6. Programación de aplicaciones para DB2 155

|||||

Page 166: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

declaración tiene ventajas tales como la documentación de programas deaplicaciones y el suministro al precompilador de información utilizada paracomprobar las sentencias de SQL incorporado.

Ejemplo: La sentencia DECLARE TABLE (escrita en COBOL) para la tabla DEPTes similar a la siguiente:EXEC SQL

DECLARE DEPT TABLE(DEPTNO CHAR(3) NOT NULL,DEPTNAME VARCHAR(36) NOT NULL,MGRNO CHAR(6) ,ADMRDEPT CHAR(3) NOT NULL )

END-EXEC.

En cada lenguaje tradicional, se delimita una sentencia de SQL en el programaentre EXEC SQL y un terminador de sentencia. En el ejemplo anterior, EXEC SQL yEND-EXEC delimitan la sentencia de SQL en un programa COBOL.

Como alternativa a codificar la sentencia DECLARE, puede utilizar elsubcomponente DCLGEN, el generador de declaraciones, de DB2.

Referencia relacionada

″DECLARE STATEMENT″ (Consulta de DB2 SQL)

Acceso de datos con variables de lenguaje principalPuede utilizar variables de lenguaje principal, matrices de variables de lenguajeprincipal y estructuras de lenguaje principal en el programa de aplicación paraintercambiar datos entre la aplicación y el DBMS.

Una variable de lenguaje principal es un elemento de datos que se declara en unprograma para utilizar dentro de una sentencia de SQL. Puede hacer lo siguiente:v Recuperar datos en la variable de lenguaje principal para que los utilice el

programa de aplicación.v Situar datos en la variable de lenguaje principal para insertarlos en una tabla o

cambiar el contenido de una fila.v Utilizar los datos de la variable de lenguaje principal cuando se evalúa una

cláusula WHERE o HAVING.v Asignar el valor de la variable de lenguaje principal a un registro especial. Un

registro especial es un área de almacenamiento que DB2 define para un procesopara contener información a la que pueden hacer referencia sentencias de SQL.

Ejemplo 1: El registro especial CURRENT SQLID contiene el ID de autorizaciónde SQL de un proceso, definido en una sentencia de SQL. DB2 sustituye elnombre de registro por el valor del ID de autorización cuando se ejecuta lasentencia de SQL.

v Utilizar la variable de lenguaje principal para indicar un valor nulo

El modo de codificar una variable de lenguaje principal varía según el lenguaje deprogramación que se utiliza. Algunos lenguajes requieren una sección dedeclaración separada para variables de SQL. En este caso, puede codificar lassentencias BEGIN y END DECLARE SECTION en un programa de aplicacióncuando aparezcan declaraciones de variables de acuerdo con las reglas del lenguajeprincipal. Una sección de declaración de variable de lenguaje principal empiezacon la sentencia BEGIN DECLARE SECTION y finaliza con la sentencia ENDDECLARE SECTION.

156 Introducción a DB2 para z/OS

||

|||||||

Page 167: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La cláusula INTO de la sentencia SELECT nombre una o más variables de lenguajeprincipal para que contengan los valores de columna devueltos. Para variables delenguaje principal y matrices de variables de lenguaje principal, las variablesnombradas se corresponden una a una con la lista de nombres de columna de lalista SELECT.

El ejemplo siguiente utiliza una variable de lenguaje principal para recuperar unaúnica fila de datos.

Ejemplo 2: Suponga que desea recuperar los valores de columna EMPNO,LASTNAME y DEPT de una única fila de la tabla EMP. Puede definir una variablede lenguaje principal en el programa para que contenga cada columna. La variablede lenguaje principal consta del nombre de variable local, precedido de dospuntos. A continuación, puede nombrar las áreas de datos con una cláusula INTO,tal como se muestra:EXEC SQL

SELECT EMPNO, LASTNAME, DEPTINTO :CBLEMPNO, :CBLNAME, :CBLDEPTFROM EMPWHERE EMPNO = :EMPID

END-EXEC.

Debe declarar las variables de lenguaje principal CBLEMPNO, CBLNAME yCBLDEPT en la parte de declaración de datos del programa. Los tipos de datos delas variables de lenguaje principal deben ser compatibles con los tipos de datos deSQL de las columnas EMPNO, LASTNAME y DEPT de la tabla EMP.

Suponga que no sabe cuántas filas devolverá DB2 o espera que se devuelva más deuna fila. En los dos casos, debe utilizar una alternativa para la sentencia SELECT ...INTO. Mediante la utilización de un cursor de DB2, una aplicación puede procesarun conjunto de filas y recuperar filas de la tabla de resultados.

Conceptos relacionados

“Recuperación de filas con un cursor” en la página 158″Variables de lenguaje principal, matrices de variables de lenguaje principal yestructuras″ (DB2 Application Programming and SQL Guide)Referencia relacionada

″Referencias a variables de lenguaje principal″ (Consulta de DB2 SQL)

Acceso de datos con matrices de variables de lenguajeprincipal

Una matriz de variables de lenguaje principal es una matriz de datos declarada en unlenguaje principal para utilizarlo en una sentencia de SQL. Puede recuperar datosen matrices de variables de lenguaje principal para que los utilice el programa deaplicación y situar datos en matrices de variables de lenguaje principal parainsertar filas en una tabla.

Puede especificar matrices de variables de lenguaje principal en C, C++, COBOL oPL/I. Cada matriz de variables de lenguaje principal contiene valores para unacolumna y cada elemento de la matriz corresponde a un valor para una columna.Debe declarar la matriz en el programa de lenguaje principal antes de utilizarlo.

Ejemplo: La siguiente sentencia utiliza la principal matriz de variables de lenguajeprincipal, COL1, y la correspondiente matriz de indicador, COL1IND. Suponga queCOL1 tiene 10 elementos. El primer elemento de la matriz corresponde al primervalor, etc. COL1IND debe tener como mínimo 10 entradas.

Capítulo 6. Programación de aplicaciones para DB2 157

||||

Page 168: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

EXEC SQLSQL FETCH FIRST ROWSET FROM C1 FOR 5 ROWS

INTO :COL1 :COL1INDEND-EXEC.

Conceptos relacionados

″Variables de lenguaje principal, matrices de variables de lenguaje principal yestructuras″ (DB2 Application Programming and SQL Guide)

Acceso de datos con estructuras de lenguaje principalUna estructura de lenguaje principal es un grupo de variables de lenguaje principal alas que puede hacer referencia una sentencia de SQL utilizando un único nombre.Cuando el entorno de lenguaje de sistema principal lo permite, puede utilizarsentencias de lenguaje de sistema principal para definir estructuras de lenguajeprincipal.

Ejemplo 1: Suponga que el programa COBOL incluye la siguiente sentencia deSQL:EXEC SQL

SELECT EMPNO, FIRSTNME, LASTNAME, DEPTINTO :EMPNO, :FIRSTNME, :LASTNAME, :WORKDEPTFROM VEMPWHERE EMPNO = :EMPID

END-EXEC.

Ahora suponga que desea evitar el listado de variables de lenguaje principal en elejemplo anterior.

Ejemplo 2: Puede sustituir el nombre de una estructura, como :PEMP, quecontiene :EMPNO, :FIRSTNME, :LASTNAME y :DEPT:EXEC SQL

SELECT EMPNO, FIRSTNME, LASTNAME, WORKDEPTINTO :PEMPFROM VEMPWHERE EMPNO = :EMPID

END-EXEC.

Puede declarar una estructura de lenguaje principal en el programa. Tambiénpuede utilizar DCLGEN para generar una descripción de registro COBOL, unadeclaración de estructura PL/I o una declaración de estructura C que correspondaa las columnas de una tabla.

Conceptos relacionados

″Variables de lenguaje principal, matrices de variables de lenguaje principal yestructuras″ (DB2 Application Programming and SQL Guide)

Recuperación de filas con un cursorDB2 dispone de un mecanismo denominado cursor. La utilización de un cursor escomo mantener el dedo en una línea de texto determinada de una página impresa.En DB2, un programa de aplicación utiliza un cursor para indicar una o más filasde un conjunto de filas que se recuperan de una tabla. También puede utilizar uncursor para recuperar filas de un conjunto de resultados que un procedimientoalmacenado devuelve. El programa de aplicación puede utilizar un cursor pararecuperar filas de una tabla.

Puede recuperar y procesar un conjunto de filas que cumpla la condición debúsqueda de una sentencia de SQL. Cuando utiliza un programa para seleccionarlas filas, el programa procesa una o más filas a la vez.

158 Introducción a DB2 para z/OS

Page 169: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La sentencia SELECT a la que se hace referencia en este tema debe estar dentro deuna sentencia DECLARE CURSOR y no incluir ninguna cláusula INTO. Lasentencia DECLARE CURSOR define y denomina el cursor, identificando elconjunto de filas que debe recuperarse con la sentencia SELECT del cursor. Se hacereferencia a este conjunto de filas como la tabla de resultados.

Después de ejecutarse la sentencia DECLARE CURSOR, procese la tabla deresultados de un cursor del modo como se indica a continuación:1. Abra el cursor antes de recuperar ninguna fila.

Para indicar a DB2 que está preparado para procesar la primera fila de la tablade resultados, haga que el programa emita la sentencia OPEN. A continuación,DB2 utiliza la sentencia SELECT dentro de una sentencia DECLARE CURSORpara identificar un conjunto de filas. Si utiliza variables de lenguaje principalen esta sentencia SELECT, DB2 utiliza el valor actual de las variables paraseleccionar las filas.

2. Utilice una sentencia FETCH para recuperar una o más filas.La manera más simple de que la sentencia FETCH recupere una única fila de latabla de resultados es utilizando un cursor de ubicación de fila. En cualquiermomento dado, un cursor de ubicación de fila recupera como máximo unaúnica fila de la tabla de resultados en las variables de lenguaje principal. Puedeutilizar una sentencia FETCH para recuperar más de una fila de la tabla deresultados utilizando un cursor habilitado para procesar conjuntos de filas. Unconjunto de filas es un conjunto de filas que se recupera mediante una captaciónde varias filas.Cuando el programa emite una sentencia FETCH de ubicación de fila, DB2utiliza el cursor para indicar una fila de la tabla de resultados, conviertiéndolaen la fila actual. A continuación, DB2 mueve el contenido de la fila actual a lasvariables de lenguaje principal de programa que el usuario ha especificado enla cláusula INTO de la sentencia FETCH. La sentencia FETCH mueve el cursor.Puede utilizar matrices de variables de lenguaje principal y devolver variasfilas de datos con una única sentencia FETCH.

3. Cierre el cursor cuando se produzca la condición de fin de los datos.Si termina de procesar las filas de la tabla de resultados y desea volver autilizar el cursor, emita una sentencia CLOSE para cerrar el cursor.

Recomendación: Cierre explícitamente el cursor cuando termine de utilizarlo.

El programa puede tener varios cursores. Cada cursor tiene los siguientesrequisitos:v Una sentencia DECLARE CURSOR para definir el cursorv Sentencias OPEN y CLOSE para abrir y cerrar el cursorv Una sentencia FETCH para recuperar filas de la tabla de resultados del cursor

Debe declarar las variables de lenguaje principal antes de hacer referencia a ellasen una sentencia DECLARE CURSOR. Para definir e identificar un conjunto defilas a las que se debe acceder con un cursor, emita una sentencia DECLARECURSOR. La sentencia DECLARE CURSOR nombra un cursor y especifica unasentencia SELECT. La sentencia SELECT define los criterios para las filas quepertenecen a la tabla de resultados.

Puede utilizar cursores para captar, actualizar o suprimir una o más filas de unatabla, pero no puede utilizarlos para insertar una fila en una tabla.

Capítulo 6. Programación de aplicaciones para DB2 159

|||||||

Page 170: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Suponga que el programa examina los datos sobre las personas del departamentoD11 y guarda los datos en la tabla EMP. Los ejemplos siguientes muestran lassentencias de SQL que debe incluir en un programa COBOL para definir y utilizarun cursor. En estos ejemplos, el programa utiliza el cursor para procesar unconjunto de filas de la tabla EMP.

Ejemplo: Defina el cursor: La sentencia siguiente define un cursor denominadoTHISEMP:EXEC SQL

DECLARE THISEMP CURSOR FORSELECT EMPNO, LASTNAME,DEPT, JOBFROM EMPWHERE DEPT = 'D11'

FOR UPDATE OF JOBEND-EXEC.

Ejemplo: Abra el cursor: La sentencia siguiente abre el cursor:EXEC SQL

OPEN THISEMPEND-EXEC.

Ejemplo: Utilice el cursor para recuperar una fila: La sentencia siguiente utiliza elcursor, THISEMP, para recuperar una fila:EXEC SQL

FETCH THISEMPINTO :EMP-NUM, :NAME2,:DEPT, :JOB-NAME

END-EXEC.

Ejemplo: Actualice la fila actual utilizando el cursor: La sentencia siguienteutiliza el cursor, THISEMP, para actualizar el valor de JOB para empleadosespecíficos del departamento D11:EXEC SQL

UPDATE EMPSET JOB = :NEW-JOBWHERE CURRENT OF THISEMP

END-EXEC.

Ejemplo: Cierre el cursor: La sentencia siguiente cierra el cursor:EXEC SQL

CLOSE THISEMPEND-EXEC.

Si el cursor es sólo de avance, cada captación sitúa el cursor en la siguiente fila oconjunto de filas secuenciales. Un cursor con desplazamiento bidireccional puededesplazarse hacia adelante y hacia atrás y puede volverse a situar al principio, alfinal o en un punto de desplazamiento relativo. Las aplicaciones pueden utilizarun conjunto de sentencias de SQL muy útiles para captar datos utilizando uncursor en un orden aleatorio. Los cursores con desplazamiento bidireccional sonespecialmente útiles para aplicaciones basadas en pantallas. Puede especificar quelos datos de la tabla de resultados deben permanecer estáticos. Por ejemplo, unaaplicación de contabilidad puede necesitar que los datos permanezcan constantes,mientras que una aplicación de sistema de reservas de una línea aérea tiene quevisualizar la información de disponibilidad de vuelos más reciente.

160 Introducción a DB2 para z/OS

|||||||||||

Page 171: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

También puede definir opciones en la sentencia DECLARE CURSOR queespecifiquen hasta qué punto un cursor con desplazamiento bidireccional essensible a los cambios en los datos subyacentes cuando se producen inserciones,actualizaciones o supresiones.v Un cursor sensible es sensible a los cambios que se realizan en la base de datos

después de generar la tabla de resultados. Por ejemplo, cuando una aplicaciónejecuta sentencias UPDATE y DELETE ubicadas con el cursor, estos cambios sepueden ver en la tabla de resultados.

v Un cursor insensible no es sensible a las inserciones, actualizaciones o supresionesque se realizan en las filas subyacentes de una tabla de resultados una vezcreada ésta. Por ejemplo, el orden de las filas y los valores para cada fila de latabla de resultados no cambian después de que la aplicación abra el cursor.

Para indicar que un cursor es de desplazamiento bidireccional, declárelo con lapalabra clave SCROLL.

Ejemplo: El ejemplo siguiente muestra una declaración para un cursor condesplazamiento bidireccional insensible:EXEC SQL DECLARE C1 INSENSITIVE SCROLL CURSOR FOR

SELECT DEPTNO, DEPTNAME, MGRNOFROM DEPTORDER BY DEPTNO

END-EXEC.

Para utilizar este cursor para capturar la quinta fila de la tabla de resultados,puede utilizar una sentencia FETCH como la siguiente:EXEC SQL FETCH ABSOLUTE +5 C1 INTO :HVDEPTNO, :DEPTNAME, :MGRNO;

DB2 for z/OS proporciona otro tipo de cursor denominado cursor condesplazamiento bidireccional dinámico. Con un cursor con desplazamientobidireccional dinámico, las aplicaciones pueden desplazarse directamente en unatabla base y a la vez acceder a los datos más actuales.

Referencia relacionada

″DECLARE CURSOR″ (Consulta de DB2 SQL)″FETCH″ (Consulta de DB2 SQL)

Modos de comprobar la ejecución de sentencias de SQLDB2 proporciona varios modos para comprobar la ejecución de sentencias de SQLen un programa.

Un programa que incluye sentencias de SQL puede tener un área que se reservapara la comunicación con DB2—un área de comunicaciones de SQL (SQLCA). CuandoDB2 procesa una sentencia de SQL en el programa, coloca códigos de retorno enlas variables de lenguaje principal SQLSTATE y SQLCODE o en loscorrespondientes campos del SQLCA. Los códigos de retorno indican si lasentencia se ha ejecutado satisfactoriamente o ha fallado.

Recomendación: Debido a que el SQLCA es una herramienta de diagnóstico deproblemas valiosa, incluya las instrucciones necesarias para visualizar parte de lainformación que existe en el SQLCA de los programas de aplicaciones.

Puede utilizar una sentencia GET DIAGNOSTICS o una sentencia WHENEVER enel programa para complementar la comprobación de campos de SQLCA despuésde ejecutar cada sentencia de SQL.

Capítulo 6. Programación de aplicaciones para DB2 161

|||

Page 172: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v La sentencia GET DIAGNOSTICS devuelve información de diagnóstico sobre laúltima sentencia de SQL que se ha ejecutado. Puede solicitar tipos específicos deinformación de diagnóstico o toda la información de diagnóstico disponiblesobre una sentencia. Por ejemplo, la sentencia GET DIAGNOSTICS devuelve elnúmero de filas afectadas por una inserción, actualización o supresión de datos.

v La sentencia WHENEVER le permite especificar qué debe hacer si una condicióngeneral es verdadera. DB2 comprueba el SQLCA y continúa el proceso delprograma. Si se produce un error, una excepción o un aviso cuando se ejecutauna sentencia de SQL, DB2 se bifurca a otra área del programa. A continuación,el programa puede examinar SQLSTATE o SQLCODE para reaccionar de formaespecífica al error o a la excepción.Referencia relacionada

″GET DIAGNOSTICS″ (Consulta de DB2 SQL)″WHENEVER″ (Consulta de DB2 SQL)

Aplicaciones de SQL dinámicoCon SQL dinámico, DB2 prepara y ejecuta las sentencias de SQL dentro de unprograma mientras el programa se ejecuta. SQL dinámico es una buena opción sino conoce el formato de una sentencia de SQL antes de escribir o ejecutar unprograma.

Conceptos relacionados

“SQL dinámico” en la página 121

Tipos de SQL dinámicoHay disponibles cuatro tipos de SQL dinámico.

SQL dinámico incorporadoLa aplicación coloca la fuente de SQL en variables de lenguaje principal eincluye sentencias PREPARE y EXECUTE que indican a DB2 que prepare yejecute el contenido de dichas variables de lenguaje principal durante eltiempo de ejecución. Debe precompilar y vincular los programas queincluyen SQL dinámico incorporado.

SQL interactivoUn usuario entra sentencias de SQL mediante una herramienta interactivacomo, por ejemplo, DB2 QMF para Windows. DB2 prepara y ejecuta estassentencias como sentencias de SQL dinámico.

SQL incorporado diferidoLas sentencias de SQL incorporado diferido no son completamenteestáticas ni completamente dinámicas. Al igual que las sentencias estáticas,las sentencias de SQL incorporado diferido se incorporan dentro deaplicaciones; sin embargo, al igual que las sentencias dinámicas, sepreparan durante el tiempo de ejecución. DB2 procesa las sentencias deSQL incorporado diferido con reglas de tiempo de vinculación. Porejemplo, DB2 utiliza el ID de autorización y el calificador (determinadosdurante el tiempo de vinculación) como propietario del plan o paquete.

SQL dinámico ejecutado mediante funciones ODBC y JDBCLa aplicación contiene llamadas a funciones ODBC que pasan sentencias deSQL dinámico como argumentos. No es necesario precompilar y vincularlos programas que utilizan llamadas a funciones ODBC.

El soporte de aplicaciones JDBC le permite escribir aplicaciones de SQLdinámico en Java.

162 Introducción a DB2 para z/OS

Page 173: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Conceptos relacionados

“SQL dinámico” en la página 121“Cómo controlan el acceso a datos los ID de autorización” en la página 274“Utilización de ODBC para ejecutar SQL dinámico” en la página 164“Utilización de Java para ejecutar SQL estático y dinámico” en la página 165″SQL dinámico″ (DB2 Application Programming and SQL Guide)Referencia relacionada

″SQL dinámico″ (Consulta de DB2 SQL)

Conceptos sobre programación de SQL dinámicoEsta información describe el comportamiento de una aplicación que utiliza SQLdinámico y proporciona un ejemplo de un programa que incluye SQL dinámico.

Una aplicación que utiliza SQL dinámico genera una sentencia de SQL con formatode serie de caracteres o acepta una sentencia de SQL como entrada. Según lasnecesidades de la aplicación, podría ser capaz de simplificar la programación.Intente planificar la aplicación para que no utilice sentencias de SELECT o paraque emita únicamente las sentencias que devuelven un número de valoresconocidos de tipos de datos conocidos. En general, los programas dinámicos máscomplejos son aquéllos en los que desconoce previamente las sentencias de SQLque va a emitir la aplicación. Una aplicación normalmente realiza los pasossiguientes:1. Convierte los datos de entrada en una sentencia de SQL.2. Prepara la sentencia de SQL para ejecutarse y adquiere una descripción de la

tabla de resultados (si existe alguna).3. Obtiene, para sentencias SELECT, suficiente almacenamiento principal para

contener datos recuperados.4. Ejecuta la sentencia o capta las filas de datos.5. Procesa la información que se devuelve.6. Maneja códigos de retorno de SQL.

Ejemplo de SQL dinámico: En este ejemplo se muestra un fragmento de unprograma C que emite dinámicamente sentencias de SQL a DB2. Suponga que estáescribiendo un programa para mantener un inventario de libros. La tabla quenecesita actualizar depende de la entrada para el programa. Este ejemplo muestracómo puede crear una sentencia de SQL y, a continuación, llamar a DB2 paraejecutarla./*********************************************************//* Determinar qué tabla debe actualizarse y crear la *//* sentencia de SQL dinámicamente en la variable 'stmt'. *//*********************************************************/

strcpy(stmt,"UPDATE ");

EXEC SQL SELECT TYPE INTO :book_type FROM BOOK_TYPES WHERETITLE=:bktitle;

IF (book_type=='FICTION') strcpy(table_name,"FICTION_BOOKS");ELSE strcpy(table_name,"NON_FICTION_BOOKS");

strcat(stmt,table_name);strcat(stmt," SET INVENTORY = INVENTORY-1 WHERE TITLE = :bktitle");

/*********************************************************/

Capítulo 6. Programación de aplicaciones para DB2 163

Page 174: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

/* Aplicar PREPARE y EXECUTE a la sentencia *//*********************************************************/EXEC SQL PREPARE OBJSTMT FROM :stmt;EXEC SQL EXECUTE OBJSTMT;

Conceptos relacionados

“Utilización de ODBC para ejecutar SQL dinámico”″SQL dinámico″ (DB2 Application Programming and SQL Guide)Referencia relacionada

″SQL dinámico″ (Consulta de DB2 SQL)

Utilización de ODBC para ejecutar SQL dinámicoOpen Database Connectivity (ODBC) le permite acceder a datos mediante llamadasde función ODBC en la aplicación. La interfaz ODBC elimina la necesidad decomplicación previa y vinculación de la aplicación y aumenta la portabilidad de laaplicación.

La interfaz ODBC está específicamente diseñada para que aplicaciones C y C++accedan a bases de datos relacionales. Las aplicaciones que utilizan la interfazODBC pueden ejecutarse en varios orígenes de datos sin compilarse para cada unade las bases de datos. ODBC se adapta mejor al entorno de cliente/servidor en elcual la fuente de datos de destino puede ser desconocida cuando se crea laaplicación.

Las sentencias de SQL se ejecutan pasándolas a DB2 mediante una llamada defunción ODBC. Las llamadas de función permiten a una aplicación conectarse a lafuente de datos, emitir sentencias de SQL y recibir datos de retorno e informaciónde estado.

Puede preparar sentencias de SQL llamando a la función ODBC SQLPrepare(). Acontinuación, la sentencia se ejecuta llamando a la función ODBC SQLExecute(). Enambos casos, la aplicación no contiene ninguna sentencia PREPARE o EXECUTEincorporada. Puede ejecutar la sentencia, sin preparación, pasando la sentencia a lafunción ODBC SQLExecDirect().

Otra ventaja del acceso ODBC es que puede ayudar a ocultar las diferencias entrecatálogos del sistema de servidores de bases de datos diferentes. A diferencia deSQL incorporado, DB2 ODBC proporciona una interfaz coherente para que lasaplicaciones consulten y recuperen información de catálogo del sistema dentro dela familia de sistemas de gestión de bases de datos de DB2 Database. Estaposibilidad reduce la necesidad de escribir consultas de catálogo específicas decada servidor de bases de datos. DB2 ODBC puede devolver tablas de resultados aestos programas.

Ejemplo de ODBC: Este ejemplo muestra una parte de un programa ODBC quemantiene un inventario de libros./*********************************************************//* Determinar qué tabla debe actualizarse *//*********************************************************/rc = SQLBindParameter( hStmt,

1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,50,0,bktitle,

164 Introducción a DB2 para z/OS

Page 175: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

sizeof(bktitle),&bktitle_len);

if( rc != SQL_SUCCESS ) goto dberror;

rc = SQLExecDirect( hStmt,"SELECT TYPE FROM BOOK_TYPES WHERE TITLE=?"SQL_NTS );

if( rc != SQL_SUCCESS ) goto dberror;

rc = SQLBindCol( hStmt,1,SQL_C_CHAR,book_type,sizeof(book_type),&book_type_len);

if( rc != SQL_SUCCESS ) goto dberror;

rc = SQLFetch( hStmt );if( rc != SQL_SUCCESS ) goto dberror;

rc = SQLCloseCursor( hStmt );if( rc != SQL_SUCCESS ) goto dberror;/*********************************************************//* Actualizar tabla *//*********************************************************/strcpy( (char *)update_sqlstmt, (char *)"UPDATE ");if( strcmp( (char *)book_type, (char *)"FICTION") == 0){

strcat( (char *)update_sqlstmt, (char *)"FICTION_BOOKS" );}else{

strcpy( (char *)update_sqlstmt, (char *)"NON_FICTION_BOOKS" );}strcat( (char *)update_sqlstmt,

(char *)" SET INVENTORY = INVENTORY-1 WHERE TITLE = ?");

rc = SQLPrepare( hStmt, update_sqlstmt, SQL_NTS );if( rc != SQL_SUCCESS ) goto dberror;

rc = SQLExecute( hStmt );if( rc != SQL_SUCCESS ) goto dberror;

rc = SQLEndTran( SQL_HANDLE_DBC, hDbc, SQL_COMMIT );if( rc != SQL_SUCCESS ) goto dberror;

Conceptos relacionados

“Conceptos sobre programación de SQL dinámico” en la página 163″Utilización de antememoria de sentencias de SQL dinámico″ (DB2 for z/OSODBC Guide and Reference)

Utilización de Java para ejecutar SQL estático y dinámicoDB2 for z/OS da soporte a SQLJ y JDBC. En general, las aplicaciones de Javautilizan SQLJ para SQL estático y JDBC para SQL dinámico.

Con la utilización del lenguaje de programación Java obtiene las siguientesventajas:v Puede escribir una aplicación en cualquier plataforma habilitada para Java y

ejecutarla en cualquier plataforma que disponga de Java Development Kit (JDK).v Puede desarrollar una aplicación una vez y ejecutarla en cualquier lugar, lo cual

proporciona las siguientes ventajas potenciales:– Costes de desarrollo reducidos

Capítulo 6. Programación de aplicaciones para DB2 165

Page 176: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

– Costes de mantenimiento reducidos– Costes de gestiones de sistemas reducidos– Flexibilidad en el soporte de diversas configuraciones de hardware y software

La tabla siguiente muestra algunas de las principales diferencias entre SQLJ yJDBC.

Tabla 26. Comparación de SQLJ y JDBC

Características de SQLJ Características de JDBC

SQLJ sigue el modelo de SQL estático yproporciona ventajas de rendimiento encomparación con JDBC.

JDBC sigue el modelo de SQL dinámico.

Los programas fuente SQLJ son máspequeños que los programas JDBCequivalentes ya que SQLJ generaautomáticamente un determinado código quelos desarrolladores deben incluir enprogramas JDBC.

Los programas fuente JDBC son más grandesque los programas SQLJ equivalentes ya queSQLJ genera automáticamente undeterminado código que el desarrolladordebe incluir en programas JDBC.

SQLJ selecciona tipos de datos durante elproceso de preparación de programa eimpone tipificación estricta entre columnasde tabla y expresiones de sistema principalJava.

JDBC pasa valores hacia y desde tablas deSQL sin seleccionar tipos de datos durante lacompilación.

En programas SQLJ, se pueden incluirexpresiones de sistema principal Java ensentencias de SQL.

JDBC requiere una sentencia separada paracada variable de vinculación y especifica lavinculación por número de posición.

SQLJ proporciona las ventajas de la selecciónde autorización de SQL estático. En SQLJ, elID de autorización bajo el que se ejecutan lassentencias de SQL es el propietario del plano paquete. DB2 selecciona los privilegios detabla durante la vinculación.

Debido a que JDBC utiliza SQL dinámico, elID de autorización bajo el que se ejecutan lassentencias de SQL no se conoce hasta eltiempo de ejecución, por lo tanto no sepuede producir ninguna selección deautorización de privilegios de tabla hasta eltiempo de ejecución.

Soporte de SQLJDB2 for z/OS incluye SQLJ, que proporciona soporte para incluir sentencias deSQL estático en aplicaciones y servlets de Java. Los servlets son programas deaplicaciones escritos en Java y que se ejecutan en un servidor web.

Debido a que SQLJ coexiste con JDBC, un programa de aplicación puede crear unaconexión JDBC y, a continuación, utilizar esta conexión para ejecutar sentencias deSQL dinámico mediante JDBC y sentencias de SQL estático incluidas medianteSQLJ.

Un grupo de empresas entre las que se incluyen Oracle, Hewlett Packard e IBM,inicialmente desarrollaron SQLJ para complementar el modelo JDBC de SQLdinámico con un modelo de SQL estático.

El código SQLJ para actualizar el salario de cualquier empleado es el siguiente:#sql [myConnCtxt] { UPDATE EMP

SET SALARY = :newSalaryWHERE EMPNO = :empID };

Utilizando SQLJ se beneficia de las ventajas siguientes:

166 Introducción a DB2 para z/OS

Page 177: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Aplicaciones portátiles entre plataformas y sistemas de gestión de bases dedatos.

v Tipificación estricta, con comprobación durante la compilación y el tiempo devinculación para asegurar que las aplicaciones estén correctamente diseñadaspara la base de datos.

v Mejor rendimiento, manejabilidad y comprobación de autorizaciones de SQLestático.

v Productividad de programador mejorada y mantenimiento más fácil. Encomparación con una aplicación JDBC, el programa resultante normalmente esmás corto y fácil de comprender.

v Familiaridad para programadores que utilizan SQL incluido en otros lenguajesde programación tradicionales.Conceptos relacionados

Capítulo 7, “Implementación del diseño de base de datos”, en la página 177Información relacionada

″Programación de aplicaciones SQLJ″ (DB2 for z/OS ODBC Guide andReference)

Soporte de JDBC

DB2 for z/OS da soporte a aplicaciones que utilizan interfaces JDBC de SunMicrosystems para acceder a datos de DB2 utilizando SQL dinámico. El soporte deDB2 for z/OS para JDBC permite a las organizaciones escribir aplicaciones Javaque accedan a datos locales de DB2 o a datos relacionales remotos de un servidorcon soporte de DRDA.

Sun Microsystems ha desarrollado las especificaciones JDBC. Las especificacionesJDBC definen un conjunto de API (basadas en ODBC) que permite que lasaplicaciones Java accedan a datos relacionales. Las API proporcionan una interfazgenérica para escribir aplicaciones independientes de la plataforma que puedanacceder a cualquier base de datos de SQL. Las API están definidas en 16 clases ydan soporte a funciones básicas de SQL para conectar a una base de datos, ejecutarsentencias de SQL y procesar resultados. Juntas, estas interfaces y clasesrepresentan las posibilidades de JDBC mediante las cuales una aplicación Javapuede acceder a datos relacionales.

Este ejemplo muestra una parte de un programa JDBC que mantiene un inventariode libros./*********************************************************//* Determinar qué tabla debe actualizarse y crear la *//* sentencia dinámicamente. *//*********************************************************/String tableName = null;Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SELECT TYPE FROM " +" BOOK_TYPES WHERE " +" TITLE = \"" + bkTitle + "\"");if (rs.next()){

if (rs.getString(1).equalsIgnoreCase("FICTION"))tableName = "FICTION_BOOKS";

elsetableName = "NON_FICTION_BOOKS";

/*********************************************************//* Aplicar PREPARE y EXECUTE a la sentencia */

Capítulo 6. Programación de aplicaciones para DB2 167

|||||

||||||||||||||||||

Page 178: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

/*********************************************************/stmt.executeUpdate("UPDATE " + tableName + " SET INVENTORY = INVENTORY-1 " +"WHERE TITLE = \"" + bkTitle + "\"");}rs.close();stmt.close();

El soporte de DB2 for z/OS para JDBC ofrece varias ventajas para acceder a datosde DB2:v JDBC combina la ventaja de ejecutar las aplicaciones en un entorno z/OS con la

portabilidad y facilidad de escribir aplicaciones Java.v La interfaz JDBC ofrece la posibilidad de cambio entre controladores y de

acceder a varias bases de datos sin registrar el programa Java.v Las aplicaciones JDBC no requieren precompilaciones ni vinculaciones.v JDBC proporciona una interfaz coherente para que las aplicaciones consulten y

recuperen información de catálogo del sistema dentro de la familia de sistemasde gestión de bases de datos de DB2 Database. Esta posibilidad reduce lanecesidad de escribir consultas de catálogo específicas de cada servidor de basesde datos.Conceptos relacionados

“Conceptos sobre programación de SQL dinámico” en la página 163“Utilización de ODBC para ejecutar SQL dinámico” en la página 164Información relacionada

″Programación de aplicaciones JDBC″ (DB2 for z/OS ODBC Guide andReference)

Utilización de un programa de aplicación como un procedimientoalmacenado

Un procedimiento almacenado es un programa compilado, almacenado en unservidor local o remoto de DB2, que puede ejecutar sentencias de SQL. Estainformación describe los casos en que debe considerarse la utilización de unprocedimiento almacenado.

Un procedimiento almacenado típico contiene dos o más sentencias de SQL yproceso de manipulación o lógico en un programa. Un programa de aplicacióncliente utiliza la sentencia CALL de SQL para invocar el procedimientoalmacenado.

Considere la utilización de procedimientos almacenados para una aplicacióncliente/servidor que como mínimo realiza una de las acciones siguientes:v Ejecuta varias sentencias de SQL remotas.

Las sentencias de SQL remotas pueden dar como resultado muchas operacionesde envío y recepción, lo cual aumenta los costes de procesador y los tiempostranscurridos.Los procedimientos almacenados pueden encapsular muchas de las sentenciasde SQL de la aplicación en un único mensaje hacia el servidor DB2, con lo cualel tráfico en la red se reduce a una única operación de envío y recepción parauna serie de sentencias de SQL.Los bloqueos de tablas de DB2 no se mantienen entre transmisiones en la red, locual reduce la contención para los recursos en el servidor.

v Accede a tablas de un entorno de SQL dinámico en el cual no son aconsejablesprivilegios de tabla para la aplicación que se ejecuta.

168 Introducción a DB2 para z/OS

||||||

|||

Page 179: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Los procedimientos almacenados permiten autorización de SQL estático desdeun entorno dinámico.

v Accede a variables de lenguaje principal a las que desea garantizar seguridad eintegridad.Los procedimientos almacenados eliminan aplicaciones de SQL de la estación detrabajo, con lo cual se evita que los usuarios de estación de trabajo debanmanipular el contenido de sentencias de SQL y variables de lenguaje principalsensibles.

v Crea un conjunto de resultados de filas para devolverlo a la aplicación cliente.Conceptos relacionados

″Procedimientos almacenados″ (DB2 Application Programming and SQL Guide)Referencia relacionada

″Procedimientos almacenados″ (Consulta de DB2 SQL)Información relacionada

″Implementación de procedimientos almacenados de DB2″ (DB2 AdministrationGuide)

Lenguajes utilizados para crear procedimientos almacenadosLos procedimientos almacenados se pueden escribir en distintos lenguajes deprogramación que van desde los lenguajes de programación orientados a objetoshasta los lenguajes de programación tradicionales.

Puede escribir procedimientos almacenados en los siguientes lenguajes deprogramación:

Java Si tiene más experiencia en escribir aplicaciones en un entorno deprogramación orientado a objetos, posiblemente deseará crearprocedimientos almacenados utilizando Java

Lenguaje de procedimiento de SQLSi la aplicación está formada completamente por sentencias de SQL, lógicade flujo de control simple y ninguna lógica de aplicación compleja, puedeoptar por crear los procedimientos almacenados utilizando el lenguaje deprocedimiento de SQL.

REXX Puede crear procedimientos almacenados utilizando programas REXX quepueden contener SQL dinámico. Los DBA y programadores generalmenteutilizan REXX para tareas administrativas.

Lenguajes de programación tradicionales: C, C++, COBOL, PL/I y AssemblerTodos los programas de lenguajes tradicionales deben diseñarse paraejecutarse utilizando Language Environment. Los procedimientosalmacenados COBOL y C++ pueden contener ampliaciones orientadas aobjetos.

El programa que llama al procedimiento almacenado puede estar en cualquierlenguaje que dé soporte a la sentencia SQL CALL. Las aplicaciones ODBC y JDBCpueden utilizar una cláusula de escape para pasar una llamada de procedimientoalmacenado a DB2.

Conceptos relacionados

“Utilización de Java para ejecutar SQL estático y dinámico” en la página 165“Utilización del lenguaje de procedimiento de SQL para crear un procedimientoalmacenado” en la página 172

Capítulo 6. Programación de aplicaciones para DB2 169

Page 180: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Proceso de procedimientos almacenadosEsta información explica cómo funciona el proceso de un procedimientoalmacenado, proporciona ejemplos de procedimientos almacenados y muestracómo ejecutar procedimientos almacenados.

La figura siguiente ilustra un proceso sin procedimientos almacenados.

La figura siguiente ilustra un proceso con procedimientos almacenados.

Figura 31. Proceso sin procedimientos almacenados. Una aplicación incluye sentencias deSQL y se comunica con el servidor de forma separada para cada sentencia.

170 Introducción a DB2 para z/OS

Page 181: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Conceptos relacionados

″Procedimientos almacenados″ (DB2 Application Programming and SQL Guide)

Notas de la figura:

v La aplicación de estación de trabajo utiliza la sentencia de SQL CONNECT para crear unaconversación con DB2.

v DB2 crea una hebra de DB2 para procesar peticiones de SQL. Una hebra es la estructurade DB2 que describe la conexión de una aplicación y rastrea el progreso de la aplicación.

v La sentencia de SQL CALL indica al servidor de DB2 que la aplicación va a ejecutar unprocedimiento almacenado. La aplicación que realiza la llamada proporciona losargumentos necesarios.

v DB2 procesa información sobre la petición y carga el programa de procedimientoalmacenado.

v El procedimiento almacenado ejecuta sentencias de SQL.

Una de las sentencias de SQL abre un cursor que se ha declarado como WITH RETURN.Esto hace que se devuelva un conjunto de resultados a la aplicación de estación detrabajo.

v El procedimiento almacenado asigna valores a los parámetros de salida y sale. Sedevuelve el control a la región de procedimientos almacenados de DB2 y desde allí pasaal subsistema DB2.

v Se devuelve el control a la aplicación que realiza la llamada, la cual recibe los parámetrosde salida y el conjunto de resultados.

La aplicación puede llamar a otros procedimientos almacenados o puede ejecutarsentencias de SQL adicionales. DB2 recibe y procesa la petición COMMIT o ROLLBACK.La operación de confirmación o de retrotracción incluye todas las operaciones de SQL quela aplicación o el aplicación ejecuta durante la unidad de trabajo.

Si la aplicación incluye IMS o CICS, se produce un proceso similar. Este proceso se basaen el modelo de sincronización de IMS o CICS, en lugar de una sentencia de SQLCOMMIT o ROLLBACK.

Figura 32. Proceso con procedimientos almacenados. La misma serie de sentencias de SQLutiliza una única operación de envío o recepción.

Capítulo 6. Programación de aplicaciones para DB2 171

||

||||

|||

Page 182: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Referencia relacionada

″Procedimientos almacenados″ (Consulta de DB2 SQL)Información relacionada

″Implementación de procedimientos almacenados de DB2″ (DB2 AdministrationGuide)

Utilización del lenguaje de procedimiento de SQL para crearun procedimiento almacenado

Con lenguaje de procedimiento de SQL puede escribir procedimientos almacenadosformados totalmente por sentencias de SQL.

Un procedimiento de SQL puede incluir declaraciones de variables, condiciones,cursores y manejadores. El procedimiento de SQL también puede incluir control deflujo, sentencias de asignación y SQL tradicional para definir y manipular datosrelacionales. Estas ampliaciones proporcionan un lenguaje de procedimiento paraescribir procedimientos almacenados y son coherentes con la parte de Módulosalmacenados permanentes del estándar de SQL.

Ejemplo: Este ejemplo muestra un procedimiento almacenado de SQL simple (lasintaxis para la sentencia CREATE PROCEDURE sólo muestra una parte de lascláusulas de la sentencia):CREATE PROCEDURE ITERATOR() LANGUAGE SQLBEGIN

..DECLARE not_found CONDITION FOR SQLSTATE '02000';DECLARE c1 CURSOR FOR ....;DECLARE CONTINUE HANDLER FOR not_found (2)

SET at_end = 1;OPEN c1;ftch_loop1: LOOP

FETCH c1 INTO v_dept, v_deptname, v_admdept; (1)IF at_end = 1 THEN

LEAVE ftch_loop1; (3)ELSEIF v_dept = 'D01' THENINSERT INTO department (deptno, deptname, admrdept)

VALUES ( 'NEW', v_deptname, v_admdept);END IF;

END LOOP;CLOSE c1;

END

En este ejemplo:v El proceso pasa por ftch_loop1, suponiendo que se encuentra una fila.v La primera vez que FETCH no encuentra una fila, el proceso pasa a HANDLER

(1).v HANDLER establece el distintivo at_end. Debido a que el procedimiento utiliza

CONTINUE HANDLER, el proceso continúa en el siguiente paso después deFETCH (2).

v El proceso continúa con la sentencia de SQL CLOSE (3).Conceptos relacionados

″Procedimientos almacenados″ (DB2 Application Programming and SQL Guide)Referencia relacionada

″Procedimientos almacenados″ (Consulta de DB2 SQL)Información relacionada

172 Introducción a DB2 para z/OS

Page 183: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Implementación de procedimientos almacenados de DB2″ (DB2 AdministrationGuide)

Utilización de DB2 Developer Workbench para crear unprocedimiento almacenado

DB2 Developer Workbench ayuda a los desarrolladores de aplicaciones a crearprocedimientos almacenados en el lenguaje de programación Java y en el lenguajede procedimiento de SQL. Estos procedimientos almacenados son trasladables entoda la familia de servidores de DB2, incluyendo DB2 for z/OS, DB2 para iSeries yDB2 Database para Linux, UNIX y Windows.

Introducido en la Versión 8 de DB2 for z/OS, DB2 Developer Workbench amplíalas posibilidades de su predecesor, DB2 Stored Procedure Builder.

Sin DB2 Developer Workbench, el proceso de instalación de un procedimientoalmacenado en un servidor, local o remota, requiere pasos manuales en los quepuede haber errores. Por el contrario, DB2 Developer Workbench genera, con unasimple pulsación en el icono Build (Crear), los pasos para el sistema operativonecesario.

Cuando se configura un subsistema DB2 para la creación de procedimientosalmacenados de SQL y Java, los desarrolladores de aplicaciones pueden crear,instalar y probar fácilmente procedimientos almacenados para DB2 for z/OSutilizando DB2 Developer Workbench. DB2 Developer Workbench tambiénproporciona pasos similares para crear e instalar procedimientos almacenados deJava de DB2 en sistemas operativos distribuidos.

Mediante un conjunto totalmente integrado de Development Add-Ins for MicrosoftVisual Studio 6.0 (para Visual Basic, Visual C ++ , Visual InterDev y VisualStudio.NET), DB2 Developer Workbench también da soporte a un rápido desarrollointeractivo de procedimientos almacenados del servidor y la generación eintegración de código ADO de cliente con Visual Source Safe.

Además del desarrollo de procedimientos almacenados, DB2 Developer Workbenchda soporte a acceso de sólo lectura para funciones definidas por el usuario,desencadenantes, tablas y vistas.

Configuración del entorno de procedimientos almacenadosLa configuración del entorno de procedimientos almacenados incluye elestablecimiento del entorno de procedimientos almacenados y la definición delprocedimiento almacenado en DB2. Normalmente, un administrador del sistemapersonaliza el entorno y un programador de aplicaciones define el procedimientoalmacenado.

Para poder ejecutar un procedimiento almacenado antes debe definirlo en DB2.Utilice la sentencia de SQL CREATE PROCEDURE para definir un procedimientoalmacenado en DB2. Para modificar la definición, utilice la sentencia ALTERPROCEDURE.

Tareas relacionadas

″Configuración del entorno de procedimientos almacenados″ (DB2 ApplicationProgramming and SQL Guide)

Capítulo 6. Programación de aplicaciones para DB2 173

Page 184: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Preparación de un procedimiento almacenadoEsta información describe lo que debe considerar antes de utilizar unprocedimiento almacenado.

Un procedimiento almacenado puede estar formado por más de un programa,cada uno de ellos con su propio paquete. El procedimiento almacenado puedellamar a otros programas, procedimientos almacenados o funciones definidas porel usuario. Utilice los recursos del lenguaje de programación para llamar a otrosprogramas.

Si el procedimiento almacenado llama a otros programas que contienen sentenciasde SQL, cada uno de los programas llamados deben tener un paquete de DB2. Elpropietario del paquete o plan que contiene la sentencia CALL debe tener laautorización EXECUTE para todos los paquetes que los otros programas utilizan.

Cuando un procedimiento almacenado llama a otro programa, DB2 determina lacolección a la que pertenece el paquete del programa llamado.

Información relacionada

″Creación de un procedimiento almacenado″ (DB2 Application Programmingand SQL Guide)

Cómo pueden llamar las aplicaciones a procedimientosalmacenados

La sentencia CALL de SQL se utiliza para llamar a un procedimiento almacenado ypasar una lista de argumentos al procedimiento.

Un programa de aplicación puede llamar a un procedimiento almacenado de lassiguientes formas:v Ejecute la sentencia CALL localmente o envíe la sentencia CALL a un servidor.

La aplicación ejecuta una sentencia CONNECT para conectarse al servidor. Acontinuación, la aplicación ejecuta la sentencia CALL o emite un nombre en trespartes para identificarse y conectarse implícitamente al servidor donde seencuentra el procedimiento almacenado.

v Después de conectarse a un servidor, combine sentencias CALL con otrassentencias de SQL. Para ejecutar la sentencia CALL, puede ejecutar la sentenciaCALL de forma estática o utilizar una cláusula de escape en una aplicaciónODBC o JDBC para pasar la sentencia CALL a DB2.

La ejecución de un procedimiento almacenado implica dos tipos de autorización:v Autorización para ejecutar el procedimiento almacenadov Autorización para ejecutar el paquete de procedimientos almacenados y

cualquier paquete que esté bajo el paquete de procedimientos almacenados

Si el propietario del procedimiento almacenado tiene autoridad para ejecutar lospaquetes, la persona que ejecuta los paquetes no necesita la autoridad.

Las autorizaciones necesarias dependen de si el nombre del procedimientoalmacenado se especifica explícitamente en la sentencia CALL o si está contenidoen una variable de lenguaje principal.

174 Introducción a DB2 para z/OS

Page 185: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Si el procedimiento almacenado invoca funciones definidas por el usuario odesencadenantes, necesita autorizaciones adicionales para ejecutar la funcióndefinida por el usuario, el desencadenante y los paquetes de funciones definidaspor el usuario.

Conceptos relacionados

″Ejemplo de un procedimiento almacenado simple″ (DB2 ApplicationProgramming and SQL Guide)

Capítulo 6. Programación de aplicaciones para DB2 175

Page 186: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

176 Introducción a DB2 para z/OS

Page 187: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 7. Implementación del diseño de base de datos

Después de crear un diseño lógico y un diseño físico de la base de datos relacionaly recopilar los requisitos de proceso, puede pasar a la fase de implementación. Engeneral, la implementación del diseño físico implica la definición de varios objetosy la aplicación de restricciones a las relaciones de datos.

Los objetos de una base de datos relacional se organizan en conjuntosdenominados esquemas. Un esquema proporciona una clasificación lógica de objetosde la base de datos. El nombre de esquema se utiliza como calificador de objetosde SQL como, por ejemplo, tablas, vistas, índices y desencadenantes.

Esta información explica la tarea de implementar el diseño de base de datos deforma que puedan comprenderla la mayoría de usuarios nuevos. Cuando realicerealmente la tarea, puede seguir los pasos en un orden diferente.

Puede definir, o crear, objetos ejecutando sentencias de SQL. Esta informaciónresume algunos de los convenios de denominación para los diversos objetos quepuede crear. Además en esta información, verá ejemplos de sentencias y palabrasclave de SQL básico que puede utilizar para crear objetos en una base de datos deDB2. (Esta información no documenta la sintaxis de SQL completa.)

Consejo: Al crear objetos de DB2 (como tablas, espacios de tablas, vistas e índices),puede anteponer un calificador al nombre de objeto para distinguirlo de los objetosque crean otras personas. (Por ejemplo, MYDB.TSPACE1 es un espacio de tablasdiferente de YOURDB.TSPACE1.) Cuando utilice un calificador, evite utilizar SYScomo los tres primeros caracteres. Si no especifica ningún calificador, DB2 asignaun calificador para el objeto.

Conceptos relacionados

Capítulo 4, “Objetos de DB2 y sus relaciones”, en la página 67

Creación de tablasDiseño de tablas utilizadas por muchas aplicaciones es una tarea crítica. El diseñode tablas puede ser difícil ya que la misma información se puede representar demuchas formas diferentes. Esta información resume brevemente cómo crear ymodificar tablas, y cómo controlar la autorización.

Para crear tablas debe utilizar la sentencia SQL CREATE TABLE. Después de habercreado y empezado a utilizar las tablas, es posible que en algún momento debarealizar cambios en ellas. La sentencia ALTER TABLE le permite añadir y cambiarcolumnas, añadir o eliminar una clave primaria o una clave foránea, añadir oeliminar restricciones de comprobación de tabla o añadir y cambiar particiones.Considere los cambios de diseño con atención para evitar o reducir el impacto enlas aplicaciones.

Si tiene la autorización DBADM (administración de bases de datos), probablementedeseará controlar la creación de bases de datos y espacios de tablas de DB2. Estosobjetos pueden tener un impacto grande en el rendimiento, el almacenamiento y laseguridad de toda la base de datos relacional. En algunos casos, también puedeque desee conservar la responsabilidad de la creación de tablas. Después dediseñar la base de datos relacional, puede crear las tablas necesarias para los

© Copyright IBM Corp. 2001, 2008 177

||||||

Page 188: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

programas de aplicaciones. A continuación, puede pasar la autorización para que lautilicen los desarrolladores de aplicaciones, directa o indirectamente, mediante eluso de vistas.

Sin embargo, si lo desea, puede otorgar la autorización para crear tablas a losresponsables de la implementación de la aplicación. Por ejemplo, probablementedeseará autorizar determinados programadores de aplicaciones para crear tablas sinecesitan tablas temporales con finalidades de prueba.

Puede que algunos usuarios de la organización deseen utilizar DB2 con la mínimaasistencia o el mínimo control. Puede definir un grupo de almacenamiento y unabase de datos separados para estos usuarios y autorizarlos para crearlos objetos dedatos que necesiten como, por ejemplo, tablas.

Conceptos relacionados

Capítulo 4, “Objetos de DB2 y sus relaciones”, en la página 67“Mecanismos de autorización y seguridad para el acceso a datos” en la página273

Tipos de tablasEn DB2, los datos del usuario se almacenan en tablas. DB2 da soporte a variostipos de tablas, cada uno de los cuales tiene sus propias finalidades ycaracterísticas.

DB2 da soporte a los siguientes tipos de tablas:

tabla baseEl tipo más común de tabla en DB2. Para crear una tabla base utilice lasentencia de SQL CREATE TABLE. La tabla de catálogo de DB2,SYSIBM.SYSTABLES, almacena la descripción de la tabla base. La tabla espermanente (tanto su descripción como sus datos). Todos los programas yusuarios que hacen referencia a este tipo de tabla, hacen referencia a lamisma descripción de la tabla y a la misma instancia de la tabla.

tabla de resultadosTabla que contiene un conjunto de filas que DB2 selecciona o genera,directa o indirectamente, desde una o más tablas base en respuesta a unasentencia de SQL. A diferencia de una tabla base o una tabla temporal, unatabla de resultados no es un objeto que se define utilizando una sentenciaCREATE.

tabla temporalTabla que se define mediante la sentencia de SQL CREATE GLOBALTEMPORARY TABLE o DECLARE GLOBAL TEMPORARY TABLE paracontener datos temporalmente. Las tablas temporales son especialmenteútiles cuando se necesita clasificar o consultar tablas de resultadosintermedios que contienen un número elevado de filas, pero tan solo sedesea almacenar de forma permanente un subconjunto reducido de estasfilas.

tabla temporal global creadaTabla que se define con la sentencia de SQL CREATE GLOBALTEMPORARY TABLE. La tabla de catálogo DB2,SYSIBM.SYSTABLES, almacena la descripción de la tabla temporalcreada. La descripción de la tabla es permanente y compartible. Sinembargo, cada proceso de aplicaciones individual que hacereferencia a una tabla temporal creada tiene una instancia diferente

178 Introducción a DB2 para z/OS

|||||||

|||||||

Page 189: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

de la tabla. Es decir, si el proceso de aplicaciones A y el proceso deaplicaciones B utilizan una tabla temporal creada llamadaTEMPTAB:v Cada proceso de aplicaciones utiliza la misma descripción de

tabla.v Ningún proceso de aplicaciones tiene acceso ni conocimiento de

las filas de la instancia de TEMPTAB del otro.

tabla temporal global declaradaTabla que se define con la sentencia de SQL DECLARE GLOBALTEMPORARY TABLE. El catálogo de DB2 no almacena unadescripción de la tabla temporal declarada. Por lo tanto, ni ladescripción ni la instancia de la tabla es permanente. Variosprocesos de aplicaciones pueden hacer referencia a la misma tablatemporal declarada por nombre, pero en realidad no comparten lamisma descripción o instancia de la tabla. Por ejemplo,supongamos que el proceso de aplicaciones A define una tablatemporal declarada denominada TEMP1 con 15 columnas. Elproceso de aplicaciones B define una tabla temporal declaradadenominada TEMP1 con 5 columnas. Cada proceso de aplicacionesutiliza su propia descripción de TEMP1; ningún proceso deaplicaciones tiene acceso ni conocimiento de las filas de la instanciade TEMP1 de las otras aplicaciones.

tabla de consultas materializadasTabla, definida con la sentencia de SQL CREATE TABLE, que contienedatos materializados que proceden de una o más tablas fuente. Las tablasde consultas materializadas son útiles para consultas complejas que seejecutan en cantidades muy grandes de datos. DB2 puede calcularpreviamente todas estas consultas, o parte de ellas, y utilizar los resultadospreviamente calculados, o materializados, para responder a las preguntasde una forma más eficaz. Las tablas de consultas materializadas se utilizancon frecuencia en aplicaciones de depósito de datos e inteligenciaempresarial.

Varias tablas de catálogo de DB2, que incluyen SYSIBM.SYSTABLES ySYSIBM.SYSVIEWS, almacenan la descripción de la tabla de consultasmaterializadas e información sobre su dependencia de una tabla, vista ofunción. Los atributos que definen una tabla de consultas materializadasindican a DB2 si la tabla:v Está mantenida por el sistema o mantenida por el usuario.v Es renovable: todas las tablas materializadas se pueden actualizar con la

sentencia REFRESH TABLE. Sólo las tablas de consultas materializadasmantenidas por el usuario también se pueden actualizar con el programade utilidad LOAD y las sentencias de SQL UPDATE, INSERT y DELETE,

v Está habilitada para optimización de consultas: se puede habilitar oinhabilitar la utilización de una tabla de consultas materializadas en lareescritura automática de consultas.

tabla auxiliarTipo de tabla especial que contiene datos de objetos grandes y datos XML.

tabla de clonaciónTabla estructuralmente idéntica a una tabla base. Para crear una tabla declonación utilice una sentencia ALTER TABLE para la tabla base queincluya una cláusula ADD CLONE. La tabla de clonación se crea en unainstancia diferente del mismo espacio de tablas que la tabla base, es

Capítulo 7. Implementación del diseño de base de datos 179

|||

||

||

|||||||||||||||

|

|||||

Page 190: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

estructuralmente idéntica a la tabla base en todos los aspectos y tiene losmismos índices, desencadenantes BEFORE y objetos LOB. En el catálogo deDB2, la tabla SYSTABLESPACE indica que el espacio de tablas tan solocontiene una tabla, pero SYSTABLESPACE.CLONE indica que existe unatabla de clonación. Las tablas de clonación sólo se pueden crear en unespacio de tablas particionado por rango o de partición por crecimientoque esté gestionado por DB2. La tabla base y la tabla de clonación tienenconjuntos de datos VSAM subyacentes distintos (identificados por susnúmeros de instancia de conjunto de datos) que contienen filas de datosindependientes.

tabla XMLTipo de tabla especial que contiene únicamente datos XML.

Estos tipos de tablas diferentes se diferencian en otros aspectos que no se describenen este tema.

Conceptos relacionados

“Creación de tablas de consultas materializadas” en la página 182“Creación de objetos grandes” en la página 233Referencia relacionada

“Tablas de ejemplo de DB2” en la página 124

Creación de tablas baseUtilice la sentencia CREATE TABLE para crear una tabla base que haya designado.

Cuando crea una tabla, DB2 registra una definición de la tabla en el catálogo deDB2. La creación de una tabla no almacena los datos de aplicaciones. Puedecolocar datos en la tabla utilizando varios métodos como, por ejemplo, el programade utilidad LOAD o la sentencia INSERT.

Ejemplo: La siguiente sentencia CREATE TABLE crea la tabla EMP, que está enuna base de datos denominada MYDB y en un espacio de tablas denominadoMYTS:CREATE TABLE EMP

(EMPNO CHAR(6) NOT NULL,FIRSTNME VARCHAR(12) NOT NULL,LASTNAME VARCHAR(15) NOT NULL,DEPT CHAR(3) ,HIREDATE DATE ,JOB CHAR(8) ,EDL SMALLINT ,SALARY DECIMAL(9,2) ,COMM DECIMAL(9,2) ,PRIMARY KEY (EMPNO))

IN MYDB.MYTS;

La sentencia CREATE TABLE previa muestra la definición de varias columnas.Conceptos relacionados

“Definición de columnas de una tabla” en la página 183Referencia relacionada

″CREATE TABLE″ (Consulta de DB2 SQL)

Creación de tablas temporalesLas tablas temporales son útiles cuando necesita clasificar o consultar tablas deresultados intermedios que contienen un número elevado de filas e identificar un

180 Introducción a DB2 para z/OS

||||||||||

||

Page 191: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

subconjunto reducido de filas para que se almacene de forma permanente. Los dostipos de tablas temporales son tablas temporales creadas y tablas temporalesdeclaradas.

Puede utilizar tablas temporales para clasificar volúmenes grandes de datos yconsultar estos datos. A continuación, después de identificar el número reducidode filas que desea almacenar de forma permanente, puede almacenarlas en unatabla base. Los dos tipos de tablas temporales de DB2 son la tabla temporal creaday la tabla temporal declarada. Los temas siguientes describen cómo definir cadatipo.

Tabla temporal creada

Algunas veces necesita una descripción compartible y permanente de una tablapero necesita almacenar datos únicamente mientras dura un proceso deaplicaciones. En este caso, puede definir y utilizar una tabla temporal creada. DB2no registra las operaciones que realiza en tablas temporales creadas; por lo tanto,las sentencias de SQL que las utilizan pueden ejecutarse más eficazmente. Cadaproceso de aplicaciones tiene su propia instancia de la tabla temporal creada.

Ejemplo: La sentencia siguiente define una tabla temporal creada, TEMPPROD:CREATE GLOBAL TEMPORARY TABLE TEMPPROD

(SERIALNO CHAR(8) NOT NULL,DESCRIPTION VARCHAR(60) NOT NULL,MFGCOSTAMT DECIMAL(8,2) ,MFGDEPTNO CHAR(3) ,MARKUPPCT SMALLINT ,SALESDEPTNO CHAR(3) ,CURDATE DATE NOT NULL);

Tabla temporal declarada

Algunas veces necesita almacenar datos mientras dura un proceso de aplicaciones,pero no necesita una descripción compartible y permanente de la tabla. En estecaso, puede definir y utilizar una tabla temporal declarada.

A diferencia de otras sentencias DB2 DECLARE, DECLARE GLOBALTEMPORARY TABLE es una sentencia ejecutable que se puede incluir en unprograma de aplicación o emitir de forma interactiva. También puede preparar lasentencia de forma dinámica.

Cuando un programa de un proceso de aplicaciones emite una sentenciaDECLARE GLOBAL TEMPORARY TABLE DB2 crea una instancia vacía de latabla. Puede llenar la tabla temporal declarada utilizando sentencias INSERT,modificar la tabla utilizando sentencias UPDATE o DELETE buscadas o situadas yconsultar la tabla utilizando sentencias SELECT. También puede crear índices en latabla temporal declarada. La definición de la tabla temporal declarada existemientras se ejecuta el proceso de aplicaciones.

Ejemplo: La sentencia siguiente define una tabla temporal declarada, TEMP_EMP.(En este ejemplo se supone que ya ha creado la base de datos WORKFILE y elespacio de tablas correspondiente para la tabla temporal.)DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMP_EMP

(EMPNO CHAR(6) NOT NULL,SALARY DECIMAL(9, 2) ,COMM DECIMAL(9, 2));

Capítulo 7. Implementación del diseño de base de datos 181

|||

||||

Page 192: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Si se especifica explícitamente, el calificador para el nombre de una tabla temporaldeclarada debe ser SESSION. Si no se especifica el calificador, se defineimplícitamente para que sea SESSION.

Al final de un proceso de aplicaciones que utiliza una tabla temporal declarada,DB2 suprime las filas de la tabla e implícitamente elimina la descripción de latabla.

Conceptos relacionados

″Tablas temporales″ (DB2 Application Programming and SQL Guide)Referencia relacionada

″DECLARE GLOBAL TEMPORARY TABLE″ (Consulta de DB2 SQL)″CREATE GLOBAL TEMPORARY TABLE″ (Consulta de DB2 SQL)

Creación de tablas de consultas materializadasLas tablas de consultas materializadas mejoran el rendimiento de las consultascomplejas que operan en cantidades muy grandes de datos. Esta informaciónexplica cómo se utiliza y se crea una tabla de consultas materializadas.

Mediante el uso de una tabla de consultas materializadas, DB2 calcula poradelantado los resultados de los datos que derivan de una o más tablas. Alsometer una consulta, DB2 puede utilizar los resultados que se almacenan en unatabla de consultas materializadas en lugar de calcular los resultados a partir de lastablas fuente subyacentes sobre las que se define la tabla de consultasmaterializadas. Si la consulta reescrita es menos costosa, DB2 elige optimizar laconsulta utilizando la consulta reescrita, un proceso que se denomina reescrituraautomática de consulta.

Para beneficiarse de la reescritura automática de consulta, debe definir, llenar yrenovar periódicamente la tabla de consultas materializadas. Utilice la sentenciaCREATE TABLE para crear una tabla nueva como una tabla de consultasmaterializadas.

Ejemplo: La sentencia CREATE TABLE siguiente define una tabla de consultasmaterializadas denominada TRANSCNT. TRANSCNT resume el número detransacciones de la tabla TRANS por cuenta, ubicación y año:CREATE TABLE TRANSCNT (ACCTID, LOCID, YEAR, CNT) AS

(SELECT ACCOUNTID, LOCATIONID, YEAR, COUNT(*)FROM TRANSGROUP BY ACCCOUNTID, LOCATIONID, YEAR )DATA INITIALLY DEFERREDREFRESH DEFERREDMAINTAINED BY SYSTEMENABLE QUERY OPTIMIZATION;

La selección completa, junto con la cláusula DATA INITIALLY DEFERRED y lacláusula REFRESH DEFERRED, define la tabla como una tabla de consultasmaterializadas.

Información relacionada

″Creación de tablas de consultas materializadas″ (DB2 Administration Guide)

182 Introducción a DB2 para z/OS

|||

Page 193: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Creación de una tabla con particionamiento controlado portabla

El particionamiento controlado por tabla no necesita ningún índice para elparticionamiento y se define mediante cláusulas PARTITION en la sentenciaCREATE TABLE.

Cuando defina un índice de particionamiento en una tabla de un espacio de tablasparticionado, especifique los valores de clave de particionamiento y de clave límiteen la cláusula PARTITION de la sentencia CREATE INDEX. Este tipo departicionamiento recibe el nombre de particionamiento . Debido a que el índice secrea separadamente de la tabla asociada, no puede insertar datos en la tabla hastaque se haya creado el índice de particionamiento.

DB2 también da soporte a un método denominado particionamiento controlado portabla para definir particiones de tabla. Puede utilizar el particionamiento controladopor tabla en lugar del particionamiento controlado por índice.

En el particionamiento controlado por tabla, identifique los valores de columnaque delimitan los límites de partición con la cláusula PARTITION BY y la cláusulaPARTITION ENDING AT de la sentencia CREATE TABLE. Cuando utilice este tipode particionamiento, no se necesita ningún índice para el particionamiento.

Ejemplo: Suponga que necesita crear una tabla de transacciones grande queincluya la fecha de la transacción en una columna denominada POSTED. Supongaque desea mantener las transacciones para cada mes en una partición separada.Para crear la tabla, utilice la sentencia siguiente:CREATE TABLE TRANS

(ACCTID ...,STATE ...,POSTED ...,... , ...)PARTITION BY (POSTED)(PARTITION 1 ENDING AT ('01/31/2003'),PARTITION 2 ENDING AT ('02/28/2003'),...PARTITION 13 ENDING AT ('01/31/2004'));

Conceptos relacionados

“Índices de particionamiento” en la página 226

Definición de columnas de una tablaUna definición de columna tiene dos componentes básicos, el nombre de columnay el tipo de datos. Esta información describe lo que debe considerarse al definircolumnas.

Los dos componentes básicos de la definición de columna son el nombre y el tipode datos. Una columna contiene valores que tienen el mismo tipo de datos. Si estáfamiliarizado con los conceptos de registros y campos, puede pensar en un valorcomo un campo de un registro. Un valor es la unidad más pequeña de datos quese puede manipular con SQL. Por ejemplo, en la tabla EMP, la columna EMPNOidentifica a todos los empleados mediante un número de empleado exclusivo. Lacolumna HIREDATE contiene las fechas de contratación de todos los empleados.No se pueden solapar columnas.

Las mejoras de los esquemas en línea proporcionan una flexibilidad que le permitecambiar una definición de columna. Considere con atención las decisiones que

Capítulo 7. Implementación del diseño de base de datos 183

||||||

|||

Page 194: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

tome sobre definiciones de columnas. Una vez implantado el diseño de las tablas,puede cambiar una definición de columna con la mínima interrupción en lasaplicaciones.

Durante la fase de implementación del diseño de base de datos, consulte lasdescripciones completas de la sintaxis de las sentencias de SQL y la utilización decada sentencia de SQL con la que trabaje.

Nombres de columnaLas siguientes directrices de denominación de columnas que se desarrollan para laorganización aseguran la elección de opciones correctas que sean coherentes.

Generalmente, el administrador de base de datos (DBA) participa en ladeterminación de los nombres de atributos (o columnas) durante la fase del diseñofísico de la base de datos. Para realizar las elecciones correctas para los nombres decolumna, los DBA siguen las directrices que los administradores de los datos de laorganización han desarrollado.

Algunas columnas deben añadirse a la base de datos una vez completado eldiseño. En este caso, deben seguirse las reglas de DB2 para nombres de columnaexclusivos. Los nombres de columna deben ser exclusivos dentro de una tabla,pero se puede utilizar el mismo nombre de columna en diferentes tablas. Intenteelegir un nombre significativo para describir los datos de una columna para que elesquema de denominación sea intuitivo. La longitud máxima de un nombre decolumna es de 30 bytes.

Tipos de datosCada columna de cada tabla de DB2 tiene un tipo de datos. El tipo de datosinfluye en el intervalo de valores que puede tener la columna y en el conjunto deoperadores y funciones que se le aplican.

El tipo de datos de cada columna se especifica cuando crea la tabla. Tambiénpuede cambiar el tipo de datos de una columna de tabla. La nueva definición detipo de datos se aplica a todos los datos de la tabla asociada cuando se reorganizala tabla.

Algunos tipos de datos tienen parámetros que definen adicionalmente losoperadores y funciones que se aplican a la columna. DB2 da soporte a tipos dedatos proporcionados por IBM y a tipos de datos definidos por el usuario. Lostipos de datos proporcionados por IBM a veces se denominan tipos de datosincorporados.

En DB2 for z/OS, los tipos de datos definidos por el usuario se denominan tiposdiferenciados.

Conceptos relacionados

“Tipos de datos para atributos” en la página 73“Tipos diferenciados” en la página 191

Tipos de datos de serieDB2 da soporte a varios tipos de datos de serie: series de caracteres, series gráficasy series binarias.

Las series de caracteres contienen texto y pueden ser de longitud fija o de longitudvariable. Las series gráficas contienen datos gráficos, que pueden ser de longitud fija

184 Introducción a DB2 para z/OS

||

Page 195: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

o de longitud variable. Las series binarias contienen series de bytes binarios ypueden ser de longitud fija o de longitud variable. Todos estos tipos de datos deserie se pueden representar como objetos grandes.

La tabla siguiente describe los diferentes tipos de datos de serie e indica el rangopara la longitud de cada tipo de datos de serie.

Tabla 27. Tipos de datos de serie

Tipo de datos Indica una columna de...

CHARACTER(n) Series de caracteres de longitud fija con una longitud de n bytes. ndebe ser mayor que 0 y no mayor que 255. La longitud por omisiónes 1.

VARCHAR(n) Series de caracteres de longitud variable con una longitud máximade n bytes. n debe ser mayor que 0 y menor que un número quedepende del tamaño de página del espacio de tablas. La longitudmáxima es 32704.

CLOB(n) Series de caracteres de longitud variable con un máximo de ncaracteres. n no puede exceder de 2 147 483 647. La longitud poromisión es 1.

GRAPHIC(n) Series gráficas de longitud fija que contienen n caracteres de doblebyte. n debe ser mayor que 0 y menor que 128. La longitud poromisión es 1.

VARGRAPHIC(n) Series gráficas de longitud variable. La longitud máxima, n, debeser mayor que 0 y menor que un número que depende del tamañode página del espacio de tablas. La longitud máxima es 16352.

DBCLOB(n) Caracteres de doble byte de longitud variable con un máximo de ncaracteres de doble byte. n no puede exceder de 1 073 741 824. Lalongitud por omisión es 1.

BINARY(n) Series binarias de longitud fija o longitud variable con una longitudde n bytes. n debe ser mayor que 0 y no mayor que 255. Lalongitud por omisión es 1.

VARBINARY(n) Series binarias de longitud variable con una longitud de n bytes. Lalongitud de n debe ser mayor que 0 y menor que un número quedepende del tamaño de página del espacio de tabla. La longitudmáxima es 32704.

BLOB(n) Series binarias de longitud variable con una longitud de n bytes. nno puede exceder de 2 147 483 647. La longitud por omisión es 1.

En la mayoría de casos, el contenido de los datos que una columna debe almacenarimpone el tipo de datos que se elige.

Ejemplo: La tabla DEPT tiene una columna, DEPTNAME. El tipo de datos de lacolumna DEPTNAME es VARCHAR(36). Debido a que los nombres dedepartamento varían considerablemente de longitud, la selección de un tipo dedatos de longitud variable parece apropiada. Si selecciona un tipo de datosCHAR(36), por ejemplo, el resultado es mucho espacio sin utilizar desaprovechado.En este caso, DB2 asigna a todos los nombres de departamentos la misma cantidadde espacio (36 bytes) sin tener en cuenta la longitud. Un tipo de datos CHAR(6)para el número de empleado (EMPNO) es una opción razonable ya que todos losvalores son valores de longitud fija (6 bytes).

Series de caracteres de longitud fija y de longitud variable

La utilización de VARCHAR ahorra espacio de disco, pero conlleva uncoste adicional de 2 bytes para cada valor. La utilización de VARCHAR

Capítulo 7. Implementación del diseño de base de datos 185

|||

||

||

||||

|||||

||||

||||

||||

||||

||||

|||||

||||

Page 196: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

también requiere proceso adicional para filas de longitud variable. Por lotanto, es preferible utilizar CHAR en lugar de VARCHAR, a menos que elespacio ahorrado al utilizar VARCHAR sea significativo. El espacioahorrado no es significativo si la longitud máxima de columna es reducidao si las longitudes de los valores no presentan una variación significativa.

Recomendación: Normalmente, no debe definir una columna comoVARCHAR(n) o CLOB(n) a menos que n tenga 18 caracteres como mínimo.

Subtipos de serie

Si una aplicación que accede a la tabla utiliza un esquema de codificacióndiferente del que utiliza DBMS, los siguientes subtipos de serie pueden serimportantes:

BIT No representa caracteres.

SBCS Representa caracteres de un solo byte.

MIXEDRepresenta caracteres de un solo byte y caracteres de varios bytes.

Los subtipos de serie tan solo se aplican a los tipos de datos CHAR,VARCHAR y CLOB. Sin embargo, el subtipo de serie BIT no estápermitido para el tipo de datos CLOB.

Datos gráficos y mixtos

Cuando las columnas contienen caracteres del juego de caracteres de doblebyte (DBCS), puede definirlas como datos gráficos o datos mixtos.

Los datos gráficos pueden ser GRAPHIC, VARGRAPHIC o DBCLOB. Lautilización de VARGRAPHIC ahorra espacio de disco, pero conlleva uncoste adicional de 2 bytes para cada valor. La utilización de VARGRAPHICtambién requiere proceso adicional para filas de longitud variable. Por lotanto, es preferible utilizar GRAPHIC en lugar de utilizar VARGRAPHIC amenos que el espacio ahorrado al utilizar VARGRAPHIC sea significativo.El espacio ahorrado no es significativo si la longitud máxima de columnaes reducida o si las longitudes de los valores no varían significativamente.

Recomendación: Normalmente, no debe definir una columna comoVARGRAPHIC(n) a menos que n tenga 18 caracteres de doble byte comomínimo (lo cual representa una longitud de 36 bytes).

Las columnas de serie de caracteres de datos mixtos pueden contenercaracteres SBCS (juego de caracteres de un solo byte) y DBCS. Puedeespecificar las columnas de serie de caracteres de datos mixtos comoCHAR, VARCHAR o CLOB con MIXED DATA.

Recomendación: Si todos los caracteres son caracteres DBCS, utilice lostipos de datos gráficos. (Kanji es un ejemplo de un idioma que necesitacaracteres DBCS.) Para caracteres SBCS, utilice datos mixtos para guardar 1byte para cada carácter de un solo byte de la columna.

Conceptos relacionados

“Codificación de esquemas para datos de serie” en la página 191

Tipos de datos numéricosDB2 da soporte a varios tipos de tipos de datos numéricos, cada uno de los cualestiene sus propias características.

186 Introducción a DB2 para z/OS

|||

Page 197: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para datos numéricos, utilice columnas numéricas en lugar de columnas de serie.Las columnas numéricas requieren menos espacio que las columnas de serie y DB2verifica que los datos tengan el tipo asignado.

Ejemplo: Suponga que DB2 calcula un rango entre dos números. Si los valorestienen un tipo de datos de serie, DB2 supone que los valores pueden incluir todaslas combinaciones de caracteres alfanuméricos. Por el contrario, si los valorestienen un tipo de datos numérico, DB2 puede calcular un rango entre los dosvalores de forma más eficaz.

La tabla siguiente describe los tipos de datos numéricos.

Tabla 28. Tipos de datos numéricos

Tipo de datos Indica una columna de...

SMALLINT Enteros pequeños. Un entero pequeño es un entero binario con unaprecisión de 15 bits. El rango oscila entre -32768 y +32767.

INTEGER o INTEnteros grandes. Un entero grande es un entero binario con unaprecisión de 31 bits. El rango oscila entre -2147483648 y+2147483647.

BIGINT Enteros muy grandes. Un entero muy grande es un entero binario conuna precisión de 63 bits. El rango de los enteros muy grandes oscilaentre -9223372036854775808 y +9223372036854775807.

DECIMAL oNUMERIC

Un número decimal es un número decimal empaquetado con unacoma decimal implícita. La posición de la coma decimal ladetermina la precisión y la escala del número. La escala, que es elnúmero de dígitos en la parte fraccionaria del número, no puede sernegativa o mayor que la precisión. La precisión máxima es de 31dígitos.

Todos los valores de una columna decimal tienen la mismaprecisión y escala. El rango de una variable decimal o los númerosde una columna decimal están entre -n y +n, donde n es el númeropositivo más grande que se puede representar con la precisión yescala aplicable. El rango máximo oscila entre 1 - 10³¹ y 10³¹ - 1.

DECFLOAT Un valor de coma flotante decimal es un número IEEE 754r con un acoma decimal. La posición de la coma decimal se almacena en cadavalor de coma flotante decimal. La precisión máxima es de 34dígitos.

El rango de un número de coma flotante decimal tiene 16 ó 34dígitos de precisión; el rango de exponente es respectivamenteoscila entre 10-383 y 10+384 o entre 10-6143 y 10+6144.

REAL Un número de coma flotante de precisión simple es un número decoma flotante corto de 32 bits. El rango de los números de comaflotante de precisión simple oscila aproximadamente entre -7.2E+75y 7.2E+75. En este rango, el valor negativo más grande está cerca de-5.4E-79 y el valor positivo más pequeño está cerca de 5.4E-079.

DOUBLE Un número de coma flotante de doble precisión es un número de comaflotante largo de 64 bits. El rango de los números de coma flotantede doble precisión oscila aproximadamente entre -7.2E+75 y7.2E+75. En este rango, el valor negativo más grande está cerca de-5.4E-79 y el valor positivo más pequeño está cerca de 5.4E-079.

Nota: zSeries y z/Architecture utilizan el formato de System/390 y dan soporte al formatode coma flotante IEEE.

Capítulo 7. Implementación del diseño de base de datos 187

||

||

|||

||||

||||

||

||||||

|||||

|||||

|||

||||||

||||||

|||

Page 198: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para valores enteros, SMALLINT INTEGER o BIGINT (según el rango de losvalores) generalmente es preferible DECIMAL.

Puede definir una columna numérica exacta como una columna de identidad. Unacolumna de identidad tiene un atributo que permite a DB2 generar automáticamenteun valor numérico exclusivo para cada fila que se inserta en la tabla. Las columnasde identidad se adaptan mejor a la tarea de generar valores de clave primariaexclusivos. Las aplicaciones que utilizan columnas de identidad pueden evitar losproblemas de simultaneidad y rendimiento que se producen a veces cuando lasaplicaciones implementan sus propios contadores exclusivos.

Tipos de datos de fecha, hora e indicaciones de fecha y horaAunque puede considerar almacenar fechas y horas como valores numéricos,puede aprovechar las ventajas de los tipos de datos de fecha y hora: DATE, TIMEy TIMESTAMP.

La tabla siguiente describe los tipos de datos para fechas, horas e indicaciones defecha y hora.

Tabla 29. Tipos de datos de fecha, hora e indicaciones de fecha y hora

Tipo de datos Indica una columna de...

DATE Fechas. Una fecha es un valor de tres partes que representa un año,mes y día dentro del rango de 0001-01-01 a 9999-12-31.

TIME Horas. Una hora es un valor de tres partes que representa una horadel día en horas, minutos y segundos dentro del rango de 00.00.00 a24.00.00.

TIMESTAMP Indicaciones de fecha y hora. Una indicación de fecha y hora es unvalor de siete partes que representa una fecha y hora mediante año,mes, día, hora, minuto, segundo y microsegundo, dentro del rangode 0001-01-01-00.00.00.000000 a 9999-12-31-24.00.00.000000.

DB2 almacena valores de tipos de datos de fecha y hora en un formato internoespecial. Cuando se cargan o recuperan datos, DB2 puede convertirlos a o decualquiera de los formatos de la tabla siguiente.

Tabla 30. Opciones de formato de fecha y hora

Nombre de formato Abreviatura Fecha típica Hora típica

International StandardsOrganization

ISO 2003-12-25 13.30.05

Estándar de IBM en EE.UU. USA 12/25/2003 1:30 PM

Estándar de IBM en Europa EUR 25.12.2003 13.30.05

Japanese Industrial Standard, eracristiana

JIS 2003-12-25 13:30:05

Ejemplo 1: La consulta siguiente muestra las fechas en las que se ha contratado atodos los empleados, en formato estándar de IBM en EE.UU., independientementedel valor por omisión local:SELECT EMPNO, CHAR(HIREDATE, USA) FROM EMP;

Si utiliza tipos de datos de fecha y hora, puede beneficiarse de las funcionesincorporadas de DB2 que funcionan específicamente en valores de fecha y hora, ypuede especificar cálculos para valores de fecha y hora.

188 Introducción a DB2 para z/OS

Page 199: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Ejemplo 2: Suponga que una empresa de fabricación tiene como objetivo entregartodos los pedidos de clientes en cinco días. Para ello defina las columnasSHIPDATE y ORDERDATE como tipos de datos DATE. La empresa puede utilizarlos tipos de datos de fecha y hora y la función incorporada DAYS para comparar lafecha de entrega con la fecha de pedido. A continuación se muestra cómo laempresa puede codificar la función para generar una lista de pedidos que excedanel objetivo de entrega en cinco días:DAYS(SHIPDATE) — DAYS(ORDERDATE)> 5

Como resultado, los programadores no tienen que desarrollar, probar y mantenercódigo de aplicación para realizar aritmética de fecha y hora compleja que necesitaque se permita el número de días de cada mes.

Puede utilizar las siguientes funciones definidas por el usuario de ejemplo (que sefacilitan con DB2) para modificar cómo se visualizan las fechas y horas.v ALTDATE devuelve la fecha actual en un formato especificado por el usuario o

convierte una fecha especificada por el usuario de un formato a otro.v ALTTIME devuelve la hora actual en un formato especificado por el usuario o

convierte una hora especificada por el usuario de un formato a otro.

Durante la instalación, también puede proporcionar una rutina de salida pararealizar conversiones de o a cualquier estándar local.

Durante la carga de valores de fecha u hora desde una fuente externa, DB2 aceptacualquiera de las opciones de formato de fecha y hora que se listan en estainformación. DB2 convierte valores de entrada válidos al formato interno. Para larecuperación, se especifica un formato por omisión durante la instalación de DB2.Posteriormente puede alterar temporalmente el valor por omisión utilizando unaopción de precompilador para todas las sentencias de un programa o utilizando lafunción escalar CHAR para una sentencia de SQL determinada y especificando elformato deseado.

Tipo de datos XMLEl tipo de datos XML se utiliza para definir columnas de una tabla que almacenavalores XML. Este tipo de datos pureXML proporciona la capacidad de almacenardocumentos XML con la forma correcta en una base de datos.

Todos los datos XML se almacenan en la base de datos en una representacióninterna. Los datos de tipo carácter de esta representación interna siguen elesquema de codificación UTF-8.

Los valores XML que se almacenan en una columna XML tienen unarepresentación interna que no es una serie y no se puede comparar directamentecon valores de serie. Un valor XML puede transformarse en un valor de de tiposerie serializado que representa el documento XML utilizando la funciónXMLSERIALIZE o recuperando el valor en una variable de aplicación de un tipoXML, serie o binario. De forma similar, un valor de tipo serie que representa undocumento XML puede transformarse en un valor XML utilizando la funciónXMLPARSE o almacenando un valor de un tipo de datos de aplicación XML,binario o serie en una columna XML.

El tamaño de un valor XML de una tabla de DB2 no tiene límite de arquitectura.Sin embargo, los datos XML serializados que se almacenan en una columna XML ose recuperan de una columna XML tienen un límite de 2 GB.

Capítulo 7. Implementación del diseño de base de datos 189

|||

Page 200: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La validación de un documento XML según un esquema XML, generalmenterealizado durante una operación INSERT o UPDATE en una columna XML, estásoportada por el depósito de esquemas XML (XSR).

Tipos de datos de objetos grandesLos tipos de datos VARCHAR, VARGRAPHIC y VARBINARY tienen un límite dealmacenamiento de 32 KB. Sin embargo, a menudo las aplicaciones necesitanalmacenar documentos de texto grandes o diversos tipos de datos adicionalescomo, audio, vídeo, dibujos, imágenes y una combinación de texto y gráficos. Paraobjetos de datos de más de 32 KB, puede utilizar los correspondientes tipos dedatos de objetos grandes (LOB) para almacenar estos objetos.

DB2 proporciona tres tipos de datos para almacenar estos objetos de datos comoseries con un tamaño máximo de 2 GB:

Objetos grandes de caracteres (CLOB)Utilice el tipo de datos CLOB para almacenar SBCS o datos mixtos como,por ejemplo, documentos que contienen un juego de caracteres simple.Utilice este tipo de datos si los datos son superiores (o pueden crecer hastasuperar) el límite que el tipo de datos VARCHAR permite.

Objetos grandes de caracteres de doble byte (DBCLOB)Utilice el tipo de datos DBCLOB para almacenar grandes cantidades dedatos DBCS como, por ejemplo, documentos que utilizan un juego decaracteres DBCS.

Objetos binarios grandes (BLOB)Utilice el tipo de datos BLOB para almacenar grandes cantidades de datosno de tipo carácter como, por ejemplo, imágenes, voz y medios mixtos.

Si los datos no caben totalmente dentro de una página de datos, puede definir unao más columnas como columnas LOB. Una ventaja de utilizar LOB es que sepueden crear funciones definidas por el usuario sólo permitidas en tipos de datosLOB.

Conceptos relacionados

“Creación de objetos grandes” en la página 233Referencia relacionada

″Objetos grandes (LOB)″ (Consulta de DB2 SQL)

Tipo de datos ROWIDUtilice el tipo de datos ROWID para identificar filas de forma exclusiva ypermanente en un subsistema DB2.

DB2 puede generar un valor para la columna cuando se añade una fila, según laopción que se elija (GENERATED ALWAYS o GENERATED BY DEFAULT) aldefinir la columna. Puede utilizar una columna ROWID en una tabla por variosmotivos.v Puede definir una columna ROWID para incluir datos LOB en una tabla.v Puede utilizar acceso directo de fila para que DB2 acceda a una fila directamente

a través de la columna ROWID. Si una aplicación selecciona una fila de unatabla que contiene una columna ROWID, el valor de ID de fila contieneimplícitamente la ubicación de la fila. Si utiliza este valor de ID de fila en lacondición de búsqueda de sentencias SELECT posteriores, es posible que DB2 nopueda navegar directamente hasta la fila.

190 Introducción a DB2 para z/OS

||

giralte
Resaltado
giralte
Resaltado
giralte
Resaltado
Page 201: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tipos diferenciadosUn tipo diferenciado es un tipo de datos definido por el usuario basado en tipos dedatos incorporados existentes de DB2. Es decir, un tipo diferenciado esinternamente igual que un tipo de datos incorporado, pero DB2 lo trata como untipo separado e incompatible por finalidades de semántica.

La definición del propio tipo diferenciado asegura que tan solo las aplicacionesdefinidas explícitamente en un tipo diferenciado puedan aplicarse a sus instancias.

Ejemplo 1: Podría definir un tipo diferenciado US_DOLLAR basado en el tipo dedatos DB2 DECIMAL para identificar valores decimales que representan dólares deEstos Unidos. El tipo diferenciado US_DOLLAR no adquiere automáticamente lasfunciones y operadores de su tipo fuente, DECIMAL.

Aunque puede tener distintos tipos diferenciados basados en los mismos tipos dedatos incorporados, los tipos diferenciados tienen la propiedad de tipificaciónestricta. Con esta propiedad, no se pueden comparar directamente instancias de untipo diferenciado con cualquier otra instancia del mismo tipo. La tipificaciónestricta impide semánticamente operaciones incorrectas (como, por ejemplo, laadición explícita de dos monedas diferentes) sin pasar primero por un proceso deconversión. El usuario define los tipos de operaciones que pueden producirse parainstancias de un tipo diferenciado.

Si su empresa desea realizar un seguimiento de las ventas en varios países, deberáconvertir la moneda para cada país donde realiza ventas.

Ejemplo 2: Puede definir un tipo diferenciado para cada país. Por ejemplo, paracrear tipos US_DOLLAR y tipos CANADIAN_DOLLAR, puede utilizar lassiguientes sentencias CREATE DISTINCT TYPE:CREATE DISTINCT TYPE US_DOLLAR AS DECIMAL (9,2);CREATE DISTINCT TYPE CANADIAN_DOLLAR AS DECIMAL (9,2);

Ejemplo 3: Una vez definidos los tipos diferenciados, puede utilizarlos en lassentencias CREATE TABLE:CREATE TABLE US_SALES

(PRODUCT_ITEM_NO INTEGER,MONTH INTEGER,YEAR INTEGER,TOTAL_AMOUNT US_DOLLAR);

CREATE TABLE CANADIAN_SALES(PRODUCT_ITEM_NO INTEGER,MONTH INTEGER,YEAR INTEGER,TOTAL_AMOUNT CANADIAN_DOLLAR);

Las funciones definidas por el usuario soportan la manipulación de tiposdiferenciados.

Conceptos relacionados

“Codificación de esquemas para datos de serie”

Codificación de esquemas para datos de seriePar los datos de serie, todos los caracteres están representados por unarepresentación de codificación común (Unicode, ASCII o EBCDIC). La codificaciónde esquemas se aplica a tipos de datos de serie y a otros tipos que están basadosen tipos de serie.

Capítulo 7. Implementación del diseño de base de datos 191

Page 202: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Las empresas multinacionales que participan en el comercio internacional amenudo almacenan datos de más de un país en la misma tabla. Algunos paísesutilizan identificadores de juegos de caracteres codificados diferentes. DB2 forz/OS da soporte al esquema de codificación de Unicode, que representa numerosasubicaciones e idiomas. Si necesita realizar conversión de caracteres en datosUnicode, es más probable que la conversión conserve toda la información.

En algunos casos, puede que sea necesario convertir caracteres a unarepresentación de codificación diferente. El proceso de conversión se denominaconversión de caracteres. La mayoría de usuarios no necesitan tener conocimientossobre conversión de caracteres. Cuando se produce una conversión de caracteres, lohace de modo automático y una conversión correcta es invisible para la aplicacióny los usuarios.

Conceptos relacionados

“Tipos de datos de serie” en la página 184“Tipos diferenciados” en la página 191

Cómo compara DB2 tipos de datosDB2 compara valores de tipos y longitudes diferentes.

Se produce una comparación cuando ambos valores son numéricos, ambos valoresson series de caracteres o ambos valores son series gráficas. También se puedenproducir comparaciones entre datos de caracteres y gráficos o entre datos decaracteres y de fecha y hora si los datos de caracteres son una representación decaracteres válida de un valor de fecha y hora. Los diferentes tipos decomparaciones de serie o numéricas pueden repercutir en el rendimiento.

Valores nulos y por omisiónLos valores nulos y los valores por omisión son útiles en situaciones en las que nose puede especificar el contenido de algunas columnas al crear columnas de tabla.

Valores nulosAlgunas columnas no pueden tener un valor significativo en cada fila. DB2 utilizaun indicador de valor especial, el valor nulo, para indicar un valor desconocido oque falta. Un valor nulo es un valor especial que DB2 interpreta para indicar queno hay datos presentes.

Si no especifica lo contrario, DB2 permite que cualquier columna contenga valoresnulos. Los usuarios pueden crear filas en la tabla sin proporcionar un valor para lacolumna.

Mediante la utilización de la cláusula NOT NULL puede no permitir valores nulosen la columna. Las claves primarias deben definirse como NOT NULL.

Ejemplo: La definición de tabla para la tabla DEPT especifica cuándo puedeutilizar un valor nulo. Tenga en cuenta que sólo puede utilizar nulos para lacolumna MGRNO:CREATE TABLE DEPT

(DEPTNO CHAR(3) NOT NULL,DEPTNAME VARCHAR(36) NOT NULL,MGRNO CHAR(6) ,ADMRDEPT CHAR(3) NOT NULL,PRIMARY KEY (DEPTNO) )

IN MYDB.MYTS;

192 Introducción a DB2 para z/OS

||||||

Page 203: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Antes de decidir si permitir o no nulos para valores desconocidos en una columnadeterminada, debe tener en cuenta cómo afectan los nulos a los resultados de unaconsulta:v Nulos en programas de aplicaciones

En una sentencia de SQL, los nulos tan solo cumplen la condición del predicadoespecial IS NULL. DB2 clasifica los valores nulos de manera diferente que losvalores no nulos. Los valores nulos no se comportan como los otros valores. Porejemplo, si pregunta a DB2 si un valor nulo es más grande que un valorconocido determinado, la respuesta será UNKNOWN. Si, a continuación,pregunta a DB2 si un valor nulo es más pequeño que el mismo valor conocido,la respuesta seguirá siendo UNKNOWN.Si la obtención de un valor UNKNOWN es inaceptable para una columnadeterminada, en su lugar puede definir un valor por omisión. Losprogramadores están familiarizados con el comportamiento de los valores poromisión.

v Nulos en una operación de uniónLos nulos necesitan un manejo especial en operaciones de unión. Si realiza unaoperación de unión en una columna que puede contener valores nulos, considereutilizar una unión externa.Conceptos relacionados

“Valores para atributos de clave” en la página 74“Modos de unir datos de más de una tabla” en la página 110

Valores por omisiónDB2 define algunos valores por omisión y el usuario define otros (utilizando lacláusula DEFAULT en la sentencia CREATE TABLE o ALTER TABLE).

Si una columna está definida como NOT NULL WITH DEFAULT o si el usuario noespecifica NOT NULL, DB2 almacena un valor por omisión para una columnacada vez que una inserción o una carga no proporciona un valor para dichacolumna. Si una columna está definida como NOT NULL, DB2 no proporcionaningún valor por omisión.

valores por omisión definidos por DB2

DB2 genera un valor por omisión para columnas ROWID. DB2 también determinavalores por omisión para columnas que los usuarios definen con NOT NULLWITH DEFAULT, pero para las que no se especifica un valor específico, tal comose muestra en la tabla siguiente.

Tabla 31. Valores por omisión definidos por DB2 para tipos de datos

Para columnas de... Tipos de datos Valor por omisión

Números SMALLINT, INTEGER,BIGINT, DECIMAL,NUMERIC, REAL, DOUBLE,DECFLOAT o FLOAT

0

Series de longitud fija CHAR o GRAPHIC

BINARY

Blancos

Ceros hexadecimales

Series de longitud variable VARCHAR, CLOB,VARGRAPHIC, DBCLOB,VARBINARY o BLOB

Serie vacía

Fechas DATE CURRENT DATE

Capítulo 7. Implementación del diseño de base de datos 193

||

|||

|||||

|

||

|

|

|

||||

|

|||

Page 204: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 31. Valores por omisión definidos por DB2 para tipos de datos (continuación)

Para columnas de... Tipos de datos Valor por omisión

Horas TIME CURRENT TIME

Indicaciones de fecha y hora TIMESTAMP CURRENT TIMESTAMP

ROWID ROWID Generado por DB2

Valores por omisión definidos por el usuario

Puede especificar un valor por omisión determinado como, por ejemplo:DEFAULT 'N/A'

Cuando elige un valor por omisión, debe poder asignarlo al tipo de datos de lacolumna. Por ejemplo, todas las constantes de tipo serie son VARCHAR. Puedeutilizar una constante de tipo serie VARCHAR como valor por omisión para unacolumna CHAR aunque el tipo no coincida de forma exacta. Sin embargo, nopuede especificar un valor por omisión ’N/A’ para una columna con un tipo dedatos numérico.

En el ejemplo siguiente, las columnas están definidas como CHAR (longitud fija).Los registros especiales (USER y CURRENT SQLID) a los que se hace referenciacontienen valores de longitud variable.

Ejemplo: Si desea un registro de cada usuario que inserta cualquier fila de unatabla, defina la tabla con dos columnas adicionales:PRIMARY_ID CHAR(8) WITH DEFAULT USER,SQL_ID CHAR(8) WITH DEFAULT CURRENT SQLID,

A continuación, puede crear una vista que omita estas columnas y permita a losusuarios actualizar la vista en lugar de la tabla base. Después, DB2 añade, poromisión, el ID de autorización primario y el SQLID del proceso.

Cuando añada columnas a una tabla existente, debe definirlas como anulables o nonulas con valor por omisión. Suponga que añade una columna a una tablaexistente y especifica no nulo con valor por omisión. Si DB2 lee de la tabla antesde añadir datos a la columna, los valores de la columna que se recuperan son losvalores por omisión. Con muy pocas excepciones, los valores por omisión para unarecuperación son iguales que los valores por omisión para una inserción.

Valores por omisión para ROWID

DB2 siempre genera los valores por omisión para ROWID.Conceptos relacionados

“Mecanismos de autorización y seguridad para el acceso a datos” en la página273

Comparación de valores nulos y valores por omisiónEn algunas situaciones la utilización de un valor nulo es más fácil y más adecuadoque la utilización de un valor por omisión.

Suponga que desea averiguar cuál es el salario medio de todos los empleados deun departamento. La columna de salario no siempre necesita contener un valorsignificativo, por lo tanto puede elegir entre las opciones siguientes:v Permitir valores nulos para la columna SALARY

194 Introducción a DB2 para z/OS

|

|||

|||

|||

||||

Page 205: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Utilizar un valor por omisión no nulo (como por ejemplo, 0)

Al permitir valores nulos puede formular la consulta de forma fácil y DB2proporciona el promedio de todos los salarios conocidos o registrados. El cálculono incluye las filas que contienen valores nulos. En el segundo caso,probablemente se obtendrá una respuesta engañosa a menos que se conozca elvalor por omisión no nulo para los salarios desconocidos y se formule la consultade acuerdo con esto.

La figura siguiente muestra dos casos de ejemplo. La tabla de la figura excluye losdatos de salario para el empleado número 200440 debido a que la empresa acabade contratar a este empleado y todavía no ha determinado su salario. El cálculo delsalario medio para el departamento E21 varía, en función de si se utilizan valoresno nulos o valores por omisión no nulos.v En la parte izquierda de la figura se supone que se utilizan valores nulos. En

este caso, el cálculo del salario medio para el departamento E21 solamenteincluye tres empleados (000320, 000330 y 200340) para los cuales estándisponibles datos sobre el salario.

v En la parte derecha de la figura se supone que se utiliza un valor por omisiónno nulo distinto de cero (0). En este caso, el cálculo del salario medio para eldepartamento E21 incluye todos los cuatro empleados, aunque sólo existeinformación válida sobre el salario para tres empleados.

Como se puede observar, únicamente la utilización de un valor nulo tiene comoresultado un salario medio preciso para el departamento E21.

Los valores nulos son diferentes en la mayoría de situaciones para que dos valoresnulos no sean iguales entre sí.

Ejemplo: El ejemplo siguiente muestra cómo comparar dos columnas para ver sison iguales o si ambas columnas son nulas:WHERE E1.DEPT IS NOT DISTINCT FROM E2.DEPT

Figura 33. Cuándo es preferible utilizar nulos que valores por omisión

Capítulo 7. Implementación del diseño de base de datos 195

||

Page 206: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Utilización de restricciones de comprobación para imponer lavalidez de valores de columnas

Una restricción de comprobación es una regla que especifica los valores permitidosen una o más columnas de cada fila de una tabla. Puede utilizar restricciones decomprobación para asegurarse de que únicamente se permitan valores del dominiopara la columna o atributo.

Como resultado de la utilización de restricciones de comprobación, losprogramadores no tienen que desarrollar, probar ni mantener código de aplicaciónque realice estas comprobaciones.

Puede optar por definir restricciones de comprobación utilizando la sentenciaCREATE TABLE o la sentencia ALTER TABLE de SQL. Por ejemplo, puede quedesee asegurarse de que cada valor de la columna SALARY de la tabla EMPcontiene más de una cantidad mínima determinada.

DB2 impone una restricción de comprobación aplicando la condición de búsquedapertinente a cada fila que se inserta, actualiza o carga. Se produce un error si elresultado de la condición de búsqueda es falso para cualquier columna.

Utilización de restricciones de comprobación para insertar filasen tablasCuando se utiliza la sentencia INSERT o la sentencia MERGE para añadir una filaa una tabla, DB2 impone automáticamente todas las restricciones de comprobaciónpara dicha tabla. Si los datos violan alguna restricción de comprobación definidapara la tabla, DB2 no inserta la fila.

Ejemplo 1: Suponga que la tabla NEWEMP tiene las dos restricciones decomprobación siguientes:v Los empleados no pueden recibir una comisión mayor que su salario.v Los números de departamento deben estar entre ’001’ y ’100’ inclusive.

Considere esta sentencia INSERT, que añade un empleado que tiene un salario de65 000 $ y una comisión de 6 000 $:INSERT INTO NEWEMP

(EMPNO, FIRSTNME, LASTNAME, DEPT, JOB, SALARY, COMM)VALUES ('100125', 'MARY', 'SMITH','055', 'SLS', 65000.00, 6000.00);

La sentencia INSERT de este ejemplo es satisfactoria porque cumple ambasrestricciones.

Ejemplo 2: Considere esta sentencia INSERT:INSERT INTO NEWEMP

(EMPNO, FIRSTNME, LASTNAME, DEPT, JOB, SALARY, COMM)VALUES ('120026', 'JOHN', 'SMITH','055', 'DES', 5000.00, 55000.00 );

La sentencia INSERT de este ejemplo no es satisfactoria porque la comisión de55 000 $ es mayor que el salario de 5 000 $. Esta sentencia INSERT viola unarestricción de comprobación en NEWEMP.

Utilización de restricciones de comprobación para actualizartablasDB2 impone de forma automática todas las restricciones de comprobación para unatabla cuando se utiliza la sentencia UPDATE o la sentencia MERGE para cambiaruna fila de la tabla. Si la actualización propuesta viola cualquier restricción decomprobación definida para la tabla, DB2 no actualiza la fila.

196 Introducción a DB2 para z/OS

Page 207: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Ejemplo: Suponga que la tabla NEWEMP tiene las dos restricciones decomprobación siguientes:v Los empleados no pueden recibir una comisión mayor que su salario.v Los números de departamento deben estar entre ’001’ y ’100’ inclusive.

Considere esta sentencia UPDATE:UPDATE NEWEMP

SET DEPT = '011'WHERE FIRSTNME = 'MARY' AND LASTNAME= 'SMITH';

Esta actualización es satisfactoria porque cumple las restricciones definidas en latabla NEWEMP.

Ejemplo: Considere esta sentencia UPDATE:UPDATE NEWEMP

SET DEPT = '166'WHERE FIRSTNME = 'MARY' AND LASTNAME= 'SMITH';

Esta actualización no es satisfactoria porque el valor de DEPT es ’166’ y viola larestricción de comprobación en NEWEMP de que los valores de DEPT deben estarentre ’001’ y ’100.’

Diseño de una filaEl tamaño de registro es una consideración importante en el diseño de una tabla.En DB2, un registro es la representación en almacenamiento de una fila.

DB2 almacena registros con páginas con un tamaño de 4 KB, 8 KB, 16 KB o 32 KB.Normalmente, no se puede crear una tabla con un tamaño de registro máximo quesea superior al tamaño de página. No existe ningún otro límite absoluto, pero searriesga a desperdiciar espacio de almacenamiento si ignora el tamaño de registropara implementar un buen diseño teórico.

Si la longitud de registro es superior al tamaño de página, considere utilizar untipo de datos LOB (objeto grande) o un tipo de datos XML.

Conceptos relacionados

“Tipos de datos de objetos grandes” en la página 190“Visión general de pureXML” en la página 24

Longitudes de registro y páginasLa suma de las longitudes de todas las columnas es la longitud del registro. Lalongitud de los datos físicamente almacenados en la tabla es la longitud delregistro más la actividad general de DB2 para cada fila y cada página. Puede elegirentre varios tamaños de página para longitudes de registro que se adapten mejor asus necesidades.

Si los tamaños de fila son muy pequeños, utilice el tamaño de página de 4 KB.Utilice el valor por omisión de tamaños de página de 4 KB cuando el acceso a losdatos es aleatorio y generalmente sólo requiere unas pocas filas de cada página.

Algunas situaciones requieren tamaños de página más grandes. DB2 proporcionatres tamaños de página más grandes de 8 KB, 16 KB y 32 KB para permitirregistros más largos. Por ejemplo, si el tamaño de las filas individuales es superior

Capítulo 7. Implementación del diseño de base de datos 197

||

Page 208: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

a 4 KB, debe utilizar un tamaño de página más grande. En general, puede mejorarel rendimiento utilizando páginas para longitudes de registro que se adapten mejora sus necesidades.

Diseños que desperdician espacioUn espacio de tablas que contiene registros con una longitud inferior a una páginapueden desperdiciar espacio.

En general, se desperdicia espacio en un espacio de tabla que contiene únicamenteregistros que sean ligeramente más largos que una media página puesto que unapágina sólo puede contener un registro. Si puede reducir la longitud de registropara que sea inferior a media página, tan solo necesita la mitad de páginas.Consideraciones similares se aplican a registros de un poco más de un tercio depágina, un cuarto de página, etc.

Creación de espacios de tablas

DB2 soporta tres tipos diferentes de espacios de tablas: segmentados, particionadosy LOB. Cada tipo de espacio de tablas tiene sus propias ventajas y desventajas, lascuales debería tener en cuenta al elegir el espacio de tablas que se adapte mejor alo que necesita.

DB2 divide los espacios de tablas en unidades de igual tamaño, llamadas páginas,que se escriben en disco o se leen desde disco en una operación. Puede especificartamaños de página para los datos; el tamaño de página por omisión es de 4 KB. SiDB2 ha creado implícitamente el espacio de tablas, DB2 elige el tamaño de páginabasado en un algoritmo de tamaño de fila.

Recomendación: Utilice espacios de tablas particionados para todos los espaciosde tablas a los que se hace referencia en consultas que pueden beneficiarse delparalelismo de consulta. De lo contrario, utilice espacios de tablas segmentadospara otras consultas.

Conceptos relacionados

“Espacios de tablas de DB2” en la página 34″Ejemplos de definiciones de espacio de tabla″ (DB2 Administration Guide)

Tipos de espacios de tablas de DB2DB2 soporta diferentes tipos de espacios de tabla. Cada tipo de espacio de tablasirve para diferentes finalidades y tiene características diferentes.

Los espacios de tabla DB2 se pueden segmentar, particionar, segmentar yparticionar (universal) o bien ni segmentar ni particionar (simple) de formaexclusiva.

Espacios de tabla que se segmentan exclusivamenteUn espacio de tablas segmentado exclusivamente es ideal para almacenar más deuna tabla, en especial tablas relativamente pequeñas. Las páginas contienensegmentos y cada segmento contiene registros de sólo una tabla.

Los espacios de tablas segmentados contienen un máximo de 64 GB de datos ypueden contener uno o más conjuntos de datos VSAM. Un espacio de tablaspueden ser más grande si se cumple alguna de las condiciones siguientes:v El espacio de tablas es un espacio de tablas particionado que se crea con la

opción DSSIZE.

198 Introducción a DB2 para z/OS

||||

|||||

Page 209: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v El espacio de tablas es un espacio de tablas LOB.

Por regla general, cada base de datos de DB2 no debería contener como máximoentre 50 y 100 espacios de tablas. La siguiente directriz ayuda a minimizar elmantenimiento, a aumentar la simultaneidad y a reducir el volumen de registro.

Las páginas de un espacio de tablas pueden tener un tamaño de 4KB, 8 KB, 16 KBo 32 KB. Las páginas contienen segmentos y cada segmento contiene registros desólo una tabla. Cada segmento contiene el mismo número de páginas y cada tablautiliza únicamente los segmentos necesarios.

Cuando se ejecuta una sentencia que busca todas las filas para una tabla, DB2 nonecesita explorar todo el espacio de tablas. En lugar de ello, DB2 puede explorarúnicamente los segmentos del espacio de tablas que contienen dicha tabla. Lasiguiente figura muestra una posible organización de los segmentos en un espaciode tablas segmentado.

Cuando se utiliza una sentencia INSERT, una sentencia MERGE o el programa deutilidad LOAD para insertar registros en una tabla, los registros de la misma tablase almacenan en segmentos diferentes. Puede reorganizar el espacio de tablas paramover segmentos juntos a la misma tabla.

Definición de un espacio de tabla segmentado exclusivamente

Un espacio de tablas segmentado exclusivamente consta de segmentos quecontienen los registros de una tabla. El espacio de tablas segmentado es la opciónde espacio de tablas por omisión. Para definir un espacio de tablas segmentadoutilice la sentencia CREATE TABLESPACE con la cláusula SEGSIZE. Si utiliza estacláusula, el valor que especifica representa el número de páginas de cadasegmento. El valor debe ser un múltiplo de 4 (entre 4 y 64). La selección del valordepende del tamaño de las tablas que se almacenan. La tabla siguiente resume lasrecomendaciones para SEGSIZE.

Tabla 32. Recomendaciones para SEGSIZE

Número de páginas Recomendación para SEGSIZE

≤ 28 entre 4 y 28

> 28 < 128 páginas 32

≥ 128 páginas 64

Otra cláusula de la sentencia CREATE TABLESPACE es LOCKSIZE TABLE. Estacláusula sólo es válida para tablas que están en espacios de tablas segmentados.Por lo tanto, DB2 puede adquirir bloqueos que bloqueen una única tabla, en lugarde todo el espacio de tablas.

Figura 34. Posible organización de segmentos en un espacio de tablas segmentado

Capítulo 7. Implementación del diseño de base de datos 199

||||

||||||||

giralte
Resaltado
giralte
Resaltado
giralte
Resaltado
Page 210: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Si desea dejar páginas de espacio libre en un espacio de tablas segmentado, debetener como mínimo una página libre en cada segmento. Especifique la cláusulaFREEPAGE con un valor inferior al valor de SEGSIZE.

Ejemplo: Si utiliza FREEPAGE 30 con SEGSIZE 20, DB2 interpreta el valor deFREEPAGE como 19 y se obtiene una página libre en cada segmento.

Restricción: Si crea un espacio de tablas segmentado para que lo utilicen tablastemporales declaradas, no puede especificar ni la cláusula FREEPAGE ni lacláusula LOCKSIZE.

Características de los espacios de tabla que se segmentanexclusivamente

Los espacios de tabla que se segmentan exclusivamente comparten lascaracterísticas siguientes:v Cuando DB2 explora todas las filas para una tabla, sólo es necesario explorar los

segmentos asignados a dicha tabla. DB2 no necesita explorar todo el espacio detablas. No es necesario captar las páginas de segmentos vacíos.

v Cuando DB2 bloquea una tabla, el bloqueo no interfiere en el acceso asegmentos de otras tablas.

v Cuando DB2 descarta una tabla, sus segmentos pasan a estar disponibles parareutilizarse inmediatamente después de confirmarse el descarte sin esperar laintervención de un trabajo del programa de utilidad REORG.

v Cuando se suprimen todas las filas de una tabla, todos los segmentos exceptodel primer segmento pasan a estar disponibles para reutilizarse inmediatamentedespués de confirmarse la supresión. No es necesaria la intervención de untrabajo del programa de utilidad REORG.

v Una supresión masiva, que consiste en la supresión de todas las filas de una tabla,funciona mucho más rápido y produce mucha menos información de registro.

v Si el espacio de tablas sólo contiene una tabla, su segmentación significa que elprograma de utilidad COPY no copia las páginas que están vacías. Las páginaspueden estar vacías como resultado de una tabla descartada o de una supresiónmasiva.

v Algunos programas de utilidad de DB2 como, por ejemplo, LOAD con la opciónREPLACE, RECOVER y COPY, funcionan únicamente en un espacio de tablas oen una partición, no en segmentos individuales. Por lo tanto, para un espacio detablas segmentado debe ejecutarse estos programas de utilidad en todo elespacio de tablas. Para un espacio de tablas más grande, puede observarproblemas de disponibilidad.

v El mantenimiento de la correlación de espacios crea una sobrecarga adicional.

La creación de menos espacios de tablas almacenando varias tablas en un espaciode tablas puede ayudarle a evitar que se alcance el número máximo de conjuntosde datos abiertos simultáneamente. Cada espacio de tablas necesita como mínimoun conjunto de datos. Durante la instalación se determina un número máximo deconjuntos de datos abiertos simultáneamente. La utilización de menos espacios detablas reduce el tiempo dedicado a asignar y desasignar conjunto de datos.

Conceptos relacionados

Capítulo 8, “Gestión del rendimiento de DB2”, en la página 245“Modos de mejorar el rendimiento para varios usuarios” en la página 255“Utilización de espacio libre en almacenamiento de datos e índices” en lapágina 252

200 Introducción a DB2 para z/OS

||

giralte
Resaltado
giralte
Comentario en el texto
importante tablas segmentadas
giralte
Resaltado
giralte
Resaltado
giralte
Subrayado
Page 211: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

“Directrices para la reorganización de datos” en la página 252″Cómo crear un espacio de tabla explícitamente″ (DB2 Administration Guide)″Factores para determinar el tamaño de página de un espacio de tabla″ (DB″Administration Guide)″Ejemplos de definiciones de espacio de tabla″ (DB2 Administration Guide)Referencia relacionada

″CREATE TABLESPACE″ (Consulta de DB2 SQL)

Espacios de tabla que se particionan exclusivamenteUn espacio de tabla que se particiona exclusivamente almacena una única tabla.DB2 divide el espacio de tablas en particiones.

Las particiones se basan en los valores de límite definidos para columnasespecíficas. Los programas de utilidad y sentencias de SQL pueden ejecutarsesimultáneamente en cada partición.

En la figura siguiente cada partición contiene una parte de una tabla.

Definición de espacios de tabla que se particionan exclusivamente

En un espacio de tabla particionado, puede imaginar cada partición como unaunidad de almacenamiento. Utilice la cláusula PARTITION de la sentenciaCREATE TABLESPACE para definir un espacio de tablas particionado. Para cadapartición que especifica en la sentencia CREATE TABLESPACE, DB2 crea unconjunto de datos separado. El usuario asigna el número de particiones (entre 1 y4096) y puede asignar particiones independientemente a diferentes grupos dealmacenamiento.

El número máximo de particiones de un espacio de tablas depende del tamaño deconjunto de datos (parámetro DSSIZE) y del tamaño de página. El tamaño delespacio de tabla depende del tamaño del conjunto de datos y de la cantidad departiciones que están en el espacio de tabla.

Características de los espacios de tabla que se particionanexclusivamente

Los espacios de tabla que se particionan exclusivamente comparten lascaracterísticas siguientes:v Se puede planificar el crecimiento. Cuando se define un espacio de tablas

particionado, normalmente DB2 distribuye los datos equitativamente entre lasparticiones. Con el tiempo, la distribución de los datos puede volverse desiguala medida que se producen inserciones y supresiones.Se pueden volver a equilibrar los datos entre las particiones redefiniendo loslímites de particiones sin ningún impacto en la disponibilidad. También puedese añadir una partición a la tabla y a cada índice particionado de la tabla: lanueva partición estará disponible inmediatamente.

Figura 35. Páginas de un espacio de tablas particionado

Capítulo 7. Implementación del diseño de base de datos 201

|

|

Page 212: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Se puede dividir una tabla grande entre varios conjuntos de datos o grupos dealmacenamiento de DB2. No todas las particiones de la tabla necesitan usar elmismo grupo de almacenamiento.

v Los espacios de tablas particionados permiten que un trabajo de programa deutilidad trabaje en una parte de los datos mientras que se permite que otrasaplicaciones accedan simultáneamente a los datos de otras particiones. De estemodo, varios trabajos de programa de utilidad simultáneos pueden, por ejemplo,cargar simultáneamente todas las particiones de un espacio de tablas. Puesto quese puede trabajar en una parte de los datos, algunas de las operaciones en losdatos pueden necesitar menos tiempo.

v Se pueden utilizar trabajos separados para operaciones masivas de actualización,supresión o inserción en lugar de utilizar un trabajo grande; cada trabajo máspequeño puede trabajar en una partición diferente. La separación del trabajogrande en varios trabajos más pequeños que se pueden ejecutarsimultáneamente puede reducir el tiempo transcurrido para la tarea global.Si el espacio de tablas utiliza índices no particionados, puede que sea necesariomodificar el tamaño de los conjuntos de datos en los índices para evitar que seproduzca contención de E/S entre trabajos que se ejecutan simultáneamente.Utilice el parámetro PIECESIZE de la sentencia CREATE INDEX o ALTERINDEX para modificar los tamaños de los conjuntos de datos de índices.

v Se pueden colocar los datos a los que se accede con frecuencia en dispositivosmás rápidos. Evalúe si el particionamiento de tablas o el particionamiento deíndices puede separar más datos frecuentemente accedidos del resto de la tabla.Se pueden colocar los datos frecuentemente accedidos en una partición paraellos. También se puede utilizar un tipo de dispositivo diferente.

v Se puede beneficiar del paralelismo en determinadas consultas de sólo lectura.Cuando DB2 determina que el proceso probablemente será extenso, puedeiniciar el proceso en paralelo de más de una partición a la vez. El proceso enparalelo (para consultas de sólo lectura) es más eficaz cuando se dividen lasparticiones entre diferentes volúmenes de disco y se permite que cada sistemade E/S funcione en un canal separado.Utilice la tecnología de compartimiento de datos de Sysplex paralelo paraprocesar una única consulta de sólo lectura entre varios subsistemas DB2 de ungrupo de compartimiento. Se puede optimizar el proceso de consultas deSysplex paralelo situando cada subsistema DB2 en un complejo central deprocesadores separado.

v Las exploraciones de tabla particionada a veces son menos eficaces que lasexploraciones de espacio de tablas de espacios de tablas segmentados.

v DB2 abre más conjuntos de datos cuando se accede a datos de un espacio detablas particionado que cuando se accede a datos de otros tipos de espacios detablas.

v Los índices no particionados y los índices secundarios particionados de datos aveces son una desventaja para espacios de tablas particionados.Conceptos relacionados

Capítulo 12, “Compartimiento de datos con los datos de DB2”, en la página 321“Asignación de espacios de tablas a almacenamiento físico” en la página 212“Espacios de tablas universales particionados por rango” en la página 205“Espacios de tablas de partición por crecimiento” en la página 204″Cómo crear un espacio de tabla explícitamente″ (DB2 Administration Guide)″Factores para determinar el tamaño de página de un espacio de tabla″ (DB2Administration Guide)″Ejemplos de definiciones de espacio de tabla″ (DB2 Administration Guide)

202 Introducción a DB2 para z/OS

|

|

|

giralte
Subrayado
giralte
Subrayado
giralte
Subrayado
Page 213: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tareas relacionadas

″CREATE TABLESPACE″ (Consulta de DB2 SQL)Referencia relacionada

″CREATE INDEX″ (Consulta de DB2 SQL)

Espacios de tablas y espacios de índices habilitados para EASe pueden habilitar espacios de tablas particionados para direccionabilidadampliada (EA), una función de DFSMS. El término para los espacios de tablas y losespacios de índices habilitados para direccionabilidad ampliada es habilitados paraEA.

Es necesario utilizar espacios de tablas o espacios de índices habilitados para EA sise especifica un tamaño máximo de partición (DSSIZE) superior a 4 GB en lasentencia CREATE TABLESPACE.

Los espacios de tablas particionados habilitados para EA y no habilitados para EAsólo pueden tener una tabla y un máximo de 4096 particiones. La tabla siguienteresume las diferencias.

Tabla 33. Diferencias entre espacios de tablas habilitados para EA y no habilitados para EA

Espacios de tablas habilitados para EA Espacios de tablas no habilitados para EA

Contienen un máximo de 4096 particiones de64 GB

Contienen un máximo de 4096 particiones de4 GB

Se crean con cualquier valor válido deDSSIZE

DSSIZE no puede exceder de 4 GB

Los conjuntos de datos están gestionados porSMS

Los conjuntos de datos están gestionados porVSAM o SMS

Necesitan configuración Sin configuración adicional

Conceptos relacionados

″Cómo crear un espacio de tabla explícitamente″ (DB2 Administration Guide)Referencia relacionada

″CREATE TABLESPACE″ (Consulta de DB2 SQL)″Cómo crear espacios de tabla y espacios de índice habilitados para EA″ (DB2Administration Guide)

Espacios de tablas simples

Un espacio de tabla simple ni está particionado ni está segmentado. Aunque lacreación de espacios de tablas simples ya no está soportada, la utilización de losespacios de tablas simples existentes está soportada.

No puede crear espacios de tablas simples, pero puede modificar, actualizar datoso recuperar datos de espacios de tablas simples. Si crea implícitamente un espaciode tabla o crea explícitamente un espacio de tablas sin especificar las opcionesSEGSIZE, NUMPARTS o MAXPARTITIONS, DB2 crea un espacio de tablassegmentado en lugar de un espacio de tablas simple. Por omisión, el espacio detabla segmentado tiene un valor de 4 para SEGSIZE y un valor de ROW paraLOCKSIZE.

Recomendación: Convierta los espacios de tabla simples en otros tipos de espaciosde tablas lo más pronto posible.

Conceptos relacionados

Capítulo 7. Implementación del diseño de base de datos 203

|

|

|

|

||

|||

|||||||

giralte
Resaltado
Page 214: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Factores para determinar el tamaño de página de un espacio de tabla″ (DB2Administration Guide)″Ejemplos de definiciones de espacio de tabla″ (DB2 Administration Guide)Tareas relacionadas

″Cómo eliminar, volver a crear o convertir un espacio de tabla″ (DB2Administration Guide)

Espacios de tablas universalesPuede combinar las ventajas de la gestión de espacios segmentado con laorganización de espacios de tabla particionados utilizando espacios de tablauniversales. Un espacio de tabla universal es una combinación de esquemas deespacio de tabla particionados y segmentados.

Algunas de las ventajas de los espacios de tabla universales son:v Funcionalidad de partición por crecimientov Gestión del espacio mejorado al relacionarse con filas de longitud variable ya

que una página de correlación de espacios segmentados tiene más informaciónsobre espacio libre que una página de correlación de espacios particionados

v Rendimiento mejorado de supresión masiva mejorada debido a que la supresiónmasiva en una organización de espacios de tablas segmentados tiende a ser másrápida que en otros tipos de organizaciones de espacios de tabla

v Exploraciones de tablas localizadas en segmentosv Reutilización inmediata de todos los segmentos de una tabla, o de la mayoría de

ellos, una vez que la tabla se ha descartado o suprimido masivamente

Restricciones:

v Los espacios de tabla universales no se pueden crear en la base de datos dearchivo de trabajo.

v Los espacios de tabla universales necesitan más páginas de correlación deespacio que los espacios de tabla particionados de forma exclusiva.Conceptos relacionados

“Espacios de tabla que se segmentan exclusivamente” en la página 198“Espacios de tabla que se particionan exclusivamente” en la página 201″Cómo crear un espacio de tabla explícitamente″ (DB2 Administration Guide)″Factores para determinar el tamaño de página de un espacio de tabla″ (DB2Administration Guide)″Ejemplos de definiciones de espacio de tabla″ (DB2 Administration Guide)Referencia relacionada

″CREATE TABLESPACE″ (Consulta de DB2 SQL)

Espacios de tablas de partición por crecimiento:

Los espacios de tabla de partición por crecimiento le permiten particionar según elcrecimiento de los datos, lo que permite tablas segmentadas particionadas según sucrecimiento, sin necesidad de utilizar rangos de claves.

Los espacios de tabla de partición por crecimiento son un tipo de espacio de tablauniversal que puede contener una única tabla. El espacio en un espacio de tabla departición por crecimiento se divide en diferentes particiones. Los espacios de tablade partición por crecimiento se utilizan mejor cuando se cree que una tabla puedesuperar los 64 GB y no contiene una clave de partición adecuada para dicha tabla.

204 Introducción a DB2 para z/OS

||

||

|

|

|

|

giralte
Resaltado
giralte
Subrayado
giralte
Resaltado
giralte
Resaltado
giralte
Resaltado
Page 215: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Los espacios de tabla de partición por crecimiento son similares a los espacios detabla segmentados que gestiona DB2 para tablas únicas. DB2-managed segmentedtable spaces. DB2 gestiona espacios de tabla de partición por crecimiento y añadeautomáticamente una nueva partición cuando se necesita más espacio parasatisfacer una inserción. El espacio de tabla empieza como un espacio de tabla departición simple y crece automáticamente, como sea necesario, a medida que seañaden más particiones para alojar el crecimiento de los datos. Los espacios detablas de partición por crecimiento pueden aumentar hasta 128 TB. El tamañomáximo se determina por los valores MAXPARTITIONS y DSSIZE que hayaespecificado y por el tamaño de página.

Aunque un espacio de tabla de partición por crecimiento esté particionado,contiene prestaciones de organización segmentada y de gestió del espaciosegmentado en cada partición. A diferencia de una estructura no segmentada, laestructura segmentada proporciona una mejor gestión del espacio y prestaciones desupresión masiva. La estructura de particionamiento permite a los programas deutilidad de DB2 continuar las operaciones a nivel de partición y prestaciones deparalelismo.

Restricciones: Las siguientes restricciones se aplican a los espacios de tabla departición por crecimiento:v La opción PART del programa de utilidad LOAD no está soportada.v La opción REBALANCE del programa de utilidad REORG no está soportada.v El valor predeterminado SEGSIZE es 4.v Los espacios de tabla deben estar gestionados por DB2 (no por el usuario) de

modo que DB2 tenga la libertad de crear conjuntos de datos cuando lasparticiones se llenen.

v No se pueden crear espacios de tablas con la opción MEMBER CLUSTER.v Las particiones no se pueden modificar, rotar ni añadir explícitamente. Esto

significa que las sentencias ALTER TABLE ADD PARTITION, ALTER TABLEROTATE PARTITION o ALTER TABLE ALTER PARTITION no pueden tenercomo destino una partición de un espacio de tabla de partición por crecimiento.

v DB2 define siempre implícitamente los espacios XML.v Si el espacio de tablas de partición por crecimiento se define explícitamente, el

espacio de tablas LOB para la primera partición del espacio de tablas departición por crecimiento se define basándose en SQLRULES(DB2) oSQLRULES(STD). DB2 define siempre implícitamente cualquier espacio de tablaLOB adicional para la nueva partición de crecimiento del espacio de tabla departición por crecimiento, sin tener en cuenta si SQLRULES está en vigor. Laespecificación de la opción SQLRULES(DB2) o SQLRULES(STD) no tiene efectoen el espacio de tabla LOB para los espacios de tabla de partición porcrecimiento definidos implícitamente.

v Un índice sin particionamiento (NPI) siempre utiliza un identificador de registro(RID) de 5 bytes.

v Los índices particionados no están soportados.Conceptos relacionados

″Cómo crear un espacio de tabla explícitamente″ (DB2 Administration Guide)Referencia relacionada

″CREATE TABLESPACE″ (Consulta de DB2 SQL)″ALTER TABLESPACE″ (Consulta de DB2 SQL)

Espacios de tablas universales particionados por rango:

Capítulo 7. Implementación del diseño de base de datos 205

||||||||||

|

|||||||||

|

|

|

giralte
Resaltado
Page 216: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Los Espacios de tablas universales particionados por rango utiliza una organización deespacio de tabla segmentado y se basan en rangos de particionamiento.

Un espacio de tabla universal particionado por rango contiene una única tabla, quela hace similar al espacio de tabla que está exclusivamente particionado. Puedecrear un índice de cualquier tipo en una tabla de un espacio de tabla particionadopor rango.

Puede implementar espacios de tablas universales particionados por rangoespecificando las dos palabras clave SEGSIZE y NUMPARTS en una sentenciaCREATE TABLESPACE. Después de crear el espacio de tabla actividades yapermitidas en espacios de tablas particionados o segmentados exclusivamente sepermiten en el espacio de tabla universal particionado por rango. Puede especificarrangos de partición para un espacio de tabla universal particionado por rango enuna sentencia CREATE TABLE o CREATE INDEX subsiguiente.

Conceptos relacionados

″Cómo crear un espacio de tabla explícitamente″ (DB2 Administration Guide)Referencia relacionada

″CREATE TABLESPACE″ (Consulta de DB2 SQL)

Espacios de tablas de objetos grandesLos espacios de tablas de objetos grandes (LOB) (también conocidos como espacios detablas auxiliares) son necesarios para almacenar datos de objetos grandes como,por ejemplo, gráficos, vídeo o series de texto muy grandes. Si los datos no cabentotalmente dentro de una página de datos, puede definir una o más columnascomo columnas LOB.

Los objetos LOB pueden hacer algo más que almacenar datos de objetos grandes.También se pueden definir columnas LOB para datos a los que se accede con pocafrecuencia. Si lo hace, una exploración de espacio de tablas del resto de datos de latabla base será potencialmente más rápida porque la exploración suele incluirmenos páginas.

Un espacio de tablas LOB siempre tiene una relación directa con el espacio detablas que contiene los valores de columna LOB lógicos. El espacio de tablas quecontiene la tabla con las columnas LOB es, en este contexto, el espacio de tablas base.Los datos LOB se asocian lógicamente a la tabla base, pero se almacenanfísicamente en una tabla auxiliar que reside en un espacio de tablas LOB. Tan solopuede existir una tabla auxiliar en un espacio de tablas de objetos grandes. Unvalor LOB puede abarcar varias páginas. Sin embargo, sólo se almacena un valorLOB por página.

Es necesario tener un espacio de tablas LOB para cada columna LOB que exista enuna tabla. Por ejemplo, si la tabla tiene columnas LOB para resúmenes yfotografías, necesitará una tabla LOB (y una tabla auxiliar) para cada una de estascolumnas. Si el espacio de tablas base es un espacio de tablas particionado,necesitará un espacio de tablas LOB para cada LOB de cada partición.

Si el espacio de tablas base no es un espacio de tablas particionado, cada espaciode tablas LOB se asocia a una columna de LOB de una tabla base. Si el espacio detablas base es un espacio de tablas particionado, cada columna de LOB de cadapartición se asocia a un espacio de tablas LOB.

En un espacio de tablas particionado, puede almacenar más datos LOB en cadacolumna puesto que cada partición debe tener un espacio de tablas LOB. El

206 Introducción a DB2 para z/OS

|

|

||

giralte
Resaltado
giralte
Resaltado
Page 217: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

usuario asigna el número de particiones (entre 1 y 4096). La tabla siguientemuestra la cantidad aproximada de datos que se pueden almacenar en unacolumna para los diferentes tipos de espacios de tablas.

Tabla 34. Tamaño máximo aproximado de datos LOB en una columna

Tipo de espacio de tablasMáximo de datos LOB (aproximado) encada columna

Segmentado 16 TB

Particionado, con NUMPARTS hasta 64 1000 TB

Particionado con DSSIZE, NUMPARTS hasta 254 4000 TB

Particionado con DSSIZE, NUMPARTS hasta4096

64000 TB

Recomendaciones:

v Considere la definición de columnas de series largas como columnas LOBcuando una fila no quepa en una página de 32 KB. Utilice las directricessiguientes para determinar si una columna LOB es la opción adecuada:– La definición de una columna de serie larga como una columna LOB puede

ser más adecuada si se cumplen las condiciones siguientes:- Normalmente se ejecutan exploraciones de espacio de tablas en la tabla.- No se hace referencia con frecuencia a la columna de serie larga.- La eliminación de la columna de serie larga de la tabla base es posible que

mejore el rendimiento de las exploraciones de espacio de tablas.– Se almacenan físicamente los LOB en otro espacio de tablas. Por lo tanto, el

rendimiento de inserciones, actualizaciones y recuperaciones de series largaspuede ser mejor para series no LOB que para series LOB.

v Considere la especificación de una agrupación de almacenamientos intermediosseparada para datos de objetos grandes.Conceptos relacionados

“Creación de objetos grandes” en la página 233″Cómo crear un espacio de tabla explícitamente″ (DB2 Administration Guide)″Factores para determinar el tamaño de página de un espacio de tabla″ (DB2Administration Guide)″Ejemplos de definiciones de espacio de tabla″ (DB2 Administration Guide)″Factores para determinar el tamaño de página de un espacio de tabla LOB″(DB2 Administration Guide)Referencia relacionada

″CREATE TABLESPACE″ (Consulta de DB2 SQL)

Espacios de tablas XMLUn espacio de tablas XML almacena la tabla XML.

Un espacio de tablas XML se crea implícitamente cuando se añade una columnaXML a una tabla base. Si la tabla base está particionada, existe un espacio de tablasparticionado para cada columna de datos XML. Un espacio de tablas XML siempreestá asociado al espacio de tablas que contiene el valor de columna XML lógico. Eneste contexto, el espacio de tablas que contiene la tabla con la columna XML sedenomina espacio de tablas base.

Conceptos relacionados

Capítulo 7. Implementación del diseño de base de datos 207

|||

||

|

|

giralte
Resaltado
Page 218: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Cómo DB2 crea implícitamente un espacio de tabla XML″ (DB2 AdministrationGuide)″Factores para determinar el tamaño de página de un espacio de tabla″ (DB2Administration Guide)″Ejemplos de definiciones de espacio de tabla″ (DB2 Administration Guide)Referencia relacionada

″CREATE TABLESPACE″ (Consulta de DB2 SQL)

Cómo DB2 crea implícitamente un espacio de tablasTal como sucede con los grupos y bases de datos de almacenamiento DB2, nonecesita crear un espacio de tabla antes de crear una tabla, a menos que estédefiniendo una tabla temporal declarada o gestionando todos sus conjuntos dedatos.

Cuando utiliza la sentencia CREATE TABLE, DB2 le genera un espacio de tabla.Sin embargo, DB2 generará únicamente un espacio de tabla si utiliza la sentenciaCREATE TABLE sin especificar un nombre de espacio de tabla existente. Si la tablacontiene una columna LOB y SQLRULES son STD, DB2 también creará el espaciode tabla LOB, la tabla auxiliar y el índice auxiliar. En este caso, DB2 utiliza elgrupo de almacenamiento predeterminado, SYSDEFLT.

Si crea un espacio de tabla implícitamente, DB2 utilizará valores predeterminadospara los atributos de asignación del espacio. Los valores predeterminados dePRIQTY y SECQTY especifican la asignación de espacio para el espacio de tabla. Siel valor del parámetro de subsistema TSQTY es no cero, determina los valorespredeterminados para PRIQTY y SECQTY. Si el valor de TSQTY es cero, los valorespredeterminados para PRIQTY y SECQTY se determinan según se describe en lasentencia CREATE TABLESPACE.

Cuando no especifica el nombre de espacio de tabla en una sentencia CREATETABLE (y el espacio de tabla se crea implícitamente), DB2 deriva el nombre deespacio de tabla del nombre de su tabla según las siguientes reglas:v El nombre de espacio de tabla es el mismo que el nombre de tabla si se aplican

las siguientes condiciones:– Ningún otro espacio de tabla ni espacio de índice de la base de datos contiene

ya ese nombre.– El nombre de la tabla no tiene más de ocho caracteres.– Los caracteres son todos alfanuméricos y el primer carácter no es un dígito.

v Si existe otro espacio de tabla en la base de datos que ya contiene el mismonombre que la tabla, DB2 asignará un nombre del formulario xxxxnyyy, dondexxxx corresponderá a los primeros cuatro caracteres del nombre de la tabla ynyyy será un único dígito y tres letras que garantizan la exclusividad.

DB2 almacena este nombre en el DB2 catálogo de la tablaSYSIBM.SYSTABLESPACE, junto con el resto de nombres de espacios de tabla.

CómoDB2 crea implícitamente un espacio de tabla XMLCuando cree una columna XML en una tabla, DB2 crea implícitamente un espaciode tabla XML y una tabla XML para almacenar los datos XML y un ID de nódulo.

Cada columna XML tiene su propio espacio de tablas. El espacio de tablas XML notiene teclas de limitación. Los datos XML residen en el número de partición de lafila de base.

208 Introducción a DB2 para z/OS

||

|

||||||

|

||

|||

Page 219: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Las tablas que contienen columnas XML también tienen los objetos siguientescreados implícitamente:v Una columna oculta para almacenar la ID de documento.

La ID de documento es un valor que genera DB2 y que identifica de formaexclusiva una fila. La ID de documento se utiliza para identificar losdocumentos en la tabla XML. La ID de documento es habitual en todas lascolumnas XML y su valor es exclusivo en la tabla.

v Un índice exclusivo en la ID de documento (índice de ID de documento).El índice de ID de documento apunta al RID de la tabla base. Si el espacio detabla base está particionado, el índice de ID de documento será un índicealternativo no particionado (NPSI).

v La tabla base tendrá una columna de indicador para cada columna XML quecontenga un bit nulo, no válido o varios bytes reservados.

El espacio de tabla hereda varios de los atributos del espacio de tabla base, comopor ejemplo:v LOGv CCSIDv LOCKMAX

Si el espacio de tabla base es un espacio de tabla partition-by-growth, la DSSIZEdel espacio de tabla XML será 4GB. De lo contrario, DSSIZE del espacio de tablaXML se basará en una combinación de la DSSIZE y del tamaño de página delespacio de tabla base.

Estructura de almacenamiento para datos XMLLa estructura de almacenamiento para datos XML es similar a la estructura dealmacenamiento para datos LOB.

Tal como en los datos LOB, la tabla que contiene una columna XML(la tabla base)está en un espacio de tabla diferente a la tabla que contiene los dato s XML.

La estructura de almacenamiento depende del tipo de espacio de tabla quecontiene la tabla base.

La tabla siguiente describe la organización del espacio de tabla para los datosXML.

Tabla 35. La organización de los espacios de tabla base corresponden a los espacios detabla XML

Organización del espacio detabla base

XOrganización delespacio de tabla XML Notas

Simple Partition-by-growthuniversal

Segmentado Partition-by-growthuniversal

Particionado Range-partitioneduniversal

Si la fila de una tabla base sedesplaza a una partición nueva, eldocumento XML también sedesplaza a una nueva partición.

Capítulo 7. Implementación del diseño de base de datos 209

||

|

||||

|

|||

||

||

|

|

|

||||

|||

||

||

||

|||

|||||

||||

||||

|||||||

Page 220: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 35. La organización de los espacios de tabla base corresponden a los espacios detabla XML (continuación)

Organización del espacio detabla base

XOrganización delespacio de tabla XML Notas

Range-partitioned universal Range-partitioneduniversal

Si la fila de una tabla base sedesplaza a una partición nueva, eldocumento XML también sedesplaza a una nueva partición.

Partition-by-growth universal Partition-by-growthuniversal

Un documento XML se puededistribuir a más de una partición. Elespacio de tabla base y el espacio detabla XML se amplían de formaindependiente.

La siguiente figura demuestra la relación entre los espacios de tabla segmentadospara las tablas base con columnas XML y entre los espacios de la tabla XML y lastablas. Las relaciones son similares a los espacios de tabla base simples y a losespacios de tabla base partition-by-growth.

La siguiente figura demuestra la relación entre los espacios de tabla segmentadospara las tablas base con columnas XML y y con las tablas y espacios de tablas XMLcorrespondientes. Las relaciones son similares a los espacios de tabla baserange-partitioned universal

Espacio de tablabase segmentada

Índice de id dedocumento

Columnas:DB2_GENERATED-DOC_ID_FOR_XMLXMLCOL1XMLCOL2

Tablabase

Índice de IDde nodo

Espacio tabla particiónpor crecimiento paraXMLCOL1

Columnas:DOCIDMIN_NODEIDXMLDATA

Tabla paraXMLCOL1

ÍndiceXML

Columnas:DOCIDMIN_NODEIDXMLDATA

Tabla paraXMLCOL2

Índice de IDde nodo

ÍndiceXML

Espacio tabla particiónpor crecimiento paraXMLCOL2

Figura 36. Estructura de almacenamiento XML para una tabla base en un espacio de tabla segmentada

210 Introducción a DB2 para z/OS

||

|||||

|||||||

|||||||||

|||||

|||||

Page 221: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cuando crea una tabla con columnas XML o MODIFICA una tabla para añadircolumnas XML, el servidor de bases de datos DB2 crea implícitamente lossiguientes objetos:v Espacio de tablas y tabla para cada columna XML. Los datos de una columna

XML se almacenan en la tabla correspondiente.DB2 crea el espacio de tabla XML y la tabla en la misma base de datos dondeestá la tabla que contiene la columna XML (la tabla base). El espacio de tablaXML está en el codificado UTF-8 Unicode.

v Una columna en la tabla base con el nombreDB2_GENERATED_DOCID_FOR_XML.

Espacio de tabla baseparticionada con dosparticiones. La tablatiene dos columnas XML.

Índice Id documento(no-particionado)

Columnas:DB2_GENERATED-DOC_ID_FOR_XMLXMLCOL1XMLCOL2

Tabla basePartición 1

Tabla basePartición 2

Espacio de tabla particionado porrango con particiones para XMLCOL1

Columnas:DOCIDMIN_NODEIDXMLDATA

Tabla XMLPartición 1

Tabla XMLPartición 2

Columnas:DB2_GENERATED-DOC_ID_FOR_XMLXMLCOL1XMLCOL2

Índice Id nodo(no-particionado, ampliado)

Índice XML

Columnas:DOCIDMIN_NODEIDXMLDATA

Columnas:DOCIDMIN_NODEIDXMLDATAColumnas:DOCIDMIN_NODEIDXMLDATA

Índice Id nodo(no-particionado, ampliado)

Índice XML

Tabla XMLPartición 1

Tabla XMLPartición 2

Espacio de tabla particionado porrango con particiones para XMLCOL1

Figura 37. Estructura de almacenamiento XML para una tabla base en un espacio de tabla particionada

Capítulo 7. Implementación del diseño de base de datos 211

|||

||

|||

||

Page 222: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

DB2_GENERATED_DOCID_FOR_XML contienen un identificador único dedocumento para las columnas XML de una fila.Una columnaDB2_GENERATED_DOCID_FOR_XML se utiliza para todas las columnas XML.La columna DB2_GENERATED_DOCID_FOR_XML tiene el atributoGENERATED ALWAYS. Por lo tanto, el valor de esta columna no podrá serNULL.

v Una columna con indicador XML en la tabla base para cada columna XML.v Un índice en la columna DB2_GENERATED_DOCID_FOR_XML.

Este índice se conoce como un índice de ID de documento.v Un índice en cada tabla XML que DB2 utiliza para mantener el orden del

documento.Este índice se conoce como índice de ID de nódulo. El índice de ID de nódulo esun índice ampliado que no se puede particionar.

Puede realizar operaciones SQL limitadas, como las siguientes, en los objetoscreados implícitamente:v Altere los siguientes atributos en el espacio de tabla XML

– SEGSIZE– BUFFERPOOL– STOGROUP– PCTFREE– GBPCACHE

v Modifique cualquiera de los atributos del índice de ID de documento o delíndice de ID de nódulo, excepto estos:– CLUSTER– PADDED– Número de columnas (ADD COLUMN no está permitido)

Consulte los temas ALTER TABLE, ALTER TABLESPACE y ALTER INDEX paraobtener una lista completa de las operaciones que puede realizar con estos objetos.

Asignación de espacios de tablas a almacenamiento físicoPuede almacenar espacios de tablas y espacios de índice en almacenamientogestionado por el usuario, almacenamiento gestionado por SMS o en grupos dealmacenamiento gestionados por DB2. (Un grupo de almacenamiento es un conjuntode volúmenes de disco.)

Si no utiliza SMS, debe especificar los grupos de almacenamiento de DB2 cuandocree espacios de tablas o espacios de índice. DB2 asigna espacio para estos objetosdesde el grupo de almacenamiento especificado. Puede asignar diferentesparticiones del mismo espacio de tablas a diferentes grupos de almacenamiento.

Recomendación: Utilice productos de la familia de IBM Storage ManagementSubsystem (SMS) como, por ejemplo, Data Facility SMS (DFSMS), para gestionaralgunos o todos los conjuntos de datos. Las organizaciones que utilizan SMS paragestionar conjuntos de datos de DB2 pueden definir grupos de almacenamientocon la cláusula VOLUMES(*). También puede asignar atributos de clase de gestión,clase de datos y clase de almacenamiento. Como resultado, SMS asigna unvolumen a los espacios de tablas y los espacios de índice de dicho grupo dealmacenamiento.

La figura siguiente muestra cómo funcionan los grupos de almacenamiento juntocon las diferentes estructuras de datos de DB2.

212 Introducción a DB2 para z/OS

|||

|||

|

|

|

||

||

||

||||||

|||||

||

||||||||

giralte
Comentario en el texto
Page 223: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para crear un grupo de almacenamiento de DB2, utilice la sentencia de SQLCREATE STOGROUP. Utilice la cláusula VOLUMES(*) para especificar la clase degestión de SMS (MGMTCLAS), la clase de datos de SMS (DATACLAS) y la clasede almacenamiento de SMS (STORCLAS) para el grupo de almacenamiento deDB2.

Después de definir un grupo de almacenamiento, DB2 almacena información sobreél en el catálogo de DB2. La tabla de catálogo SYSIBM.SYSSTOGROUP tiene unafila para cada grupo de almacenamiento y SYSIBM.SYSVOLUMES tiene una filapara cada volumen del grupo.

El proceso de instalación de DB2 incluye la definición de un grupo dealmacenamiento por omisión, SYSDEFLT. Si tiene autorización para ello puededefinir tablas, índices, espacios de tablas y bases de datos. DB2 utiliza SYSDEFLTpara asignar el almacenamiento auxiliar necesario. DB2 almacena informaciónsobre SYSDEFLT y todos los otros grupos de almacenamiento en las tablas decatálogo SYSIBM.SYSSTOGROUP y SYSIBM.SYSVOLUMES.

Recomendación: Utilice grupos de almacenamiento siempre que pueda de formaexplícita o implícita (utilizando el grupo de almacenamiento por omisión). En

Figura 38. Jerarquía de estructuras de DB2

Capítulo 7. Implementación del diseño de base de datos 213

|||||

Page 224: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

algunos casos, las organizaciones necesitan mantener un control más estricto sobreel almacenamiento físico de tablas e índices. Estas organizaciones optan porgestionar sus propios conjuntos de datos definidos por el usuario en lugar deutilizar grupos de almacenamiento. Debido a que este proceso es complejo, estainformación no describe los detalles.

Ejemplo: Considere la sentencia CREATE STOGROUP siguiente:CREATE STOGROUP MYSTOGRP

VOLUMES (*)VCAT ALIASICF;

Esta sentencia crea el grupo de almacenamiento MYSTOGRP. El asterisco (*) de lacláusula VOLUMES indica que SMS debe gestionar el grupo de almacenamiento.La cláusula VCAT identifica ALIASICF como el nombre o alias del catálogo delrecurso de catálogos integrados que el grupo de almacenamiento debe utilizar. Elcatálogo del recurso de catálogos integrados almacena entradas para todos losconjuntos de datos que DB2 crea en nombre de un grupo de almacenamiento.

IBM Storage Management Subsystem

DB2 for z/OS incluye las posibilidades de Storage Management Subsystem (SMS).Un producto clave de la familia de SMS es Data Facility Storage ManagementSubsystem (DFSMS). DFSMS puede gestionar automáticamente todos los conjuntosde datos que DB2 utiliza y necesita. Si utiliza DFSMS para gestionar los conjuntosde datos, el resultado es una carga de trabajo reducida para los administradores dealmacenamiento y los administradores de bases de datos de DB2.

Puede beneficiarse de las ventajas siguientes al utilizar DFSMS:v Asignación de conjuntos de datos simplificadav Control de asignación mejoradov Gestión del rendimiento mejoradov Gestión de espacio de disco automatizadav Gestión de disponibilidad de los datos mejoradav Movimiento de datos simplificado

Los administradores de bases de datos de DB2 pueden utilizar DFSMS paraconseguir todos sus objetivos para la ubicación y el diseño de conjuntos de datos.Para utilizar satisfactoriamente DFSMS, los administradores de almacenamiento ylos administradores de bases de datos de DB2 deben trabajar conjuntamente paraasegurar que se satisfagan las necesidades de ambos grupos.

Conceptos relacionados

“Grupos de almacenamiento de DB2” en la página 36″Factores para determinar el tamaño de página de un espacio de tabla″ (DB2Administration Guide)Referencia relacionada

″CREATE STOGROUP″ (Consulta de DB2 SQL)

Creación de índicesEsta información describe cómo se utilizan los índices y qué debe considerarse alcrear índices.

Los índices proporcionan un acceso eficaz a los datos. Cuando crea una tabla quecontiene una clave primaria o una restricción exclusiva, debe crear un índiceexclusivo para la clave primaria y para cada restricción exclusiva. DB2 marca la

214 Introducción a DB2 para z/OS

|||

Page 225: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

definición de tabla como incompleta hasta la creación explícita de los índicesforzados necesarios, que se pueden crear implícitamente según si el espacio detablas se ha creado implícitamente, el procesador de esquemas o el registro especialCURRENT RULES. Si los índices necesarios se crean implícitamente, la definiciónde tabla no se marca como incompleta.

También puede optar por utilizar índices debido a los requisitos de acceso.

Tenga en cuenta que la utilización de índices implica un intercambio. Un mayornúmero de índices puede mejorar simultáneamente el rendimiento del acceso deuna transacción determinada y necesitar proceso adicional para insertar, actualizary suprimir claves de índice.

Después de crear un índice, DB2 mantiene el índice, pero puede realizar elmantenimiento necesario como, por ejemplo, su reorganización o recuperación,según convenga.

Tipos de índicesPuede utilizar índices para mejorar el rendimiento del acceso a datos. Los distintostipos de índices tienen características diferentes que deben considerarse cuando secrea un tipo determinado.

Normalmente el tipo de índice que debe definirse se determina después de definiruna tabla.

Un índice puede tener varias características diferentes. Las características deíndices se clasifican en dos categorías amplias: características generales que seaplican a los índices de todas las tablas y características específicas que se aplicanúnicamente a los índices de tablas particionadas. La tabla siguiente resume estascategorías.

Tabla 36. Tipos de índices para espacios de tablas generales, particionados y universales

Tipo de tabla o deespacio de tablas Tipo de índice

General (se aplica atodos los índices)

v Índices exclusivos

v Índices de agrupación en clúster

v Índices rellenados

v Índices no rellenados

v Índice en expresión

v Índices XML

v Índices comprimidos

Particionado v Índices de particionamiento

v Índices secundarios particionados de datos

v Índices secundarios no particionados

v Índices comprimidos

Universal v Índices de particionamiento (sólo universal particionado por rango)

v Índices secundarios particionados de datos (sólo universalparticionado por rango)

v Índices secundarios no particionados

v Índices comprimidos

Capítulo 7. Implementación del diseño de base de datos 215

|||||

||

|

|

|

|

|

|

||

||

|

|

Page 226: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cómo pueden ayudar los índices a evitar clasificacionesDB2 puede utilizar índices para evitar clasificaciones al procesar consultas con lacláusula ORDER BY.

Cuando una consulta contiene una cláusula ORDER BY, DB2 busca índices quecumplan el orden en la consulta. Para que DB2 pueda utilizar un índice paraacceder a datos ordenados, debe definir un índice en las mismas columnas talcomo se especifica en la cláusula ORDER BY.

Exploración de índice hacia adelantePara que DB2 utilice una exploración de índice hacia adelante, el ordendebe ser exactamente igual que en la cláusula ORDER BY.

Exploración de índice hacia atrásPara que DB2 utilice una exploración de índice hacia atrás, el orden debeser exactamente contrario al que se solicita en la cláusula ORDER BY.

Ejemplo 1: Por ejemplo, si define un índice especificando DATE DESC,TIME ASC como los nombres de columna y orden, DB2 puede utilizar este mismoíndice para las siguientes cláusulas ORDER BY:v Exploración hacia adelante para ORDER BY DATE DESC, TIME ASCv Exploración hacia atrás para ORDER BY DATE ASC, TIME DESC

No es necesario crear dos índices para las dos cláusulas ORDER BY. DB2 puedeutilizar el mismo índice para la exploración de índice hacia adelante y la

exploración de índice hacia atrás.

Además de exploraciones hacia adelante y hacia atrás, existe la opción de crearíndices con un orden seudoaleatorio. Esta opción de orden es útil cuandoinserciones ascendentes o zonas activas causan contención dentro de los índices.Los índices creados con la opción RANDOM no dan soporte a exploraciones derango. En cambio, sí dan soporte a búsquedas de igualdad.

Ejemplo 2: Suponga que la consulta incluye una cláusula WHERE con unpredicado con el formato COL=constante. Por ejemplo:...WHERE CODE = 'A'ORDER BY CODE, DATE DESC, TIME ASC

DB2 puede utilizar cualquiera de las claves de índice siguientes para cumplir elorden:v CODE, DATE DESC, TIME ASCv CODE, DATE ASC, TIME DESCv DATE DESC, TIME ASCv DATE ASC, TIME DESC

DB2 puede ignorar la columna CODE de la cláusula ORDER BY y el índice debidoa que el valor de la columna CODE de la tabla de resultados de la consulta noinfluye en el orden de los datos. Si se incluye la columna CODE, puede estar en

cualquier posición en la cláusula ORDER BY y en el índice.

216 Introducción a DB2 para z/OS

|||||

Page 227: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Claves de índiceLa utilidad de un índice depende del diseño de su clave, que se puede crearcuando se crea el índice.

Una clave de índice es el conjunto de columnas o expresiones que se obtiene de unconjunto de columnas de una tabla que se utiliza para determinar el orden de lasentradas de índice. Una tabla puede tener más de un índice y una clave de índicepuede utilizar una o más columnas. Una clave de índice es una columna o unacolección de columnas ordenadas en las que se define un índice. Como candidatasde clave son adecuadas las columnas o expresiones que se utilizan con frecuenciaen operaciones que seleccionan, unen, agrupan y ordenan datos.

No es necesario que todas las claves de índice sean exclusivas. Por ejemplo, uníndice en la columna SALARY de la tabla EMP permite duplicados puesto quevarios empleados pueden ganar el mismo salario.

La utilidad de un índice depende de su clave. Las columnas y expresiones que seutilizan con frecuencia en operaciones de selección, unión, agrupación yordenación son unas candidatas de clave adecuadas.

Una clave compuesta es una clave que se crea en entre 2 y 64 columnas.

Consejo: En general, intente crear un índice que sea selectivo ya que cuanto másselectivo es un índice, más eficaz es. Un índice eficaz contiene varias columnas, seordena en la misma secuencia que la sentencia de SQL y se utiliza con frecuenciaen sentencias de SQL.

La lista siguiente identifica algunos puntos que debería recordar al definir clavesde índice.v Actualice un índice después de actualizar, insertar o suprimir columnas de

datos.v Defina el menor número posible de índices en una columna que se actualice con

frecuencia ya que cada cambio realizado en los datos de la columna debereflejarse en cada índice.

v Considere utilizar una clave compuesta, que puede resultar más útil que unaclave en una única columna cuando la comparación es para igualdad. Un únicoíndice de varias columnas es más eficaz cuando la comparación es para igualdady están disponibles las columnas iniciales. Sin embargo, para comparaciones másgenerales como, por ejemplo, A > valor AND B > valor, varios índices puedenresultar más eficaces.

v Mejore el rendimiento utilizando índices.

Ejemplo 1: En este ejemplo se crea un índice exclusivo en la tabla EMPPROJACT.Se define una clave compuesta en dos columnas, PROJNO y STDATE.CREATE UNIQUE INDEX XPROJAC1

ON EMPPROJACT(PROJNO ASC,

STDATE ASC)...

Ejemplo 2: Esta clave compuesta es útil cuando no es necesario buscarinformación de proyectos por fecha de inicio. Considere una sentencia SELECT conla siguiente cláusula WHERE:WHERE PROJNO='MA2100' AND STDATE='2004-01-01'

Capítulo 7. Implementación del diseño de base de datos 217

|||||||

|||

||

Page 228: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Esta sentencia SELECT puede ejecutarse más eficazmente si se definen índicesseparados en PROJNO y STDATE.

Conceptos relacionados

“Análisis del rendimiento de consultas y aplicaciones” en la página 265

Atributos de índices generalesNormalmente el tipo de índice que debe definirse se determina después de definirun espacio de tablas. Un índice puede tener numerosos atributos diferentes.

Los atributos de índices se clasifican en dos categorías amplias: atributos generalesque se aplican a los índices de todas las tablas y atributos específicos que seaplican únicamente a los índices de tablas particionadas. La tabla siguiente resumeestas categorías.

Tabla 37. Atributos de índices

Tipo de tabla o de espaciode tablas Atributo de índice

Cualquiera v Exclusivo o no exclusivo

v Agrupado en clústeres o no agrupado en clústeres

v Rellenado o no rellenado

Particionado v De particionamiento

v Secundario

Este tema explica los tipos de índices que se aplican a todas las tablas. Los índicesque se aplican únicamente a tablas particionadas se tratan aparte.

Conceptos relacionados

“Atributos de índices de tablas particionadas” en la página 225

Índices exclusivosDB2 utiliza índices exclusivos para asegurarse de que no se almacenen valores declave idénticos en una tabla.

Cuando crea una tabla que contiene una clave primaria, debe crear un índiceexclusivo para dicha tabla en la clave primaria. DB2 marca la tabla como nodisponible hasta la creación explícita de los índices necesarios.

Restricción del acceso con índices exclusivos

También puede utilizar índices para cumplir requisitos de acceso.

Ejemplo 1: Un candidato apropiado para un índice exclusivo es la columnaEMPNO de la tabla EMP. La figura siguiente muestra un conjunto reducido defilas de la tabla EMP e ilustra el índice exclusivo en EMPNO.

218 Introducción a DB2 para z/OS

Page 229: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

DB2 utiliza este índice para representar la inserción de una fila de la tabla EMP sisu valor de EMPNO coincide con el de una fila existente. La figura anterior ilustrala relación entre cada valor de EMPNO en el índice y el número de página y filacorrespondientes. DB2 utiliza el índice para ubicar la fila para el empleado 000030,por ejemplo, en la fila 3 de la página 1.

Si no desea valores duplicados en la columna de clave, cree un índice exclusivoutilizando la cláusula UNIQUE de la sentencia CREATE INDEX.

Ejemplo 2: La tabla DEPT no permite ID de departamento duplicados. La creaciónde un índice exclusivo, como se muestra en el ejemplo siguiente, evita los valoresduplicados.CREATE UNIQUE INDEX MYINDEX

ON DEPT (DEPTNO);

El nombre de índice es MYINDEX y la columna indexada es DEPTNO.

Si una tabla tiene una clave primaria (como en el caso de la tabla DEPT), susentradas deben ser exclusivas. DB2 impone esta exclusividad mediante ladefinición de un índice en las columnas de clave primaria, con las columnas deíndice en el mismo orden que las columnas de clave primaria.

Antes de crear un índice exclusivo en una tabla que ya contiene datos, asegúresede que ningún par de filas tenga el mismo valor de clave. Si DB2 encuentra unvalor duplicado en un conjunto de columnas de clave para un índice exclusivo,DB2 emite un mensaje de error y no crea el índice.

Si una clave de índice permite nulos para todos o algunos de sus valores decolumna, puede utilizar la cláusula WHERE NOT NULL para asegurar que losvalores no nulos de la clave de índice sean exclusivos.

Los índices exclusivos son una parte importante de implementación derestricciones de referencia entre las tablas de la base de datos de DB2. No puededefinir una clave foránea a menos que ya exista la correspondiente clave primariay tenga un índice exclusivo definido para ésta.

EMPNO Pag. Fila EMPNO

1 200140 NATZ

2 2 000320 RAMLAL

3 000200 BROWN

1 200340 ALONZO

3 2 000140 NICHOLLS

3 000060 STERN

1 000220 LUTZ

000030 1 2 000330 LEE

000060 3 000030 KWAN

000140

000200

000220

000330

200140

000320

200340

LASTNAME JOB DEPT

DES

FLD

MGR

ANL

FLD

DES

FLD

SLS

MGR

D11

E21

C01

C01

E21

D11

E21

C01

D11

Índice en latabla EMP Tabla EMP

Figura 39. Índice exclusivo en la columna EMPNO

Capítulo 7. Implementación del diseño de base de datos 219

||||

Page 230: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cuándo no debe utilizarse un índice exclusivo

En algunos casos, es posible que no desee utilizar un índice exclusivo. Puede crearun índice por omisión para mejorar el rendimiento del acceso a datos cuando losvalores de las columnas del índice no son necesariamente exclusivos.

Cuando crea un índice por omisión, DB2 le permite entrar valores duplicados enuna columna de clave.

Por ejemplo, suponga que más de un empleado se llama David Brown. Considereun índice definido en las columnas FIRSTNME y LASTNAME de la tabla EMP.CREATE INDEX EMPNAME ON EMP (FIRSTNME, LASTNAME);

Es un ejemplo de un índice que puede contener entradas duplicadas.

Consejo: No cree este tipo de índice en tablas muy pequeñas puesto que es máseficaz utilizar exploraciones de las tablas que utilizar índices.

Referencia relacionada

″CREATE INDEX″ (Consulta de DB2 SQL)

Índices no exclusivosPuede utilizar índices no exclusivos para mejorar el rendimiento del acceso a datoscuando los valores de las columnas del índice no son necesariamente exclusivos.

Recomendación: No cree índices no exclusivos en tablas muy pequeñas puestoque es más eficaz utilizar exploraciones de las tablas que utilizar índices.

Para crear índices no exclusivos, utilice la sentencia SQL CREATE INDEX. Paraíndices no exclusivos, DB2 permite a los usuarios y programas entrar valoresduplicados en una columna de clave.

Ejemplo: Suponga que más de un empleado se llama David Brown. Considere uníndice definido en las columnas FIRSTNME y LASTNAME de la tabla EMP.CREATE INDEX EMPNAME

ON EMP (FIRSTNME, LASTNAME);

Este índice es un ejemplo de un índice no exclusivo que puede contener entradasduplicadas.

Referencia relacionada

″CREATE INDEX″ (Consulta de DB2 SQL)

Índices de agrupación en clústerUn índice de agrupación en clúster determina cómo se ordenan físicamente (agrupanen clúster) las filas en un espacio de tablas. Los índices de agrupación en clústerproporcionan ventajas de rendimiento significativas en algunas operaciones, enespecial en las que implican muchos registros. Por ejemplo, las operaciones deagrupación y ordenación y las comparaciones que no sean iguales se benefician delos índices de agrupación en clúster.

Puede definir un índice de agrupación en clúster en un espacio de tablasparticionado o en un espacio de tablas segmentado. En un espacio de tablasparticionado, un índice de agrupación en clúster puede ser un índice departicionamiento o un índice secundario. Si un índice de clúster en una tablaparticionada no es un índice de particionamiento, las filas se ordenan en lasecuencia de clúster en cada partición de datos en lugar de dividirse entre las

220 Introducción a DB2 para z/OS

Page 231: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

particiones. (Antes de la Versión 8 de DB2 UDB para z/OS, el índice departicionamiento era necesario que fuera el índice de agrupación en clúster.

Restricción: Un índice de una expresión o un índice XML no puede ser un índicede agrupación en clúster.

Cuando una tabla tiene un índice de agrupación en clúster , una sentencia INSERThace que DB2 inserte los registros lo más cerca posible del orden de sus valores deíndice. El primer índice que se define en la tabla sirve implícitamente como índicede agrupación en clúster a menos que el usuario especifique explícitamenteCLUSTER al crear o modificar otro índice. Por ejemplo, si el usuario defineprimero un índice exclusivo en la columna EMPNO de la tabla EMP, DB2 insertafilas en la tabla EMP en el orden del número de identificación de empleado amenos que el usuario defina explícitamente otro índice para que sea el índice deagrupación en clúster.

Aunque una tabla puede tener varios índices, sólo un índice puede ser un índicede agrupación en clúster. Si el usuario no define ningún índice de agrupación enclúster para una tabla, DB2 reconoce el primer índice creado en la tabla como elíndice de agrupación en clúster implícito cuando ordena filas de datos.

Consejo:

v Defina siempre un índice de agrupación en clúster. De lo contrario, es posibleque DB2 no elija la clave que se prefiere para el índice.

v Defina la secuencia de un índice de agrupación en clúster para dar soporte alproceso de un gran volumen de datos.

Utilice la cláusula CLUSTER de la sentencia CREATE INDEX o ALTER INDEXpara definir un índice de agrupación en clúster.

Ejemplo: Suponga que a menudo necesita reunir información sobre empleados pordepartamento. En la tabla EMP puede crear un índice de agrupación en clúster enla columna DEPTNO.CREATE INDEX DEPT_IX

ON EMP(DEPTNO ASC)CLUSTER;

Como resultado, probablemente todas las filas para el mismo departamento estaráncerca. Generalmente DB2 puede acceder a todas las filas para dicho departamentoen una única lectura. (La utilización de un índice de agrupación en clúster nogarantiza que todas las filas para el mismo departamento se almacenen en lamisma página. El almacenamiento real de las filas depende del tamaño de las filas,del número de filas y de la cantidad de espacio libre disponible. Asimismo algunaspáginas pueden contener filas para más de un departamento.)

La figura siguiente muestra un índice de agrupación en clúster en la columnaDEPT de la tabla EMP; sólo se muestra un subconjunto de las filas.

Capítulo 7. Implementación del diseño de base de datos 221

||

Page 232: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Suponga que posteriormente crea un índice de agrupación en clúster en la mismatabla. En este caso, DB2 lo identifica como el índice de agrupación en clúster perono reorganiza los datos que ya existen en la tabla. La organización de los datospermanece tal como estaba con el índice sin agrupación en clúster original creado.Sin embargo, cuando el programa de utilidad REORG reorganiza el espacio detablas, DB2 agrupa en clúster los datos según la secuencia del nuevo índice deagrupación en clúster, Por lo tanto, si sabe que desea un índice de agrupación enclúster, debe definir el índice de agrupación en clúster antes de cargar la tabla. Siesto no es posible, debe definir el índice y a continuación reorganizar la tabla. Sicrea o descarta y vuelve a crear un índice de agrupación en clúster después decargar la tabla, los cambios entran en vigor después de una reorganizaciónposterior.

Referencia relacionada

“Tabla de empleados (DSN8910.EMP)” en la página 127″CREATE INDEX″ (Consulta de DB2 SQL)

Índices rellenados o no rellenadosLas opciones NOT PADDED y PADDED de las sentencias CREATE INDEX yALTER INDEX especifican cómo se almacenan las columnas de serie de longitudvariable en un índice.

Puede elegir no rellenar columnas de serie de longitud variable del índice hasta sulongitud máxima (valor por omisión) o puede elegir rellenarlas.

Si especifica la cláusula NOT PADDED en una sentencia CREATE INDEX,las columnas de longitud variable de la clave de índice no se rellenan a sulongitud máxima. Si una clave de índice existente incluye columnas de longitudvariable, puede considerar la modificación del índice para utilizar la cláusula NOTPADDED. Sin embargo, la utilización de la cláusula NOT PADDED en la sentenciaALTER INDEX para cambiar el relleno coloca el índice en el estado de pendientede REBUILD (RBDP). Debe volver a crear el índice para eliminar el estado de

RBDP.

La utilización de la cláusula NOT PADDED tiene las ventajas siguientes:v DB2 puede utilizar acceso de sólo índice para las columnas de longitud variable

de la clave de índice, lo cual mejora el rendimiento.

Figura 40. Índice de agrupación en clúster en la tabla EMP

222 Introducción a DB2 para z/OS

|||||||

|

Page 233: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v DB2 almacena únicamente datos reales, lo cual reduce los requisitos dealmacenamiento para la clave de índice.

Sin embargo, la utilización de la cláusula NOT PADDED también puede tener lasdesventajas siguientes:v Las comparaciones de claves de índice son más lentas porque DB2 debe

comparar cada par de columnas de longitud variable correspondientes en lugarde comparar la clave entera cuando se rellenan las columnas a su longitudmáxima.

v DB2 almacena un campo con una longitud de 2 bytes adicional para cadacolumna de longitud variable. Por lo tanto, si la longitud del relleno (hasta lalongitud máxima) es menor que o igual a 2 bytes, los requisitos dealmacenamiento en efecto podrían ser mayores para las columnas de longitudvariable que no se rellenan.

Consejo: Utilice la cláusula NOT PADDED para implementar acceso de sólo índicesi la aplicación normalmente accede a columnas de longitud variable.

Para controlar si las columnas de longitud variable se rellenan por omisión, utilicela opción PAD INDEXES BY DEFAULT en el panel de instalación DSNTIPE.

Referencia relacionada

″CREATE INDEX″ (Consulta de DB2 SQL)

Índice en expresiónUn índice en expresión le permite crear un índice en una expresión general. Puedemejorar el rendimiento de las consultas si el optimizador elige el índice que se creaen la expresión.

Utilice un índice en expresión cuando desee una evaluación eficaz de consultas queimpliquen una expresión de columna. A diferencia de los índices simples, en losque la clave de índice consta de una concatenación de una o más columnas detabla especificadas, los valores de clave de índice no son exactamente iguales quelos valores de las columnas de tabla. Las expresiones especificadas transforman losvalores.

Puede crear el índice utilizando la sentencia CREATE INDEX. Si se crea un índicecon la opción UNIQUE, la exclusividad se impone en los valores almacenados enel índice, no en los valores de columna originales.

Referencia relacionada

″CREATE INDEX″ (Consulta de DB2 SQL)

Compresión de índicesPuede reducir la cantidad de espacio que ocupa un índice en disco comprimiendoel índice.

La cláusula COMPRESS YES/NO de la sentencias ALTER INDEX y CREATEINDEX le permite comprimir los datos de un índice y reducir el tamaño del índiceen el disco. Sin embargo, la compresión de índices depende mucho de los datos yalgunos índices pueden contener datos que no producen un ahorro de espaciosignificativo. Los índices comprimidos también pueden utilizar másalmacenamiento real y virtual que los índices sin comprimir. La cantidad dealmacenamiento real y virtual adicional necesario depende de la proporción decompresión que se utiliza para las claves comprimidas, la cantidad de espacio librey la cantidad de espacio utilizado por la correlación de claves.

Capítulo 7. Implementación del diseño de base de datos 223

||||

||||||

|||

|

|

|||

|||||||||

Page 234: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Puede elegir entre tamaños de página de agrupación de almacenamientosintermedios de 8 KB a 16 KB para el índice. Utilice el programa de utilidadDSN1COMP en los índices existentes para calcular el tamaño de página apropiadopara índices nuevos. La elección de una agrupación de almacenamientosintermedios de 16 KB en lugar de una agrupación de almacenamientos intermediosde 8 KB ofrece una proporción de compresión potencialmente más elevada, peroesta opción también aumenta la posibilidad de utilizar más almacenamiento. Lasestimaciones del ahorro de espacio de índice del programa de utilidadDSN1COMP, tanto en los datos de índice verdaderos o en datos de índicesimilares, no son exactas.

Si se necesitan E/S para leer un índice, es probable que la degradación de CPUpara una exploración de índice sea relativamente pequeña, pero la degradación deCPU para un acceso aleatorio es probable que sea muy significativa.

La degradación de CPU para supresiones y actualizaciones es significativa inclusosi no es necesaria ninguna E/S.

Referencia relacionada

″CREATE INDEX″ (Consulta de DB2 SQL)

Atributos de índices XMLPuede crear un índice en cualquier columna XML para una evaluación eficaz deexpresiones Xpath con el fin de mejorar el rendimiento durante consultas endocumentos XML.

A diferencia de los índices relacionales simples en los cuales las claves de índiceestán formadas por una o más columnas de tabla especificadas, un índice XMLutiliza una expresión Xpath determinada para indexar vías de acceso y valores endocumentos XML almacenados en una única columna XML.

En un índice XML, en realidad tan solo se indexan los nodos de atributo, los nodosde texto o los nodos de elemento que coinciden con la expresión de vía de accesoXML. Debido a que un índice XML tan solo indexa los nodos que coinciden con laXpath específica y no el mismo documento, se añaden dos campos de clave más alíndice para formar la clave de índice compuesto. Los campos de clave adicionales,que identifican el documento XML y la posición del nodo en el documento, sevisualizan en el catálogo. Estos campos no están implicados en la comprobación deexclusividad para índices exclusivos.

Utilice la sentencia CREATE INDEX con la palabra clave XMLPATTERNpara crear un índice XML. También debe especificar la vía de acceso XML quedebe indexarse. A continuación se forma una clave de índice concatenando losvalores extraídos del nodo del documento XML que cumple la vía de acceso XML

especificada con el ID de nodo y documento.

Cuando indexa una columna XML con XMLPATTERN, tan solo se indexan laspartes del documento que cumplen la expresión de vía de acceso XML. Dado quevarias partes del documento pueden cumplir con la Xpath especificada enXMLPATTERN, se pueden generar varias entradas de clave de índice e insertarlasen el índice durante la inserción de un único documento.

Sólo se permite una especificación de índice XML para cada sentencia CREATEINDEX. Sin embargo, puede crear varios índices XML en una columna XML.

224 Introducción a DB2 para z/OS

||||||||||

|||

||

|

|

|

|||

||||

||||||||

||||

|

|||||

||

Page 235: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Restricción: Los índices XML particionados no están soportados actualmente

Ejemplo 1: Si desea buscar el apellido (name/last) de un empleado específico enlos elementos de empleado, puede crear un índice en la vía de acceso XML’/department/emp/name/last’ utilizando la sentencia CREATE INDEX siguiente:CREATE INDEX EMPINDEX ON DEPARTMENT (DEPTDOCS)

GENERATE KEYS USING XMLPATTERN '/department/emp/name/last'AS SQL VARCHAR(20)

Una vez el índice EMPINDEX se ha creado satisfactoriamente, se llenarán variasentradas en las tablas de catálogo.

Ejemplo 2: Puede crear dos índices XML con la misma expresión de vía de accesoutilizando diferentes tipos de datos para cada uno de ellos. Los índices XMLsoportan los tipos de datos VARCHAR y DECFLOAT. Esto le permite seleccionarcómo quiere interpretar el resultado de la expresión según varios tipos de datos.Por ejemplo, el valor ’12345’ tiene una representación de tipo carácter pero tambiénse puede interpretar como el número 12 345. Si desea indexar la vía de acceso’/department/emp/@id’ como una serie de caracteres y como un número, debecrear dos índices, uno para el tipo de datos VARCHAR y uno para el tipo de datosDECFLOAT. Los valores del documento se convierten al tipo de datos especificado

para el índice.

Atributos de índices de tablas particionadasUn índice particionado es un índice que está físicamente particionado. Los índices departicionamiento y los índices secundarios pueden estar particionados.

Antes de la Versión 8, cuando se creaba una tabla en un espacio de tablasparticionado, se definía un índice de particionamiento y uno o más índicessecundarios. El índice de particionamiento también era el índice de agrupación enclúster y el único índice particionado. Los índices sin particionamiento, referidoscomo índices secundarios, no estaban particionados.

En un particionamiento controlado por índice, la estructura física de un índicedepende de si hay implicado un índice de particionamiento. Sin embargo, cuandose calcula el almacenamiento para un índice, el factor más importante es si elíndice es o no exclusivo. Al considerar el orden en que se almacenan las filas, debeconsiderarse qué índice es el índice de agrupación en clúster. En unparticionamiento controlado por índice, un índice de particionamiento también esel índice de agrupación en clúster. En un particionamiento controlado por índice,utilice un índice de particionamiento para indicar a DB2 cómo debe dividir losdatos de un espacio de tablas particionado entre las particiones.

En un particionamiento controlado por tabla, defina el esquema departicionamiento para la tabla utilizando la cláusula PARTITION BY de la

sentencia CREATE TABLE.

Para tablas particionadas, se aplican las características siguientes:v Los índices definidos en una tabla particionada se clasifican según sus atributos

lógicos y sus atributos físicos.

Capítulo 7. Implementación del diseño de base de datos 225

|

|

|||

|||

||

|||||||||

|

|||||||||

||

|

Page 236: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

– El atributo lógico de un índice de una tabla particionada es apropiado si elíndice se puede ver como un índice de particionamiento lógico.

– El atributo físico de un índice de una tabla particionada es apropiado si elíndice está físicamente particionado.

v Un índice de particionamiento puede estar particionado o no particionado.v Cualquier índice, con la excepción de un índice de una expresión o un índice

XML, puede ser un índice de agrupación en clúster. Tan solo puede definir uníndice de agrupación en clúster en una tabla.

La figura siguiente muestra la diferencia entre un índice particionado y un índiceno particionado.

Los índices de una tabla particionada se pueden categorizar, basándose enatributos de índices lógicos, en índices de particionamiento e índices secundarios.

Conceptos relacionados

“Creación de una tabla con particionamiento controlado por tabla” en la página183

Índices de particionamientoEn un particionamiento controlado por índices, un índice de particionamiento es uníndice que define el esquema de particionamiento de un espacio de tablas basadoen la cláusula PARTITION para cada partición de la sentencia CREATE INDEX. Enun particionamiento controlado por tabla, un índice de particionamiento esopcional.

Las columnas que se especifican para el índice de particionamiento son lascolumnas de clave. La cláusula PARTITION para cada partición define los rangosde valores para las columnas de clave. Estos rangos particionan el espacio detablas y el espacio de índice de particionamiento correspondiente.

Figura 41. Comparación entre un índice particionado y un índice no particionado

226 Introducción a DB2 para z/OS

|||

Page 237: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Antes de DB2 Versión 8, cuando se definía un índice de particionamiento en unatabla de un espacio de tablas particionado, se especificaban los valores de clave departicionamiento y de clave límite en la cláusula PART VALUES de la sentenciaCREATE INDEX. Este tipo de particionamiento recibe el nombre departicionamiento controlado por índice. A partir de DB2 Versión 8, se puede definirun particionamiento controlado por tabla con la sentencia CREATE TABLE. Elparticionamiento controlado por tabla está diseñado para sustituir con el tiempo elparticionamiento controlado por índice.

Ejemplo: Suponga que una tabla contiene códigos de área de estado y quenecesita crear un índice de particionamiento para secuenciar los códigos de áreaentre particiones. Puede utilizar las siguientes sentencias de SQL para crear la tablay el índice de particionamiento:CREATE TABLE AREA_CODES

(AREACODE_NO INTEGER NOT NULL,STATE CHAR (2) NOT NULL,...PARTITION BY (AREACODE_NO ASC)...

CREATE INDEX AREACODE_IX1 ON AREA_CODES (AREACODE_NO)CLUSTER (...

PARTITION 2 ENDING AT (400),PARTITION 3 ENDING AT (500),PARTITION 4 ENDING AT (600)),...);

La figura siguiente ilustra el índice de particionamiento en la tabla AREA_CODES.

Restricción: No se puede crear un índice de particionamiento en un espacio detablas de partición por crecimiento.

Figura 42. Índice de particionamiento en la tabla AREA_CODES

Capítulo 7. Implementación del diseño de base de datos 227

||

Page 238: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Índices secundariosEn un particionamiento basado en tabla, un índice que no es un índice departicionamiento es un índice secundario. Un índice puede estar particionado o noparticionado. Puede crear un índice en una tabla para imponer una restricción deexclusividad, para agrupar datos en clústeres o para proporcionar vías de acceso adatos para consultas.

La utilidad de un índice depende de las columnas de su clave y de la cardinalidadde la clave. Las columnas que se utilizan con frecuencia en operaciones deselección, unión, agrupación y ordenación son unas candidatas de clave adecuadas.Además, el número de valores diferenciados de una clave de índice para una tablagrande debe ser suficiente para que DB2 utilice el índice para recuperación dedatos; de lo contrario, DB2 podría optar por realizar una exploración de espacio detablas.

Restricción: Un índice XML no se puede particionar.

DB2 da soporte a dos tipos de índices secundarios: índices secundariosparticionados de datos (DPSI) e índices secundarios no particionados (NPSI).

Índices secundarios particionados de datos:

Un índice secundario particionado de datos (DPSI) es un índice sin particiónfísicamente particionado según el esquema de particionamiento de la tabla.

Sólo puede crear un índice secundario particionado de datos en una tabla queresida en un espacio de tablas particionado. El índice secundario particionado dedatos se particiona según el esquema de particionamiento de los datossubyacentes. Es decir, las entradas de índice que hacen referencia a datos de lapartición física 1 de una tabla residen en la partición física 1 del índice, etc.

Restricción: No puede crear un DPSI para un espacio de tablas de partición porcrecimiento ni para un índice XML.

Las características de los DPSI incluyen:v Un DPSI tiene tantas particiones como número de particiones del espacio de

tablas.v Cada partición de DPSI contiene claves únicamente para las filas de la partición

de espacio de tablas correspondiente. Por ejemplo, si el espacio de tablas tienetres particiones, las claves de la partición de DPSI 1 tan solo hacen referencia alas filas de la partición de espacio de tablas 1; las claves de la partición de DPSI2 tan solo hacen referencia a las filas de la partición de espacio de tablas 2, etc.

Para definir un DPSI utilice la palabra clave PARTITIONED. Si las columnas más ala izquierda del índice que especifica con la palabra clave PARTITIONED coincidencon las columnas de particionamiento, DB2 tan solo crea el índice como un DPSI sila secuencia de clasificación de las columnas coincidentes es diferente.

La utilización de índices secundarios particionados de datos aumenta laindependencia de partición y, por lo tanto, proporciona las siguientes ventajas derendimiento, entre otras:v Elimina la contención entre trabajos LOAD PART paralelos que tienen como

destino particiones diferentes de un espacio de tablasv Facilita las operaciones en el nivel de partición como, por ejemplo, añadir una

partición nueva o rotar la primera partición para que sea la última partición

228 Introducción a DB2 para z/OS

|

|||||

||

|

||||

Page 239: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Mejora el tiempo de recuperación de índices secundarios en espacios de tablasparticionados

Sin embargo, la utilización de índices secundarios particionados de datos nosiempre mejora el rendimiento de las consultas. Por ejemplo, para consultas conpredicados que tan solo hacen referencia a las columnas de la clave del DPSI, DB2debe comprobar que los valores para cada partición del índice cumplan elpredicado.

Los índices secundarios particionados de datos proporcionan ventajas derendimiento en consultas que cumplen los criterios siguientes:v La consulta tiene predicados en las columnas de DPSI.v La consulta contiene predicados adicionales en las columnas de particionamiento

de la tabla que limitan la consulta a un subconjunto de las particiones de latabla.

Ejemplo: Considere la sentencia SELECT siguiente:SELECT STATE FROM AREA_CODESWHERE AREACODE_NO *<= 300 AND STATE = 'CA';

Esta consulta utiliza de forma eficaz el índice secundario particionado de datos. Elnúmero de valores de clave que es necesario buscar está limitado a los valores declave de las particiones calificadoras. En el caso de una consulta secundaria noparticionada, es posible que se lleve a cabo una exploración de índice máscompleta de los valores de clave.

Índices secundarios no particionados:

Un índice secundario no particionado (NPSI) es cualquier índice que no estédefinido como un índice de particionamiento o como un índice particionado. UnNPSI tiene un espacio de índice que contiene las claves para las filas de todas lasparticiones del espacio de tablas.

Puede crear un índice secundario no particionado en una tabla que resida en unespacio de tablas particionado, sin embargo, esto no es posible en espacios detablas no particionados.

Los índices secundarios no particionados proporcionan ventajas de rendimiento enconsultas que cumplen los criterios siguientes:v La consulta no contiene predicados en las columnas de particionamiento de la

tabla que limiten la consulta a un subconjunto muy pequeño de las particionesde la tabla.

v Las calificaciones de consulta coinciden con las columnas de índice.v Las columnas de la lista SELECT se incluyen en el índice (para acceso de sólo

índice).

Ejemplo: Considere la sentencia SELECT siguiente:SELECT STATE FROM AREA_CODESWHERE AREACODE_NO <= 300 AND STATE > 'CA';

Capítulo 7. Implementación del diseño de base de datos 229

||

|||

Page 240: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Esta consulta utiliza de forma eficaz el índice secundario no particionado en lascolumnas AREACODE_NO y STATE, particionado por STATE. El número devalores de clave que es necesario buscar está limitado a los valores de clave deíndice inferiores o iguales a 300.

Ejemplo de índices secundarios particionados de datos y no particionados:

El ejemplo incluido le puede ayudar a comprender las ventajas de utilizar índicessecundarios particionados de datos y no particionados.

Este ejemplo crea un índice secundario particionado de datos (DPSIIX2) y uníndice secundario no particionado (NPSIIX3) en la tabla AREA_CODES.

Importante: La tabla AREA_CODES debe estar particionada en una columna queno sea la columna STATE para que los índices sean secundarios.

Puede utilizar las siguientes sentencias de SQL para crear estos índicessecundarios:CREATE INDEX DPSIIX2 ON AREA_CODES (STATE) PARTITIONED;CREATE INDEX NPSIIX3 ON AREA_CODES (STATE);

La figura siguiente ilustra cómo aparece el índice secundario particionado de datosy el índice secundario no particionado en la tabla AREA_CODES.

Los índices secundarios particionados de datos proporcionan ventajas sobre losíndices secundarios no particionados para el proceso de programas de utilidad. Porejemplo, los programas de utilidad tales como COPY, REBUILD INDEX yRECOVER INDEX pueden operar en particiones físicas en lugar de particiones

Figura 43. Índice secundario particionado de datos e índice secundario no particionado en la tabla AREA_CODES

230 Introducción a DB2 para z/OS

||

Page 241: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

lógicas debido a que las claves para una partición de datos concreta residen en unasola partición de DPSI (índice secundario particionado de datos). Esto puedeproporcionar una mayor disponibilidad.

Creación de vistasAl diseñar la base de datos, puede que necesite proporcionar a los usuariosúnicamente acceso a determinadas partes de los datos. Puede proporcionar accesoa los usuarios mediante el diseño y la utilización de vistas.

Utilice la sentencia CREATE VIEW para definir y nombrar una vista. A menos queliste específicamente diferentes nombres de columna después del nombre de vista,los nombres de columna de la vista son iguales que los de la tabla subyacente.Cuando cree diferentes nombres de columna para la vista, tenga en cuenta losconvenios de denominación que ha establecido al diseñar la base de datosrelacional.

Una sentencia SELECT describe la información en la vista. La sentencia SELECTpuede nombrar otras vistas y tablas, y puede utilizar las cláusulas WHERE,GROUP BY y HAVING. No puede utilizar la cláusula ORDER BY ni nombrar unavariable de lenguaje principal.

Conceptos relacionados

“Utilización de vistas para personalizar los datos que ve un usuario” en lapágina 85“Vistas de DB2” en la página 31

Vista de una única tablaEsta información proporciona ejemplos sobre cómo crear una vista de una únicatabla.

Ejemplo: Suponga que desea crear una vista de la tabla DEPT. De las cuatrocolumnas de la tabla, la vista sólo necesita tres: DEPTNO, DEPTNAME y MGRNO.El orden de las columnas que se especifican en la cláusula SELECT es el orden enque aparecen en la vista:CREATE VIEW MYVIEW AS

SELECT DEPTNO,DEPTNAME,MGRNOFROM DEPT;

Ejemplo: En el ejemplo anterior, ninguna lista de columnas sigue al nombre devista, MYVIEW. Por lo tanto, las columnas de la vista tienen los mismos nombresque las de la tabla DEPT en la que se basa. Puede ejecutar la sentencia SELECTsiguiente para ver el contenido de la vista:SELECT * FROM MYVIEW;

La tabla de resultados es similar a la siguiente:DEPTNO DEPTNAME MGRNO====== ===================== ======A00 CHAIRMANS OFFICE 000010B01 PLANNING 000020C01 INFORMATION CENTER 000030D11 MANUFACTURING SYSTEMS 000060E21 SOFTWARE SUPPORT ------

Capítulo 7. Implementación del diseño de base de datos 231

Page 242: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Vista que combina información de varias tablasPuede crear una vista que contenga una combinación de más de una tabla. Lacombinación de más de una tabla se denomina unión.

DB2 proporciona dos tipos de uniones: una unión externa y una unión interna.Una unión externa incluye las filas en las que los valores de las columnas de uniónno coinciden y las filas en las que los valores coinciden. Una unión interna incluyesólo las filas en las que se devuelven valores coincidentes en las columnas deunión.

Ejemplo: El ejemplo siguiente es una unión interna de columnas de las tablasDEPT y EMP. La cláusula WHERE limita la vista a tan solo las columnas en lasque MGRNO de la tabla DEPT coincide con EMPNO de la tabla EMP:CREATE VIEW MYVIEW AS

SELECT DEPTNO, MGRNO, LASTNAME, ADMRDEPTFROM DEPT, EMPWHERE EMP.EMPNO = DEPT.MGRNO;

El resultado de ejecutar esta sentencia CREATE VIEW es una vista de unióninterna de dos tablas como se muestra a continuación:DEPTNO MGRNO LASTNAME ADMRDEPT====== ====== ======== ========A00 000010 HAAS A00B01 000020 THOMPSON A00C01 000030 KWAN A00D11 000060 STERN D11

Ejemplo: Suponga que desea crear la vista del ejemplo anterior, pero tan solodesea incluir los departamentos que informan al departamento A00. Supongatambién que prefiere utilizar un conjunto diferente de nombres de columna. Utilicela sentencia CREATE VIEW siguiente:CREATE VIEW MYVIEWA00

(DEPARTMENT, MANAGER, EMPLOYEE_NAME, REPORT_TO_NAME)ASSELECT DEPTNO, MGRNO, LASTNAME, ADMRDEPTFROM EMP, DEPTWHERE EMP.EMPNO = DEPT.MGRNOAND ADMRDEPT = 'A00';

Puede ejecutar la sentencia SELECT siguiente para ver el contenido de la vista:SELECT * FROM MYVIEWA00;

Al ejecutar esta sentencia SELECT, el resultado es una vista de un subconjunto delos mismos datos, pero con nombres de columna diferentes, como se muestra acontinuación:DEPARTMENT MANAGER EMPLOYEE_NAME REPORT_TO_NAME========== ======= ============= ==============A00 000010 HAAS A00B01 000020 THOMPSON A00C01 000030 KWAN A00

Conceptos relacionados

“Modos de fusionar listas de valores” en la página 108

Inserciones y actualizaciones de datos mediante vistas

Si define una vista en una sola tabla, puede hacer referencia al nombre de unavista en operaciones de inserción, actualización o supresión. Si la vista es compleja

232 Introducción a DB2 para z/OS

||

Page 243: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

o implica varias tablas, debe definir un desencadenante INSTEAD OF para poderhacer referencia a esta vista en una sentencia INSERT, UPDATE, MERGE oDELETE. Esta información explica cómo se trata el caso simple, en el que DB2realiza una inserción o actualización en la tabla base.

Para asegurarse de que la inserción o actualización se ajusta a la definición devista, especifique la cláusula WITH CHECK OPTION. El ejemplo siguiente ilustraalgunos resultados no deseables al omitir esta comprobación.

Ejemplo: Suponga que define una vista, V1, del modo siguiente:CREATE VIEW V1 AS

SELECT * FROM EMPWHERE DEPT LIKE 'D

Un usuario con el privilegio SELECT sobre la vista V1 puede ver la información dela tabla EMP para los empleados de los departamentos cuyos ID empiezan con D.La tabla EMP únicamente tiene un departamento (D11) con un ID que cumple lacondición.

Suponga que un usuario tiene el privilegio INSERT sobre la vista V1. Un usuariocon los privilegios SELECT e INSERT puede insertar una fila para el departamentoE01, quizás erróneamente, pero no puede seleccionar la fila que se acaba deinsertar.

En el ejemplo siguiente se muestra un modo alternativo para definir la vista V1.

Ejemplo: Puede evitar la situación en que un valor que no coincide con ladefinición de vista se inserta en la tabla base. Para ello, en su lugar defina la vistaV1 para incluir la cláusula WITH CHECK OPTION:CREATE VIEW V1 AS SELECT * FROM EMP

WHERE DEPT LIKE 'D%' WITH CHECK OPTION;

Con la nueva definición, cualquier inserción o actualización en la vista V1 debecumplir el predicado contenido en la cláusula WHERE: DEPT LIKE ’D%’. Lacomprobación puede ser útil, pero también tiene un coste de proceso; cadainserción o actualización potencial debe comprobarse en la definición de vista. Porlo tanto, debe sopesar la ventaja de proteger la integridad de los datos y ladesventaja de la degradación del rendimiento.

Tareas relacionadas

″Inserción, actualización y supresión de datos en vistas utilizandodesencadenantes INSTEAD OF″ (DB2 Application Programming and SQLGuide)Referencia relacionada

″CREATE VIEW″ (Consulta de DB2 SQL)

Creación de objetos grandesLa definición de objetos grandes para DB2 es diferente de la definición de otrostipos de datos y objetos.

A continuación se proporcionan los pasos básicos para definir los LOB y mover losdatos a DB2:1. Defina una columna del tipo LOB adecuado.

Cuando crea una tabla con una columna LOB, o modifica una tabla para añadiruna columna LOB, la definición de una columna ROWID es opcional. Si no

Capítulo 7. Implementación del diseño de base de datos 233

||||

Page 244: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

define una columna ROWID, DB2 define automáticamente una columnaROWID oculta. Defina sólo una columna ROWID, incluso si existen variascolumnas LOB en la tabla.La columna LOB contiene información sobre el LOB, no sobre los datos delLOB. La tabla que contiene la información del LOB se denomina tabla base, quees diferente de la tabla base común. DB2 utiliza la columna ROWID paralocalizar los datos del LOB. Puede definir la columna LOB y la columnaROWID en una sentencia CREATE TABLE o ALTER TABLE. Si añade unacolumna LOB y una columna ROWID a una tabla existente, debe utilizar dossentencias ALTER TABLE. Si añade la columna ROWID después de añadir lacolumna LOB, la tabla tiene dos ROWID; una oculta y la que ha creado. DB2asegura que los valores de las dos columnas ROWID sean siempre iguales.

2. Cree un espacio de tablas y una tabla para contener los datos del LOB.Para datos de LOB, el espacio de tablas se denomina espacio de tabla de LOB yuna tabla se denomina tabla auxiliar. Si la tabla base no está particionada, debecrear una espacio de tablas de LOB y una tabla auxiliar para cada columnaLOB. Si la tabla base está particionada, debe crear un espacio de tablas de LOBy una tabla auxiliar para cada columna LOB de cada partición. Por ejemplo,debe crear tres espacios de tablas de LOB y tres tablas auxiliares para cadacolumna de LOB si la tabla base tiene tres particiones. Cree estos objetosutilizando las sentencias CREATE LOB TABLESPACE y CREATE AUXILIARYTABLE.

3. Cree un índice en la tabla auxiliar.Cada tabla auxiliar debe tener exactamente un índice en el que cada entrada deíndice haga referencia a un LOB. Utilice la sentencia CREATE INDEX para estatarea.

4. Ponga los datos del LOB en DB2.Si la longitud total de una columna LOB y la fila de tabla base es inferior a 32KB, puede utilizar el programa de utilidad LOAD para poner los datos en DB2.De lo contrario, debe utilizar una de las sentencias de SQL que cambian datos.Aunque los datos residan en la tabla auxiliar, la sentencia del programa deutilidad LOAD o la sentencia de SQL que cambia datos especifica la tabla base.La utilización de las sentencias INSERT o MERGE puede ser difícil debido aque la aplicación necesita suficiente almacenamiento para contener el valor totalque va a la columna LOB.

Ejemplo: Suponga que necesita definir un espacio de tablas de LOB y una tablaauxiliar para contener los currículums de los empleados. También necesita definirun índice en la tabla auxiliar. Debe definir el espacio de tablas de LOB en la mismabase de datos que la tabla base asociada. Suponga que EMP_PHOTO_RESUME esuna tabla base. Esta tabla base contiene una columna LOB denominadaEMP_RESUME. Puede utilizar sentencias como ésta para definir el espacio detablas de LOB, el espacio de tablas auxiliar y el índice:CREATE LOB TABLESPACE RESUMETS

IN MYDBLOG NO;

COMMIT;CREATE AUXILIARY TABLE EMP_RESUME_TAB

IN MYDB.RESUMETSSTORES EMP_PHOTO_RESUMECOLUMN EMP_RESUME;

CREATE UNIQUE INDEX XEMP_RESUMEON EMP_RESUME_TAB;

COMMIT;

234 Introducción a DB2 para z/OS

Page 245: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Puede utilizar la cláusula LOG para especificar si deben registrarse los cambiosrealizados en una columna LOB del espacio de tablas. La cláusula LOG NO de lasentencia CREATE LOB TABLESPACE anterior indica que no deben registrarse loscambios realizados en el espacio de tablas RESUMETS.

Creación de bases de datosCuando defina una base de datos de DB2, nombre una colección eventual detablas, índices asociados y los espacios de tablas en los que deben residir.

Cuando decida si va a definir una nueva base de datos para un nuevo conjunto deobjetos o va a utilizar una base de datos existente, considere los hechos siguientes:v Puede iniciar y detener una base de datos completa como una unidad. Puede

visualizar el estado de todos los objetos de la base de datos utilizando un únicomandato que nombre únicamente la base de datos. Por lo tanto, coloque unconjunto de tablas relacionadas en la misma base de datos. (La misma base dedatos contiene todos los índices en dichas tablas.)

v Si desea mejorar la simultaneidad y la utilización de la memoria, mantenga elnúmero de tablas de una única base de datos relativamente pequeño (unmáximo de 20 tablas). Por ejemplo, con menos tablas DB2 realiza unareorganización en un periodo de tiempo más corto.

v La existencia de bases de datos separadas permite ejecutar simultáneamentedefiniciones de datos y también utiliza menos espacio para los bloques decontrol.

Para crear una base de datos, utilice la sentencia CREATE DATABASE. Un nombrepara una base de datos es un identificador no calificado con un máximo de ochocaracteres. Un nombre de base de datos de DB2 no debe ser igual que el nombrede cualquier otra base de datos de DB2.

En modalidad de función nueva, si no especifica la cláusula IN en la sentenciaCREATE TABLE, DB2 crea implícitamente una base de datos. La lista siguientemuestra los nombres para una base de datos implícita:

DSN00001, DSN00002, DSN00003, ..., DSN10000

Ejemplo: El ejemplo siguiente muestra un nombre de base de datos válido:

Nombre deobjeto

Base de datosMYDB

Esta sentencia CREATE DATABASE crea la base de datos MYDB:CREATE DATABASE MYDB

STOGROUP MYSTOGRPBUFFERPOOL BP8K4INDEXBP BP4;

Las cláusulas STOGROUP, BUFFERPOOL e INDEXBP que aparecen en esteejemplo establecen valores por omisión. Puede alterar temporalmente estos valoresen las definiciones del espacio de tablas o del espacio de índice.

No es necesario definir una base de datos para que utilice DB2; para el desarrolloy la prueba, puede utilizar la base de datos por omisión, DSNDB04. Esto significa

Capítulo 7. Implementación del diseño de base de datos 235

|||

|

giralte
Resaltado
giralte
Resaltado
Page 246: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

que puede definir tablas e índices sin definir específicamente una base de datos. Latabla de catálogo SYSIBM.SYSDATABASE describe la base de datos por omisión ytodas las otras bases de datos.

Recomendación: No utilice la base de datos por omisión para trabajo deproducción.

Referencia relacionada

″CREATE DATABASE″ (Consulta de DB2 SQL)

Creación de relaciones con restricciones de referenciaLa integridad de referencia es una condición en la que todas las referencias dedatos de una columna de tabla a datos de otra columna de tabla son válidos.Mediante la utilización de restricciones de referencia puede definir relaciones entreentidades que define en DB2.

Las organizaciones que optan por imponer restricciones de referencia tienen comomínimo una cosa en común. Necesitan asegurar que los valores de una columna deuna tabla son válidos respecto a otros valores de datos de la base de datos.

Ejemplos:

v Una empresa de fabricación desea asegurar que cada componente de una tablaPARTS identifica a un número de producto que equivale a un número deproducto válido en la tabla PRODUCTS.

v Una empresa desea asegurar que cada valor de DEPT en la tabla EMP equivalea un valor de DEPTNO válido en la tabla DEPT.

Si DBMS no da soporte a integridad de referencia, sería necesario escribir ymantener un código de aplicación que valide la relación entre las columnas y esposible que algunos programas no impongan reglas empresariales, aunquedebieran hacerlo.

Esta tarea de programación puede ser muy compleja debido a la necesidad deasegurarse de que tan solo se inserten o actualicen valores válidos en las columnas.Si DBMS da soporte a integridad de referencia, como es el caso de DB2, losprogramadores pueden omitir algunas tareas complejas de programación y puedenser más productivos en sus otras tareas.

Conceptos relacionados

″Utilización de integridad de referencia para coherencia de los datos″ (DB2Administration Guide)

Cómo DB2 impone restricciones de referenciaEsta información describe qué hace DB2 para mantener la integridad de referencia.

Se definen restricciones de referencia entre una clave foránea y su clave padre.Antes de empezar a definir las relaciones de restricciones de referencia, deberíacomprender qué hace DB2 para mantener la integridad de referencia. Deberíacomprender las reglas que sigue DB2 cuando los usuarios intentan modificar lainformación de columnas implicadas en restricciones de referencia.

Para mantener la integridad de referencia, DB2 impone restricciones de referenciaen respuesta a cualquiera de los sucesos siguientes:v Una inserción en una tabla dependiente

236 Introducción a DB2 para z/OS

giralte
Resaltado
Page 247: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Una actualización en una tabla padre o una tabla dependientev Una supresión de una tabla padrev La ejecución del programa de utilidad CHECK DATA o LOAD en una tabla

dependiente con la opción ENFORCE CONSTRAINTS

Al definir restricciones, dispone de las opciones siguientes:

CASCADEDB2 difunde la acción a dependientes de la tabla padre.

NO ACTIONSe produce un error y DB2 no realiza ninguna acción.

RESTRICTSe produce un error y DB2 no realiza ninguna acción.

SET NULLDB2 coloca un valor nulo en cada columna anulable de la clave foráneaque existe en cada dependiente de la tabla padre.

DB2 no impone restricciones de referencia en un orden previamente definido. Sinembargo, el orden en que DB2 impone las restricciones puede afectar al resultadode la operación. Por lo tanto, debería tener en cuenta las restricciones en ladefinición de reglas de supresión y en el uso de determinadas sentencias. Lasrestricciones están relacionadas con las siguientes sentencias de SQL: CREATETABLE, ALTER TABLE, INSERT, UPDATE, MERGE y DELETE.

Puede utilizar la opción NOT ENFORCED de la definición de restricción dereferencia en una sentencia CREATE TABLE o ALTER TABLE para definir unarestricción de referencia de información. Debería utilizar este tipo de restricción dereferencia únicamente cuando un proceso de aplicaciones comprueba los datos enuna relación de integridad de referencia.

Referencia relacionada

″Restricciones de referencia″ (Consulta de DB2 SQL)

Reglas de inserciónLas reglas de inserción para integridad de referencia se aplican a tablas padre ydependientes.

Las siguientes reglas de inserción para integridad de referencia se aplican a tablaspadre y dependientes:v Para tablas padre: Puede insertar una fila en cualquier momento en una tabla

padre sin realizar ninguna acción en la tabla dependiente. Por ejemplo, puedecrear un nuevo departamento en la tabla DEPT sin realizar ningún cambio en latabla EMP. Si inserta filas en una tabla padre que está implicada en unarestricción de referencia, se aplican las siguientes restricciones:– Debe existir un índice exclusivo en la clave padre.– No se pueden entrar valores duplicados para la clave padre.– No se puede insertar ningún valor nulo para cualquier columna de la clave

padre.v Para tablas dependientes: No se puede insertar una fila en una tabla

dependiente a menos que una fila de la tabla padre tenga un valor de clavepadre que sea igual al valor de clave foránea que se desea insertar. Puedeinsertar una clave foránea con un valor nulo en una tabla dependiente (si larestricción de referencia lo permite), pero no existe ninguna conexión lógica sirealiza esta acción. Si inserta filas en una tabla dependiente, se aplican lassiguientes restricciones:

Capítulo 7. Implementación del diseño de base de datos 237

||||||

Page 248: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

– Cada valor no nulo que se inserta en una columna de clave foránea debe serigual a algún valor de la clave padre.

– Si algún campo de la clave foránea es nulo, la clave foránea completa es nula.– Si se descarta el índice que impone la clave padre de la tabla padre, no se

pueden insertar filas ni en la tabla padre ni en la tabla dependiente.

Ejemplo: La empresa no desea tener una fila en la tabla PARTS a menos que elvalor de la columna PROD# de dicha fila coincida con un PROD# válido en latabla PRODUCTS. La tabla PRODUCTS tiene una clave primaria en PROD#. Latabla PARTS tiene una clave foránea en PROD#. La definición de restricciónespecifica una restricción RESTRICT. Cada fila insertada de la tabla PARTS debetener un PROD# que coincida con un PROD# en la tabla PRODUCTS.

Referencia relacionada

″Restricciones de referencia″ (Consulta de DB2 SQL)

Reglas de actualizaciónLas reglas de actualización para integridad de referencia se aplican a tablas padre ydependientes.

Las siguientes reglas de actualización para integridad de referencia se aplican atablas padre y dependientes:v Para tablas padre: No se puede cambiar una columna de clave padre de una fila

que tenga una fila dependiente. Si se cambia, la fila dependiente deja de cumplirla restricción de referencia y, por lo tanto, DB2 prohíbe la operación.

v Para tablas dependientes: No se puede cambiar el valor de una columna declave foránea de una tabla dependiente a menos que el valor nuevo exista en laclave padre de la tabla padre.

Ejemplo: Cuando un empleado se transfiere de un departamento a otro, debecambiarse el número de departamento para este empleado. El valor nuevo debe serel número de un departamento existente o debe ser nulo. No debería poderseasignar un empleado a un departamento que no existe. Sin embargo, en el caso deuna reorganización de una empresa, es posible que de forma temporal losempleados no informen a un departamento válido. En este caso, un valor nulo esuna posibilidad.

Si falla una actualización de una tabla con una restricción de referencia, DB2retrotrae todos los cambios realizados durante la actualización.

Referencia relacionada

″Restricciones de referencia″ (Consulta de DB2 SQL)

Reglas de supresiónLas reglas de supresión, que se aplican a tablas padre y dependientes, constituyenuna parte importante de la integridad de referencia de DB2.

Las siguientes reglas de supresión para integridad de referencia se aplican a tablaspadre y dependientes:

Para tablas padreEn cualquier relación concreta, DB2 impone reglas de supresión basadas enlas opciones que se especifican al definir la restricción de referencia.

Para tablas dependientesEn cualquier momento, puede suprimir filas de una tabla dependiente sinrealizar ninguna acción en la tabla padre.

238 Introducción a DB2 para z/OS

Page 249: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para suprimir una fila de una tabla que tiene una clave padre y tablasdependientes, debe cumplir las reglas de supresión para dicha tabla. Para que laacción sea satisfactoria, DELETE debe cumplir todas las reglas de supresión detodas las relaciones afectadas. DELETE falla si viola alguna restricción dereferencia.

Ejemplo 1: Considere la tabla padre de la relación departamento-empleado.Suponga que suprime la fila para el departamento C01 de la tabla DEPT. Estadecisión debería afectar a la información de la tabla EMP sobre Sally Kwan,Heather Nicholls y Kim Natz, que trabajan en el departamento C01.

Ejemplo 2: Considere la tabla dependiente en la relación departamento-empleado.Suponga que un empleado se jubila y que un programa suprime la fila para dichoempleado de la tabla EMP. La tabla DEPT no se ve afectada.

Referencia relacionada

″Restricciones de referencia″ (Consulta de DB2 SQL)

Construcción de una estructura de referenciaCuando crea una estructura de referencia, debe crear un conjunto de tablas eíndices en el orden correcto.

Durante un diseño lógico, se expresan relaciones de uno con uno y relaciones deuno con varios como si las relaciones fueran bidireccionales. Por ejemplo:v Un empleado tiene un currículum y un currículum pertenece a un empleado

(relación de uno con uno).v Un departamento tiene varios empleados y cada empleado informa a un

departamento (relación de uno con varios).

Durante un diseño físico, se expone de nuevo la relación de modo que seaunidireccional; una entidad pasa a ser el padre implicado del otro. En este caso, elempleado es el padre del currículum y el departamento es el padre de losempleados asignados.

Durante un diseño lógico, se expresan relaciones de varios con varios como si lasrelaciones fueran bidireccionales y de varios valores. Durante un diseño físico, losdiseñadores de bases de datos determinan relaciones de varios con variosutilizando una tabla asociativa. La relación entre empleados y proyectos es unbuen ejemplo de cómo se crea la integridad de referencia. Se trata de una relaciónde varios con varios ya que los empleados trabajan en más de un proyecto y unproyecto puede tener asignado más de un empleado.

Ejemplo: Para determinar la relación de varios con varios entre empleados (en latabla EMP) y proyectos (en la tabla PROJ), los diseñadores crean una nueva tablaasociativa, EMP_PROJ, durante el diseño físico. EMP y PROJ son tablas padre de latabla hijo, EMP_PROJ.

Cuando establece restricciones de referencia, debe crear tablas padre que tengancomo mínimo una clave exclusiva y los índices correspondientes antes de definirlas claves foráneas correspondientes en las tablas dependientes.

Conceptos relacionados

“Entidades para diferentes tipos de relaciones” en la página 71“Desnormalización para mejorar el rendimiento” en la página 83

Capítulo 7. Implementación del diseño de base de datos 239

|||

Page 250: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Utilización de integridad de referencia para coherencia de los datos″ (DB2Administration Guide)

Tablas de una estructura de referenciaEn una estructura de referencia puede crear espacios de tablas en cualquier orden.La utilización de un modelo para la estructura puede ser útil.

Puede crear espacios de tabla en cualquier orden. Sin embargo, primero debe crearlos espacios de tablas para poder realizar los pasos siguientes. (Este procedimientoutiliza las tablas DEPT y EMP.)1. Cree la tabla DEPT y defina su clave primaria en la columna DEPTNO. La

cláusula PRIMARY KEY de la sentencia CREATE TABLE define la claveprimaria.

Ejemplo:CREATE TABLE DEPT

...PRIMARY KEY (DEPTNO);

2. Cree la tabla EMP y defina su clave primaria como EMPNO y su clave foráneacomo DEPT. La cláusula FOREIGN KEY de la sentencia CREATE TABLE definela clave foránea.

Ejemplo:CREATE TABLE EMP

...PRIMARY KEY (EMPNO)FOREIGN KEY (DEPT)

REFERENCES DEPT (DEPTNO)ON DELETE SET NULL;

3. Modifique la tabla DEPT para añadir la definición de su clave foránea,MGRNO.

Ejemplo:ALTER TABLE DEPT

FOREIGN KEY (MGRNO)REFERENCES EMP (EMPNO)ON DELETE RESTRICT;

Conceptos relacionados

″Utilización de integridad de referencia para coherencia de los datos″ (DB2Administration Guide)

Creación de tablas de excepciónPara poder cargar tablas implicadas en una restricción de referencia o en unarestricción de comprobación, debe crear tablas de excepción. Una tabla de excepcióncontiene las filas detectadas por el programa de utilidad CHECK DATA que violanlas restricciones de referencia o las restricciones de comprobación.

Referencia relacionada

″Creación de tablas de excepción″ (DB2 Utility Guide and Reference)

240 Introducción a DB2 para z/OS

||

|

||||

|

Page 251: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Creación de desencadenantesPuede utilizar desencadenantes para definir e imponer reglas empresariales queimpliquen diferentes estados de los datos. De forma automática, losdesencadenantes ejecutan un conjunto de sentencias de SQL cada vez que seproduce un suceso especificado. Estas sentencias validan y editan cambiosrealizados en la base de datos, leen y modifican la base de datos e invocanfunciones que realizan varias operaciones.

Los desencadenantes son opcionales. Para definir desencadenantes utilice lasentencia CREATE TRIGGER.

Ejemplo: Suponga que la mayoría de los aumentos de salario de la organizaciónson inferiores o iguales al 10 por ciento. Suponga también que necesita recibir unanotificación de cualquier intento de un aumento de un valor de la columna desalario superior a esta cantidad. Para imponer este requisito, DB2 compara el valorde un salario antes de un aumento de salario con el valor que existiría después deun aumento de salario. En este caso puede utilizar un desencadenante. Cada vezque un programa actualiza la columna de salario, DB2 activa el desencadenante.En la acción desencadenada, puede especificar que DB2 debe realizar las accionessiguientes:v Actualizar el valor de la columna de salario con un valor válido, en lugar de

impedir completamente la actualización.v Notificar a un administrador el intento de realizar una actualización no válida.

Como resultado de utilizar un desencadenante, el administrador notificado puededecidir si desea alterar temporalmente el aumento de salario original y permitir unaumento de salario más grande que el normal.

Recomendación: Para reglas que implican únicamente una condición de los datos,considere la utilización de restricciones de referencia y restricciones decomprobación en lugar de desencadenantes.

Los desencadenantes también mueven la lógica de aplicación necesaria paraimponer reglas empresariales a la base de datos, lo cual puede tener comoresultado un desarrollo de aplicaciones más rápido y un mantenimiento más fácil.En el ejemplo anterior, que limita los aumentos de salario, la lógica está en la basede datos, en lugar de estar en la aplicación. DB2 comprueba la validez de loscambios que realiza cualquier aplicación en la columna de salario. Además, sialguna vez la lógica cambia (por ejemplo, para permitir aumentos del 12 porciento), no es necesario cambiar los programas de aplicaciones.

Conceptos relacionados

“Desencadenantes” en la página 46

Creación de funciones definidas por el usuarioLas funciones definidas por el usuario pueden ser funciones fuente, externas oSQL. Fuente significa que se basan en funciones existentes. Externas significa quelas desarrollan usuarios. SQL significa que la función está definida para la base dedatos mediante el uso de únicamente sentencias de SQL.

Las funciones definidas por el usuario externas pueden devolver un valor único ouna tabla de valores.v Las funciones externas que devuelven un valor único se denominan funciones

escalares definidas por el usuario.

Capítulo 7. Implementación del diseño de base de datos 241

Page 252: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Las funciones externas que devuelven una tabla se denominan funciones de tabladefinidas por el usuario.

Las funciones definidas por el usuario como, por ejemplo, funciones u operacionesincorporadas, permiten la manipulación de tipos diferenciados.

Los dos ejemplos siguientes muestran cómo definir y utilizar una función definidapor el usuario y un tipo diferenciado.

Ejemplo 1: Suponga que define una tabla denominada EUROEMP. Una columnade esta tabla, EUROSAL, tiene un tipo diferenciado de EURO, basado enDECIMAL(9,2). No puede utilizar la función AVG incorporada para buscar el valormedio de EUROSAL puesto que AVG opera únicamente en tipos de datosincorporados. Sin embargo, puede definir una función AVG que tiene como fuentela función AVG incorporada y acepta argumentos de tipo EURO:CREATE FUNCTION AVG(EURO)

RETURNS EUROSOURCE SYSIBM.AVG(DECIMAL);

Ejemplo 2: A continuación, puede utilizar esta función para buscar el valor mediode la columna EUROSAL:SELECT AVG(EUROSAL) FROM EUROEMP;

Los dos ejemplos siguientes muestran cómo definir y utilizar una función definidapor el usuario externa.

Ejemplo 3: Suponga que define y escribe una función, denominada REVERSE,para invertir los caracteres de una serie. La definición es similar a la siguiente:CREATE FUNCTION REVERSE(VARCHAR(100))

RETURNS VARCHAR(100)EXTERNAL NAME 'REVERSE'PARAMETER STYLE SQLLANGUAGE C;

Ejemplo 4: A continuación, puede utilizar la función REVERSE en una sentenciade SQL siempre que utilice una función incorporada que acepte un argumento detipo carácter, como se muestra en el ejemplo siguiente:SELECT REVERSE(:CHARSTR)

FROM SYSDUMMY1;

Aunque no puede escribir funciones de totales definidas por el usuario, puededefinir funciones de totales definidas por el usuario fuente basadas en funciones detotales incorporadas. Esta posibilidad es útil en los casos en que desea hacerreferencia a una función definida por el usuario existente utilizando otro nombre odesea pasar un tipo diferenciado.

Los dos ejemplos siguientes muestran cómo definir y utilizar una función de tabladefinida por el usuario.

Ejemplo 5: Puede definir y escribir una función de tabla definida por el usuarioque los usuarios pueden invocar en la cláusula FROM de una sentencia SELECT.Por ejemplo, suponga que define y escribe una función denominada BOOKS. Estafunción devuelve una tabla de información sobre libros relacionados con un temaespecificado. La definición es similar a la siguiente:CREATE FUNCTION BOOKS (VARCHAR(40))

RETURNS TABLE (TITLE_NAME VARCHAR(25),AUTHOR_NAME VARCHAR(25),

242 Introducción a DB2 para z/OS

|||||

|||

Page 253: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

PUBLISHER_NAME VARCHAR(25),ISBNNO VARCHAR(20),PRICE_AMT DECIMAL(5,2),CHAP1_TXT CLOB(50K))

LANGUAGE COBOLPARAMETER STYLE SQLEXTERNAL NAME BOOKS;

Ejemplo 6: A continuación, puede incluir la función BOOKS en la cláusula FROMde una sentencia SELECT para recuperar la información sobre libros, tal como semuestra en el ejemplo siguiente:SELECT B.TITLE_NAME, B.AUTHOR_NAME, B.PUBLISHER_NAME, B.ISBNNO

FROM TABLE(BOOKS('Computers')) AS BWHERE B.TITLE_NAME LIKE '%COBOL%';

Conceptos relacionados

“Funciones definidas por el usuario” en la página 96

Capítulo 7. Implementación del diseño de base de datos 243

|||||||

Page 254: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

244 Introducción a DB2 para z/OS

Page 255: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 8. Gestión del rendimiento de DB2

La gestión del rendimiento de un subsistema DB2 implica la comprensión de unaamplia gama de componentes del sistema. Es necesario que comprenda elrendimiento de dichos componentes, cómo supervisar los componentes y cómoidentificar las áreas problemáticas.

Los recursos del sistema, el diseño de base de datos y el rendimiento de consultasson algunas de las cuestiones de rendimiento que deben considerarse y cada unode estos factores influye en los demás. Por ejemplo, una consulta bien diseñada nose ejecuta eficazmente si los recursos del sistema no están disponibles cuandonecesita ejecutarlos.

Para gestionar el rendimiento de DB2, debe establecer los objetivos de rendimientoy determinar si los objetos, recursos y procesos cumplen las expectativas derendimiento. Las sugerencias y directrices le ayudan a ajustar el subsistema DB2para mejorar el rendimiento. Existen varias herramientas disponibles para hacerque el análisis del rendimiento le resulte más fácil.

Pasos iniciales para la gestión del rendimientoEl primer paso para la gestión del rendimiento de DB2 es la comprensión de lascuestiones sobre rendimiento. Necesita saber cómo reconocer diferentes tipos deproblemas de rendimiento y saber de qué herramientas dispone para resolver losproblemas.

Objetivos de rendimientoLa comprensión de los objetivos de rendimiento establecidos puede ayudarle arealizar las selecciones adecuadas cuando trabaje con DB2. Aunque los objetivos derendimiento varían para cada empresa, el modo en que su sitio define un buenrendimiento de DB2 depende de las necesidades y prioridades del proceso dedatos.

En todos los casos, los objetivos de rendimiento deben ser realistas, comprensiblesy medibles. Los objetivos típicos incluyen valores para:v Tiempo de respuesta aceptable (duración dentro del cual un porcentaje de todas

las aplicaciones ha finalizado)v Rendimiento medio (número total de transacciones o consultas completadas

dentro de un tiempo determinado)v Disponibilidad del sistema, incluido el tiempo medio de anomalías y las

duraciones de tiempos de inactividad

Objetivos como estos definen la carga de trabajo para el sistema y determinan losrequisitos para los recursos, entre los que se incluye la velocidad del procesador, lacantidad de almacenamiento, software adicional, etc.

Ejemplo: Un objetivo podría ser que el 90% de todos los tiempos de respuesta enuna red local durante un turno principal esté por debajo de dos segundos. Otroobjetivo podría ser que el tiempo de respuesta medio no exceda de seis segundos,incluso durante horas punta. (En redes remotas, los tiempos de respuesta sonconsiderablemente superiores.)

© Copyright IBM Corp. 2001, 2008 245

|||||

Page 256: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Sin embargo, con frecuencia los recursos disponibles limitan la carga de trabajomáxima aceptable, lo cual hace que deban revisarse los objetivos.

Información relacionada

″Establecimiento de objetivos de rendimiento razonables″ (DB2 PerformanceMonitoring and Tuning Guide)

Diseño de las aplicaciones para el rendimientoEl diseño de la base de datos y las aplicaciones para que sean lo más eficacesposible es un primer paso importante para obtener un rendimiento correcto delsistema y las aplicaciones. Cuando codifique las aplicaciones, tenga en cuenta losobjetivos de rendimiento en el diseño de las aplicaciones.

Algunos de los factores que afectan al rendimiento de las aplicaciones incluyencómo utiliza el programa las variables de lenguaje principal y qué opciones devinculación se eligen. A su vez, estos factores afectan al tiempo que tarda DB2 endeterminar una vía de acceso para las sentencias de SQL de la aplicación.

Más adelante en esta información puede leer sobre bloqueos y simultaneidad,incluyendo recomendaciones para un diseño de base de datos y aplicaciones quemejore el rendimiento.

Después de ejecutar una aplicación, debe decidir si cumple sus objetivos derendimiento. Es posible que deba probar y depurar la aplicación para mejorar surendimiento.

Información relacionada

″Diseño del sistema para el rendimiento″ (DB2 Performance Monitoring andTuning Guide)

Origen de problemas de rendimientoSi, después de ejecutar una aplicación, determina que no cumple los objetivos derendimiento, debe determinar el origen del problema. Esta información describecómo identificar problemas de rendimiento y las herramientas que puedenayudarle.

Para identificar un problema de rendimiento, empiece por observar el sistemaglobal antes de decidir que existe un problema en DB2. En general, observedetenidamente para descubrir por qué los procesos de aplicaciones progresan conlentitud o por qué un recurso determinado se está utilizando excesivamente.

En DB2, el problema de rendimiento suele ser un tiempo de respuesta lento o unainexplicable utilización elevada de recursos. Compruebe factores como, porejemplo, la utilización total de procesador, la actividad de disco y la transferenciade páginas.

En primer lugar, obtenga una descripción de la actividad de las tareas, de las clases1, 2 y 3 del rastreo de contabilidad. DB2 proporciona un recurso de rastreo que lepermite supervisar y recopilar información detallada sobre DB2, que incluyeinformación de rendimiento y estadística. A continuación, céntrese en actividadesespecíficas, tales como procesos de aplicaciones específicos o un intervalo detiempo específico. Puede observar problemas como los siguientes:v Tiempo de respuesta lento. Puede recopilar información detallada sobre una

única tarea lenta, un problema que puede ocurrir por varios motivos. Por

246 Introducción a DB2 para z/OS

pablo
Resaltado
giralte
Nota
origen problemas rendimiento
Page 257: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

ejemplo, los usuarios pueden intentar realizar demasiado trabajo condeterminadas aplicaciones y el sistema simplemente no puede realizar todo eltrabajo que los usuarios desean.

v Restricciones de almacenamiento reales. Las aplicaciones progresan máslentamente de lo esperado debido a interrupciones por transferencia de páginas.Las restricciones producen retrasos entre peticiones sucesivas que se registran enel rastreo de DB2 trace.

Si identifica un problema de rendimiento en DB2, puede ver informes específicos.Los informes le proporcionan información sobre lo siguiente:v Si las aplicaciones pueden leer de agrupaciones de almacenamientos intermedios

en lugar de leer desde discov Si las aplicaciones deben esperar para escribir en disco o para un bloqueo y

cuánto tiempov Si las aplicaciones utilizan una mayor cantidad de recursos que lo habitual

DB2 también proporciona varias herramientas que le ayudan a analizar elrendimiento.

Conceptos relacionados

“Rol de las agrupaciones de almacenamientos intermedios en la puesta enantememoria de datos” en la página 248“Modos de mejorar el rendimiento para varios usuarios” en la página 255“Herramientas para análisis del rendimiento”Información relacionada

″Planificación para la supervisión del rendimiento″ (DB2 PerformanceMonitoring and Tuning Guide)

Herramientas para análisis del rendimiento

DB2 proporciona varias herramientas de estación de trabajo para simplificar elanálisis del rendimiento.

Las herramientas de estación de trabajo para el análisis de rendimiento incluyen:v IBM Optimization Service Center for DB2 for z/OSv IBM DB2 Optimization Expert for z/OSv Tivoli OMEGAMON XE for DB2 Performance Expert on z/OSv DB2 Buffer Pool Analyzerv DB2 SQL Performance Analyzerv DB2 Query Monitor

DB2 también proporciona una herramienta de supervisión, EXPLAIN.

OMEGAMON DB2 Performance Expert

IBM Tivoli OMEGAMON XE for DB2 Performance Expert on z/OS integrasupervisión de rendimiento, informe, análisis de agrupación de almacenamientosintermedios y una función de almacén de rendimiento en una herramienta.Proporciona una visión general de un único sistema que supervisa todos lossubsistemas e instancias entre numerosas plataformas distintas de un modocoherente.

Capítulo 8. Gestión del rendimiento de DB2 247

||

|||

|

||||||

Page 258: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

OMEGAMON DB2 Performance Expert incluye la función de OMEGAMON DB2Performance Monitor (DB2 PM). Entre las características de la herramienta seincluyen:v Información combinada de EXPLAIN y del catálogo de DB2.v Visualización de vías de acceso, índices, tablas, espacios de tablas, planes,

paquetes, DBRM, definiciones de variable de lenguaje principal, orden,secuencias de acceso a tabla, secuencias de unión y tipos de bloqueos.

v Una vista ″instantánea″ de las actividades de DB2 for z/OS que proporciona elsupervisor en línea. El supervisor permite el proceso de excepciones mientras elsistema está operativo.

DB2 Performance Expert tiene ofertas que dan soporte a DB2 for z/OS, System z yentornos multiplataforma (Microsoft Windows, HP-UX, Sun’s Solaris, IBM AIX yLinux).

Conceptos relacionados

“Herramientas que ayudan a mejorar el rendimiento de las consultas” en lapágina 263“Rol de las agrupaciones de almacenamientos intermedios en la puesta enantememoria de datos”Información relacionada

″Utilización de herramientas para supervisar el rendimiento″ (DB2 PerformanceMonitoring and Tuning Guide)

Modos de mover datos eficazmente en el sistemaA medida que los datos progresa a través de un subsistema DB2, se mueven deldisco a la memoria y al usuario final o a aplicaciones. Es necesario ajustar losrecursos y objetos del sistema tales como agrupaciones de almacenamientosintermedios, espacios de tablas e índices que contienen datos para mantener laeficacia del flujo de datos.

Rol de las agrupaciones de almacenamientos intermedios enla puesta en antememoria de datos

Las agrupaciones de almacenamientos intermedios son áreas de almacenamiento virtualque almacenan temporalmente páginas de datos que se han captado de espacios detablas o índices. Las agrupaciones de almacenamientos intermedios son unelemento clave en el rendimiento de DB2.

DB2 puede recuperar una página desde una agrupación de almacenamientosintermedios mucho más rápido que desde disco. Cuando los datos ya están en unalmacenamiento intermedio, un programa de aplicación evita el retraso de laespera a que DB2 recupere los datos desde disco.

DB2 le permite utilizar un máximo de 50 agrupaciones de almacenamientosintermedios que contengan páginas de 4 KB y un máximo de 10 agrupaciones dealmacenamientos intermedios que contengan páginas de 8 KB, 16 KB y 32 KB.

La figura siguiente muestra agrupaciones de almacenamientos intermedios conpáginas de 4 KB y 8 KB. El número de páginas que una agrupación dealmacenamientos intermedios contiene depende del tamaño de la agrupación dealmacenamientos intermedios.

248 Introducción a DB2 para z/OS

|||

|

|||

|||

|||

pablo
Resaltado
pablo
Resaltado
giralte
Nota
BUFFER SPOOL
Page 259: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

En cualquier momento, las páginas de una agrupación de almacenamientosintermedios virtual puede estar en uso, actualizadas o disponibles.v Las páginas en uso se están leyendo o actualizando actualmente. Los datos que

contienen están disponibles para que los utilicen otras aplicaciones.v Las páginas actualizadas contienen datos que se han cambiado pero todavía no

se han escrito en disco.v Las páginas disponibles están listas para utilizarse. Una página de entrada de

datos nuevos puede sobreescribir las páginas disponibles.

Para evitar E/S de disco, puede utilizar páginas actualizadas y disponibles quecontengan datos.

Cuando los datos del almacenamiento intermedio cambian, finalmente estos datosdeben volverse a escribir en disco. Debido a que DB2 no necesita escribir los datosen disco inmediatamente, los datos pueden permanecer en la agrupación dealmacenamientos intermedios para otras utilizaciones. Los datos permanecen en laagrupación de almacenamientos intermedios hasta que DB2 decide utilizar elespacio para otra página. Hasta este momento, las aplicaciones pueden leer ocambiar los datos sin ninguna operación de E/S de disco.

El factor clave que afecta al rendimiento de las agrupaciones de almacenamientosintermedios es su tamaño. El método que DB2 utiliza para acceder a lasagrupaciones de almacenamientos intermedios también afecta al rendimiento.

Tamaño de agrupación de almacenamientos intermedios

El tamaño de las agrupaciones de almacenamientos intermedios es decisivo paralas características de rendimiento de una aplicación o un grupo de aplicaciones queaccede a los datos de dichas agrupaciones de almacenamientos intermedios.

El ajuste de las agrupaciones de almacenamientos intermedios pueden mejorar eltiempo de respuesta y el rendimiento de las aplicaciones y proporcionar unautilización óptima de los recursos. Por ejemplo, las aplicaciones que realizanproceso en línea es más probable que necesiten agrupaciones de almacenamientosintermedios grandes debido a que a menudo necesitan volver a acceder a los

Figura 44. Agrupaciones de almacenamientos intermedios con páginas de 4 KB y 8 KB

Capítulo 8. Gestión del rendimiento de DB2 249

pablo
Resaltado
giralte
Resaltado
Page 260: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

datos. En este caso, el almacenamiento de grandes cantidades de datos en unaagrupación de almacenamientos intermedios permite a las aplicaciones acceder alos datos más eficazmente.

Al hacer que las agrupaciones de almacenamiento sean lo más grandes posiblepuede conseguir las ventajas siguientes:v Menos operaciones de E/S como resultado, lo que significa un acceso más

rápido a los datos.v La contención de E/S se reduce para las tablas e índices que se utilizan con más

frecuencia.v La velocidad de clasificación aumenta debido a la reducción de la contención de

E/S para archivos de trabajo.

Puede utilizar el mandato ALTER BUFFERPOOL para cambiar el tamaño y otrascaracterísticas de una agrupación de almacenamientos intermedios en cualquiermomento mientras DB2 está en ejecución. Utilice los mandatos DISPLAYBUFFERPOOL y ALTER BUFFERPOOL para reunir información de agrupación dealmacenamientos intermedios y cambiar los tamaños de agrupación dealmacenamientos intermedios.

DB2 Buffer Pool Analyzer for z/OS ayuda a los administradores de bases de datosa gestionar las agrupaciones de almacenamientos intermedios más eficazmente alproporcionar información sobre el comportamiento actual de la agrupación dealmacenamientos intermedios y al utilizar simulación para anticipar elcomportamiento futuro. Utilizando esta herramienta puede aprovechar las ventajassiguientes:v Recopilación de datos sobre la actividad de la agrupación de almacenamientos

intermedios virtualv Informe completo de la actividad de la agrupación de almacenamientos

intermediosv Utilización de la agrupación de almacenamientos intermedios simuladav Informes y resultados de simulaciónv Análisis experto disponible mediante un asistente de fácil utilización

Las posibilidades de DB2 Buffer Pool Analyzer se incluyen en OMEGAMON DB2Performance Expert.

Acceso a páginas eficaz

DB2 determina cuándo debe utilizarse un método secuencial denominadoprecaptación secuencial para leer páginas de datos con más rapidez. Con el métodode precaptación secuencial, DB2 determina por adelantado que se va a utilizar unconjunto de páginas de datos. A continuación, DB2 lee el conjunto de páginas enun almacenamiento intermedio con una única operación de E/S. El método deprecaptación se utiliza siempre para exploraciones de espacio de tablas y algunasveces se utiliza para exploraciones de índice. La precaptación se realizasimultáneamente con otras operaciones de E/S de aplicaciones.

Además de una precaptación secuencial predeterminada, DB2 también da soporte auna precaptación dinámica. Una precaptación dinámica es un método más eficaz yflexible que se basa en detección secuencial.

Conceptos relacionados

“Agrupaciones de almacenamientos intermedios” en la página 42“Herramientas para análisis del rendimiento” en la página 247

250 Introducción a DB2 para z/OS

pablo
Resaltado
giralte
Resaltado
Page 261: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Efecto de la compresión de datos en el rendimientoEn muchos casos, la compresión de datos en un espacio de tablas reduceconsiderablemente la cantidad de espacio de disco necesario para almacenar datosy también puede ayudar a mejorar el rendimiento de la agrupación dealmacenamientos intermedios. Por ejemplo, puede almacenar más datos en unaagrupación de almacenamientos intermedios y DB2 puede explorar más fácilmentecantidades elevadas de datos.

Con datos comprimidos, las mejoras en el rendimiento dependen de la carga detrabajo de SQL y la cantidad de compresión. Puede ver algunas de las ventajassiguientes:v Proporción más elevada de coincidencias de agrupación de almacenamientos

intermedios. La proporción de coincidencias determina la frecuencia con que seaccede a una página sin necesidad de una operación de E/S.

v Menos operaciones en las que DB2 accede a una página de datos.

La proporción de compresión que se consigue depende de las características de losdatos. La compresión puede funcionar muy bien con espacios de tablas grandes.En espacios de tablas pequeños, el proceso de compresión de datos puede anular elahorro de espacio que proporciona la compresión.

Considere estos factores cuando decida si va a comprimir datos o no:v DB2 comprime datos de una fila cada vez. Si DB2 determina que la compresión

de la fila no produce ningún ahorro, la fila no se comprime. Cuanto más seacerca la longitud de fila media al tamaño de página real, menos eficaz es lacompresión.

v La compresión de datos cuesta tiempo de proceso. Aunque la descompresión dedatos cuesta menos que la compresión de datos, el coste global depende de lospatrones de los datos.

Si la proporción de compresión es inferior al 10%, la compresión no resultaprovechosa y, por lo tanto, no es recomendable. Puede utilizar el programa deutilidad DSN1COMP para determinar la eficacia probable de la compresión de losdatos.

Utilice la cláusula COMPRESS de las sentencias CREATE TABLESPACE y ALTERTABLESPACE para comprimir datos en un espacio de tablas, datos en unapartición de un espacio de tablas particionado o datos en índices. No puedecomprimir dato en espacios de tablas LOB o en espacios de tablas XML.

Información relacionada

″Cómo ahorrar espacio mediante la compresión de datos″ (DB2 AdministrationGuide)″Determinación de la eficacia de la compresión″ (DB2 Performance Monitoringand Tuning Guide)

Cómo puede afectar al rendimiento la organización de losdatos

Para conseguir un rendimiento óptimo para los espacios de tablas e índicesnecesita mantener los datos organizados de forma eficaz. La utilización del espacioy la organización de los datos en un espacio de tablas y los índices asociados aveces afecta al rendimiento.

Conceptos relacionados

Capítulo 8. Gestión del rendimiento de DB2 251

||||

||||

pablo
Resaltado
pablo
Resaltado
giralte
Resaltado
Page 262: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Cuándo deben reorganizarse los índices y espacios de tablas″ (DB2Performance Monitoring and Tuning Guide)

Utilización de espacio libre en almacenamiento de datos eíndices

Un factor importante que influye en hasta qué punto los espacios de tablas eíndices se ejecutan adecuadamente es la cantidad de espacio libre. Espacio libre hacereferencia a la cantidad de espacio que DB2 deja en un espacio de tablas o índicecuando se cargan o reorganizan datos.

La liberación de páginas o de fragmentos de páginas puede mejorar elrendimiento, en especial para aplicaciones que realizan inserciones de granvolumen o que actualizan columnas de longitud variable. Cuando especifica unacantidad suficiente de espacio libre, está negociando la cantidad de espacio dedisco utilizado para el rendimiento de determinadas sentencias de SQL. Porejemplo, la inserción de filas nuevas en espacio libre es más rápida que la divisiónde páginas de índices.

Utilice las cláusulas FREEPAGE y PCTFREE de las sentencias CREATE, ALTERTABLESPACE e INDEX para establecer valores de espacio libre.

Conceptos relacionados

″Cuándo debe reservarse espacio libre″ (DB2 Performance Monitoring andTuning Guide)

Directrices para la reorganización de datosEsta información proporciona directrices para determinar cuándo deberíaconsiderar la reorganización de datos.

Únicamente debería ejecutar el programa de utilidad REORG para determinar quédatos es necesario reorganizar. Si el rendimiento de las aplicaciones no se degrada,no debería reorganizar datos. Incluso cuando algunas estadísticas indican queexisten datos que se están desorganizando, no siempre es necesario un trabajo delprograma de utilidad REORG, a menos que la desorganización exceda un umbralespecificado.

En las situaciones siguientes, es aconsejable la reorganización de datos:

Datos con el estado pendiente de REORG

Cuando existen espacios de tablas o particiones con el estado de pendiente deREORG (REORP), no pueden seleccionar, insertar, actualizar o suprimir datos.Debería reorganizar los espacios de tablas o particiones cuando el estado dependiente de REORG impone esta restricción.

Puede utilizar el mandato DISPLAY DATABASE RESTRICT para identificar losespacios de tablas y particiones que es necesario reorganizar.

Datos con el estado de pendiente de REORG aconsejable

Después de cambiar definiciones de tabla o índice, debería considerar lareorganización de datos para mejorar el rendimiento. Después de cambiar tipos dedatos o longitudes de columna utilizando sentencias ALTER TABLE, DB2 sitúa elespacio de tablas que contiene los datos modificados en estado de pendiente deREORG aconsejable (AREO*). El espacio de tabla está en estado de AREO* debido

252 Introducción a DB2 para z/OS

||||

pablo
Resaltado
pablo
Resaltado
pablo
Resaltado
Page 263: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

a que los datos existentes no se convierten inmediatamente a su nueva definición.La reorganización del espacio de tablas evita una posible degradación delrendimiento.

Recomendación: Cuando los datos están en estado de pendiente de REORG oAREO*, utilice el programa de utilidad REORG con la opción SCOPE PENDINGpara reorganizar automáticamente particiones. Con esta opción, no es necesarioidentificar primero qué particiones deben reorganizarse ni personalizar la sentenciade control REORG.

Datos desviados

Cuando se utilizan espacios de tablas particionados, a veces puede encontrarse condatos no equilibrados o desviados. Cuando existen datos desviados, el rendimientose puede ver afectado negativamente debido a la contención para E/S y otrosrecursos. También puede producirse una situación en la que algunas particionesestán alcanzando su tamaño máximo y otras particiones tienen espacio sobrante.

Puede corregir los datos desviados de dos formas:v La versión actual proporciona un método más eficaz para reequilibrar

particiones: Utilice la palabra clave REBALANCE del programa de utilidadREORG para reorganizar las particiones seleccionadas sin afectar ladisponibilidad de los datos.

v El método más manual: Utilice las sentencias ALTER TABLE VALUES o ALTERINDEX VALUES, seguidas de un trabajo de programa de utilidad REORG paradesplazar datos entre las particiones afectadas. Al redefinir los límites departiciones de esta forma, las particiones de ambos lados del límite se sitúan enestado de pendiente de REORG, con lo cual los datos dejan de estar disponibleshasta que se ha reorganizado el espacio de tablas particionado.

Puede reequilibrar los datos cambiando los valores de clave límite de todas o lamayoría de las particiones. La clave límite es el valor más alto de la clave de índicepara un partición. Se pueden aplicar uno o más cambios a la vez en las particiones,lo cual hace que algunas partes relativamente pequeñas de los datos no esténdisponibles en un momento determinado.

Por ejemplo, suponga que un espacio de tablas contiene datos de ventasparticionados por año. El volumen de ventas puede ser muy alto algunos años ymuy bajo otros años. Cuando sucede esto, puede mejorar el rendimientoreequilibrando las particiones para redistribuir los datos.

Con el método más eficaz, puede reorganizar las particiones 9 y 10 utilizando lapalabra clave REBALANCE del modo siguiente:REORG TABLESPACE SALESDB.MONTHLYVOLUME PART(9:10) REBALANCE;

Ahora las particiones no están en un estado de REORP y los datos permanecendisponibles.

Ejemplo: Suponga que la partición 9 contiene datos para el año 2002 en el cual elvolumen de ventas fue bajo y la partición 10 contiene datos para el año 2003 en elcual volumen de ventas fue alto. Como resultado, decide cambiar el límite entre lasparticiones 9 y 10. Utilizando el método más manual ALTER TABLE, puedecambiar el límite del modo siguiente:ALTER TABLE ALTER PARTITION 9 ENDING AT ("03/31/2003");

Capítulo 8. Gestión del rendimiento de DB2 253

||||

pablo
Resaltado
pablo
Comentario en el texto
importante
pablo
Subrayado
pablo
Subrayado
Page 264: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Las particiones de ambos lados del límite se sitúan en estado de REORP, con locual dejan de estar disponibles hasta que se reorganizan las particiones.

Datos desorganizados o fragmentados

Cuando los datos se desorganizan o fragmentan, debería considerar lareorganización de los espacios de tablas y los espacios de índice.

Debe considerar las situaciones siguientes para evaluar cuándo es necesaria lareorganización de datos:

Espacio sin utilizar

En espacios de tablas simples, las tablas descartadas utilizan espacio queno se reclama hasta que se reorganiza el espacio de tablas. Considereejecutar REORG si el porcentaje de espacio ocupado por filas de tablasdescartadas es superior al 10%. El valor de PERCDROP en la tabla decatálogo SYSIBM.SYSTABLESPART identifica este porcentaje.

Espacios de páginasLos índices pueden tener varios niveles de páginas. Una página de índiceque contiene pares de claves e identificadores y que apunta directamente adatos recibe el nombre de página final.

La supresión de claves de índice puede producir como resultado espaciosde páginas con páginas finales. Los espacios también se pueden producircuando DB2 inserta una clave de índice que no cabe en una páginacompleta. A veces DB2 detecta inserciones secuenciales y divide laspáginas de índice asimétricamente para mejorar la utilización y reducir elproceso de división. Puede mejorar el rendimiento todavía másseleccionando el tamaño de página adecuado para las páginas de índice. Sise producen espacios de páginas, considere ejecutar el programa deutilidad REORG.

Las columnas LEAFNEAR y LEAFFAR de SYSIBM.SYSINDEXPARTalmacenan información sobre la desorganización de páginas finales físicasindicando el número de páginas que no están en una posición óptima.

Actividad de E/SPuede determinar cuándo puede estar aumentando la actividad de E/S enun espacio de tablas. Un número elevado (relativo a valores anteriores queha recibido) para la opción NEARINDREF o FARINDREF indica unaumento de la actividad de E/S. Considere una reorganización cuando lasuma de valores de NEARINDREF y FARINDREF supera el 10%.

Los valores de NEARINDREF y FARINDREF de las tablas de catálogoSYSIBM.SYSTABLEPART y SYSIBM.SYSTABLEPART_HIST identifican elnúmero de filas reasignadas.

Recomendación: Cuando se produce un aumento de la actividad de E/S,utilice un valor distinto de cero para la cláusula PCTFREE de la definiciónde espacio de tablas. La cláusula PCTFREE especifica el porcentaje de cadapágina de un espacio de tablas o índice queda libre cuando se cargan oreorganizan datos. PCTFREE es una opción mejor que FREEPAGE.

Agrupación en clústerPuede determinar si la agrupación en clústeres se está degradando. Laagrupación en clústeres se degrada cuando las filas de una tabla no sealmacenan en el mismo orden que las entradas de su índice de agrupaciónen clúster. Un valor alto para la opción FAROFFPOSF puede indicar una

254 Introducción a DB2 para z/OS

|||||||||

pablo
Resaltado
pablo
Subrayado
pablo
Resaltado
pablo
Resaltado
pablo
Comentario en el texto
importante
giralte
Subrayado
Page 265: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

agrupación en clústeres inadecuada. La reorganización del espacio detablas puede mejorar el rendimiento. Aunque es menos crítico, un valoralto para la opción NEAROFFPOSF también puede indicar que lareorganización puede mejorar el rendimiento. Los valores de FAROFFPOSFy NEAROFFPOSF de las tablas de catálogo SYSIBM.SYSINDEXPART ySYSIBM.SYSINDEXPART_HIST identifican el número de filas que estánlejos y cerca de la posición óptima.

Umbrales de REORGPuede utilizar los programas de utilidad RUNSTATS, REORG, REBUILDINDEX y LOAD para recopilar estadísticas que describan la fragmentaciónde espacios de tablas e índices. Estas estadísticas pueden ayudarle adecidir cuándo debe ejecutar el programa de utilidad REORG para mejorarel rendimiento o reclamar espacio.

Puede configurar el trabajo de REORG de acuerdo con los límites deumbral establecidos para estadísticas pertinentes del catálogo. Las opcionesOFFPOSLIMIT e INDREFLIMIT especifican cuándo debe ejecutarseREORG en espacios de tablas. Cuando un trabajo de REORG se ejecuta conestas opciones, consulta en el catálogo las estadísticas pertinentes. Eltrabajo de REORG no se produce a menos que se exceda uno de losumbrales especificados. También puede especificar la opciónREPORTONLY para producir un informe que le indique si esrecomendable un trabajo de REORG.

Conceptos relacionados

″Cuándo deben reorganizarse los índices y espacios de tablas″ (DB2Performance Monitoring and Tuning Guide)

Modos de mejorar el rendimiento para varios usuariosLos bloqueos, si se utilizan para asegurar la integridad o la exactitud de los datos,a veces pueden ser demasiado restrictivos y pueden causar un rendimiento lento yun nivel bajo de coherencia. La comprensión del funcionamiento de los bloqueospuede ayudarle a seleccionar las opciones adecuadas y a y mejorar el rendimiento.Esta información describe cómo funcionan los bloqueos, por qué son críticos yproporciona recomendaciones para aumentar la simultaneidad.

DB2 utiliza bloqueos en los datos del usuario. El principal motivo para utilizarbloqueos es la integridad o la exactitud de los datos. Sin bloqueos, un usuariopodría recuperar un elemento de datos específico mientras otro usuario puedeestar cambiando esos datos. El resultado sería que el primer usuario recuperaríadatos inexactos. En el entorno DB2 for z/OS, que incluye cantidades elevadas dedatos y un gran número de usuarios y transacciones, la probabilidad de datosinexactos es inaceptable. Por lo tanto, DB2 for z/OS proporciona bloqueos ampliospara asegurar la integridad de los datos.

A pesar de la importancia de la integridad de los datos, a veces los bloqueospueden ser demasiado restrictivos. Si un proceso de aplicaciones bloqueademasiados datos, otros usuarios, programas de utilidad y procesos de aplicacionesdeben esperar para los datos bloqueados. Esta situación puede tener comoresultado una simultaneidad baja. Simultaneidad es la capacidad que tienen más deun proceso de aplicaciones para acceder a los mismos datos esencialmente almismo tiempo. DB2 for z/OS maneja la negociación entre simultaneidad eintegridad de datos para maximizar la simultaneidad sin perjudicar la integridadde los datos.

Información relacionada

Capítulo 8. Gestión del rendimiento de DB2 255

pablo
Resaltado
Page 266: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Ajuste del rendimiento de DB2 para z/OS″ (DB2 Performance Monitoring andTuning Guide)

Rendimiento mejorado mediante la utilización de bloqueos

DB2 utiliza bloqueos sobre varios objetos de datos, entre los que se incluyen filas,páginas, tablas, segmentos de espacio de tablas, particiones de espacio de tablas,espacios de tablas enteros y bases de datos. Cuando una aplicación adquiere unbloqueo, la aplicación “mantiene” o “posee” el bloqueo.

Las siguientes modalidades de boqueo proporcionan distintos grados deprotección:

Bloqueo de compartimiento (bloqueo S)El propietario del bloqueo y cualquier proceso simultáneo puede leer, perono cambiar, el objeto bloqueado. Otros procesos simultáneos puedenadquirir bloqueos de compartimiento o actualización para el objeto de DB2.

Bloqueo de actualización (bloqueo U)El propietario del bloqueo puede leer, pero no cambiar, el objeto de DB2.Los procesos simultáneos pueden adquirir bloqueos de compartimiento ypueden leer el objeto de DB2, pero ningún otro proceso puede adquirir unbloqueo de actualización. Antes de realizar realmente el cambio en losdatos, DB2 aumenta los bloqueos de actualización a bloqueos deexclusividad.

Bloqueo de exclusividad (bloqueo X)El propietario del bloqueo puede leer o cambiar los datos bloqueados. Unproceso simultáneo no puede adquirir bloqueos de compartimiento, deactualización o de exclusividad sobre los datos. Sin embargo, el procesosimultáneo puede leer los datos sin adquirir un bloqueo sobre el objeto deDB2.

Las modalidades de bloqueo determinan si un bloqueo es compatible con otro.

Ejemplo: Suponga que un proceso de aplicaciones A mantiene un bloqueo sobreun espacio de tablas al cual también desea acceder el proceso B. DB2 solicita, ennombre de B, un bloqueo de alguna modalidad en particular. Si la modalidad debloqueo de A permite la petición de B, los dos bloqueos (o modalidades) soncompatibles. Si los dos bloqueos no son compatibles, B no puede continuar; debeesperar hasta que A libere su bloqueo. (En realidad, B debe esperar hasta que seliberen todos los bloqueos incompatibles existentes.)

La compatibilidad para bloqueos de páginas y filas es fácil de definir. La tablasiguiente muestra si los bloqueos de páginas o los bloqueos de filas de dosmodalidades cualquiera son compatibles. Los bloqueos de páginas y los bloqueosde filas nunca son compatibles entre sí debido a que un espacio de tablas no puedeutilizar a la vez bloqueos de páginas y bloqueos de filas.

Tabla 38. Matriz de compatibilidad de modalidades de bloqueo de páginas y bloqueo de filas

Modalidad debloqueo

Compartimiento(bloqueo S)

Actualización(bloqueo U)

Exclusividad(bloqueo X)

Compartimiento(bloqueo S)

Sí Sí No

Actualización(bloqueo U)

Sí No No

256 Introducción a DB2 para z/OS

||||

||

Page 267: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tabla 38. Matriz de compatibilidad de modalidades de bloqueo de páginas y bloqueo defilas (continuación)

Modalidad debloqueo

Compartimiento(bloqueo S)

Actualización(bloqueo U)

Exclusividad(bloqueo X)

Exclusividad(bloqueo X)

No No No

Los bloqueos de compartimiento, actualización y de exclusividad se aplican abloqueos de filas o páginas. Estos hechos se aplican únicamente a procesos deaplicaciones que adquieren un bloqueo de intención sobre el espacio de tablas y latabla, si la tabla está un espacio de tablas segmentado.

Un bloqueo de intención indica el plan que el proceso de aplicaciones tiene paraacceder a los datos. Los dos tipos de bloqueos de intención son de intención decompartimiento e intención de exclusividad.

La compatibilidad para bloqueos de espacios de tablas es más compleja.

A pesar de la importancia de los bloqueos en el entorno DB2, pueden producirsealgunos problemas de bloqueo, tal como muestra la lista siguiente:

SuspensiónUn proceso de aplicaciones se suspende cuando solicita un bloqueo que yamantiene otro proceso de aplicaciones, si dicho bloqueo no es un bloqueocompartido. El proceso suspendido detiene temporalmente su ejecución yreanuda la ejecución en las circunstancias siguientes:v Todos los procesos que mantienen el bloqueo conflictivo lo liberan.v El proceso peticionario experimenta un tiempo de espera excedido o un

punto muerto y el proceso se reanuda y maneja una condición de error.

Tiempo de espera excedidoUn proceso de aplicaciones excede el tiempo de espera cuando termina debidoa una suspensión que excede un intervalo preestablecido. DB2 termina elproceso, emite mensajes y devuelve códigos de error. Las operaciones deconfirmación y de retrotracción no exceden el tiempo de espera. Sinembargo, el mandato STOP DATABASE puede exceder el tiempo de esperay en este caso DB2 envía mensajes a la consola; el mandato STOPDATABASE se puede reintentar un máximo de 15 veces.

Punto muertoUn punto muerto se produce cuando dos o más procesos de aplicacionesmantienen bloqueos sobre recursos que otros usuarios necesitan y sin loscuales no pueden proseguir. Después de un intervalo de tiempopreestablecido, DB2 puede retrotraer la unidad de trabajo actual o solicitara un proceso que termine. Por ello DB2 libera los bloqueos y permite quelos procesos restantes continúen.

Aunque se pueden producir algunos problemas de bloqueo, puede evitarproblemas de bloqueo del sistema y de aplicaciones.

Los siguientes casos de ejemplo ilustran porqué el bloqueo es crítico.

Caso de ejemplo: Evitación de la pérdida de datos actualizados

Dos usuarios, Kathy y Frank, intentan acceder a la misma tabla de DB2. Seproduce lo siguiente:

Capítulo 8. Gestión del rendimiento de DB2 257

Page 268: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

1. Kathy lee el valor de datos, 100, en una variable de lenguaje principal.2. Frank lee el mismo valor de columna en una variable de lenguaje principal.3. Kathy añade 10 al valor de variable de lenguaje principal y guarda el valor

nuevo, 110, en la columna de la tabla de DB2.4. Frank añade 20 al valor de variable de lenguaje principal y guarda el valor

nuevo, 120, en la columna de la tabla de DB2.

Este caso de ejemplo no utiliza bloqueo. Muestra que el valor actualizado de lacolumna depende de qué usuario confirme los datos primero. Si Kathy confirmaprimero, el valor de la columna actualizado es 120 y se pierde la actualización deKathy. Si Frank confirma primero, el valor de la columna actualizado es 110 y sepierde la actualización de Frank.

El caso de ejemplo cambia si incluye bloqueo. Cuando lea el proceso siguiente,suponga que se utiliza un cursor actualizable. Se produce lo siguiente:1. Kathy lee el valor de columna 100 en una variable de lenguaje principal con la

intención de actualizar el valor. A continuación, DB2 otorga un bloqueo deactualización a Kathy.

2. Frank quiere leer el mismo valor de columna en una variable de lenguajeprincipal con la intención de actualizar el valor. De acuerdo con la matriz decompatibilidad de la tabla anterior, DB2 no otorga a Frank un bloqueo deactualización (bloqueo U) sobre el objeto de DB2 que contiene el valor decolumna 100. Por lo tanto, Frank deberá esperar para leer el valor de columnahasta que Kathy libere el bloqueo.

3. Kathy añade 10 al valor de variable de lenguaje principal y quiere guardar elvalor nuevo, 110, en la columna de la tabla de DB2. En este punto, DB2 cambiael bloqueo U por un bloqueo de exclusividad (bloqueo X) sobre el objeto deDB2 que contiene el valor de columna.

4. Kathy confirma el cambio. A continuación, DB2 libera el bloqueo X sobre elobjeto de DB2 que contiene el valor de columna. Después, DB2 otorga elbloqueo U a Frank sobre el mismo objeto (a menos que Frank haya excedido eltiempo de espera de acceso). La variable de lenguaje principal que Frank haespecificado ahora contiene el valor actualizado de 110.

5. Frank añade 20 al valor de variable de lenguaje principal y quiere guardar elvalor nuevo, 130, en la columna de la tabla. DB2 cambia el bloqueo U por unbloqueo X sobre el objeto de DB2 que contiene el valor de columna.

6. Frank confirma el cambio. A continuación, DB2 libera el bloqueo X sobre elobjeto de DB2 que contiene el valor de columna.

Si este caso de ejemplo no incluyera cursores actualizables, DB2 otorgaría unbloqueo de compartimiento (bloqueo S) a Kathy en lugar de un bloqueo U en elpaso 1. DB2 también otorgaría un bloqueo S a Frank en el paso 2. Si Kathy y Frankintentaran actualizar el valor de columna a la vez, se produciría un punto muerto.Cuando se produce un punto muerto, DB2 decide si debe retrotraer el trabajo deKathy o el trabajo de Frank. Una retrotracción se produce cuando DB2 invierte uncambio que un proceso de aplicaciones individual ha intentado realizar. Si DB2retrotrae los cambios de Kathy, Kathy libera los bloqueos y Frank puede completarel proceso. A la inversa, si DB2 retrotrae los cambios de Frank, Frank libera losbloqueos y Kathy puede completar el proceso.

Los programas de aplicaciones pueden minimizar el riesgo de situaciones de puntomuerto utilizando la cláusula FOR UPDATE OF de la sentencia DECLARECURSOR. En realidad el programa no adquiere el bloqueo U hasta que se liberacualquier otro bloqueo U o X sobre el objeto de datos.

258 Introducción a DB2 para z/OS

Page 269: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Caso de ejemplo: Evitación del acceso de lectura a datos sinconfirmar

Dos usuarios, Kathy y Frank, intentan acceder a la misma tabla de DB2.1. Kathy actualiza el valor de 100 a 0 en la columna de la tabla de DB2.2. Frank lee el valor actualizado de 0 y toma decisiones de programa basándose

en este valor.3. Kathy cancela el proceso y cambia el valor de 0 de nuevo a 100 para la

columna de la tabla de DB2.

Este caso de ejemplo no incluye bloqueos. Muestra que Frank ha tomado unadecisión de programa incorrecta. Como resultado, los datos de la empresa de labase de datos pueden ser inexactos.

Cuando este caso de ejemplo incluye bloqueo, se produce lo siguiente:1. Kathy intenta actualizar el valor de 100 a 0 en la columna de la tabla. DB2

otorga un bloqueo X a Kathy sobre el objeto de DB2 que contiene el valor decolumna que debe actualizarse.

2. Frank intenta leer el valor de columna actualizado para poder tomar decisionesde programa basándose en este valor. DB2 no permite que Frank lea el valor decolumna actualizado de 0. Frank intenta adquirir un bloqueo S sobre el objetode DB2 que actualmente tiene el bloqueo X. Frank debe esperar hasta queKathy confirme o retrotraiga el trabajo.

3. Kathy cancela el proceso y cambia el valor de 0 de nuevo al valor original de100 para la columna de la tabla de DB2. DB2 realiza el cambio real en los datosy libera el bloqueo X para Kathy. A continuación, DB2 otorga el bloqueo S aFrank sobre el objeto de DB2 que contiene el valor de columna. Después, Franklee el valor de 100.

Cuando el caso de ejemplo incluye bloqueos, Frank lee los datos correctos y, por lotanto, puede tomar la decisión de programa correcta. Como resultado, los datos dela empresa de la base de datos son exactos.

Caso de ejemplo: Evitación de actualizaciones entre variaslecturas dentro de una unidad de trabajo

En este caso de ejemplo, Kathy quiere leer los mismos datos dos veces. Ningúnotro programa ni usuario puede cambiar los datos entre las dos lecturas.

Suponga que Kathy utiliza la siguiente sentencia de SQL:SELECT * FROM EMP

WHERE SALARY>(SELECT AVG(SALARY) FROM EMP);

Esta sentencia de SQL lee la tabla EMP dos veces:1. Calcula el promedio de los valores de la columna SALARY de todas las filas de

la tabla.2. Busca todas las filas de la tabla EMP que tienen un valor en la columna

SALARY que excede el valor de promedio.

Si Kathy no bloquea los datos entre los dos procesos de lectura, otro usuario puedeactualizar la tabla EMP entre los dos procesos de lectura. Esta actualización puedehacer que Kathy obtenga un resultado incorrecto.

Capítulo 8. Gestión del rendimiento de DB2 259

Page 270: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Kathy podría utilizar bloqueos de DB2 para asegurarse de que no se produzcaningún cambio en la tabla entre los dos procesos de lectura. Kathy puede elegirentre estas opciones:v Utilizar el paquete o nivel de aislamiento de plan de lectura repetible (RR) o

utilizar la cláusula WITH RR en la sentencia SQL SELECT.v Bloquear la tabla en modalidad de compartimiento o de exclusividad utilizando

una de estas sentencias:– LOCK TABLE EMP IN SHARE MODE– LOCK TABLE EMP IN EXCLUSIVE MODE

Información relacionada

″Ajuste del rendimiento de DB2 para z/OS″ (DB2 Performance Monitoring andTuning Guide)″Supervisión del bloqueo de DB2″ (DB2 Performance Monitoring and TuningGuide)

Rendimiento mejorado mediante control de simultaneidadEl control de simultaneidad se basa, en parte, en niveles de aislamiento, quedeterminan hasta qué punto debe aislarse una aplicación de los efectos de otrasaplicaciones que se ejecutan.

DB2 proporciona los siguientes niveles de aislamiento:

Lectura repetible (RR)El aislamiento de RR proporciona la mayor protección contra otrasaplicaciones. Con RR, las filas a las que hace referencia una aplicación nopueden ser actualizadas por otras aplicaciones antes de que la aplicaciónalcance un punto de confirmación.

Estabilidad de lectura (RS)El aislamiento de RS permite que una aplicación pueda leer las mismaspáginas o filas más de una vez mientras que se impide que otro procesopueda cambiar las filas. Sin embargo, otras aplicaciones pueden insertar oactualizar filas que no cumplían la condición de búsqueda de la aplicaciónoriginal.

Estabilidad del cursor (CS)El aislamiento de CS permite la máxima simultaneidad con integridad dedatos. Con CS, una transacción sólo mantiene bloqueos para los cambiosno confirmados y para la fila actual de cada uno de sus cursores.

Lectura no confirmada (UR)El aislamiento de UR permite que la aplicación pueda leer datos sinconfirmar.

DB2 utiliza bloqueos y depende de ellos debido al requisito de integridad de datos.Sin embargo, los bloqueos a veces causan problemas como, por ejemplo, puntosmuertos, tiempos de espera excedidos y suspensiones. Para minimizar estosproblemas y aumentar la simultaneidad, los diseñadores de bases de datos y losdiseñadores de aplicaciones pueden realizar varias acciones.

Recomendaciones para diseñadores de bases de datos

Los diseñadores de bases de datos pueden realizar las acciones generales siguientespara aumentar la simultaneidad sin comprometer la integridad de los datos:

260 Introducción a DB2 para z/OS

pablo
Resaltado
giralte
Resaltado
Page 271: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Mantener juntos los elementos iguales en la base de datos. Por ejemplo, intenteagrupar en clúster tablas pertinentes a la misma aplicación en la misma base dedatos.

v Mantener separados los elementos diferentes en la base de datos. Por ejemplo,suponga que el usuario A posee la tabla A y el usuario B posee la tabla B. Almantener la tabla A y la tabla B en bases de datos separadas se pueden crear odescartar índices en estas dos tablas al mismo tiempo sin causar contención debloqueo.

v Utilizar la cláusula LOCKSIZE ANY de la sentencia CREATE TABLESPACE, amenos que se haga otra cosa, resulta preferible.

v Examinar tablas pequeñas, en busca de oportunidades para mejorar lasimultaneidad reorganizando datos o cambiando el método de bloqueo.

v Particionar los datos.v Particionar índices secundarios. El uso de índices secundarios particionados de

datos aumenta la independencia de partición y, por lo tanto, puede reducir lacontención de bloqueo.

v Minimizar la actividad de actualización que mueve filas entre particiones.v Almacenar menos filas de datos en cada página de datos.

Recomendaciones para diseñadores de aplicaciones

Los diseñadores de aplicaciones pueden realizar las acciones generales siguientespara aumentar la simultaneidad sin comprometer la integridad de los datos:v Acceder a los datos en un orden coherente. Por ejemplo, las aplicaciones

deberían acceder generalmente a los mismos datos en el mismo orden.v Confirmar el trabajo tan pronto como se realiza resulta práctico, para evitar

contenciones de bloqueo innecesarias.v Reintentar una aplicación después de un punto muerto o un tiempo de espera

excedido para intentar recuperarse de la situación sin ayuda.v Cerrar los cursores para liberar los bloqueos y liberar los recursos retenidos por

los bloqueos.v Vincular planes con la cláusula ACQUIRE(USE), que es la mejor opción para

simultaneidad.v Vincular con ISOLATION(CS) y CURRENTDATA(NO) en la mayoría de casos.

ISOLATION(CS) normalmente permite que DB2 libere los bloqueos adquiridosen cuanto es posible. CURRENTDATA(NO) normalmente permite que DB2 eviteadquirir bloqueos lo más frecuente posible.

v Utilizar transacciones globales, lo cual permite que DB2 y otros gestores detransacciones participen en una única transacción y, de este modo, compartan losmismos bloqueos y accedan a los mismos datos.Información relacionada

″Ajuste del rendimiento de DB2 para z/OS″ (DB2 Performance Monitoring andTuning Guide)

Modos de mejorar el rendimiento de las consultasLas vías de acceso son un factor significativo en el rendimiento de DB2. DB2 eligelas vías de acceso, pero el usuario puede utilizar herramientas para comprendercómo las vías de acceso influyen en el rendimiento en determinadas situaciones.

Una vía de acceso es la vía que DB2 utiliza para localizar datos que se especifican ensentencias de SQL. Una vía de acceso puede ser indexada o secuencial.

Capítulo 8. Gestión del rendimiento de DB2 261

pablo
Resaltado
pablo
Resaltado
pablo
Resaltado
Page 272: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Dos factores importantes en el rendimiento de una sentencia de SQL son lacantidad de tiempo que DB2 utiliza para determinar la vía de acceso durante eltiempo de ejecución y la eficacia de la vía de acceso. DB2 determina la vía deacceso para una sentencia cuando se vincula el plan o paquete que contiene lasentencia de SQL o cuando se ejecuta la sentencia de SQL.

El momento en que DB2 determina la vía de acceso depende de si la sentencia seejecuta de forma estática o dinámica y de si la sentencia contiene variables delenguaje principal de entrada.

La vía de acceso que DB2 elige determina cuánto tardará la ejecución de lasentencia de SQL. Por ejemplo, para ejecutar una consulta de SQL que une dostablas, DB2 dispone de varias opciones. DB2 puede elegir cualquiera de lasopciones siguientes para procesar estas uniones:v Explorar la tabla PARTS para encontrar cada fila que coincida con una fila de la

tabla PRODUCTS.v Explorar la tabla PRODUCTS para encontrar cada fila que coincida con una fila

de la tabla PARTS.v Clasificar ambas tablas por orden de PROD# y, a continuación, fusionar las

tablas ordenadas para procesar la unión.

La selección de la mejor vía de acceso para una sentencia de SQL depende devarios factores. Estos factores incluyen el contenido de cualquier tabla que lasentencia de SQL consulte y los índices de dichas tablas.

DB2 también utiliza información estadística amplia sobre la utilización de bases dedatos y recursos para seleccionar las mejores opciones de acceso.

Además, la organización física de los datos del almacenamiento influye en el nivelde eficacia de DB2 al procesar una consulta.

Información relacionada

″Ajuste del rendimiento de DB2 para z/OS″ (DB2 Performance Monitoring andTuning Guide)

Utilización de EXPLAIN para comprender la vía de accesoLa utilización primaria de EXPLAIN consiste en visualizar las vías de acceso paralas partes SELECT de las sentencias. Esta información describe lo que proporcionaEXPLAIN y cómo puede obtener información de EXPLAIN.

La información de la tabla de planes puede ayudarle cuando necesite realizar lastareas siguientes:v Determinar la vía de acceso que DB2 elige para una consultav Diseñar bases de datos, índices y programas de aplicacionesv Determinar cuándo debe volverse a vincular una aplicación

Para cada acceso a una única tabla, EXPLAIN indica si DB2 utiliza acceso de índiceo una exploración de espacio de tablas. Para índices, EXPLAIN indica cuántosíndices y columnas de índice se utilizan y qué métodos de E/S se utilizan para leerlas páginas. Para uniones de tablas, EXPLAIN indica el método y tipo de unión, elorden en que DB2 une las tablas y las ocasiones en que clasifica filas y los motivos.

Los pasos siguientes resumen cómo obtener información de EXPLAIN:1. Cree una tabla de planes.

262 Introducción a DB2 para z/OS

pablo
Resaltado
EXPLAIN
giralte
Nota
Marked definida por giralte
Page 273: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para poder utilizar EXPLAIN, primero debe crear una tabla de planes para quecontenga los resultados de EXPLAIN.

2. Llene la tabla de planes.Puede llenar la tabla de planes ejecutando la sentencia EXPLAIN de SQL.También puede llenar una tabla de planes al vincular o volver a vincular unplan o paquete especificando la opción EXPLAIN(YES). EXPLAIN obtieneinformación sobre las vías de acceso para todas las sentencias de SQLexplicables de un paquete o de los DBRM de un plan.

3. Seleccione la información de la tabla de planes.Varios procesos pueden insertar filas en la misma tabla de planes. Paracomprender las vías de acceso, debe recuperar las filas de una consultadeterminada en el orden adecuado.

EXPLAIN le ayuda a responder a preguntas sobre rendimiento; las respuestas leproporcionan la información que necesita para mejorar el rendimiento. EXPLAINindica si DB2 ha utilizado un índice para acceder a los datos, si se han realizadoclasificaciones, si se ha utilizado proceso paralelo, etc.

A medida que gana experiencia al trabajar con DB2, puede utilizar la tabla deplanes para proporcionar sugerencias de optimización a DB2 que influyan en laselección de vía de acceso.

Información relacionada

″Utilización de EXPLAIN para capturar información sobre sentencias de SQL″(DB2 Performance Monitoring and Tuning Guide)″Ajuste del rendimiento de DB2 para z/OS″ (DB2 Performance Monitoring andTuning Guide)

Herramientas que ayudan a mejorar el rendimiento de lasconsultas

Existen varias herramientas de análisis de rendimiento que pueden ayudarle amejorar el rendimiento de SQL.

Estas herramientas incluyen:v Optimization Service Center for DB2 for z/OS (OSC), una herramienta de

estación de trabajo adecuada para el análisis de la salida de EXPLAINv OMEGAMON DB2 Performance Expert, una herramienta que puede ayudarle

con el rendimiento de SQLv EXPLAIN, una herramienta de supervisión de DB2v DB2 SQL Performance Analyzer, una herramienta que proporciona un análisis

amplio de consultas de SQL sin ejecutarlas.

Optimization Service Center for DB2 for z/OS

IBM Optimization Service Center for DB2 for z/OS (DB2 OSC) es una herramientade estación de trabajo para supervisar y ajustar las sentencias de SQL que seejecutan como parte de una carga de trabajo en el subsistema DB2 para z/OS.Puede utilizar DB2 OSC para identificar y analizar sentencias problemáticas yrecibir consejo experto sobre las sentencias que puede reunir para mejorar elrendimiento de una sentencia individual o de toda una carga de trabajo.

Utilizando DB2 OSC puede reunir información de EXPLAIN para sentencias deSQL y ver dicha información de EXPLAIN en un formato gráfico, aclarando al

Capítulo 8. Gestión del rendimiento de DB2 263

|

||||||

||

Page 274: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

instante las relaciones entre objetos (por ejemplo, tablas e índices) y operaciones(por ejemplo, exploraciones de espacio de tablas y clasificaciones).

También puede utilizar DB2 OSC para diseñar gráficamente sugerencias de planpara sugerir mejores vías de acceso a DB2 y desplegar estas sugerencias de plan enel subsistema DB2 para z/OS.

Después de ajustar el rendimiento de una sentencia o de una carga de trabajo,puede crear perfiles de supervisión para realizar un seguimiento e informar delestado de las sentencias de SQL en una carga de trabajo durante un procesonormal y para avisarle de los problemas de desarrollo cuando una sentenciaexcede los umbrales de excepción.

DB2 OSC se ofrece en DB2 Accessories Suite for z/OS. Puede utilizar DB2 OSC enuna estación de trabajo Windows 2000, Windows XP o Windows 2003 que tengainstalado DB2 Connect Enterprise Edition o DB2 Connect Personal Edition, Versión8.1.7.

DB2 Optimization Expert for z/OS

IBM DB2 Optimization Expert for z/OS es una herramienta de estación de trabajobasada en información experta para la supervisión y el ajuste de sentencias de SQLy cargas de trabajo. Además de Optimization Service Center, la creación deOptimization Expert amplía las herramientas de ajuste con consejeros basados eninformación experta que pueden recomendarle cómo puede reescribir sentencias deSQL, crear índices o reconfigurar recursos del sistema para mejorar el rendimientode sentencias de SQL individuales y de cargas de trabajo completas que se ejecutanen el subsistema DB2 para z/OS.

EXPLAIN de DB2

EXPLAIN de DB2 es una herramienta de supervisión que produce la informaciónsiguiente:v Un plan, un paquete o una sentencia de SQL cuando se vincula. La salida

aparece en una tabla que crea el usuario, llamada tabla de plan.v El coste estimado de la ejecución de una sentencia SELECT, INSERT, UPDATE o

DELETE. La salida aparece en una tabla que crea el usuario, llamada tabla desentencia.

v Las funciones definidas por el usuario a las que se hace referencia en unasentencia de SQL, incluidos el nombre y esquema específicos de la función. Lasalida aparece en una tabla que crea el usuario, llamada tabla de función.

DB2 SQL Performance Analyzer

DB2 SQL Performance Analyzer le proporciona un análisis amplio de consultas deSQL sin ejecutarlas. Este análisis le ayuda a ejecutar las consultas para conseguir elmáximo rendimiento. DB2 SQL Performance Analyzer le ayuda a reducir los costescada vez mayores de consultas de bases de datos mediante la estimación de sucoste antes de su ejecución.

La utilización de DB2 SQL Performance Analyzer le ayuda a:v Estimar la posible duración de las consultasv Evitar que las consultas tarden demasiado tiempo en ejecutarsev Analizar nuevas vías de acceso

264 Introducción a DB2 para z/OS

||

|||

|||||

||||

|

||||||||

Page 275: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Codificar eficazmente la utilización de las sugerencias y los consejos queproporciona la herramientaInformación relacionada

″Ajuste del rendimiento de DB2 para z/OS″ (DB2 Performance Monitoring andTuning Guide)

Análisis del rendimiento de consultas y aplicacionesEl análisis del rendimiento de consultas y aplicaciones se inicia realizando algunaspreguntas básicas.

Para mejorar el rendimiento de las consultas y aplicaciones es necesario respondera algunas preguntas básicas para determinar hasta qué punto las consultas yaplicaciones se ejecutan adecuadamente.

¿Están al día las estadísticas del catálogo?

Mantener las estadísticas de objetos actualizadas es una actividad importante. DB2necesita estas estadísticas para elegir la vía de acceso óptima a los datos.

El programa de utilidad RUNSTATS recopila estadísticas sobre objetos de DB2.Estas estadísticas se almacenan en el catálogo de DB2. DB2 utiliza esta informacióndurante el proceso de vinculación para elegir una vía de acceso. Si el usuario noutiliza RUNSTATS y a continuación vuelve a vincular los paquetes o planes, DB2no tiene la información que necesita para elegir la vía de acceso más eficaz. Lafalta de información estadística puede dar como resultado operaciones de E/Sinnecesarias y un consumo excesivo del procesador.

Recomendación: Ejecute RUNSTATS como mínimo una vez para cada tabla y susíndices asociados. La frecuencia con la que debe volver a ejecutar el programa deutilidad depende de hasta qué punto necesita que el catálogo esté actualizado. Silas características de los datos de una tabla varían significativamente con el tiempo,debería mantener el catálogo actualizado con estos cambios. RUNSTATS es másprovechoso cuando se ejecuta en los objetos siguientes:v Espacios de tablas que contienen tablas a las que se accede con frecuenciav Tablas que están implicadas en operaciones de clasificaciónv Tablas con muchas filasv Tablas consultadas por sentencias SELECT que incluyen muchos argumentos de

búsquedav Tablas con índices

Una herramienta que puede ayudarle a mantener las estadísticas actualizadas esOptimization Service Center for DB2 for z/OS (OSC). OSC es una herramienta deestación de trabajo para supervisar y ajustar las sentencias de SQL que se ejecutancomo parte de una carga de trabajo en el subsistema de DB2 para z/OS. Puedeutilizar OSC para identificar y analizar sentencias problemáticas y recibir consejoexperto sobre las estadísticas que puede reunir para mejorar el rendimiento de unasentencia individual o de toda una carga de trabajo.

¿Se ha codificado la consulta de la manera más simple?

Asegúrese de que la consulta de SQL se haya codificado de la manera más simpley eficaz posible. Asegúrese de que:v No se seleccionen columnas no utilizadas.v No existan cláusulas ORDER BY o GROUP BY innecesarias en la consulta.

Capítulo 8. Gestión del rendimiento de DB2 265

||

|||||||

pablo
Resaltado
pablo
Resaltado
giralte
Nota
Accepted definida por giralte
Page 276: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v No existan predicados innecesarios en la consulta.

¿Está utilizando tablas de consultas materializadas?

Defina tablas de consultas materializadas para mejorar el rendimiento de lasconsultas dinámicas que operan en cantidades muy grandes de datos e implicanvarias uniones. DB2 genera los resultados de todas las consultas o parte de ellas deantemano y almacena los resultados en tablas de consultas materializadas. DB2determina cuándo la utilización de los resultados previamente calculados esprobable que optimice el rendimiento de las consultas dinámicas.

¿Se accede mediante un índice?

Un índice proporciona un acceso eficaz a los datos. DB2 utiliza diferentes tipos deexploraciones de índice, cada uno de los cuales afecta de forma diferente alrendimiento. Algunas veces DB2 puede evitar una clasificación utilizando uníndice.

Si una consulta se satisface utilizando únicamente el índice, DB2 utiliza un métododenominado acceso de sólo índice.v Para una operación SELECT, si todas las columnas necesarias para la consulta se

encuentran en el índice, DB2 no necesita acceder a la tabla.v Para una operación UPDATE o DELETE, se puede realizar una exploración de

sólo índice para buscar filas calificadoras para actualizarlas o suprimirlas. Unavez identificadas las filas calificadoras, DB2 primero debe recuperar estas filasdel espacio de tablas para poderlas actualizar o suprimir.

Otros tipos de exploraciones de índice que DB2 puede utilizar son exploracionesde índice coincidentes o no coincidentes.v En una exploración de índice coincidente, la consulta utiliza predicados que

coinciden con las columnas de índice. Los predicados proporcionan filtrado; DB2tan solo necesita acceder a determinadas páginas de datos e índices.

v En una exploración de índice no coincidente, DB2 lee todas las claves de índicey sus filas de datos. Este tipo de exploración es menos probable que proporcioneuna vía de acceso eficaz que una exploración de índice coincidente.

Además de proporcionar un acceso selectivo a los datos, los índices tambiénpueden ordenar datos y a veces eliminan la necesidad de clasificaciones. Se puedenevitar algunas clasificaciones si las claves de índice están en el orden necesariopara ORDER BY, GROUP BY, una operación de unión o DISTINCT en una funciónde totales. Si desea evitar una clasificación, considere la creación de un índice enlas columnas necesarias para proporcionar dicho orden.

¿Se utiliza una exploración de espacio de tablas?

Cuando no es posible un acceso de índice, DB2 utiliza una exploración de espaciode tablas. DB2 generalmente utiliza el método de precaptación secuencial paraexplorar espacios de tablas.

Ejemplo: Suponga que la tabla T no tiene ningún índice en la columna C1. En elejemplo siguiente DB2 utiliza una exploración de espacio de tablas:SELECT * FROM T WHERE C1 = VALUE;

En este caso, cada fila de la tabla T debe examinarse para determinar si el valor deC1 coincide con el valor proporcionado.

266 Introducción a DB2 para z/OS

Page 277: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Una exploración de espacio de tablas en un espacio de tablas particionado puedeser más eficaz que una exploración en un espacio de tablas no particionado. DB2puede beneficiarse de las particiones limitando la exploración de datos en unespacio de tablas particionado a una o más particiones.

¿Se realizan clasificaciones?

El hecho de minimizar la necesidad de que DB2 utilice clasificaciones paraprocesar una consulta puede tener como resultado un mejor rendimiento. Engeneral, intente crear índices que coincidan con los predicados de las consultasantes de intentar evitar clasificaciones en las consultas.

¿Se accede a los datos o se procesan los datos en paralelo?

El proceso en paralelo se aplica a consultas de sólo lectura. DB2 puede utilizaroperaciones de CPU y E/S paralelas para mejorar el rendimiento. Por ejemplo,DB2 puede utilizar varias operaciones paralelas para acceder a datos de una tablao de un índice. El tiempo de respuesta para consultas intensivas de datos ointensivas de procesador pueden reducirse significativamente.

¿Se utilizan variables de lenguaje principal?

Cuando se especifica la opción de vinculación REOPT(VARS), DB2 determina lasvías de acceso durante el tiempo de vinculación y el tiempo de ejecución parasentencias que contienen una o más variables de lenguaje principal, marcadores deparámetros o registros especiales. Durante el tiempo de ejecución, DB2 utiliza losvalores de estas variables para determinar vías de acceso.

DB2 dedica un tiempo adicional a determinar la vía de acceso para sentenciasdurante el tiempo de ejecución. Pero si DB2 encuentra una vía de accesosignificativamente mejor utilizando valores de variables, puede observarse unamejora global del rendimiento.

Para aplicaciones de SQL estático con variables de lenguaje principal, si seespecifica REOPT(VARS), DB2 determina la vía de acceso durante el tiempo devinculación y de nuevo durante el tiempo de ejecución, utilizando los valores delas variables de entrada.

Para aplicaciones de SQL estático sin variables de lenguaje principal, DB2determina la vía de acceso cuando se vincula el plan o paquete. Esta situaciónobtiene el mejor rendimiento debido a que la vía de acceso ya está determinadacuando se ejecuta el programa.

Para aplicaciones que contienen sentencias de SQL dinámico con variables delenguaje principal, se recomienda utilizar REOPT(VARS) como método devinculación.

¿Se utilizan sentencias de SQL dinámico?

Para sentencias de SQL dinámico, DB2 determina la vía de acceso durante eltiempo de ejecución, cuando se prepara la sentencia.

Cuando una aplicación realiza una operación de confirmación, debe emitir otrasentencia PREPARE si esta sentencia de SQL debe volverse a ejecutar. Para unasentencia SELECT, la posibilidad de declarar un cursor WITH HOLD proporcionaalgunas ventajas pero requiere que el cursor esté abierto en el punto de

Capítulo 8. Gestión del rendimiento de DB2 267

Page 278: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

confirmación. La utilización de la opción WITH HOLD también hace que semantengan algunos bloqueos para los objetos de los que depende la sentenciapreparada. Además, la opción WITH HOLD no ofrece ninguna ventaja parasentencias de SQL que no sean sentencias SELECT.

Puede utilizar la antememoria de sentencias dinámicas para disminuir el númerode veces que deben prepararse estas sentencias dinámicas. La utilización de laantememoria de sentencias dinámicas es particularmente útil cuando se ejecuta confrecuencia la misma sentencia de SQL.

DB2 puede guardar sentencias dinámicas preparadas en una antememoria. Laantememoria es una antememoria para todo DB2 que todos los procesos deaplicaciones pueden utilizar para almacenar y recuperar sentencias dinámicaspreparadas. Después de preparar una sentencia de SQL y de que se almaceneautomáticamente en la antememoria, las peticiones de preparación posteriores parala misma sentencia pueden utilizar la sentencia de la antememoria para evitar unproceso de preparación costoso. Diferentes hebras, planes o paquetes puedencompartir sentencias que se han colocado en la antememoria.

Las sentencias SELECT, UPDATE, INSERT y DELETE se pueden elegir paracolocarlas en antememoria.

Información relacionada

″Análisis de los datos de rendimiento″ (DB2 Performance Monitoring andTuning Guide)

268 Introducción a DB2 para z/OS

Page 279: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 9. Gestión de operaciones de DB2

La gestión de un subsistema DB2 diariamente requiere realizar una grandiversidad de tareas como, por ejemplo, gestionar autorizaciones y prepararse parala recuperación de cualquier error o problema potencial.

Cuando se gestiona un entorno DB2 diariamente es necesario emitir mandatos deDB2, ejecutar programas de utilidad de DB2, gestionar autorizaciones y prepararsepara la recuperación de errores o problemas potenciales. Además, probablementedeseará aprovechar las posibilidades de alta disponibilidad relacionadas con DB2,entre las que se incluyen las siguientes:v Puede vincular planes y paquetes de aplicaciones en línea. Utilizando paquetes,

puede cambiar y revincular unidades más pequeñas. Utilizando versiones depaquetes puede vincular mientras las aplicaciones siguen en ejecución.

v Puede definir y cambiar bases de datos y autorizaciones en línea.v Puede cambiar tamaños de agrupación de almacenamientos intermedios en

línea.v Puede utilizar programas de utilidad para reorganizar índices, espacios de tablas

o particiones de índices o espacios de tablas.v Puede utilizar las funciones de compartimiento de datos de DB2, que permiten

que varios subsistemas DB2 procesen aplicaciones en datos compartidos.Aunque son subsistemas diferentes los que comparten datos, aparecen como unúnico subsistema DB2 para los usuarios finales. Se pueden redireccionaraplicaciones para evitar interrupciones si uno de los subsistemas debe extraersepor motivos de mantenimiento.

Hay disponibles varias herramientas de gestión para ayudarle a llevar a cabo deforma fácil muchas de las tareas asociadas con las operaciones diarias de unsubsistema DB2.

Herramientas que le ayudan a gestionar DB2DB2 proporciona diversas herramientas que simplifican las tareas necesarias paragestionar DB2.

Centro de control de DB2 y herramientas relacionadasEsta información describe cómo el Centro de control de DB2 y otras herramientasrelacionadas pueden ayudarle a gestionar DB2.

El Centro de control de DB2 es una herramienta que le ayuda a realizar unaamplia variedad de actividades diarias. Puede utilizar el Centro de control paragestionar bases de datos de DB2 en sistemas operativos diferentes. Es necesarioque el Servidor de administración de DB2 soporte las funciones seleccionadas en elCentro de control.

Puede utilizar el Centro de control para administrar instancias de DB2 subsistemas,bases de datos y objetos de base de datos de DB2 for z/OS. Estos objetos sevisualizan en la ventana principal del Centro de control. Puede utilizar el Centrode control para crear, modificar y eliminar objetos. Una función de réplica desubsistema le ayuda a crear y editar trabajos de JCL cuando necesita copiar un

© Copyright IBM Corp. 2001, 2008 269

Page 280: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

subsistema. También puede ejecutar programas de utilidad que reorganizan ocargan los daos en las bases de datos de DB2 for z/OS existentes.

Puede iniciar las siguientes herramientas de DB2 desde el Centro de control:v DB2 Developer Workbenchv El Centro de mandatos de DB2, que le permite ejecutar mandatos de DB2,

sentencias de SQL y mandatos de consola z/OS.

El Centro de réplica forma parte del conjunto de herramientas del Centro decontrol de DB2, pero se inicia por separado. El Centro de réplica permiteadministración para entornos de réplica de DB2 a DB2 y para réplica entre basesde datos relacionales de DB2 y no DB2. Puede utilizar esta herramienta paraconfigurar y administrar el entorno de réplica, para ejecutar el programa decaptura para capturar cambios en los datos y para ejecutar el programa deaplicación para procesar los datos capturados.

El Centro de servicio de optimización para DB2 para z/OS (OSC) es unaherramienta de estación de trabajo que le ayuda a ajustar las consultas. Puedeobtener de forma rápida recomendaciones sobre el ajuste personalizado o realizarel propio análisis en profundidad creando un gráfico del plan de acceso para unaconsulta. También puede capturar un conjunto de consultas que se ejecutan en unsubsistema DB2, analizarlas como un grupo utilizando consejeros de carga detrabajo y supervisar las cargas de trabajo de sentencias mientras se ejecutan.

Conceptos relacionados

“Utilización de DB2 Developer Workbench para crear un procedimientoalmacenado” en la página 173

DB2 Administration ToolDB2 Administration Tool, una de las herramientas de IBM DB2, simplifica muchasde las tareas administrativas necesarias para mantener el subsistema DB2.

DB2 Administration Tool

DB2 Administration Tool para z/OS le ayuda a realizar las tareas que mantienen laejecución de DB2 en niveles máximos. Utilizando esta herramienta puede:v Gestionar los entornos DB2 de forma eficaz con un conjunto amplio de

funcionesv Visualizar e interpretar objetos del catálogo de DB2 y realizar tareas de

administración de catálogov Realizar cambios y actualizaciones de forma rápida y fácil en los datos

presentadosv Utilizar funciones de modificación y migración

Información relacionada

″DB2 Administration Tool″ (DB2 Administration Tool User’s Guide andReference)

DB2 InteractiveDB2 para z/OS DB2 proporciona paneles de Interactive System ProductivityFacility (ISPF) que se pueden utilizar para realizar de forma interactiva la mayorparte de las tareas de DB2. Estos paneles forman un recurso de DB2 denominadoDB2 Interactive (DB2I).

Tareas relacionadas

270 Introducción a DB2 para z/OS

|||||||

Page 281: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

″Sometimiento de trabajo utilizando DB2I″ (DB2 Administration Guide)

Utilización de mandatos y programas de utilidad para controlar lasoperaciones de DB2

Puede controlar la mayoría de operaciones utilizando mandatos de DB2 yrealizando tareas de mantenimiento mediante programas de utilidad de DB2.

Mandatos de DB2Puede utilizar mandatos para realizar las tareas necesarias para controlar ymantener el subsistema DB2.

Puede entrar mandatos en un terminal, una consola z/OS mediante un programaautorizado para APF o una aplicación que utilice la interfaz del recurso deinstrumentación (IFI).

Para entrar un mandato de DB2 desde una consola z/OS autorizada, utilice unprefijo de mandato de subsistema (que contenga entre uno y ocho caracteres) alprincipio del mandato. El prefijo de mandato de subsistema por omisión es -DSN1,que puede cambiar al instalar o migrar DB2.

Ejemplo: El mandato siguiente inicia el subsistema DB2 asociado con el prefijo demandato -DSN1:-DSN1 START DB2

Además de los mandatos de DB2, es posible que necesite utilizar otros tipos demandatos de las categorías siguientes:v Mandatos de CICS, que controlan las conexiones de CICS y le permiten iniciar y

detener conexiones con DB2 y visualizar la actividad de las conexionesv Mandatos de IMS, que controlan las conexiones de IMS y le permiten iniciar y

detener conexiones con DB2 y visualizar la actividad de las conexionesv Mandatos de TSO, que le permiten realizar tareas de TSOv Mandatos de IRLM, que le permiten iniciar, detener y cambiar el gestor de

bloqueo de recursos interno (IRLM)

Para entrar un mandato de DB2 desde una consola z/OS autorizada, utilice unprefijo de mandato de subsistema (que contenga entre 1 y 8 caracteres) al principiodel mandato. El prefijo de mandato de subsistema por omisión es -DSN1, quepuede cambiar al instalar o migrar DB2.

Ejemplo: El mandato siguiente inicia el subsistema DB2 asociado con el prefijo demandato -DSN1:-DSN1 START DB2

Referencia relacionada

″-START DB2″ (Consulta de mandatos de DB2)″Mandatos de DB2″ (Consulta de mandatos de DB2)

Programas de utilidad de DB2Puede utilizar programas de utilidad para realizar las tareas necesarias paracontrolar y mantener el subsistema DB2.

Capítulo 9. Gestión de operaciones de DB2 271

|

Page 282: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Puede utilizar programas de utilidad de DB2 para realizar muchas de las tareasnecesarias para mantener datos de DB2. Entre estas se incluyen cargar una tabla,copiar un espacio de tablas o recuperar una base de datos a un punto anterior enel tiempo.

Los programas de utilidad fuera de línea se ejecutan como trabajo por lotesindependientes de DB2. Para ejecutar programas de utilidad fuera de línea, utilicez/OSJCL (lenguaje de control de trabajos). DB2 interactive (DB2I) proporciona unmodo simple de preparar el lenguaje de control de trabajos (JCL) para estostrabajos y de realizar muchas otras operaciones especificando valores en paneles.DB2I se ejecuta bajo TSO utilizando servicios ISPF.

Una sentencia de control de programa de utilidad indica la tarea que debe realizarun programa de utilidad concreto. Para ejecutar un trabajo de programa deutilidad, especifique la sentencia de control en un conjunto de datos que utilicepara la entrada. A continuación, invoque DB2I y seleccione UTILITIES en DB2IPrimary Option Menu. En algunos casos, puede que necesite otros conjuntos dedatos; por ejemplo, el programa de utilidad LOAD necesita un conjunto de datosde entrada que contenga los datos que se deben cargar.

También puede utilizar las siguientes herramientas de IBM DB2 para gestionarprogramas de utilidad:

DB2 Automation ToolHerramienta que permite que los administradores de bases de datos secentren en más en la optimización de base de datos, automatiza las tareasde mantenimiento y proporciona informes históricos estadísticos paraanálisis de tendencias y previsiones.

DB2 High Performance UnloadPrograma de utilidad de DB2 de alta velocidad que descarga tablas de DB2desde un espacio de tablas o una copia de seguridad de la base de datos.

DB2 Cloning ToolHerramienta que clona de forma rápida un subsistema DB2, creando elequivalente de un entorno de producción que se puede utilizar para probarnuevas características y funciones.

Referencia relacionada

″Introducción a los programas de utilidad de DB2″ (DB2 Utility Guide andReference)Información relacionada

Herramientas de DB2 en ibm.com

Gestión de conjuntos de datosEn DB2 para z/OS, una forma de gestionar conjuntos de datos es utilizandoStorage Management Subsystem (SMS).

Los espacios de tablas o índices con un tamaño superior a 4 GB necesitanconjuntos de datos gestionados por SMS. Otros espacios de tabla e índices sepueden almacenar en conjuntos de datos gestionados por el usuario o en gruposde almacenamiento gestionados por DB2.

Conceptos relacionados

“DB2 y DFSMS” en la página 57“Asignación de espacios de tablas a almacenamiento físico” en la página 212

272 Introducción a DB2 para z/OS

||

Page 283: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Mecanismos de autorización y seguridad para el acceso a datosLa autorización es una parte integral del control de DB2. Los mecanismos deseguridad y autorización que controlan el acceso a datos de DB2 son directos eindirectos.

DB2 realiza comprobaciones de seguridad directas de los ID de usuario y lascontraseñas antes de permitir que los usuarios accedan a un subsistema DB2. Losmecanismos de seguridad de DB2 incluyen objetos específicos, privilegios sobreestos objetos y algunos privilegios que proporcionan una autoridad más amplia.DB2 también controla el acceso a datos indirectamente mediante comprobacionesde autorización durante el tiempo de vinculación y el tiempo de ejecución paraplanes y paquetes de aplicaciones.

Autorización

Probablemente habrá observado que existen referencias a la autorización en estainformación. Por ejemplo, debe tener autorización para ejecutar sentencias de SQLque creen y modifiquen objetos de DB2. Incluso cuando los usuarios ejecutan unasentencia SELECT para consultar la información de una tabla, su autorizaciónpuede limitar lo que ven. El usuario puede ver únicamente los datos de unsubconjunto de columnas definidas en una vista. Las vistas proporcionan una granvariedad de controles de seguridad.

Antes de emitir mandatos de DB2, ejecutar programas de utilidad, ejecutarpaquetes y planes de aplicaciones o utilizar la mayoría de las demás funciones deDB2 necesita tener la autorización o el privilegio adecuados. Por ejemplo, pararealizar cambios en una tabla necesita tener autorización para acceder a dichatabla. Un privilegio permite una acción sobre un objeto. Por ejemplo, para insertardatos en una tabla se necesita el privilegio para insertar datos.

Las sentencias GRANT y REVOKE proporcionan control de accesos para objetos deDB2. Los privilegios y autoridades se pueden otorgar a ID de autorización ennumerosas combinaciones y también se pueden revocar.

Puede utilizar el componente RACF o un producto equivalente para controlar elacceso a objetos de DB2.

Seguridad

Debido a la necesidad de una mayor seguridad de los datos y la demanda de unacontabilidad corporativa mejorada, el gobierno federal y determinadas industriashan desarrollado leyes y regulaciones para guiar numerosos procesos corporativos.La expectativa de que se cumplan estas leyes y regulaciones probablementeaumentará en el futuro. El soporte de DB2 para z/OS a roles y los contextos deconfianza sirven de ayuda en el área de conformidad al imponer contabilidad dedatos en el nivel de los datos. En lugar de utilizar un único ID de usuario paratodas las peticiones de base de datos, los servidores de aplicaciones puedenproporcionar un ID de usuario final que no implique una desventaja en elrendimiento asociada con la petición.

Conceptos relacionados

“DB2 y z/OS Security Server” en la página 56Información relacionada

″Seguridad y auditoría″ (DB2 Administration Guide)

Capítulo 9. Gestión de operaciones de DB2 273

|

||||||||||

Page 284: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cómo controlan el acceso a datos los ID de autorizaciónUno de los modos en que DB2 controla el acceso a datos es mediante la utilizaciónde identificadores. Un conjunto de uno o más identificadores de DB2, denominadoID de autorización, representa cada proceso que se conecta o inicia una sesión enDB2.

Los ID de autorización se clasifican en tres tipos:

ID de autorización primarioComo resultado de asignar ID de autorización, cada proceso tieneexactamente un ID que se denomina ID de autorización primario.Generalmente, el ID de autorización primario identifica un proceso. Porejemplo, los registros de rastreo de estadísticas y rendimiento utilizan unID de autorización primario para identificar un proceso.

ID de autorización secundarioTodos los demás ID son los ID de autorización secundarios. Un ID deautorización secundario, que es opcional, puede tener privilegiosadicionales disponibles para el proceso. Por ejemplo, se puede utilizar unID de autorización secundario para un grupo de z/OS Security Server.

CURRENT SQLIDSe designa un ID (primario o secundario) como CURRENT SQLID.CURRENT SQLID tiene los privilegios que se ejercen cuando se ejecutandeterminadas sentencias de SQL dinámico. Se puede establecer CURRENTSQLID en el ID primario o en cualquiera de los ID secundarios. Si un IDde autorización de un proceso tiene la autoridad de administración delsistema (SYSADM), el proceso puede establecer CURRENT SQLID encualquier ID de autorización. Se puede cambiar el valor de CURRENTSQLID durante la sesión.

Ejemplo: Si ALPHA es el ID de autorización primario o uno de los ID deautorización secundarios, puede hacer que sea CURRENT SQLIDemitiendo la sentencia de SQL siguiente:SET CURRENT SQLID = 'ALPHA';

Conceptos relacionados

“Cómo mantienen privilegios y autoridades los ID de autorización”“Modos de controlar el acceso a los datos” en la página 278“Modos de controlar el acceso a objetos de DB2 mediante autoridades yprivilegios explícitos” en la página 279

Cómo mantienen privilegios y autoridades los ID deautorización

DB2 controla el acceso a sus objetos mediante un conjunto de privilegios. Cadaprivilegio permite una acción sobre un objeto.

La figura siguiente muestra los principales modos en DB2 para proporcionaracceso a datos a un ID.

274 Introducción a DB2 para z/OS

Page 285: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Los ID pueden mantener privilegios que les permitan realizar determinadasacciones o que les prohíban realizarlas. Los privilegios de DB2 proporcionan uncontrol sumamente estricto.

Privilegios relacionadosDB2 define conjuntos de privilegios relacionados que se denominanautoridades administrativas. Al otorgar una autoridad administrativa a un ID,se otorgan todos los privilegios asociados con ésta, en una sentencia.

Privilegios de objetoLa propiedad de un objeto conlleva un conjunto de privilegios relacionadossobre el objeto. Un ID puede ser el propietario de un objeto que crea opuede crear un objeto que pertenecerá a otro ID. La creación y propiedadde los objetos se controlan de forma separada.

Privilegios de plan de aplicación y paqueteEl privilegio para ejecutar un plan de aplicación o un paquete requiereatención especial. La ejecución de un plan o un paquete ejerceimplícitamente todos los privilegios que el propietario del plan o paqueteha necesitado para vincularlo. Por lo tanto, el otorgamiento del privilegiopara ejecutar puede proporcionar un conjunto detallado de privilegios ypuede eliminar la necesidad de otorgar otros privilegios por separado.

Ejemplo: Suponga que un plan de aplicación emite las sentencias INSERTy SELECT en varias tablas. Tan solo será necesario otorgar los privilegiosINSERT y SELECT al propietario del plan. Cualquier ID de autorización alque se otorgue posteriormente el privilegio EXECUTE sobre el plan puede

Figura 45. Otorgamiento de acceso a datos en DB2

Capítulo 9. Gestión de operaciones de DB2 275

Page 286: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

ejecutar las mismas sentencias INSERT y SELECT mediante el plan. No esnecesario otorgar explícitamente a este ID el privilegio para realizar estassentencias.

Etiquetas de seguridadLa seguridad de varios niveles limita el acceso a un objeto o a una filabasándose en la etiqueta de seguridad del objeto o fila y en la etiqueta deseguridad del usuario.

Rol Un rol es una entidad de base de datos que agrupa uno o más privilegios.Un rol sólo está disponible cuando el proceso se ejecuta en un contexto deconfianza. Un contexto de confianza es una entidad de base de datos basadaen un ID de autorización del sistema y en un conjunto de atributos defiabilidad de conexión. Puede crear y utilizar un contexto de confianzapara establecer una conexión de confianza entre DB2 y una entidad externacomo, por ejemplo, un servidor de middleware.

Los usuarios se asocian a un rol en la definición de un contexto deconfianza. Un contexto de confianza puede tener un rol por omisión, rolesespecíficos para usuarios individuales o ningún rol.

Conceptos relacionados

“Cómo controlan el acceso a datos los ID de autorización” en la página 274“Modos de controlar el acceso a los datos” en la página 278“Modos de controlar el acceso a objetos de DB2 mediante autoridades yprivilegios explícitos” en la página 279Información relacionada

″Seguridad y auditoría″ (DB2 Administration Guide)

Modos de controlar el acceso a subsistemas DB2DB2 for z/OS realiza comprobaciones de seguridad para autenticar a los usuariosantes de otorgarles acceso a datos de DB2. Existen varios mecanismos deautenticación soportados por peticionarios de DB2 y aceptados por servidores deDB2.

La autenticación se produce cuando la sentencia CONNECT se emite para conectarel proceso de aplicaciones al servidor designado. El servidor o el subsistema DB2local comprueba el ID de autorización y la contraseña para verificar que el usuariotiene autorización para conectarse al servidor.

Puede utilizar RACF o z/OS Security Server para autenticar los usuarios queacceden a una base de datos de DB2.

Conceptos relacionados

“DB2 y z/OS Security Server” en la página 56

Acceso local a DB2Un usuario de DB2 local está sujeto a varias comprobaciones de seguridad.

Por ejemplo, cuando DB2 se ejecuta bajo TSO y utiliza el ID de inicio de sesión deTSO como ID de autorización primario de DB2, dicho ID se verifica con unacontraseña cuando el usuario inicia la sesión.

Cuando el servidor es el subsistema DB2 local, RACF verifica la contraseña ycomprueba si el ID de autorización tiene permiso para utilizar los recursos de DB2definidos para RACF. Si se define una rutina de salida, RACF o z/OS SecurityServer realizan comprobación de seguridad adicional.

276 Introducción a DB2 para z/OS

||||

||||||||

|||

Page 287: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Acceso remoto a DB2Cuando el servidor no es el subsistema DB2 local se realizan variascomprobaciones de seguridad.v El gestor de seguridad local del servidor verifica el ID y la contraseña de

autorización primaria de DB2. Una verificación posterior determina si el ID deautorización tiene permiso para acceder a DB2.

v Las opciones de seguridad para los protocolos SNA o TCP/IP se comprueban enla base de datos de comunicaciones (CDB).

DDF da soporte a los protocolos de comunicaciones TCP/IP y SNA en un entornodistribuido. Como peticionario o servidor, DB2 elige cómo enviar o aceptarmecanismos de autenticación, basándose en el protocolo de red que se utiliza. DB2utiliza mecanismos de seguridad de SNA para conexiones de red SNA ymecanismos de seguridad de DRDA para conexiones de red TCP/IP o Kerberos.

Las opciones de seguridad de DRDA proporcionan el siguiente soporte para cifrardatos sensibles:v Los servidores de DB2 for z/OS pueden proporcionar cifrado y descifrado de

datos de alta velocidad seguros.v Los peticionarios de DB2 for z/OS disponen de la opción de cifrar ID de usuario

y, opcionalmente, sus contraseñas cuando los peticionarios se conectan aservidores remotos. Los peticionarios también pueden cifrar datos sensibles deseguridad cuando se comunican con servidores de modo que los datos esténseguros cuando se transmiten por la red.

Puede utilizar RACF o un subsistema de seguridad similar para realizarautenticación. RACF puede:v Verificar un ID de autorización remoto asociado a una conexión mediante la

comprobación del ID con su contraseña.v Verificar si el ID de autorización tiene permiso para acceder a DB2 a través de

una conexión remota.v Verificar si el ID de autorización tiene permiso para acceder a DB2 desde un

sitio remoto específico.v Generar pases, una alternativa a las contraseñas, en el lado transmisor. Un pase

permite a los usuarios acceder a un sistema principal sin enviar la contraseña deRACF a través de la red.

Seguridad de Kerberos

Como servidor, DB2 da soporte a seguridad de Kerberos para autenticar usuariosremotos. Los mecanismos de autenticación son tiquets de Kerberos cifrados enlugar de ID de usuario y contraseñas.

Puede establecer soporte de DB2 for z/OS para autenticación de Kerberosmediante z/OS Security Server. Kerberos también es una opción de seguridad dered para clientes de DB2 Connect.

Base de datos de comunicaciones

La base de datos de comunicaciones de DB2 contiene un conjunto de tablas decatálogo de DB2 que le permite controlar aspectos de peticiones remotas. DB2utiliza esta base de datos para obtener información sobre conexiones con sistemasremotos.

Capítulo 9. Gestión de operaciones de DB2 277

Page 288: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Acceso de estación de trabajo

Cuando un cliente de estación de trabajo accede a un servidor de DB2 for z/OS,DB2 Connect pasa toda la información de autenticación desde el cliente al servidor.Los clientes de estación de trabajo pueden cifrar los ID de usuario y contraseñascuando emiten una sentencia CONNECT. La autenticación de Database connectionservices (DCS) debe establecerse en DCS_ENCRYPT.

Un tipo de autenticación para cada instancia determina la verificación del usuario.El tipo de autenticación se almacena en el archivo de configuración del gestor debases de datos en el servidor. Están permitidos los siguientes tipos de autenticacióncon DB2 Connect:

CLIENTEl ID de usuario y la contraseña se validan en el cliente.

SERVEREl ID de usuario y la contraseña se validan en el servidor de bases dedatos.

SERVER_ENCRYPTEl ID de usuario y la contraseña se validan en el servidor de bases dedatos y las contraseñas se cifran en el cliente.

KERBEROSEl cliente se registra en el servidor utilizando autenticación de Kerberos.

Modos de controlar el acceso a los datosDB2 le permite controlar el acceso a los datos. El acceso a los datos incluye, perosin limitarse a ello, un usuario que participa en una sesión de terminal interactiva.Por ejemplo, el acceso puede ser desde un servidor remoto, desde una transacciónIMS o CICS, o desde un programa que se ejecuta en modalidad de proceso porlotes.

Esta información describe los distintos métodos de control de acceso a datos enDB2. En esta información, el término proceso se utiliza para representar todos losmodos de acceder a datos.

La figura siguiente sugiere varias rutas desde un proceso hasta datos de DB2 concontroles en cada ruta.

278 Introducción a DB2 para z/OS

Page 289: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

El primer método, control de acceso dentro de DB2, utiliza identificadores (ID)para controlar el acceso a objetos de DB2. En primer lugar el proceso debe cumplirlos requisitos de seguridad para acceder al subsistema DB2. Cuando el proceso estádentro del subsistema DB2, DB2 comprueba varios ID para determinar si elproceso puede acceder a objetos de DB2. Se describen estos ID (ID de autorizaciónprimario, ID de autorización secundario e ID de SQL). Si el proceso tiene el ID olos ID necesarios, puede acceder a objetos de DB2, incluyendo datos de DB2.

El segundo método, protección de conjunto de datos, no se controla desde dentrode DB2. Se aplica protección de conjunto de datos al proceso desde fuera de DB2.Si el proceso cumple los criterios de protección, puede llegar a los datos de DB2.

Conceptos relacionados

“Cómo controlan el acceso a datos los ID de autorización” en la página 274“Cómo mantienen privilegios y autoridades los ID de autorización” en lapágina 274“Modos de controlar el acceso a objetos de DB2 mediante autoridades yprivilegios explícitos”″Gestión del acceso mediante ID o roles de autorización″ (DB2 AdministrationGuide)

Modos de controlar el acceso a objetos de DB2 medianteautoridades y privilegios explícitos

Puede controlar el acceso a DB2 otorgando, no otorgando o revocando autoridadesy privilegios explícitos.

Un privilegio explícito es un privilegio con nombre que se otorga con la sentenciaGRANT o se revoca con la sentencia REVOKE. Una autoridad administrativa es unconjunto de privilegios, que a menudo incluye un conjunto de objetos relacionado.Las autoridades suelen incluir privilegios que no son explícitos, no tienen nombrey no se pueden otorgar específicamente como, por ejemplo, la capacidad determinar un trabajo de programa de utilidad.

Figura 46. Control de acceso a datos de DB2

Capítulo 9. Gestión de operaciones de DB2 279

Page 290: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Privilegios explícitos

Los privilegios explícitos proporcionan un control muy detallado. Por ejemplo,suponga que un usuario necesita seleccionar, insertar y actualizar datos de unatabla. Para realizar estas acciones, el usuario necesita los privilegios SELECT,INSERT y UPDATE sobre la tabla.

Existen privilegios explícitos disponibles para los objetos siguientes:v Agrupaciones de almacenamientos intermediosv Coleccionesv Bases de datosv Tipos diferenciadosv JAR (Java Archive, con formato de archivo para agregar muchos archivos en un

archivo)v Paquetesv Planesv Rutinas (funciones y procedimientos)v Esquemasv Secuenciasv Grupos de almacenamientov Sistemav Tablasv Espacios de tablasv Vistas

Autoridades administrativas

Los privilegios se agrupan en autoridades administrativas. Estas autoridadesforman una jerarquía. Cada autoridad incluye un grupo específico de privilegios.Las autoridades administrativas se clasifican en las categorías de autoridades delsistema, de base de datos y de colección. La autoridad administrativa de más altonivel es SYSADM. Cada nivel de autoridad incluye los privilegios de todas lasautoridades de nivel más bajo.

Las autoridades del sistema que se describen a continuación se clasifican de másalta a más baja:

SYSADMLa autoridad de administración del sistema incluye todos los privilegios deDB2 (salvo unos pocos reservados para instalación), los cuales se puedenotorgar todos a otros.

SYSCTRLLa autoridad de control del sistema incluye la mayoría de privilegiosSYSADM; excluye los privilegios para leer o modificar datos del usuario.

SYSOPRLa autoridad de operador del sistema incluye los privilegios para emitir lamayoría de mandatos de DB2 y terminar cualquier trabajo de programa deutilidad.

Las autoridades de base de datos que se describen a continuación se clasifican demás alta a más baja:

DBADMLa autoridad de administración de base de datos incluye los privilegiospara controlar una base de datos específica. Los usuarios con autoridad

280 Introducción a DB2 para z/OS

giralte
Resaltado
Page 291: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

DBADM pueden acceder a tablas y modificar o descartar espacios detablas, tablas o índices de la base de datos.

DBCTRLLa autoridad de control de base de datos incluye los privilegios paracontrolar una base de datos específica y ejecutar programas de utilidad quepueden modificar datos de dicha base de datos.

DBMAINTLa autoridad de mantenimiento de base de datos incluye los privilegiospara trabajar con determinados objetos y emitir determinados programasde utilidad y mandatos en una base de datos específica.

PACKADM tiene autoridad de administrador de paquetes para coleccionesdeterminadas.

Conceptos relacionados

“Cómo controlan el acceso a datos los ID de autorización” en la página 274“Cómo mantienen privilegios y autoridades los ID de autorización” en lapágina 274

Utilización de seguridad de varios niveles para controlar elacceso

DB2 proporciona un esquema de seguridad de gran capacidad denominadoseguridad de varios niveles. La seguridad de varios niveles es una política deseguridad que clasifica los datos y usuarios según un sistema de niveles deseguridad jerárquicos y categorías de seguridad no jerárquicas.

La seguridad de varios niveles evita que usuarios no autorizados accedan ainformación de una clasificación superior a su autorización y evita que los usuariosdesclasifiquen información.

Con la seguridad de varios niveles puede definir la seguridad para objetos de DB2y realizar otras comprobaciones, incluidas las comprobaciones de seguridad denivel inferior. Las comprobaciones de seguridad de nivel inferior controlan quéusuarios tienen autorización para ver, modificar o realizar acciones en filas detablas. Con la seguridad de varios niveles no necesita utilizar vistas especiales nivariables de base de datos para controlar la seguridad en el nivel inferior.

Puede crear una etiqueta de seguridad para una fila de tabla definiendo unacolumna de la sentencia CREATE TABLE o ALTER TABLE como la etiqueta deseguridad. Cuando se accede a cada fila, DB2 utiliza RACF para comparar laetiqueta de seguridad de la fila y el usuario para determinar si el usuario tiene laautorización adecuada para acceder a la fila. Las comprobaciones de seguridad denivel de fila se producen cada vez que un usuario emite una sentencia SELECT,INSERT, UPDATE o DELETE para acceder a una tabla con una columna deetiqueta de seguridad o ejecuta una petición de programa de utilidad para datosde una fila protegida mediante una etiqueta de seguridad.

Información relacionada

″Implementación de seguridad de varios niveles con DB2″ (DB2 AdministrationGuide)

Utilización de vistas para controlar el acceso

Los privilegios de tabla DELETE, INSERT, SELECT y UPDATE también se puedenotorgar para una vista. Al crear una vista y otorgar privilegios sobre ésta, sólo

Capítulo 9. Gestión de operaciones de DB2 281

||

Page 292: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

puede proporcionar a un ID el acceso a un subconjunto específico de datos. Estaposibilidad a veces se denomina control de acceso de nivel de campo o sensibilidad denivel de campo.

Ejemplo: Suponga que desea que un ID concreto como, por ejemplo MATH110,pueda extraer determinados datos de la tabla EMP para una investigaciónestadística. Para ser exactos, suponga que desea permitir el acceso a datos como lossiguientes:v De las columnas HIREDATE, JOB, EDL, SALARY, COMM (pero no un nombre o

un número de identificación de empleado)v Sólo para empleados contratados después del 15 de diciembre de 1996v Sólo para empleados con un nivel de formación 14 o superiorv Sólo para empleados cuya ocupación no es MGR o PRS

Puede crear y nombrar una vista que muestre exactamente esta combinación dedatos:CREATE VIEW SALARIES AS

SELECT HIREDATE, JOB, EDL, SALARY, COMMFROM EMPWHERE HIREDATE> '1996-12-15' AND EDLEVEL>= 14AND JOB IS DISTINCT FROM 'MGR' AND JOB IS DISTINCT FROM 'PRS';

A continuación, puede utilizar la sentencia GRANT para otorgar el privilegioSELECT a la vista SALARIES to MATH110:GRANT SELECT ON SALARIES TO MATH110;

Ahora, MATH110 puede ejecutar sentencias SELECT que únicamente consultan elconjunto restringido de datos.

Conceptos relacionados

“Vista que combina información de varias tablas” en la página 232

Utilización de otorgamiento y revocación de privilegios paracontrolar el acceso

La sentencia GRANT de SQL le permite otorgar privilegios explícitamente a los IDde autorización. La sentencia REVOKE le permite revocarlos. Tan solo se puederevocar un privilegio que se haya otorgado explícitamente.

El otorgamiento de privilegios es muy flexible. Por ejemplo, considere losprivilegios de tablas. Puede otorgar todos los privilegios de una tabla a un ID. Deforma alternativa, puede otorgar privilegios separados específicos que permitanque este ID recupere datos de la tabla, inserte filas, suprima filas o actualicecolumnas específicas. Al otorgar o no otorgar estos privilegios en vistas de la tabla,puede determinar de forma eficaz y exacta qué acción un ID puede realizar o noen la tabla.

Puede utilizar la sentencia GRANT para asignar privilegios como se indica acontinuación:v Otorgar privilegios a un único ID o a varios ID en una sentencia.v Otorgar un privilegio específico sobre un objeto en una única sentencia, otorgar

una lista de privilegios u otorgar privilegios sobre una lista de objetos.v Otorgar ALL, para todos los privilegios de acceso a una única tabla o para todos

los privilegios asociados con un paquete específico.

282 Introducción a DB2 para z/OS

|||

|||||

Page 293: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Ejemplos de otorgamiento de privilegios

Los ejemplos siguientes muestran cómo otorgar algunos privilegios del sistema,utilizar privilegios y privilegios de tablas.

Ejemplo de otorgamiento 1: Para otorgar los privilegios de autoridad de operadordel sistema al usuario NICHOLLS, el administrador del sistema utiliza la sentenciasiguiente:GRANT SYSOPR TO NICHOLLS;

Suponga que su empresa decide asociar tareas de trabajos con ID de autorización.

Ejemplo de otorgamiento 2: En los ejemplos siguientes, PKA01 es el ID de unadministrador de paquetes y DBA01 es el ID de un administrador de base dedatos. Suponga que el administrador del sistema utiliza el ID de autorizaciónADMIN, que tiene la autoridad SYSADM, para emitir las siguientes sentenciasGRANT:v GRANT PACKADM ON COLLECTION GOLFS TO PKA01 WITH GRANT OPTION;

Esta sentencia otorga la autoridad PACKADM a PKA01. PKA01 adquiereprivilegios de paquete sobre todos los paquetes de la colección denominadaGOLFS y el privilegio CREATE IN sobre dicha colección. Además, al especificarWITH GRANT OPTION se proporciona a PKA01 la capacidad de otorgar dichosprivilegios a otros.

v GRANT CREATEDBA TO DBA01;

CREATEDBA otorga a DBA01 el privilegio de crear bases de datos y DBA01adquiere la autoridad DBADM sobre dichas bases de datos.

v GRANT USE OF STOGROUP SG1 TO DBA01 WITH GRANT OPTION;

Esta sentencia permite a DBA01 utilizar el grupo de almacenamiento SG1 yotorgar dicho privilegio a otros.

v GRANT USE OF BUFFERPOOL BP0, BP1 TO DBA01 WITH GRANT OPTION;

Esta sentencia permite a DBA01 utilizar las agrupaciones de almacenamientosintermedios BP0 y BP1 y otorgar dicho privilegio a otros.

Ejemplo de otorgamiento 3: Los ejemplos siguientes muestran privilegios de tablaespecíficos que se pueden otorgar a usuarios.v GRANT SELECT ON DEPT TO PUBLIC;

Esta sentencia otorga privilegios SELECT sobre la tabla DEPT. El otorgamientodel privilegio select a PUBLIC proporciona el privilegio a todos los usuarios delservidor actual.

v GRANT UPDATE (EMPNO,DEPT) ON TABLE EMP TO NATZ;

Esta sentencia otorga privilegios UPDATE sobre las columnas EMPNO y DEPTde la tabla EMP al usuario NATZ.

v GRANT ALL ON TABLE EMP TO KWAN,ALONZO WITH GRANT OPTION;

Esta sentencia otorga todos los privilegios sobre la tabla EMP a los usuariosKWAN y ALONZO. La cláusula WITH GRANT OPTION permite a estos dosusuarios otorgar los privilegios de tabla a otros.

Ejemplos de revocación de privilegios

El mismo ID que otorga un privilegio puede revocarlo emitiendo la sentenciaREVOKE. Si dos o más otorgantes otorgan el mismo privilegio a un ID, la

Capítulo 9. Gestión de operaciones de DB2 283

Page 294: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

ejecución de una única sentencia REVOKE no elimina el privilegio de dicho ID.Para eliminar el privilegio, cada ID que ha otorgado explícitamente el privilegiodebe revocarlo explícitamente.

A continuación se proporcionan algunos ejemplos de revocación de privilegios quese han otorgado previamente.

Ejemplo de revocación 1:

v REVOKE SYSOPR FROM NICHOLLS;

Esta sentencia revoca la autoridad SYSOPR del usuario NICHOLLS.v REVOKE UPDATE ON EMP FROM NATZ;

Esta sentencia revoca el privilegio UPDATE sobre la tabla EMP del usuarioNATZ.

v REVOKE ALL ON TABLE EMP FROM KWAN,ALONZO;

Esta sentencia revoca todos los privilegios sobre la tabla EMP de los usuariosKWAN y ALONZO.

Un ID con la autoridad SYSADM o SYSCTRL puede revocar privilegios otorgadospor otros ID.

Ejemplo de revocación 2: Un usuario con la autoridad SYSADM o SYSCTRLpuede emitir las sentencias siguientes:v REVOKE CREATETAB ON DATABASE DB1 FROM PGMR01 BY ALL;

En esta sentencia, el privilegio CREATETAB que tiene el usuario PGMR01 serevoca independientemente de quién o cuántas personas hayan otorgadoexplícitamente este privilegio a este usuario.

v REVOKE CREATETAB, CREATETS ON DATABASE DB1 FROM PGMR01 BY DBUTIL1;

Esta sentencia revoca los privilegios otorgados por DBUTIL1 y deja intactos losmismos privilegios si los ha otorgado cualquier otro ID.

La revocación de privilegios puede ser más complicada. Los privilegios se puedenrevocar como resultado de una revocación en cascada. En este caso, la revocaciónde un privilegio de un usuario también puede hacer que se revoque este privilegiode otros usuarios.

Referencia relacionada

″GRANT″ (Consulta de DB2 SQL)″REVOKE″ (Consulta de DB2 SQL)

Copia de seguridad, recuperación y reinicioAunque la alta disponibilidad de los datos es un objetivo para todos lossubsistemas DB2, es difícil evitar totalmente interrupciones no planificadas. Sinembargo una estrategia correcta de copia de seguridad, recuperación y reiniciopuede reducir el tiempo transcurrido de una interrupción no planificada.

Para reducir la probabilidad y la duración de interrupciones no planificadas, deberealizar copias de seguridad de los datos y reorganizar los datos periódicamentepara maximizar la disponibilidad de los datos para usuarios y programas.

Existen muchos factores que afectan a la disponibilidad de las bases de datos. Acontinuación se proporcionan algunos puntos que debe tener en cuenta:v Debe comprender las opciones de programas de utilidad como COPY y REORG.

284 Introducción a DB2 para z/OS

pablo
Comentario en el texto
Copia de seguridad, recuperación y reinicio
Page 295: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

– Puede recuperar en línea estructuras como, por ejemplo, espacios de tablas,particiones, conjuntos de datos, un rango de páginas, una única página eíndices.

– Puede recuperar espacios de tablas e índices al mismo tiempo para reducir eltiempo de recuperación.

– Con algunas opciones del programa de utilidad COPY, puede leer y actualizarun espacio de tablas mientras se copia.

v Los errores de E/S tienen los siguientes efectos:– Los errores de E/S en un rango de datos no afectan a la disponibilidad del

resto de los datos.– Si se produce un error de E/S mientras DB2 escribe en el registro, DB2 sigue

funcionando.– Si un error de E/S está en el registro activo, DB2 pasa al siguiente conjunto

de datos. Si el error está en el registro de archivado, DB2 asignadinámicamente otro conjunto de datos.

v Los métodos de recuperación tras desastre documentados son cruciales en elcaso de desastres que puedan causar una conclusión completa del subsistemaDB2 local.

v Si se impone a DB2 una única modalidad de operaciones para el conjunto dedatos o registros del programa de arranque, normalmente puede restaurar laoperación dual mientras DB2 sigue en ejecución.

DB2 proporciona métodos amplios para recuperar datos tras errores, anomalías oincluso desastres. Puede recuperar datos a su estado actual o a un estado anterior.Las unidades de datos que se pueden recuperar son espacios de tablas, índices,espacios de índices, particiones y conjunto de datos. También puede utilizarfunciones de recuperación para realizar una copia de seguridad de un subsistemaDB2 o un grupo de compartimiento de datos completos.

El desarrollo de procedimientos de copia de seguridad y de recuperación es críticopara evitar pérdidas de datos costosas y que consumen tiempo. En general,asegúrese de que existan los procedimientos siguientes:v Creación de un punto de coherencia.v Restauración del sistema y objetos de datos en un punto de coherencia.v Copia de seguridad y recuperación del catálogo de DB2 y los datos.v Recuperación de condiciones de sin espacio.v Recuperación de una anomalía de hardware o alimentación.v Recuperación de una anomalía de componente de z/OS.

Además, el sitio debe tener un procedimiento para recuperación en un sitio remotoen caso de un desastre.

Los problemas específicos que necesitan recuperación pueden ser desde un errorinesperado del usuario hasta la anomalía de un subsistema entero. Puedeproducirse un problema en el hardware o software; los daños pueden ser físicos ológicos. A continuación se proporcionan algunos ejemplos:v Si se produce una anomalía del sistema, un reinicio de DB2 restaura la

integridad de los datos. Por ejemplo, puede fallar un subsistema DB2 o unsubsistema conectado. En ambos casos, DB2 se reinicia de forma automática,restituye los cambios no confirmados y finaliza el proceso de los cambiosconfirmados.

Capítulo 9. Gestión de operaciones de DB2 285

Page 296: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Si se produce una anomalía del soporte (por ejemplo, un daño físico en undispositivo de almacenamiento de datos), puede recuperar los datos en el puntoactual.

v Si los datos están dañados lógicamente, el objetivo es recuperar los datos en unpunto en el tiempo anterior a cuando se ha producido el daño lógico. Porejemplo, si DB2 no puede escribir una página en disco debido a un problema deconectividad, la página es lógicamente errónea.

v Si un programa de aplicación finaliza de manera anómala, puede utilizarprogramas de utilidad, registros y copias de imágenes para recuperar los datos aun punto anterior en el tiempo.

La recuperación de objetos de DB2 requiere las copias de imágenes adecuadas yconjuntos de datos de registro de confianza. Puede utilizar varios programas deutilidad y algunas estructuras del sistema para realizar una copia de seguridad yuna recuperación. Por ejemplo, el programa de utilidad REPORT puedeproporcionar parte de la información necesaria durante la recuperación. Tambiénpuede obtener información del inventario del conjunto de datos del programa dearranque (BSDS) de los conjuntos de datos de registro.

Tareas relacionadas

″Procedimientos de recuperación″ (DB2 Administration Guide)Referencia relacionada

″COPY″ (DB2 Utility Guide and Reference)″REORG TABLESPACE″ (DB2 Utility Guide and Reference)″REPORT″ (DB2 Utility Guide and Reference)″RECOVER″ (DB2 Utility Guide and Reference)Información relacionada

″Operación y recuperación″ (DB2 Administration Guide)

Recursos y herramientas de copia de seguridad yrecuperación

DB2 se basa en el registro y el BSDS para realizar un seguimiento de los cambiosen los datos a medida que se producen. Estos recursos proporcionan informacióncrítica durante la recuperación. Otras herramientas importantes necesarias para lacopia de seguridad y la recuperación de datos son varios de los programas deutilidad de DB2.

Utilización de registros

El registro de DB2 registra los cambios en los datos y los sucesos significativos amedida que se producen. DB2 escribe cada registro del archivo de registro en elregistro activo, que es un conjunto de datos de disco. Cuando el conjunto de datosde registro activo se llena, DB2 copia su contenido en el registro de archivado, quees un conjunto de datos de disco o cinta. Este proceso se denomina descarga.

El registro de archivado puede estar formado por un máximo de 10000 conjuntosde datos. Cada registro de archivado es un conjunto de datos secuencial (secuencialfísico) que reside en un disco o volumen de cinta magnética.

Con DB2, puede elegir entre registro cronológico único y registro cronológico dual.Un único registro activo contiene un máximo de 93 conjuntos de datos de registroactivo. Con el registro cronológico dual, DB2 mantiene dos copias idénticas de los

286 Introducción a DB2 para z/OS

giralte
Subrayado
Page 297: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

registros del archivo de registro. El registro cronológico dual es la mejor opciónpara aumentar la disponibilidad.

Utilización del conjunto de datos del programa de arranque

El conjunto de datos del programa de arranque (BSDS) es un repositorio deinformación sobre los conjuntos de datos que contienen el registro. El BSDScontiene la información siguiente:v Un inventario de todos los conjuntos de datos activos y de archivado conocidos

en DB2.DB2 registra los datos sobre el conjunto de datos de registro en el BSDS cadavez que se define un nuevo conjunto de datos de registro de archivado o sereutiliza un conjunto de datos de registro activo. El inventario de BSDS incluyela fecha y hora en que se ha creado el registro, el nombre del conjunto de datos,su estado y otra información. DB2 utiliza esta información para realizar unseguimiento de los conjuntos de datos de registro activo y de archivado. DB2también utiliza esta información para localizar registros del archivo de registropara peticiones de lectura de registro que se producen durante la actividadnormal del subsistema DB2 y durante el proceso de reinicio y recuperación.

v Un inventario de toda la actividad de punto de comprobación reciente que DB2utiliza durante el proceso de reinicio.

v Un registro de comunicaciones del recurso de datos distribuidos (DDF).v Información sobre agrupaciones de almacenamientos intermedios.

Debido a que el BSDS es esencial para la recuperación en el caso de una anomalíade subsistema, DB2 crea automáticamente dos copias del BSDS durante lainstalación. Si es posible, DB2 coloca las copias en volúmenes separados.

Programas de utilidad que dan soporte a copia de seguridad yrecuperación

Los siguientes programas de utilidad se utilizan frecuentemente para copia deseguridad y recuperación:v COPY, QUIESCE, MERGECOPY y BACKUP SYSTEM para copia de seguridadv RECOVER, REBUILD INDEX, REPORT y RESTORE SYSTEM para recuperación

En general, estos programas de utilidad se utilizan para preparar para larecuperación y restaurar los datos. Cada programa de utilidad tiene un rol en elproceso de copia de seguridad y recuperación.

COPY El programa de utilidad COPY crea un máximo de cuatro copias deimagen de espacios de tablas, índices y conjuntos de datos.

Los dos tipos de copias de imagen son los siguientes:v Copia de imagen completa: una copia de todas las páginas de un espacio

de tablas, partición, conjunto de datos o espacio de índice.v Copia de imagen incremental: una copia de únicamente las páginas del

espacio de tablas que han cambiado desde la última utilización delprograma de utilidad COPY.

Mientras se ejecuta COPY, puede utilizar la opción SHRLEVEL paracontrolar si otros programas pueden acceder al espacio de tablas o índice oactualizarlo.v SHRLEVEL REFERENCE proporciona acceso de sólo lectura a otros

programas.

Capítulo 9. Gestión de operaciones de DB2 287

giralte
Subrayado
Page 298: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v SHRLEVEL CHANGE permite a otros programas cambiar el espacio detablas o el espacio de índice.

En general, cuanto mayor sea la frecuencia de copias de imagen, menorserá el tiempo de recuperación. Sin embargo, si realiza copias de imagenfrecuentes, también pasa más tiempo realizando copias.

El programa de utilidad RECOVER utiliza estas copias cuando se recuperaun espacio de tablas o un espacio de índice al punto más reciente en eltiempo o a un punto anterior en el tiempo. La tabla de catálogoSYSIBM.SYSCOPY registra información sobre copias de imagen.

QUIESCEEl programa de utilidad QUIESCE establece un único punto de coherencia,denominado punto de inmovilidad, para uno o más conjuntos de páginas.Para establecer puntos de recuperación regulares para una recuperación deun punto en el tiempo posterior, debe ejecutar QUIESCE con frecuenciaentre ejecuciones regulares de COPY.

MERGECOPYEl programa de utilidad MERGECOPY fusiona copias de imagen que elprograma de utilidad COPY ha producido o copias incorporadas que losprogramas de utilidad LOAD o REORG han producido. MERGECOPYpuede fusionar varias copias incrementales de un espacio de tablas paracrear una copia incremental. También puede fusionar copias incrementalescon una copia de imagen completa para crear una nueva copia de imagencompleta.

BACKUP SYSTEMEl programa de utilidad BACKUP SYSTEM en línea invoca z/OSDFSMShsm (Versión 1 Release 5 o superior). BACKUP SYSTEM copia losvolúmenes en los que residen los datos de DB2 y la información deregistro de DB2 para un subsistema DB2 sin compartimiento de datos opara un grupo de compartimiento de datos de DB2.

RECOVEREl programa de utilidad RECOVER recupera datos al estado actual o a unpunto en el tiempo anterior restaurando una copia y, a continuación,aplicando registros del archivo de registro.

REBUILD INDEXEl programa de utilidad REBUILD INDEX vuelve a construir índices de latabla a la que hacen referencia.

REPORTEl programa de utilidad REPORT proporciona la información necesariapara recuperar un espacio de tablas, un índice o un espacio de tablas ytodos sus índices. También puede utilizar el programa de utilidad REPORTpara obtener información de recuperación sobre el catálogo.

RESTORE SYSTEMEl programa de utilidad RESTORE SYSTEM en línea invoca z/OSDFSMShsm (Versión 1 Release 5 o superior). RESTORE SYSTEM utilizadatos el programa de utilidad BACKUP SYSTEM ha copiado.

También puede utilizar las siguientes herramientas de IBM DB2 e IMS en distintassituaciones de copia de seguridad y recuperación:

IBM Application Recovery Tool for IMS and DB2 DatabasesHerramienta que simplifica y coordina la recuperación de datos de IMS y

288 Introducción a DB2 para z/OS

Page 299: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

DB2 en un punto común, reduciendo de este modo el tiempo y coste derecuperación y disponibilidad de los datos.

DB2 Archive Log AcceleratorHerramienta que reduce la sobrecarga asociada con la gestión del registrode base de datos para equilibrar los aumentos del crecimiento del registrode archivado.

DB2 Change Accumulation ToolHerramienta que restaura de forma rápida objetos de base de datos conprecisión y la mínima interrupción, estableciendo el ámbito y laespecificidad de la creación de copia de imagen mediante la utilización detarjetas de control.

DB2 Log Analysis ToolHerramienta que proporciona una herramienta muy útil para asegurar unaalta disponibilidad y el control completo sobre la integridad de datos. Estaherramienta le permite supervisar los cambios en los datos mediante lacreación automática de informes de los cambios que se realizan en lastablas de base de datos.

DB2 Object RestoreHerramienta que le permite recuperar activos de datos valiosos mediantela restauración rápida de objetos descartados sin tiempo de inactividad,incluso si ya no existen en el catálogo de DB2. Estos objetos descartadospueden incluir bases de datos, espacios de tablas, tablas, índices, datos yautorizaciones de tabla.

Información relacionada

″Operación y recuperación″ (DB2 Administration Guide)

Reinicio de DB2Una clave de la idea de alta disponibilidad consiste en ser capaz de reiniciarrápidamente el subsistema DB2 después de una interrupción no planificada.v Se puede producir algún proceso de reinicio simultáneamente con trabajo nuevo.

Además, puede optar por posponer algún proceso.v Durante un reinicio, DB2 aplica los cambios en los datos de su registro que no se

habían escrito durante el tiempo de anomalía. Parte de este proceso se puedeejecutar en paralelo.

v Puede registrar DB2 en Automatic Restart Manager de OS/390. Este recursoreinicia automáticamente DB2 en caso de que se detenga como resultado de unaanomalía.Información relacionada

″Operación y recuperación″ (DB2 Administration Guide)

Copias de seguridad y comprobaciones de datos regularesLa planificación de copias de seguridad y comprobaciones de datos de formaregular es importante. Cada sitio debe tener una planificación en el lugar adecuadopara comprobar de forma periódica si existen daños en los datos y su coherencia,comprobar la utilización eficaz de las estructuras de almacenamiento y recopilarinformación para ajustar el subsistema DB2 para obtener un rendimiento óptimo.

Específicamente, planifique las actividades siguientes:

Capítulo 9. Gestión de operaciones de DB2 289

Page 300: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Realice copias de seguridad frecuentes para prepararse para situaciones derecuperación potenciales. Debe realizar de forma regular copias de imagencompletas o incrementales de las estructuras de datos de DB2 y de lasestructuras de subsistemas DB2.

v Utilice el programa de utilidad CHECK periódicamente o después de un reiniciocondicional o una recuperación para asegurar la coherencia de los datos yasegurar que los datos no están dañados. Un reinicio condicional le permiteomitir una parte del proceso de registro durante el reinicio de DB2.– El programa de utilidad CHECK DATA comprueba los espacios de tablas

para ver si existen violaciones de restricciones de referencia o decomprobación y notifica esta información. Debe ejecutar CHECK DATAdespués de un reinicio condicional o en una recuperación puntual en eltiempo en todos los espacios de tablas en los que es posible que las tablaspadre y dependientes no estén sincronizadas. También puede ejecutar CHECKDATA para un espacio de tablas base y el correspondiente espacio de tablasLOB.

– El programa de utilidad CHECK INDEX prueba si los índices son coherentescon los datos que indexan. Debe ejecutar CHECK INDEX después de unreinicio condicional o una recuperación puntual en el tiempo en todos losespacios de tablas en los que es posible que los índices no sean coherentescon los datos. También debe utilizar CHECK INDEX antes de ejecutarCHECK DATA para asegurarse de que los índices que CHECK DATA utilizason válidos.

v Ejecute el programa de utilidad REORG cuando es necesario organizar yequilibrar los datos en espacios de índice y espacios de tablas.

v Utilice el programa de utilidad RUNSTATS para recopilar estadísticas sobreobjetos de DB2. DB2 utiliza estas estadísticas para seleccionar la vía de acceso alos datos más eficaz.Conceptos relacionados

“Directrices para la reorganización de datos” en la página 252Información relacionada

″Operación y recuperación″ (DB2 Administration Guide)

Control de los cambios en las bases de datos y de lacoherencia de los datos

Para poder comprender por completo cómo funciona la copia de seguridad y larecuperación, primero debe estar familiarizado con el modo en que DB2 mantienelos datos coherentes cuando se producen cambios en los datos. Los procesos queaseguran la coherencia de los datos incluyen operaciones de confirmación y deretrotracción y bloqueos. Este tema proporciona una visión general sobre cómo lasoperaciones de confirmación y de retrotracción consiguen un punto de coherenciaen los datos. También explica cómo DB2 mantiene la coherencia cuando seintercambian datos entre servidores.

Información relacionada

″Operación y recuperación″ (DB2 Administration Guide)

Confirmación y retrotracción de transaccionesEn cualquier momento, un proceso de aplicaciones puede estar formado por unaúnica transacción. Sin embargo, en la duración de un proceso de aplicacionespueden intervenir muchas transacciones como resultado de operaciones deconfirmación o retrotracción.

290 Introducción a DB2 para z/OS

Page 301: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Una transacción se inicia cuando le leen o escriben datos. Una transacción finalizacon una sentencia COMMIT o ROLLBACK o con el final de un proceso deaplicaciones.v La sentencia COMMIT confirma los cambios realizados en la base de datos

durante la transacción actual y hace que los cambios sean permanentes.DB2 retiene o libera bloqueos adquiridos en nombre de un proceso deaplicaciones, según el nivel de aislamiento que se utiliza y la causa del bloqueo.

v La sentencia ROLLBACK restituye, o cancela, los cambios realizados en la basede datos por la transacción actual y restaura los datos cambiados al estado quetenían antes de iniciarse la transacción.

El inicio y la terminación de una transacción definen puntos de coherencia dentro deun proceso de aplicaciones. Un punto de coherencia es un momento en que todoslos datos recuperables a los que accede un programa de aplicación son coherentescon otros datos. La figura siguiente ilustra estos conceptos.

Cuando una operación de retrotracción es satisfactoria, DB2 restituye los cambiossin confirmar para restaurar la coherencia de datos que existía cuando se inició launidad de trabajo. Es decir, DB2 deshace el trabajo, tal como muestra la figurasiguiente. Si la transacción falla, se inicia la operación de retrotracción.

Una alternativa a la cancelación de una transacción es restituir los cambios a unpunto de salvaguarda. Un punto de salvaguarda es una entidad con nombre querepresenta el estado de los datos en un determinado momento durante unatransacción. Puede utilizar la sentencia ROLLBACK para restituir los cambiosúnicamente a un punto de salvaguarda dentro de la transacción sin finalizar latransacción.

Figura 47. Transacción con una operación de confirmación

Figura 48. Restitución de los cambios de una transacción

Capítulo 9. Gestión de operaciones de DB2 291

Page 302: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

El soporte de punto de salvaguarda simplifica la codificación de lógica deaplicación para controlar la gestión de una colección de sentencias de SQL dentrode una transacción. La aplicación puede establecer un punto de salvaguarda dentrode una transacción. Sin afectar al resultado global de la transacción, la lógica deaplicación puede deshacer los cambios que se han realizado en los datos desde quela aplicación ha establecido el punto de salvaguarda. La utilización de puntos desalvaguarda hace que la codificación de aplicaciones sea más eficaz puesto que noes necesario incluir lógica de contingencia y de ″qué ocurriría si″ en lasaplicaciones.

Tras comprender el proceso de confirmación y retrotracción, la necesidad deconfirmaciones frecuentes en el programa es evidente.

Conceptos relacionados

“Procesos de aplicaciones y transacciones” en la página 47Información relacionada

″Operación y recuperación″ (DB2 Administration Guide)

Actualizaciones coordinadas para mantener la coherencia entreservidoresEn un sistema distribuido, una transacción se puede producir en más de unservidor. Para asegurar la coherencia de los datos, cada subsistema que participaen una única transacción debe coordinar las operaciones de actualización; deberealizar una confirmación o una copia de seguridad.

DB2 utiliza un proceso de confirmación en dos fases con una amplia variedad derecursos como, por ejemplo, bases de datos relacionales a las que se accedemediante DRDA. El soporte de DB2 para confirmación en dos fases también sepuede utilizar desde diferentes entornos de aplicaciones. DB2 puede trabajar conotros entornos de gestión de transacciones z/OS, tales como aplicaciones IMS yCICS y en entornos UNIX, aplicaciones Microsoft Windows y WebSphereApplication Server.

Utilizando la confirmación en dos fases puede actualizar una tabla y datos de DB2de bases de datos no DB2 dentro de la misma transacción. El proceso está bajo elcontrol de uno de los subsistemas denominado coordinador. Los otros sistemasimplicados son los participantes. Por ejemplo, IMS, CICS o RRS siempre es elcoordinador en interacciones con DB2 y DB2 siempre es el participante. DB2siempre es el coordinador en interacciones con TSO y, en este caso, controla porcompleto el proceso de confirmación. En interacciones con otros DBMS, incluidosotros subsistemas DB2, los subsistemas DB2 locales pueden ser el coordinador o unparticipante.

Conceptos relacionados

“Cómo se coordinan las actualizaciones entre sistemas distribuidos” en lapágina 315Información relacionada

″Operación y recuperación″ (DB2 Administration Guide)

Sucesos del proceso de recuperaciónDB2 puede recuperar un conjunto de páginas utilizando una copia de seguridad.Además, el registro de recuperación de DB2 contiene un registro de todos loscambios que se han realizado en el conjunto de páginas. Si es necesario recuperarlos datos, DB2 restaura la copia de seguridad y aplica los cambios del registro alconjunto de páginas a partir del momento de la copia de seguridad.

292 Introducción a DB2 para z/OS

Page 303: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para recuperar un conjunto de páginas, el programa de utilidad RECOVER sueleutilizar estos elementos:v Una copia de imagen completa; que es una copia completa del conjunto de

páginas.v Sólo para espacios de tablas, cualquier copia de imagen incremental posterior

que resuma todos los cambios que se han realizado en el espacio de tablas desdeel momento en que se ha realizado la copia de imagen anterior.

v Todos los registro del archivo de registro para el conjunto de páginas que se hancreado desde la copia de imagen más reciente.

La figura siguiente muestra una visión general de un proceso de recuperación queincluye un ciclo completo de copias de imágenes.

La tabla de catálogo SYSIBM.SYSCOPY puede registrar muchos ciclos completos.El programa de utilidad RECOVER utiliza la información de la tabla de catálogoSYSIBM.SYSCOPY para las siguientes finalidades:v Restaurar el conjunto de páginas con los datos de la copia de imagen completa

más recientev Sólo para espacios de tablas, aplicar todos los cambios que se resumen en

cualquier copia de imagen incremental posteriorv Aplicar al conjunto de páginas todos los cambios registrados en el registro,

empezando por la copia de imagen más reciente

Si el registro se ha dañado o descartado, o si se han cambiado datos de formaerrónea y, a continuación, se han confirmado, puede realizar una recuperación a unpunto en el tiempo determinado. Este tipo de recuperación limita el rango deregistro del archivo de registro que el programa de utilidad RECOVER debeaplicar.

Información relacionada

″Operación y recuperación″ (DB2 Administration Guide)

Optimización de la disponibilidad durante la copia deseguridad y la recuperación

Debido a que la copia de seguridad y la recuperación afectan a la disponibilidadde los datos, debe comprender las implicaciones de varias actividades, queincluyen los programas de utilidad en ejecución, el registro cronológico, elarchivado, la recuperación después de un desastre y el reinicio de DB2.

Ejecución de programas de utilidad

v Para reducir el tiempo de recuperación puede utilizar el programa deutilidad RECOVER para recuperar una lista de objetos en paralelo.

v Para reducir el tiempo de copia, utilice el programa de utilidad COPYpara crear copias de imagen de una lista de objetos en paralelo.

Figura 49. Visión general de la recuperación de DB2

Capítulo 9. Gestión de operaciones de DB2 293

Page 304: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Registro cronológico

v Para acelerar la recuperación, coloque los registros activos o dearchivado en disco. Si tiene espacio suficiente, utilice más registrosactivos y registros activos más grandes.

v Haga que las agrupaciones de almacenamientos intermedios y losalmacenamientos intermedios de registro sean suficientemente grandes.

v Si se impone a DB2 una única modalidad de operación para el conjuntode datos o registros del programa de arranque, normalmente puederestaurar la operación dual mientras DB2 sigue en ejecución. El registrocronológico activo dual mejora la posibilidad de recuperación en el casode una anomalía de disco. Puede colocar copias de los conjuntos dedatos de registro activo y de los conjuntos de datos del programa dearranque en diferentes unidades de disco.

v Si se produce un error de E/S mientras DB2 escribe en el registro, DB2sigue funcionando. Si el error está en el registro activo, DB2 pasa alsiguiente conjunto de datos. Si el error está en el registro de archivado,DB2 asigna dinámicamente otro conjunto de datos de registro dearchivado.

ReinicioMuchos procesos de recuperación implican un reinicio de DB2. Puedeminimizar el tiempo de reinicio de DB2 después de una interrupción paraque el subsistema de DB2 se active y ejecute de forma rápida.v Para sistemas sin compartimiento de datos puede limitar la actividad de

restitución durante el reinicio de DB2. Puede aplazar la restitución de lastransacciones de ejecución larga hasta que el subsistema DB2 estéoperativo.

v Se puede producir algún proceso de reinicio simultáneamente contrabajo nuevo. Puede optar por posponer algún proceso para que DB2vuelva a estar en ejecución más rápidamente.

v Durante un reinicio, DB2 aplica cambios en los datos desde el registro.Esta técnica asegura que los cambios en los datos no se pierdan, inclusosi no se han escrito algunos datos durante la anomalía. Parte del trabajode aplicar cambios del registro se puede ejecutar en paralelo.

v Puede registrar DB2 con Automatic Restart Manager de z/OS. Esterecurso reinicia automáticamente DB2 en caso de una anomalía.

ArchivadoSi archiva en cinta, asegúrese de que tiene suficientes unidades de cintas. Acontinuación, DB2 no necesita esperar para una unidad disponible en laque montar una cinta de archivado durante la recuperación.

Recomendación: Para una recuperación rápida, mantenga como mínimo 24horas de registros en los registros activos y mantenga en disco tantosregistros de archivado como sea posible (por ejemplo, 48 horas deregistros). Un archivado en disco y permitir que HSM (Hierarchical StorageManagement) migre en cinta es una práctica correcta.

Recuperación tras desastreEn el caso de un desastre que produce una conclusión completa delsubsistema DB2 local, el sitio necesita asegurar que los procedimientosdocumentados están disponibles para una recuperación tras desastre. Porejemplo, un procedimiento para una recuperación externa mantiene el sitiopreparado.

294 Introducción a DB2 para z/OS

Page 305: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Opcionalmente, puede utilizar DFSMShsm para gestionar de forma automática ladisponibilidad de espacio y datos entre los dispositivos de almacenamiento delsistema. Por ejemplo, DFSMShsm gestiona espacio de disco trasladando conjuntosde datos que no se han utilizado recientemente a un almacenamiento menoscostoso. DFSMShsm hace que estén disponibles los datos para la recuperación alcopiar de forma automática los conjuntos de datos nuevos o cambiados en cinta odisco.

Información relacionada

″Operación y recuperación″ (DB2 Administration Guide)

Capítulo 9. Gestión de operaciones de DB2 295

Page 306: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 10. DB2 y la web

Esta información proporciona una visión general de alto nivel sobre los conceptosy componentes para el entorno web en el que actúa DB2. Destaca una de lasherramientas basadas en la web de la familia de productos de WebSphere:WebSphere Studio Application Developer.

La web ha cambiado el modo en que las empresas dirigen sus negocios. Lascorporaciones tanto grandes como pequeñas, utilizan sitios web para describir losservicios y productos que proporcionan. Las empresas de entrega permiten a losclientes realizar un seguimiento del progreso de sus entregas en línea. Los clientesde bancos pueden ver sus cuentas e iniciar transacciones en línea cómodamentedesde su casa. Las empresas distribuyen información sobre los programas, laspolíticas y las noticias de la empresa utilizando intranets de la empresa. Losaccionistas individuales realizan pedidos de compra y venta en línea mediante suscorredurías cada día. La venta al por menor en línea sigue aumentando supopularidad. Los compradores utilizan software especializado para los siguientestipos de transacciones entre empresas:v Seguimiento de la actividad de adquisiciónv Selección inteligente de proveedores preferidosv Inicio electrónico de transacciones entre empresas con proveedores

Estos tan solo son unos cuantos ejemplos de las numerosas formas en que lasempresas se benefician de la gran utilidad de la web transformándose a sí mismosen negocios bajo demanda.

El mundo de los negocios bajo demanda puede parecer un poco como un puzzle.Antes de trabajar en un puzzle, necesita saber cómo es la imagen del puzzle unavez acabado. Del mismo modo, antes de crear o trabajar en una aplicación denegocio bajo demanda, debería tener un alto nivel de conocimiento del entornoglobal. También debería tener información sobre los distintos productos yherramientas de dicho entorno. Probablemente el desarrollo y la implementaciónde la aplicación implica productos y herramientas en más de un sistema operativo(por ejemplo, los sistemas operativos z/OS, Linux y Windows).

Puede utilizar los siguientes productos, herramientas y lenguajes en un entorno dee-business:v Familia de productos de Rationalv DB2 Developer Workbenchv IMSv Navegador webv Familia de productos de DB2v CICSv Servicios webv Familia de productos de WebSphere, incluidos los productos de WebSphere

Information Integrationv DB2 Database Add-Ins for Visual Studio 2005v Lenguajes: C, C++, C#, COBOL, Java, .NET, PHP, Perl, PL/I, Ruby on Rails,

TOAD y Visual Basic

© Copyright IBM Corp. 2001, 2008 297

||

Page 307: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

El acceso a los datos es central en la gran mayoría de aplicaciones de negocio bajodemanda. Del mismo modo, la lógica empresarial, que transforma datos eninformación o que define una transacción empresarial, es otro componente clave.Muchas organizaciones ya almacenan una gran cantidad de datos críticos en DB2for z/OS. Por lo general también realizan una inversión considerable en programasde aplicaciones que acceden y manipulan estos datos. Las empresas que tienenintención de trasladar partes de su empresa a la web se enfrentan al reto dedeterminar cómo basarse en su base de datos y lógica empresarial existentes ycómo ampliar la utilidad de esta base utilizando la web.

El principal servidor de aplicaciones de IBM, WebSphere Application Server, ayudaa que las empresas ″habiliten para la web″ sus datos y lógica empresarial.WebSphere Application Server da soporte a programación del servidor, sobre laque aprenderá más en esta información.

Utilizando productos y herramientas basados en la web, las empresas puedencrear, desplegar y gestionar aplicaciones empresariales bajo demanda móviles.

Entorno de aplicaciones webLas aplicaciones basadas en la web se ejecutan en un servidor de aplicaciones weby acceden a los datos de un sistema de información empresarial como, porejemplo, un servidor de bases de datos de DB2. Los componentes de lasaplicaciones basadas en la web se dividen entre varios niveles o capas.

Esta información describe los distintos componentes y característicasarquitectónicas de las aplicaciones web y la función que tiene DB2 en el entorno deaplicaciones web.

En general, la interfaz de usuario está en el primer nivel, los programas deaplicaciones están en el nivel medio y los orígenes de datos disponibles para losprogramas de aplicaciones están el nivel del sistema de información empresarial. Eldesarrollo de aplicaciones basadas en la web en una arquitectura de varios nivelesse denomina programación del servidor.

La escritura de programas del servidor es complicada y requiere una comprensióndetallada de las interfaces de servidor web. Afortunadamente, existen servidoresde aplicaciones como, por ejemplo, WebSphere Application Server, que estándisponibles para simplificar esta tarea. Cada uno de estos servidores deaplicaciones define un entorno de desarrollo para aplicaciones web y proporcionaun entorno de tiempo de ejecución en el que se pueden ejecutar las aplicacionesweb. El código de servidor de aplicaciones, que proporciona el entorno de tiempode ejecución, da soporte a la interfaz adecuada para interactuar con el servidorweb. Con servidores de aplicaciones se pueden escribir programas para el entornode tiempo de ejecución del servidor de aplicaciones. Los desarrolladores de estosprogramas pueden centrarse en la lógica empresarial de la aplicación web, en lugarde hacer que la aplicación trabaje con un servidor web.

Componentes de aplicaciones basadas en la webTodas las aplicaciones de base de datos basadas en la web tienen tres componentesprimarios: un navegador web (o cliente), un servidor de aplicaciones web y unservidor de bases de datos.

Las aplicaciones de base de datos basadas en la web se basan en un servidor debases de datos, que proporciona los datos para la aplicación. El servidor de bases

298 Introducción a DB2 para z/OS

Page 308: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

de datos a veces también proporciona lógica empresarial en forma deprocedimientos almacenados. Los procedimientos almacenados puedenproporcionar ventajas de rendimiento significativas, en especial en una arquitecturade varios niveles. Además de servidores de bases de datos, otros componentes delsistema de información empresarial incluyen bases de datos de IMS, mensajes deWebSphere MQ y registros de CICS.

Los clientes manejan la lógica de presentación, que controla el modo en que losusuarios interactúan con la aplicación. En algunos casos, el cliente valida la entradaproporcionada por el usuario. Las aplicaciones web a veces integran applets Javaen la lógica del cliente para mejorar el nivel de presentación.

AppletPrograma Java que forma parte de una página HMTL (Hypertext MarkupLanguage). (HTML es el método estándar para presentar datos web a losusuarios.) Los applets funcionan con navegadores habilitados para Javacomo, por ejemplo, Microsoft Internet Explorer; se cargan cuando seprocesa la página HTML.

Los servidores de aplicaciones web gestionan la lógica empresarial. La lógicaempresarial, generalmente escrita en Java, da soporte a aplicaciones de variosniveles. El servidor de aplicaciones web puede gestionar peticiones de variosclientes remotos. El nivel de aplicación web puede incluir archivos JSP (JavaServerPages), servlets Java, componentes de Enterprise JavaBeans (EJB) o servicios web.

JSP Tecnología que proporciona un modo coherente para ampliar lafuncionalidad del servidor web y crear contenido web dinámico. Lasaplicaciones web que se desarrollan con tecnología JSP son independientesdel servidor y la plataforma.

ServletPrograma Java que responde a las peticiones de cliente y genera respuestasdinámicamente.

EJB Arquitectura de componentes para crear aplicaciones distribuidas con elmodelo de programación de Java. Los componentes de transacciones deservidor se pueden volver a utilizar y proporcionan portabilidad entreservidores de aplicaciones.

Servicios webAplicaciones modulares independientes que proporcionan una interfazentre el proveedor y el consumidor de recursos de aplicaciones. Puede leermás sobre servicios web más adelante en esta información.

Características arquitectónicas de aplicaciones basadas en laweb

Algunas aplicaciones basadas en la web utilizan una arquitectura de dos niveles yotras utilizan una arquitectura de n niveles formada por tres o más niveles.

Arquitectura de dos nivelesEn una arquitectura de dos niveles, el cliente está en el primer nivel. Elservidor de bases de datos y el servidor de aplicaciones web residen en lamisma máquina servidor, que es el segundo nivel. El segundo nivelproporciona los datos y ejecuta la lógica empresarial para la aplicaciónweb. Las organizaciones que optan por esta arquitectura normalmenteprefieren consolidar las posibilidades de las aplicaciones y las posibilidadesde las bases de datos en un único nivel. El segundo nivel es el responsable

Capítulo 10. DB2 y la web 299

Page 309: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

de proporcionar las características de disponibilidad, escalabilidad yrendimiento para el entorno web de la organización.

Arquitectura de n nivelesEn una arquitectura de n niveles, los objetos de aplicaciones estándistribuidos entre varios niveles lógicos, generalmente tres o cuatro.

En una arquitectura de tres niveles, el servidor de bases de datos nocomparte una máquina servidor con el servidor de aplicaciones web. Elcliente está en el primer nivel, igual que en una arquitectura de dosniveles. En el tercer nivel, el servidor de bases de datos proporciona losdatos. Por motivos de rendimiento, el servidor de bases de datos sueleutilizar procedimientos almacenados para manejar parte de la lógicaempresarial. El servidor de aplicaciones reside en el segundo nivel. Elservidor de aplicaciones maneja la parte de la lógica empresarial que nonecesita la funcionalidad que proporciona el servidor de bases de datos. Enesta opción, los componentes de hardware y software del segundo y tercernivel comparten la responsabilidad de las características de disponibilidad,escalabilidad y rendimiento del entorno web.

En una arquitectura de cuatro niveles, puede existir más de un nivel lógicodentro del nivel medio o dentro del nivel del sistema de informaciónempresarial. Por ejemplo:v El nivel medio está formado por más de un servidor web. Como

alternativa, un cortafuegos intermedio puede separar el servidor web delservidor de aplicaciones en el nivel medio.

v Un servidor de bases de datos del tercer nivel puede ser la fuente de losdatos para un servidor web del nivel medio y otro servidor de bases dedatos del cuarto nivel es la fuente de datos para un servidor de bases dedatos del tercer nivel.

Si examina todas las aplicaciones web disponibles en la actualidad, encontraríamuchas variaciones. Por ejemplo, los servidores de bases de datos se puedenejecutar en diversas plataformas, al igual que los clientes. Los diseñadores deaplicaciones web utilizan una diversidad de herramientas, que repercuten en elfuncionamiento y el aspecto de las aplicaciones. Empresas diferentes eligenherramientas diferentes. Las piezas del puzle que forman los puzles de unaempresa terminan siendo muy diferentes de las de otras empresas.

En muchos casos, el cliente y el servidor para una aplicación web están en sistemasoperativos diferentes. Por ejemplo, el cliente puede estar en un sistema operativobasado en estación de trabajo como, por ejemplo, Windows XP o UNIX. El servidorpara la aplicación también puede estar en un servidor basado en estación detrabajo o puede estar en un servidor empresarial como, por ejemplo, z/OS. Lafigura siguiente muestra la conectividad de dos niveles entre un cliente basado enestación de trabajo y ambos tipos de servidores.

300 Introducción a DB2 para z/OS

Page 310: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

El navegador utiliza Hypertext Transfer Protocol (HTTP) para reenviar peticiones deusuario a una máquina servidor del segundo nivel. (HTTP es un protocolo decomunicación que se utiliza en la web.) El servidor web del segundo nivel invocael servidor de bases de datos local para satisfacer los requisitos de datos de laaplicación.

La figura siguiente ilustra la utilización de una arquitectura de n niveles. En esteejemplo, hay dos servidores web instalados en el nivel medio: un servidor HTTP,como por ejemplo IBM HTTP Server, y un servidor de aplicaciones web, como porejemplo WebSphere Application Server. El servidor de aplicaciones da soporte a losdistintos componentes que pueden ejecutarse en el nivel medio (archivos JSP,servlets, EJBs y servicios web). Cada uno de estos componentes realiza funcionesque dan soporte a aplicaciones cliente.

En el entorno WebSphere Application Server, un dispositivo del primer nivel, comopor ejemplo un navegador, puede utilizar HTTP para acceder al servidor HTTP enel nivel medio. A continuación, el servidor HTTP puede reproducir la salidaproducida por JSP, servlets y otros componentes que se ejecutan en un entornoWebSphere Application Server. Los JSP o servlets pueden utilizar JDBC, SQLJ oEJBs (indirectamente) para acceder a los datos de un servidor de bases de datosDB2 del tercer nivel.

Figura 50. Conectividad de dos niveles entre un cliente basado en estación de trabajo ydiferentes servidores de bases de datos

Capítulo 10. DB2 y la web 301

Page 311: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Ventajas de DB2 para z/OS como servidorPara cada tipo de arquitectura, DB2 for z/OS proporciona una solución eficaz paraaplicaciones web.

De manera específica, la utilización de DB2 for z/OS como servidor de bases dedatos para una aplicación web proporciona las siguientes ventajas:v Escalabilidad excepcional. El volumen de transacciones en cualquier aplicación

web varía. Las cargas de transacciones pueden aumentar, o alcanzar mayoractividad, en diferentes horas del día, en diferentes días del mes o en diferentesmomentos del año. Las cargas de transacciones también tienden a aumentar conel tiempo. En un entorno Sysplex paralelo, DB2 for z/OS puede manejar elrango completo de cargas de transacciones con muy poco o ningún impacto enel rendimiento. Generalmente un usuario individual no se da cuenta de loocupado que está el sistema en un punto en el tiempo determinado.

v Alto grado de disponibilidad. Cuando DB2 for z/OS se ejecuta en un entornoSysplex paralelo, la disponibilidad de los datos y las aplicaciones es muy alta. Siun subsistema DB2 no está disponible, por ejemplo, debido a mantenimiento,otros subsistemas DB2 del Sysplex toman el relevo de la carga de trabajo. Losusuarios no se dan cuenta de que parte del sistema no está disponible porquetienen acceso a los datos y aplicaciones que necesitan.

v Capacidad de gestionar una carga de trabajo mixta. DB2 for z/OS gestiona deforma eficaz y con un buen rendimiento las prioridades de una carga de trabajomixta como resultado de su estrecha integración con z/OS Workload Manager.

v Protección de la integridad de los datos. Los usuarios de DB2 for z/OS puedenbeneficiarse de la eficacia conocida del producto en las áreas de seguridad yfiabilidad.

Figura 51. Conectividad de n niveles con un cliente basado en estación de trabajo, dosservidores web y diferentes servidores de bases de datos

302 Introducción a DB2 para z/OS

Page 312: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Aplicaciones basadas en la web y WebSphere Studio ApplicationDeveloper

WebSphere Studio Application Developer ofrece características que losdesarrolladores pueden utilizar para crear aplicaciones basadas en la web.

WebSphere Studio Application Developer es una herramienta diseñada paradesarrolladores de aplicaciones Java y J2EE que requieren soporte de servicios web,XML y web integrado. Esta herramienta incluye varios recursos y conectoresincorporados que facilitan la tarea de acceso a los datos almacenados en bases dedatos de DB2. (Un conector es la unidad más pequeña de función que se puededesarrollar y transmitir de forma independiente.)

Cada producto de WebSphere Studio ofrece los mismos entornos de desarrollointegrados y una base común de herramientas. Cada producto se basa en lafunción de otro producto con herramientas de conector adicionales. Por ejemplo,WebSphere Studio Application Developer incluye toda la función de WebSphereStudio Site Developer además de conectores para una función adicional como, porejemplo, soporte de Enterprise JavaBean.

WebSphere Studio Site DeveloperOfrece un entorno de desarrollo visual que facilita la colaboración enequipos de desarrollo de webs.

WebSphere Studio Application DeveloperProporciona un entorno de desarrollo para desarrolladores de aplicacionesJava y añade herramientas para el desarrollo de aplicaciones EJB.

WebSphere Studio Application Developer Integrated EditionIncluye la función de WebSphere Studio Application Developer y añadeherramientas para la integración con sistemas de fondo.

WebSphere Studio Enterprise DeveloperIncluye la función de WebSphere Studio Application Developer IntegratedEdition y una función adicional como, por ejemplo, herramientas dedesarrollo de aplicaciones z/OS.

WebSphere Studio Application Developer proporciona un IDE para crear, probar,depurar e implementar muchos componentes diferentes. Estos componentesincluyen bases de datos, web, XML y componentes Java. Los componentes Javaincluyen aplicaciones Java J2EE, archivos JSP, EJB, servlets y applets.

Debido a que WebSphere Studio Application Developer se puede trasladar entresistemas operativos, las aplicaciones que se desarrollan con WebSphere StudioApplication Developer son muy escalables. Esto significa que se pueden desarrollaraplicaciones en un sistema (por ejemplo, AIX) y ejecutarlas en sistemas mucho másgrandes (por ejemplo, z/OS).

WebSphere Studio Application Developer da soporte al modelo de servidor de Java2 Enterprise Edition (J2EE). J2EE es un conjunto de especificaciones para trabajarcon aplicaciones de varios niveles en la plataforma J2EE. La plataforma J2EEincluye servicios, API y protocolos para desarrollar aplicaciones basadas en la webde varios niveles. La figura siguiente muestra un entorno de desarrollo deaplicaciones de varios niveles que da soporte a aplicaciones web y a aplicacionesJ2EE.

Capítulo 10. DB2 y la web 303

||||||

Page 313: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Cada producto de WebSphere Studio utiliza perspectivas. Una perspectiva es unconjunto de vistas, editores y herramientas que los desarrolladores utilizan paramanipular recursos. Puede utilizar algunas de estas perspectivas para acceder abases de datos de DB2.

Perspectiva de datosLos desarrolladores utilizan la perspectiva de datos para gestionardefiniciones y conexiones de bases de datos que necesitan para eldesarrollo de aplicaciones. Puede conectarse a bases de datos de DB2 eimportar definiciones de bases de datos, esquemas, tablas, procedimientosalmacenados, funciones definidas por el usuario de SQL y vistas.WebSphere Studio Application Developer proporciona un editor de SQLque le ayuda a crear y modificar sentencias de SQL.

Mediante la perspectiva de datos, los desarrolladores pueden crear lossiguientes tipos de rutinas de DB2:v Procedimientos almacenados de SQL y Javav Funciones definidas por el usuario de SQLv Funciones definidas por el usuario que leen o reciben mensajes de colas

de mensajes de WebSphere MQ

Cuando los desarrolladores escriben procedimientos almacenados queutilizan JDBC o SQL, a continuación pueden crear un derivador para elprocedimiento almacenado como un bean de Java o como un métododentro de un EJB de sesión. La derivación de un procedimientoalmacenado evita la duplicación de su lógica empresarial en otroscomponentes y puede dar como resultado una mejora en el rendimiento.(Un derivador encapsula un objeto y modifica la interfaz o elcomportamiento del objeto de algún modo. Los beans de sesión son beans deempresa que solamente existen durante una sesión de cliente/servidor.)

Perspectiva de J2EELos desarrolladores trabajan con la perspectiva de J2EE para crearaplicaciones de EJB para acceder a DB2. La perspectiva de J2EE da soportea EJB 1.1 y EJB 2.0. Esta perspectiva proporciona herramientas gráficaspara visualizar y editar esquemas de DB2 que ayudan a los desarrolladoresa correlacionar los EJB de entidad con tablas de DB2. Los beans de entidadson beans de empresa que contienen datos permanentes.

WebSphere Studio Application Developer también proporciona unacaracterística que automáticamente genera un método de EJB de sesiónpara invocar un procedimiento almacenado de DB2.

Figura 52. Entorno de desarrollo de aplicaciones web

304 Introducción a DB2 para z/OS

Page 314: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Perspectiva de webLos desarrolladores utilizan la perspectiva de web para generar páginasweb a partir de sentencias de SQL. WebSphere Studio ApplicationDeveloper proporciona una biblioteca de códigos de acciones de JSP paraacceder a bases de datos. Una biblioteca de códigos define los códigospersonalizados que se utilizan en un documento. Mediante las bibliotecasde códigos de JSP, los desarrolladores pueden ejecutar sentencias de SQL yprocedimientos almacenados. Pueden actualizar o suprimir con facilidadlos conjuntos de resultados que las sentencias de SQL o los procedimientosalmacenados devuelven.

Perspectiva de servicios webLos desarrolladores utilizan un editor de XML incorporado para creararchivos XML para construir aplicaciones de servicios web de DB2 basadasen sentencias de SQL.

Conceptos relacionados

“Desarrollo de aplicaciones de DB2 en entornos de desarrollo integrados” en lapágina 147

XML y DB2Puede utilizar XML en una base de datos de DB2. XML, que significa ExtensibleMarkup Language, es un lenguaje de códigos basado en texto. Su estilo es similaral de HTML, salvo que los usuarios de XML pueden definir sus propios códigos.

El crecimiento explosivo de Internet ha sido un catalizador para el desarrollo deXML y su aceptación en la industria. Debido al aumento drástico de aplicacionesde negocio bajo demanda, las organizaciones deben intercambiar datos en unformato abierto y eficaz. Las opciones disponibles antes del desarrollo de XMLeran Standard Generalized Markup Language (SGML) y HTML. SGML esdemasiado complejo para una utilización generalizada en la web. HTML esadecuado para la presentación de páginas web, pero no está diseñado para unintercambio de información sencillo. XML ha surgido como una simplificación útily flexible de SGML que permite la definición y el proceso de documentos paraintercambiar datos entre empresas, entre aplicaciones y entre sistemas.

Puede imaginar HTML como un medio para comunicar información entre sistemasy personas. Puede imaginar XML como un medio para comunicar informaciónentre sistemas. Puede convertir XML en HTML para que las personas puedan verla información.

Información relacionada

″Programación para XML″ (DB2 for z/OS XML Guide)

Ventajas de utilizar XML con DB2 para z/OSLas organizaciones pueden disfrutar de numerosas ventajas utilizando XML conDB2 para z/OS, que incluyen relaciones de clientes mejoradas, operacionesinternas optimizadas, sociedades maximizadas y opciones en herramientas ysoftware.

Con XML, las organizaciones pueden conseguir las siguientes ventajas:

Relaciones de clientes mejoradasXML le permite entregar información personalizada a los clientes, habilitarnuevos canales de distribución y responder más rápidamente a lasnecesidades de los clientes.

Capítulo 10. DB2 y la web 305

Page 315: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Operaciones internas optimizadasCon XML puede dirigir datos empresariales desde los sistemas existentes ala web. XML le permite automatizar transacciones que no requiereninteracción humana.

Sociedades maximizadasDebido a la utilización extendida de XML en la industria, puede compartirinformación con facilidad con proveedores, compradores y socios.

Herramientas y softwarePuede beneficiarse de muchas herramientas y software XML como, porejemplo, WebSphere Studio, analizadores y procesadores XML , la funciónde publicación SQL/XML y DB2 XML Extender.

Existen vocabularios de XML para industrias específicas como ayuda para que lasorganizaciones de dichas industrias puedan estandarizar su utilización de XML.Un vocabulario de XML es una descripción diseñada para una finalidad específica.La utilización extendida en la industria de XML ha tenido como resultadotransacciones entre empresas más eficaces y con mayor rendimiento.

Información relacionada

″Programación para XML″ (DB2 for z/OS XML Guide)

Modos de utilizar XML con DB2 para z/OSLas organizaciones utilizan XML para procesar documentos y publicar informaciónen la web. Esta información proporciona una visión general de las distintasfunciones herramientas de publicación que le ayudan a integrar XML con datos deDB2.

Para integrar XML con datos de DB2 puede utilizar las funciones de publicación deSQL/XML y los recursos de DB2 XML Extender que están específicamentediseñados para trabajar con DB2. El soporte de XML nativo, o pureXML, en DB2proporciona unas posibilidades versátiles para gestionar los datos XML. DB2almacena y procesa XML en su formato jerárquico inherente, evitando de estemodo las limitaciones de rendimiento y flexibilidad que se producen cuando sealmacena XML como texto en varios CLOB o se correlaciona con tablasrelacionales.

Las funciones de publicación de SQL/XML permiten a las aplicaciones generardatos XML a partir de datos relacionales. Con DB2 XML Extender puede publicarXML a partir de datos relacionales, almacenar datos XML intactos o descompuestos(fragmentados) en tablas de DB2 o manipular y transformar documentos XML. Porejemplo, XML es una opción popular cuando se desea enviar datos de DB2 a otrosistema o a otra aplicación en un formato común. Puede elegir uno de los distintosmodos de publicar documentos XML:v Utilizar funciones de SQL/XML integradas con DB2.

DB2 integra funciones de publicación de SQL/XML en el producto DB2. Unconjunto de funciones incorporadas de SQL permite a las aplicaciones generardatos XML a partir de datos de DB2 con un alto rendimiento. Las funciones depublicación de SQL/XML pueden reducir los esfuerzos de desarrollo deaplicaciones en la generación de XML para integración de datos, intercambio deinformación y servicios web.

v Beneficiarse del soporte de Servicios web de DB2.Los Servicios web proporcionan un medio para que los programas puedaninvocar a otros programas, generalmente en Internet, que transmiten parámetrosde entrada y generan resultados como XML.

306 Introducción a DB2 para z/OS

||||||||

Page 316: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Utilizar una herramienta para codificar XML.WebSphere Studio proporciona un entorno de desarrollo para publicardocumentos XML a partir de datos relacionales.

Las funciones de DB2 XML Extender le permiten almacenar documentos XML enDB2, de forma intacta o como datos relacionales. DB2 XML Extender proporcionamétodos para transformaciones automáticas entre datos XML y relacionales. Puedealmacenar documentos XML enteros en bases de datos de DB2 como datos de tipocarácter o en archivos externos que DB2 gestiona. Específicamente, DB2 XMLExtender proporciona:v Tipos de datos que le permiten almacenar documentos XML en bases de datos

de DB2v Funciones que le ayudan a trabajar con estos documentos estructuradosv Funciones de recuperación, que le permiten recuperar un documento XML

entero o elementos o atributos individualesConceptos relacionados

“Visión general de pureXML” en la página 24“SOA, XML y servicios web”Información relacionada

″Programación para XML″ (DB2 for z/OS XML Guide)

SOA, XML y servicios web

Los datos XML son un ingrediente clave para soluciones basadas en ServiceOriented Architecture (SOA). Puede utilizar aplicaciones SOA basadas en XMLpara crear servicios web basados en XML.

Los servicios web son conjuntos de funciones empresariales que las aplicaciones uotros servicios web pueden invocar a través de Internet. Un servicio web realiza unservicio útil en nombre de un peticionario. Dicho servicio puede incluir variasempresas e industrias.

Ejemplo: Suponga que un sistema de reservas de una línea aérea es un servicioweb. Al ofrecer este servicio, la línea aérea hace que sea más fácil para sus clientesintegrar el servicio en sus aplicaciones de planificación de viajes. Un proveedortambién puede utilizar el servicio para que sus compradores puedan acceder a suinformación de inventario y precios.

Los servicios web le permiten acceder a datos de diversas base de datos yubicaciones de Internet. DB2 puede actuar como un peticionario de servicios webal permitir que las aplicaciones de DB2 invoquen servicios web mediante SQL.DB2 también puede actuar como un proveedor de servicios web mediante WORF(infraestructura de tiempo de ejecución de objeto de servicios web) de DB2 encombinación con WebSphere Application Server, lo cual le permite acceder aprocedimientos almacenados y datos de DB2 como servicios web.

Las funciones que los servicios web realizan pueden ser desde peticiones simples aprocesos empresariales complicados. Puede definir un servicio web básicoutilizando sentencias de SQL estándar y procedimientos almacenados de DB2 XMLExtender.

Con la utilización de XML para intercambio de datos, los servicios web dansoporte a una interacción entre un proveedor de servicios y un peticionario de

Capítulo 10. DB2 y la web 307

||||||

|||

Page 317: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

servicios que es independiente de las plataformas y de los lenguajes deprogramación. La infraestructura de servicios web incluye los siguientes elementosbásicos:v Simple Object Access Protocol (SOAP) utiliza mensajes XML para intercambiar

información entre proveedores de servicios y peticionarios de servicios. SOAPdefine componentes de servicios web, entre los que se incluyen mensajes XML,tipos de datos que utilizan las aplicaciones y llamadas y respuestas deprocedimientos remotos.

v Web Services Description Language (WSDL) describe qué puede hacer unservicio web, dónde reside el servicio y cómo invocar el servicio. WSDLespecifica un vocabulario de XML que contiene toda la información necesariapara la integración y que automatiza la comunicación entre aplicaciones deservicios web.

v Universal Description, Discovery, and Integration (UDDI) proporciona unregistro de información empresarial, similar a una guía telefónica, que losusuarios y aplicaciones utilizan para buscar los servicios web necesarios.

Puede utilizar productos de WebSphere para crear aplicaciones de servicios web.WebSphere Studio proporciona herramientas para crear servicios web que incluyeninterfaces WSDL y publicarlos directamente en un registro de UDDI.

Información relacionada

″Programación para XML″ (DB2 for z/OS XML Guide)

308 Introducción a DB2 para z/OS

Page 318: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 11. Acceso a datos distribuidos

Los entornos de informática distribuida generalmente implican peticiones deusuarios en un DBMS, a los que se hace referencia como clientes, que sonprocesadas por otros DBMS, a los que se hace referencia como servidor. El DBMSservidor suele ser remoto para el cliente. A los entornos de informática distribuidales corresponden unas técnicas de programación e implicaciones de rendimientodeterminadas.

El entorno distribuido DB2 da soporte a una arquitectura de de dos niveles y demúltiples niveles.

Un DBMS, tanto local como remoto, se conoce en el subsistema DB2 por sunombre de ubicación. Los sistemas remotos utilizan el nombre de ubicación, o unnombre de ubicación de alias, para acceder a un subsistema DB2. Puede definir unmáximo de ocho nombres de ubicación para un subsistema DB2.

El nombre de ubicación del subsistema DB2 se define en el BSDS durante lainstalación de DB2. La base de datos de comunicaciones (CDB) registra el nombrede ubicación y la dirección de red de un DBMS remoto. La CDB es un conjunto detablas del catálogo de DB2.

El método primario que DB2 utiliza para acceder a los datos de un servidorremoto se basa en DRDA (Distributed Relational Database Architecture).

Si la aplicación realiza actualizaciones en dos o más DBMS, cada DBMS garantizaque las unidades de trabajo se confirmen o retrotraigan de forma coherente. Losprotocolos de confirmación distribuida que se utilizan en la conexión de redimponen si los DBMS pueden realizar actualizaciones o si las actualizaciones estánrestringidas a un único DBMS.

Los ejemplos siguientes muestran sentencias que se pueden utilizar para acceder adatos distribuidos.

Ejemplo 1: Puede escribir sentencias como las siguientes para acceder a los datosde un servidor remoto:EXEC SQL

CONNECT TO CHICAGO;SELECT * FROM IDEMP01.EMP

WHERE EMPNO = '000030';

También puede escribir una consulta como la siguiente para realizar la mismatarea:SELECT * FROM CHICAGO.IDEMP01.EMP

WHERE EMPNO = '000030';

Para poder ejecutar cualquier consulta en la ubicación CHICAGO, primero debevincular un paquete en el servidor CHICAGO.

Ejemplo 2: Puede llamar a un procedimiento almacenado para acceder a los datosde un servidor remoto. El programa ejecuta estas sentencias:

© Copyright IBM Corp. 2001, 2008 309

|

Page 319: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

EXEC SQLCONNECT TO ATLANTA;

EXEC SQLCALL nombre_procedimiento (lista_parámetros);

La lista de parámetros es una lista de variables de lenguaje principal que se pasa alprocedimiento almacenado y en la que devuelve los resultados de su ejecución. Elprocedimiento almacenado ya debe existir en la ubicación ATLANTA.

Conceptos relacionados

“Datos distribuidos” en la página 51“Entorno de aplicaciones web” en la página 298“Distribución de datos y acceso de web” en la página 6“Efectos de los datos distribuidos en la preparación de programas” en la página314″Mejoras de DRDA″ (DB2 Installation Guide)

Modos de implementar datos distribuidos en programasPuede conectarse a un servidor remoto de varios modos. Puede codificar unaaplicación que utiliza DRDA para acceder a datos de una ubicación remotautilizando sentencias CONNECT o nombres en tres partes y alias.

Con cualquier método que utilice, deberá vincular los DBRM para las sentencias deSQL que deben ejecutarse en el servidor con paquetes que residan en el servidor.v En el subsistema DB2 local, utilice el mandato BIND PLAN para crear un plan

de aplicación.v En la ubicación remota, utilice el mandato BIND PACKAGE para crear un

paquete de aplicación que utilice el plan de aplicación local.Información relacionada

″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters andServers)

Sentencias CONNECT explícitasLa utilización de sentencias CONNECT proporciona portabilidad de aplicacionesentre todos los clientes de IBM y requiere que la aplicación gestione conexiones.

Mediante la sentencia CONNECT, un programa de aplicación se conectaexplícitamente a cada servidor. Debe vincular los DBRM para las sentencias deSQL que deben ejecutarse en el servidor con paquetes que residan en dichoservidor.

La aplicación se conecta a cada servidor basándose en el nombre de ubicación dela sentencia CONNECT. Puede especificar explícitamente un nombre de ubicacióno puede especificar un nombre de ubicación en una variable de lenguaje principal.La emisión de la sentencia CONNECT cambia el registro especial CURRENTSERVER para que muestre la ubicación del nuevo servidor.

Ejemplo: Suponga que una aplicación incluye un bucle de programa que lee unnombre de ubicación, se conecta a la ubicación y ejecuta una sentencia INSERT. Laaplicación inserta un nuevo nombre de ubicación en una variable de lenguajeprincipal, :LOCATION_NAME, y ejecuta las sentencias siguientes:

310 Introducción a DB2 para z/OS

Page 320: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

EXEC SQLCONNECT TO :LOCATION_NAME;

EXEC SQLINSERT INTO IDP101.PROJ VALUES (:PROJNO, :PROJNAME, :DEPTNO,:RESPEMP, :MAJPROJ);

Las variables de lenguaje principal coinciden con la declaración para la tabla PROJ.

DB2 garantiza la coherencia de los datos en una transacción distribuida. Paramantener la coherencia de los datos en todas las ubicaciones, la aplicaciónconfirma el trabajo únicamente después de ejecutarse el bucle de programa paratodas las ubicaciones. Tanto si cada ubicación confirma INSERT como si unaanomalía impide la inserción a cualquier ubicación, todas las demás ubicacionesretrotraen INSERT.

Referencia relacionada

″CONNECT″ (Consulta de DB2 SQL)Información relacionada

″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters andServers)

Nombres en tres partesLa utilización de nombres de objetos en tres partes y alias proporciona a laaplicación transparencia de ubicación; los objetos se pueden mover a una ubicaciónnueva sin necesidad de realizar cambios en la aplicación. En lugar de ello, elDBMS gestiona las conexiones subyacentes.

Puede utilizar nombres en tres partes para acceder a datos de una ubicaciónremota, incluidas tablas y vistas. Con la utilización de un nombre en tres partes, oun alias, un programa de aplicación conecta implícitamente a cada servidor. Conestos métodos de acceso, el servidor de bases de datos controla dónde se ejecuta lasentencia.

Un nombre de tres partes está formado por:v Un nombre de UBICACIÓN que identifica exclusivamente el servidor remoto al

que desea accederv Un ID de AUTORIZACIÓN que identifica el propietario del objeto (la tabla o

vista) en la ubicación a la que desea accederv Un nombre de OBJETO que identifica el objeto en la ubicación a la que desea

acceder

Ejemplo: Este ejemplo muestra cómo una aplicación utiliza un nombre en trespartes en sentencias INSERT, PREPARE y EXECUTE. Suponga que la aplicaciónobtiene un nombre de ubicación, ’SAN_JOSE’. A continuación, crea la siguienteserie de caracteres:INSERT INTO SAN_JOSE.IDP101.PROJ VALUES (?,?,?,?,?)

La aplicación asigna la serie de caracteres a la variable INSERTX y, a continuación,ejecuta estas sentencias:EXEC SQL

PREPARE STMT1 FROM :INSERTX;EXEC SQL

EXECUTE STMT1 USING :PROJNO, :PROJNAME, :DEPTNO, :RESPEMP, :MAJPROJ;

Las variables de lenguaje principal coinciden con la declaración para la tabla PROJ.

Capítulo 11. Acceso a datos distribuidos 311

Page 321: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Recomendación: Si tiene intención de mover su aplicación de un servidor z/OS aotro servidor, no debe utilizar nombres en tres partes. Por ejemplo, una aplicacióncliente puede conectarse a un servidor z/OS y, a continuación, emitir un nombreen tres partes para un objeto que reside en un servidor Linux. DB2 for z/OS es elúnico servidor que automáticamente reenvía peticiones de SQL que hacenreferencia a objetos que no residen en el servidor conectado.

Un método alternativo útil consiste en utilizar alias al crear serie de caracteres quese convierten en sentencias preparadas, en lugar de utilizar nombres completos entres partes.

Información relacionada

″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters andServers)

AliasUn alias es un sustituto para el nombre en tres partes de una tabla o vista. Un aliaspuede estar definido en un servidor local y puede hacer referencia a una tabla ovista que esté en el servidor actual o en un servidor remoto. El nombre de alias sepuede utilizar dondequiera que se pueda utilizar el nombre de tabla o el nombrede vista para hacer referencia a la tabla o vista en una sentencia de SQL.

Suponga que de vez en cuando se trasladan datos de un subsistema DB2 a otro.Idealmente, los usuarios que consultan estos datos no se ven afectados cuando seproduce esta actividad. Los usuarios desean iniciar la sesión en el mismo sistema yacceder a la misma tabla o vista, independientemente de donde residan los datos.Este resultado se puede conseguir utilizando un alias para un nombre de objeto.

Un alias puede tener como máximo 128 caracteres, calificado por un ID depropietario. Utilice las sentencias CREATE ALIAS y DROP ALIAS para gestionarlos alias.

Nota: Suponga que crea un alias del modo siguiente:CREATE ALIAS TESTTAB FOR USIBMSTODB22.IDEMP01.EMP;

Si un usuario con el ID JONES crea dinámicamente el alias, el alias pertenece aJONES y la tabla se consulta del modo siguiente:SELECT SUM(SALARY), SUM(BONUS), SUM(COMM)

FROM JONES.TESTTAB;

El objeto para el cual está definiendo un alias no es necesario que exista al ejecutarla sentencia CREATE ALIAS. Sin embargo, el objeto debe existir cuando se ejecuteuna sentencia que haga referencia al alias.

Si desea que una aplicación acceda a un servidor que no sea el servidorespecificado en un nombre de ubicación, no es necesario que cambie el nombre deubicación. En lugar de ello, puede utilizar un alias de ubicación para alterartemporalmente el nombre de ubicación que la aplicación utiliza para acceder a unservidor. Como resultado, un peticionario de DB2 for z/OS puede acceder a variasbases de datos de DB2 que tienen el mismo nombre pero diferentes direcciones dered. Los alias de ubicación permiten migrar más fácilmente a un servidor de DB2 yminimizan los cambios en la aplicación.

Una vez creado un alias, cualquier usuario con autoridad sobre el objeto al quehace referencia el alias puede utilizar este alias. Un usuario no necesita ningúnprivilegio separado para utilizar el alias.

312 Introducción a DB2 para z/OS

Page 322: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Referencia relacionada

″CREATE ALIAS″ (Consulta de DB2 SQL)Información relacionada

″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters andServers)

Comparación de nombres en tres partes y aliasLos nombres en tres partes y los alias tienen sus propias ventajas exclusivas. Lacomprensión de las diferencias y las ventajas le ayuda a realizar decisionescorrectas para el entorno distribuido.

Puede utilizar siempre nombres en tres partes para hacer referencia a datos de otroservidor remoto. La ventaja de los nombres en tres partes es que permiten ejecutarcódigo de aplicaciones en diferentes ubicaciones de DB2 sin la sobrecarga adicionaldel mantenimiento de alias. Sin embargo, si las ubicaciones de las tablas cambian,también debe cambiar las aplicaciones afectadas.

La ventaja de los alias es que le permiten mover datos sin necesidad de modificarel código de aplicaciones o consultas interactivas. Sin embargo, si mueve una tablao vista, debe descartar los alias que hacen referencia a estas tablas o vistas. Acontinuación, puede volver a crear los alias con los nuevos nombres de ubicación.

Información relacionada

″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters andServers)

Modos en que los datos distribuidos afectan a otras tareasCuando trabaja en un entorno distribuido, debe considerar cómo afecta el entornoa las actividades de planificación y programación.

Efectos de los datos distribuidos en la planificaciónAl trabajar en un entorno distribuido es necesario considerar cómo funciona laautorización y el coste de la ejecución de sentencias de SQL.

El ID de autorización adecuado debe tener autorización en un servidor remotopara conectarse a él y utilizar los recursos de dicho servidor.

Puede utilizar el recurso de límite de recursos en el servidor para controlar lassentencias de SQL dinámico distribuidas. Mediante este recurso, un servidor puedecontrolar cuántos de sus recursos puede consumir un paquete determinadoutilizando acceso DRDA.

Efectos de los datos distribuidos en la programaciónEsta información explica algunas consideraciones sobre programación para lautilización del acceso DRDA.

Tenga en cuenta las consideraciones siguientes al escribir programas que se utilizanen un entorno distribuido:v Procedimientos almacenados

Si utiliza acceso DRDA, el programa puede llamar a procedimientosalmacenados. Los procedimientos almacenados se comportan como subrutinasque pueden contener sentencias de SQL y otras operaciones.

v Nombres de tres partes y varios servidores

Capítulo 11. Acceso a datos distribuidos 313

Page 323: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Suponga que una sentencia se ejecuta en un servidor remoto (servidor 1). Estasentencia utiliza un nombre de tres partes o un alias que se resuelve en unnombre de tres partes. La sentencia incluye un nombre de ubicación de unservidor diferente (servidor 2). Para asegurarse de que el acceso al segundoservidor remoto es mediante acceso DRDA, vincule el paquete que contiene elnombre de tres partes del segundo servidor.

v Diferencias de SQL en servidores que no son DB2 for z/OSMediante conexiones explícitas, un programa que utiliza acceso DRDA puedeutilizar sentencias de SQL que estén soportadas por un servidor remoto, aunqueno estén soportadas por el servidor local. Un programa que utiliza nombres deobjetos de tres partes no puede ejecutar SQL que no sea z/OS.

Efectos de los datos distribuidos en la preparación deprogramas

En un entorno distribuido, existen consideraciones especiales que afectan a lasopciones de precompilación y vinculación que se utilizan para acceso DRDA yresolución de paquetes.

La tabla siguiente lista las opciones de precompilador de z/OS pertinentes parapreparar un paquete que debe ejecutarse utilizando acceso DRDA.

Tabla 39. Opciones de precompilador de z/OS para acceso DRDA

Opciones de precompilador de z/OS Utilización

CONNECT Utilice CONNECT(2) para permitir que el programade aplicación realice actualizaciones en más de unDBMS.

SQL Utilice SQL(ALL) para vincular un paquete a unservidor no z/OS; de lo contrario, utilice SQL(DB2).

Mayoritariamente, la vinculación de un paquete para que se ejecute en unaubicación remota es similar a la vinculación de un paquete para que se ejecute enel subsistema DB2 local. La vinculación de un plan para ejecutar el paquete essimilar a la vinculación de cualquier otro plan. La tabla siguiente le proporcionadirectrices para saber qué opciones de vinculación de z/OS debe elegir al vincularun paquete y planificar la ejecución utilizando acceso DRDA.

Tabla 40. Opciones de vinculación de z/OS para acceso DRDA

Opciones de vinculación de z/OS Utilización

DEFER(PREPARE) Para SQL dinámico, utilice DEFER(PREPARE) paraenviar sentencias PREPARE y EXECUTE juntas através de la red para mejorar el rendimiento.

SQLERROR Utilice SQLERROR(CONTINUE) para crear unpaquete aunque el proceso de vinculación encuentreerrores de SQL.

SQLRULES Utilice SQLRULES(DB2) para una mayor flexibilidadal codificar las aplicaciones, en especial para datosLOB, y mejorar el rendimiento.

JDBC, SQLJ y ODBC utilizan métodos diferentes para vincular paquetes queimplican menos preparación para acceder a un servidor de z/OS.

314 Introducción a DB2 para z/OS

||||||

||

||

||||

||||

|||||

Page 324: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

El registro especial CURRENT PACKAGE PATH proporciona ventajas a lasaplicaciones que utilizan DRDA desde un peticionario de z/OS. El ID de colecciónde paquetes se resuelve en el servidor. Las aplicaciones del servidor puedenbeneficiarse de la lista de colecciones y el tráfico de la red es mínimo.

Ejemplo: Suponga que existen cinco paquetes y que desea invocar el primerpaquete en el servidor. Los nombres de paquete son SCHEMA1.PKG1,SCHEMA2.PKG2, SCHEMA3.PKG3, SCHEMA4.PKG4 y SCHEMA5.PKG5. Enlugar de emitir una sentencia SET CURRENT PACKAGESET para invocar cadapaquete, puede utilizar una única sentencia SET si el servidor da soporte alregistro especial CURRENT PACKAGE PATH:SET CURRENT PACKAGE PATH = SCHEMA1, SCHEMA2, SCHEMA3, SCHEMA4, SCHEMA5;

Conceptos relacionados

“Proceso de preparación para un programa de aplicación” en la página 150

Cómo se coordinan las actualizaciones entre sistemas distribuidosExiste una variedad de productos para trabajar con DB2 para coordinar lasactualizaciones en una transacción distribuida. DB2 coordina las actualizaciones enservidores que permiten diferentes tipos de conexiones.

Información relacionada

″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters andServers)

Soporte de gestor de transacciones de DB2DB2 da soporte a una amplia gama de productos de gestor de transacciones paracoordinar actualizaciones entre una transacción distribuida. Una transaccióndistribuida normalmente implica varios recursos recuperables como, por ejemplo,tablas de DB2, mensajes de MQSeries y bases de datos de IMS.

Los entornos de aplicaciones que utilizan DB2 Connect para acceder de formaremota a DB2 pueden utilizar los siguientes productos de gestor de transacciones:v WebSphere Application Serverv CICSv IBM TXSeries (CICS y Encina)v WebSphere MQv Microsoft Transaction Server (MTS)v Aplicaciones Java que dan soporte a Java Transaction API (JTA) y Enterprise

JavaBeans (EJB)v BEA (Tuxedo y WebLogic)v Otros productos de gestor de transacciones que dan soporte a protocolos XA

estándarLa interfaz XA es una interfaz bidireccional entre un gestor de transacciones ygestores que recursos que proporciona actualizaciones coordinadas a través deuna transacción distribuida. The Open Group ha definido protocolos XAbasándose en la especificación Distributed TP: The XA Specification.

Entornos de aplicaciones que acceden localmente a DB2 pueden utilizar lossiguientes productos de gestor de transacciones:v WebSphere Application Serverv CICS transaction serverv IMS

Capítulo 11. Acceso a datos distribuidos 315

Page 325: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

En entornos de aplicaciones que no utilizan ningún gestor de transacciones, DB2coordina las actualizaciones a través de una transacción distribuida utilizandoconexiones protegidas mediante DRDA.

Información relacionada

″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters andServers)

Servidores que dan soporte a confirmación en dos fasesLas actualizaciones en una situación de confirmación en dos fases se coordinan sitodas deben confirmarse o retrotraerse en la misma unidad de trabajo.

Ejemplo: Puede actualizar una base de datos de IMS y una tabla de DB2 dentro dela misma unidad de trabajo. Suponga que se produce una anomalía en algúnsistema o comunicación mientras se confirma el trabajo en IMS y en DB2. En estecaso, los dos programas restauran los dos sistemas en un punto coherente cuandose reanuda la actividad.

DB2 coordina las confirmaciones incluso cuando una conexión utiliza confirmaciónen una fase en una transacción distribuida. Sin embargo, en este caso sólo unaubicación puede realizar una actualización.

Conceptos relacionados

“Actualizaciones coordinadas para mantener la coherencia entre servidores” enla página 292Información relacionada

″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters andServers)

Servidores que no dan soporte a confirmación en dos fasesEn una transacción distribuida, DB2 puede coordinar una combinación deconexiones de una fase y de dos fases. No se pueden realizar actualizacionescoordinadas con un DBMS que no implementa confirmación en dos fases. Sinembargo, puede conseguir el efecto de actualizaciones coordinadas al acceder a unservidor que no implementa confirmación en dos fases; este servidor recibe elnombre de sistema restringido.

DB2 le impide actualizar un sistema restringido y cualquier otro sistema en lamisma unidad de trabajo. En este contexto, la actualización incluye las sentenciasINSERT, DELETE, UPDATE, CREATE, ALTER, DROP, GRANT, REVOKE yRENAME.

Puede conseguir el efecto de actualizaciones coordinadas con un sistemarestringido. Primero debe actualizar un sistema y confirmar dicho trabajo y, acontinuación, debe actualizar el segundo sistema y confirmar su trabajo. Sinembargo, suponga que se produce una anomalía después de confirmar la primeraactualización y antes de confirmar la segunda actualización. No hay disponibleninguna medida automática para devolver los dos sistemas a un punto coherente.el programa debe manejar la tarea.

Cuando accede a una mezcla de sistemas, algunos de los cuales pueden serrestringidos, puede realizar las acciones siguientes para asegurar la integridad delos datos:v Leer desde cualquiera de los sistemas en cualquier momento.v Actualizar cualquiera de los sistemas muchas veces en una unidad de trabajo.

316 Introducción a DB2 para z/OS

Page 326: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Actualizar muchos sistemas, incluyendo CICS o IMS, en una unidad de trabajosi ningún sistema es un sistema restringido. Si el primer sistema que actualizano es un sistema restringido, cualquier intento de actualizar un sistemarestringido dentro de una unidad de trabajo tiene como resultado un error.

v Actualizar un sistema restringido en una unidad de trabajo; sin embargo, sólopuede hacerlo si no intenta actualizar ningún otro sistema en la misma unidadde trabajo. Si el primer sistema que actualiza es un sistema restringido, cualquierintento de actualizar otro sistema dentro de dicha unidad de trabajo tiene comoresultado un error.Información relacionada

″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters andServers)

Modos de reducir el tráfico de la redLa clave para mejorar el rendimiento en un entorno informático de red esminimizar el tráfico de la red.

Los procedimientos almacenados son un método excelente para enviar muchassentencias de SQL en un único mensaje de red y, como resultado de ello, ejecutarmuchas sentencias de SQL en el servidor DB2. Este tema presenta otros modos demejorar el rendimiento cuando se accede a servidores remotos.

Información relacionada

″Ajuste de aplicaciones distribuidas″ (DB2 Performance Monitoring and TuningGuide)

Mejoras en la eficacia de las consultasUna consulta que se envía a un servidor remoto casi siempre tarda más enejecutarse que la misma consulta que accede a tablas del mismo tamaño en unservidor local. Para aumentar la eficacia al acceder a servidores remotos, intenteescribir consultas que envíen pocos mensajes a través de la red.

Por ejemplo:v Reduzca el número de columnas y filas de la tabla de resultados que se

devuelve a la aplicación. Mantenga las listas de SELECT lo más cortas posibles.Una utilización creativa de las cláusulas WHERE, GROUP BY y HAVING puedeeliminar datos no deseados en el servidor remoto.

v >Utilice FOR READ ONLY. Por ejemplo, recuperar miles de filas como una seriecontinua es razonable. Enviar un mensaje separado para cada una puede serconsiderablemente más lento.

v Si es posible, no vincule planes de aplicación y paquetes con ISOLATION(RR). Sila aplicación no necesita volver a consultar las filas que lee una vez, otro nivelde aislamiento podría reducir la contención de bloqueos y la sobrecarga demensajes durante el proceso de COMMIT.

v Minimice la utilización de marcadores de parámetros.Cuando el programa utiliza acceso DRDA, DB2 puede agilizar el proceso deconsultas dinámicas que no contienen marcadores de parámetros. Sin embargo,se necesitan marcadores de parámetros para poner en antememoria sentenciasdinámicas de forma eficaz.Cuando un peticionario de DB2 encuentra una sentencia PREPARE para unaconsulta de este tipo, considera con anticipación que la aplicación abrirá uncursor. Por lo tanto, el peticionario envía al servidor un único mensaje quecontiene una petición combinada de PREPARE, DESCRIBE y OPEN. Un servidor

Capítulo 11. Acceso a datos distribuidos 317

||||

||||

Page 327: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

de DB2 que recibe esta secuencia de mensajes devuelve una única secuencia demensajes de contestación que incluye la salida de las operaciones PREPARE,DESCRIBE y OPEN. Como resultado, el número de mensajes de la red que seenvían y reciben para estas operaciones se reduce de dos a uno.Información relacionada

″Ajuste de aplicaciones distribuidas″ (DB2 Performance Monitoring and TuningGuide)

Reducción del volumen de mensajesLas posibilidades de DB2 que combinan varias filas de datos durante lasoperaciones de captación e inserción pueden reducir significativamente el númerode mensajes que se envían por la red. Estas posibilidades incluyen la captación enbloque y captaciones e inserciones de conjuntos de filas.

Información relacionada

″Ajuste de aplicaciones distribuidas″ (DB2 Performance Monitoring and TuningGuide)

Captación en bloqueDB2 utiliza captación en bloque para agrupar las filas que una consulta de SQLrecupera en un “bloque” de filas tan grande como quepa en un almacenamientointermedio de mensajes y, a continuación, transmite el bloque a través de la red. Alenviar varias filas en un bloque, DB2 evita el envío de un mensaje para cada fila.

Una captación en bloque sólo se utiliza con cursores que no actualizan datos. Eltamaño de un bloque de consulta DRDA en z/OS está limitado a 32 KB.

DB2 puede utilizar dos tipos diferentes de captación en bloque:

Captación en bloque limitadaOperación que optimiza la transferencia de datos al garantizar latransferencia de una cantidad mínima de datos en respuesta a cadapetición desde el sistema peticionario.

Captación en bloque continuaOperación que envía una única petición desde el peticionario al servidor.El servidor llena un almacenamiento intermedio con datos que recupera ylos vuelve a transmitir al peticionario. El proceso en el peticionario esasíncrono con el servidor; el servidor sigue enviando bloques de datos alpeticionario con las mínimas solicitudes o ninguna más.

Para utiliza una captación en bloque, DB2 debe determinar que el cursor no seutiliza para actualizar ni suprimir. Puede indicar esto en el programa añadiendo lacláusula FOR READ ONLY a la consulta. Si no especifica FOR READ ONLY, lautilización de captación en bloque por parte de DB2 depende de cómo se define elcursor.

Para cursores con desplazamiento bidireccional, la sensibilidad del cursor y laopción de vinculación influyen en si se puede utilizar captación en bloque.

Información relacionada

″Ajuste de aplicaciones distribuidas″ (DB2 Performance Monitoring and TuningGuide)

Captaciones e inserciones de conjuntos de filasPara cursores de ubicación de conjunto de filas, cuando se abre el cursor paraprocesar un conjunto de filas, el conjunto de respuesta se devuelve en un único

318 Introducción a DB2 para z/OS

Page 328: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

bloque de consulta. El bloque de consulta contiene exactamente el número de filasque se especifica para el conjunto de filas.

Debido a que un conjunto de filas se devuelve en un único bloque de consulta, eltamaño de un conjunto de filas tiene un límite de 10 MB. Este tamaño del conjuntode filas minimiza el impacto en la red cuando se recupera un conjunto de filasgrande con una única operación de captación.

Los cursores de ubicación de conjunto de filas también permiten inserciones devarias filas. La sentencia INSERT, además de la cláusula FOR n ROWS, insertavarias filas en una tabla o vista, utilizando los valores proporcionados en matricesde variables de lenguaje principal. Con inserciones de varias filas, en lugar deenviar sentencias INSERT para cada inserción individual, se envían todos los datosde la inserción en un único mensaje de la red.

Conceptos relacionados

“Recuperación de filas con un cursor” en la página 158Información relacionada

″Ajuste de aplicaciones distribuidas″ (DB2 Performance Monitoring and TuningGuide)

Optimización para conjuntos de resultados grandes ypequeños

Existen varias opciones de la sentencia SELECT que le permiten limitar el númerode filas que se devuelven a un programa cliente.

El hecho de permitir que un cliente de DB2 solicite varios bloques de consulta encada transmisión puede reducir la actividad en la red y mejorar significativamenteel rendimiento para aplicaciones que utilizan acceso DRDA para descargar grandescantidades de datos.

Puede especificar un valor grande n en la cláusula OPTIMIZE FOR n ROWS deuna sentencia SELECT para aumentar el número de bloques de consulta DRDAque un servidor de DB2 devuelve en cada transmisión de red para un cursor desolo avance.

Si n es mayor que el número de filas que caben en un único bloque de consultasDRDA, la cláusula OPTIMIZE FOR n ROWS permite que el cliente de DRDAsolicite varios bloques de datos de consulta en cada transmisión de red en lugar desolicitar otro bloque cuando el primer bloque se llena. Esta utilización de estacláusula OPTIMIZE FOR n está destinada a aplicaciones que abren un cursor ydescargan grandes cantidades de datos. La cláusula OPTIMIZE FOR n ROWS notiene efecto en cursores con desplazamiento bidireccional.

Cuando un cliente no necesita todas las filas de un conjunto de resultadospotencialmente grande, el hecho de evitar que el servidor de DB2 devuelva todaslas filas para una consulta puede reducir la actividad en la red y mejorarsignificativamente el rendimiento para aplicaciones DRDA. Puede utilizar tanto lacláusula OPTIMIZE FOR n ROWS como la cláusula FETCH FIRST n ROWS ONLYde una sentencia SELECT para limitar el número de filas que se devuelven alprograma de un cliente.

Información relacionada

″Ajuste de aplicaciones distribuidas″ (DB2 Performance Monitoring and TuningGuide)

Capítulo 11. Acceso a datos distribuidos 319

Page 329: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Mejoras del rendimiento para SQL dinámicoExisten dos técnicas para ayudarle a mejorar el rendimiento de aplicaciones deSQL dinámico.

Puede mejorar el rendimiento de aplicaciones de SQL dinámico en un entornodistribuido de las formas siguientes:v Especifique la opción DEFER(PREPARE).

DB2 no prepara una sentencia de SQL dinámico hasta que se ejecuta lasentencia. Para SQL dinámico utilizado en acceso DRDA, considere especificar laopción DEFER(PREPARE) cuando vincule o vuelva a vincular los planes opaquetes. Cuando una sentencia de SQL dinámico accede a datos remotos, lassentencias PREPARE y EXECUTE se pueden transmitir juntas a través de la redy procesarse en el servidor remoto. A continuación, el servidor remoto puedeenviar juntas las respuestas de ambas sentencias al subsistema local, reduciendode este modo el tráfico de la red.

v Elimine la opción WITH HOLD.Para definir un cursor WITH HOLD es necesario enviar un mensaje de redadicional para cerrar el cursor. Puede mejorar el rendimiento eliminando laopción WITH HOLD cuando la aplicación no necesite mantener los cursoresabiertos durante una confirmación. Esta recomendación es especialmenteaplicable en el caso de aplicaciones de SQL dinámico.Información relacionada

″Ajuste de aplicaciones distribuidas″ (DB2 Performance Monitoring and TuningGuide)

320 Introducción a DB2 para z/OS

Page 330: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capítulo 12. Compartimiento de datos con los datos de DB2

La función de compartimiento de datos de DB2 for z/OS permite que lasaplicaciones que se ejecutan en más de un subsistema DB2 for z/OS puedan leerdesde y escribir en el mismo conjunto de datos simultáneamente.

Los subsistemas DB2 que comparten datos deben pertenecer a un grupo decompartimiento de datos de DB2, que se ejecuta en un clúster Sysplex paralelozSeries. Un grupo de compartimiento de datos es una colección de uno o mássubsistemas DB2 que accede a datos de DB2 compartidos.

Un Sysplex paralelo es un clúster de sistemas z/OS que se comunican entre sí ytrabajan conjuntamente. Sysplex paralelo es una arquitectura de clúster muysofisticada. Está formada por dos tecnologías:

Recurso de acoplamientoProporciona hardware especializado, enlaces y adaptadores de altavelocidad especializados, y un almacenamiento electrónico no volátilcompartido para protocolos de compartimiento rápido de datos entresistemas.

Temporizador SysplexProporciona un origen de tiempo común para todos los sistemas delclúster, lo cual permite un modo eficaz de proporcionar una secuencia deregistro y un orden de sucesos entre los distintos sistemas.

El recurso de acoplamiento y el Temporizador Sysplex son exclusivos del entornoSystem z. Proporcionan un rendimiento y una escalabilidad eficaces en un entornoDBMS en clúster de varios sistemas con discos compartidos.

Cada subsistema DB2 que pertenece a un grupo de compartimiento de datosdeterminado es un miembro de dicho grupo. Todos los miembros de un grupo decompartimiento de datos utilizan el mismo catálogo de DB2 compartido.

También puede utilizar algunas de las posibilidades que se describen en estainformación independientemente de si comparte datos o no. El término entorno decompartimiento de datos hace referencia a una situación en la que se define un grupode compartimiento de datos que tiene un miembro como mínimo. En un entornode no compartimiento de datos, no se define ningún grupo.

Conceptos relacionados

“Disponibilidad y escalabilidad para empresas grandes” en la página 1

Ventajas del compartimiento de datos de DB2El compartimiento de datos de DB2 mejora la disponibilidad de DB2, permite uncrecimiento escalable y proporciona unos métodos más flexibles para configurar elentorno. No es necesario cambiar el SQL en las aplicaciones para utilizarcompartimiento de datos, aunque es posible que sea necesario realizar algunosajustes para obtener un rendimiento óptimo.

Conceptos relacionados

″Ventajas del compartimiento de datos de DB2″ (DB2 Data sharing: Planningand Administration)

© Copyright IBM Corp. 2001, 2008 321

Page 331: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Disponibilidad mejorada de los datosCada vez más usuarios de DB2 solicitan acceder a datos de DB2 cada hora del día,cada día del año. El compartimiento de datos de DB2 le ayuda a cumplir elobjetivo de servicio mejorando la disponibilidad durante las interrupcionesplanificadas y no planificadas.

Como ilustra la figura siguiente, si un subsistema falla, los usuarios puedenacceder a sus datos de DB2 desde otro subsistema. Se informa a los gestores detransacciones de que existe una anomalía en DB2 y que pueden conmutar nuevotrabajo de usuario a otro subsistema DB2 del grupo. Para interrupciones noplanificadas, el gestor de reinicio automático de z/OS puede automatizar elreinicio y la recuperación.

A pesar de que el aumento de la disponibilidad de DB2 tiene algún coste derendimiento, la sobrecarga para la comunicación interprocesador y la puesta enantememoria de los datos cambiados se minimiza. DB2 proporciona mecanismosde bloqueo y de puesta en antememoria eficaces y utiliza hardware de recurso deacoplamiento. Un recurso de acoplamiento es una partición lógica especial que ejecutael programa de control del recurso de acoplamiento. Proporciona antememoria dealta velocidad, proceso de listas y funciones de bloqueo en un Sysplex. Lasestructuras de DB2 del recurso de acoplamiento se benefician de la altadisponibilidad. El recurso de acoplamiento utiliza reconstrucción de estructurasautomática y duplicación de las estructuras que se utilizan para poner enantememoria datos.

Conceptos relacionados

″Ventajas del compartimiento de datos de DB2″ (DB2 Data sharing: Planningand Administration)

Crecimiento escalableA medida que aumenta el proceso de datos en un entorno DB2, las necesidades deproceso pueden superar la capacidad de un único sistema. El compartimiento dedatos puede solucionar esta restricción.

Figura 53. Cómo el compartimiento de datos mejora la disponibilidad durante lasinterrupciones. Si un subsistema DB2 o todo el complejo central de procesadores (CPC)falla, el trabajo de puede direccionar a otro sistema.

322 Introducción a DB2 para z/OS

Page 332: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Sin compartimiento de datos

Sin compartimiento de datos de DB2, dispone de las opciones siguientes:v Copiar los datos, dividir los datos en varios subsistemas DB2.

Para esta opción es necesario mantener copias separadas de los datos. No seproduce ninguna comunicación entre subsistemas DB2 y el catálogo de DB2 nose comparte.

v Instalar otro subsistema DB2 y volver a escribir aplicaciones para acceder a losdatos originales como datos distribuidos.Esta opción puede disminuir la carga de trabajo en el subsistema DB2 origina,pero requiere cambios en las aplicaciones y tiene una sobrecarga de rendimientopropia. Sin embargo, para subsistemas DB2 que están separados por una grandistancia o para un subsistema DB2 que necesita compartir datos con un sistemaque está fuera del grupo de compartimiento de datos, el recurso de de datosdistribuidos sigue siendo la única opción.

v Instalar un procesador más grande y mover datos y aplicaciones a esa máquina.Esta opción puede resultar cara. Además, esta opción requiere que se apague elsistema mientras se mueve a la máquina más grande nueva.

Con compartimiento de datos

Con compartimiento de datos de DB2 puede aprovechar las ventajas siguientes:

Crecimiento incrementalEl clúster de Sysplex paralelo puede crecer incrementalmente. Puedeañadir un nuevo subsistema DB2 a otro complejo central de procesadores yacceder a los mismos datos a través del nuevo subsistema DB2. No esnecesario gestionar copias ni distribuir datos. Todos los subsistemas DB2del grupo de compartimiento de datos tienen acceso de lectura-escriturasimultáneo y todos los subsistemas DB2 utilizan un único catálogo de DB2.

Equilibrio de carga de trabajoEl compartimiento de datos de DB2 proporciona flexibilidad paraequilibrio de carga de trabajo y crecimiento. Con la utilización de datosparticionados para paralelismo (a veces denominado arquitectura sinningún compartimiento), existe una relación de uno con uno entre un DBMSdeterminado y un segmento de datos. Por el contrario, no es necesariovolver a distribuir los datos de un entorno de compartimiento de datos deDB2 cuando se añade un nuevo subsistema o cuando la carga de trabajo sedesequilibra. El nuevo miembro de DB2 tiene el mismo acceso directo a losdatos que los otros miembros que existen en el grupo de compartimientode datos.

DB2 funciona conjuntamente con z/OS Workload Manager (WLM) paraasegurar que el trabajo entrante esté óptimamente equilibrado entre lossistemas del clúster. WLM gestiona las cargas de trabajo que compartenrecursos del sistema y tienen prioridades y características de utilización derecursos diferentes.

Ejemplo: Suponga que se ejecutan consultas grandes con una prioridadbaja en el mismo sistema que se ejecutan transacciones en línea con unaprioridad más alta. WLM puede asegurar que las consultas nomonopolicen los recursos y no impidan que las transacciones en líneaconsigan obtener unos tiempos de respuesta aceptables. WLM funcionatanto en un entorno de un solo sistema como en un entorno de variossistemas (compartimiento de datos).

Capítulo 12. Compartimiento de datos con los datos de DB2 323

Page 333: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Capacidad cuando es necesariaUna configuración de compartimiento de datos puede manejar cargas enperiodos de máxima actividad. Puede iniciar miembros de compartimientode datos para que manejen cargas en periodos de máxima actividad, porejemplo, el proceso durante el final de trimestre y, a continuación,detenerlos cuando termine el periodo de gran actividad.

Puede beneficiarse de todas estas ventajas, tanto si las cargas de trabajo son paraproceso de transacciones en línea (OLTP) o para una mezcla de OLTP, proceso porlotes y consultas.

Velocidades más altas de transacciones

El compartimiento de datos le proporciona posibilidades para enviar más trabajo através del sistema. Como ilustra la figura siguiente, puede ejecutar la mismaaplicación en más de un subsistema DB2 para conseguir velocidades detransacciones más altas de lo que es posible en un único subsistema.

Más capacidad para procesar consultas complejas

El paralelismo de consulta Sysplex permite que DB2 utilice la capacidad de procesodel grupo de almacenamiento de datos para procesar una única consulta. Parausuarios que se ocupan de análisis de datos complejos o del soporte de decisiones,el paralelismo de consulta Sysplex es una solución escalable. Debido a que elgrupo de compartimiento de datos puede crecer, puede proporcionar máscapacidad a estas consultas aunque aumente su complejidad y se ejecuten enconjuntos de datos cada vez más grandes.

Figura 54. Cómo permite el crecimiento el compartimiento de datos. Puede mover parte de la carga de trabajo deDB2 existente a otro complejo central de procesadores (CPC).

324 Introducción a DB2 para z/OS

Page 334: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La figura siguiente muestra que todos los miembros de un grupo decompartimiento de datos pueden participar en el proceso de una única consulta.En este ejemplo, la tabla ACCOUNT tiene diez particiones. Un miembro procesalas particiones 1 y 2; otro miembro procesa las particiones 3, 4 y 5; un tercermiembro procesa las particiones 6 y 7; y el cuarto miembro procesa las particiones8, 9 y 10.

Es una simplificación del concepto—varios subsistemas DB2 pueden acceder a lamisma partición física. Para sacar el máximo partido del paralelismo, utiliceespacios de tablas particionados.

Conceptos relacionados

″Ventajas del compartimiento de datos de DB2″ (DB2 Data sharing: Planningand Administration)

Configuraciones flexiblesEl compartimiento de datos de DB2 le permite configurar el entorno del sistemacon mucha más flexibilidad.

Como muestra la figura siguiente, puede tener más de un grupo decompartimiento de datos de DB2 en el mismo Sysplex z/OS. Por ejemplo, quizásdesea un grupo para la prueba y otro para los datos de producción.

Figura 55. Consulta procesada en paralelo por los miembros de un grupo de compartimiento de datos. Diferentesmiembros de DB2 procesan diferentes particiones de los datos.

Capítulo 12. Compartimiento de datos con los datos de DB2 325

Page 335: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

También puede ejecutar varios miembros en la misma imagen de z/OS (no semuestra en esta figura).

Sistemas de operación flexibles

La figura siguiente muestra como, con compartimiento de datos, puede tenergrupos de usuarios de consultas y grupos de usuarios de transacciones en línea endiferentes imágenes de z/OS. Esta configuración le permite adaptar cada sistemaespecíficamente para el conjunto de usuarios, controlar la contención dealmacenamiento y proporcionar niveles predecibles de servicio para el conjunto deusuarios. Previamente, es posible que haya tenido que gestionar copias de datosseparadas para cumplir las necesidades de los diferentes grupos de usuarios.

Figura 56. Posible configuración de grupos de compartimiento de datos de DB2. Aunque este ejemplo muestra unDB2 para cada sistema z/OS, el entorno puede tener más.

326 Introducción a DB2 para z/OS

Page 336: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Sistemas de soporte de decisiones flexibles

La figura siguiente muestra dos configuraciones de soporte de decisionesdiferentes. Una configuración típica separa los datos operativos de los datos desoporte de decisiones. Utilice esta configuración cuando el sistema operativo tengarequisitos del entorno diferentes de los del sistema de soporte de decisiones. Elsistema de soporte de decisiones puede estar en un área geográfica diferente o losrequisitos de seguridad pueden ser diferentes para los dos sistemas.

DB2 ofrece otra opción, una configuración de combinación. Una configuración decombinación combina los sistemas de operación y de soporte de decisiones en unúnico grupo de compartimiento de datos y ofrece las ventajas siguientes:v Puede unir ocasionalmente datos de soporte de decisiones y datos de operación

utilizando SQL.v Puede volver a configurar el sistema dinámicamente para manejar cargas de

trabajo fluctuantes. Por ejemplo, puede optar por dedicar CPC al proceso desoporte de decisiones o al proceso de operaciones en distintos momentos del díao año.

v Puede reducir el coste del proceso:– La infraestructura que se utiliza para la gestión de datos es la adecuada.– Puede crear un prototipo de sistema de soporte de decisiones en el sistema

existente y, a continuación, añadir capacidad de proceso a medida que elsistema crece.

Figura 57. Configuraciones flexibles con compartimiento de datos de DB2. El compartimiento de datos permite quecada conjunto de usuarios acceda a los mismos datos, lo que significa que ya no necesita gestionar varias copias.

Capítulo 12. Compartimiento de datos con los datos de DB2 327

Page 337: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Para configurar una configuración de combinación, separe tanto como sea posiblelos datos del soporte de decisiones de los datos de operación. Las agrupaciones deagrupación de almacenamientos intermedios, los discos y las unidades de controlque utiliza en el sistema de soporte de decisiones deberían estar separados de losque utiliza en el sistema de operación. Esta separación minimizaconsiderablemente cualquier impacto negativo en el rendimiento del sistema deoperación.

Si no puede mantener este nivel de separación o si ha separado los datos deoperación por otros motivos como, por ejemplo, la seguridad, la utilización de unsistema de soporte de decisiones separado es la mejor opción.

Flexibilidad para gestionar datos compartidos

El compartimiento de datos puede simplificar la gestión de aplicaciones que debencompartir algún conjunto de datos como, por ejemplo, una tabla de clientescomún. Puede que estas aplicaciones se hayan dividido en el pasado por motivosde capacidad o disponibilidad. Pero con la arquitectura de división, los datoscompartidos deben mantenerse sincronizados en los distintos sistemas (es decir,mediante la réplica de datos).

Figura 58. Configuraciones flexibles para soporte de decisiones. El compartimiento de datos de DB2 le permiteconfigurar los sistemas del modo que mejor funcionan en su entorno.

328 Introducción a DB2 para z/OS

Page 338: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

El compartimiento de datos le proporciona la flexibilidad para configurar estasaplicaciones en un único grupo de compartimiento de datos de DB2 y manteneruna única copia de los datos compartidos que puede leer y actualizar variossistemas con un buen rendimiento. Es una opción especialmente útil cuando lasempresas experimentan fusiones o adquisiciones o cuando se consolidan loscentros de datos.

Conceptos relacionados

″Ventajas del compartimiento de datos de DB2″ (DB2 Data sharing: Planningand Administration)

Inversiones protegidas en personas y habilidadesLa inversión en personas y habilidades está protegida puesto que las interfaces deSQL y conexiones existentes permanecen intactas cuando se comparten datos.

Puede vincular un paquete o plan en un subsistema DB2 y ejecutar dicho paqueteo plan en cualquier otro subsistema DB2 de un grupo de compartimiento.

Conceptos relacionados

″Ventajas del compartimiento de datos de DB2″ (DB2 Data sharing: Planningand Administration)

Cómo DB2 protege la coherencia de los datos en un entorno decompartimiento de datos

Las aplicaciones pueden acceder a datos desde cualquier subsistema DB2 el grupode compartimiento de datos. Potencialmente muchos subsistemas pueden leer yescribir los mismos datos. DB2 utiliza mecanismos de compartimiento de datosespeciales para bloquear y poner en antememoria a fin de asegurar la coherenciade los datos.

Cuando varios miembros de un grupo de compartimiento de datos tienen abiertoel mismo espacio de tablas, el mismo espacio de índice o la misma partición ycomo mínimo uno de ellos lo ha abierto para escribir, se dice que los datos son deinterés de lectura-escritura interno de DB2 para los miembros. (A veces en estainformación se utiliza el término interés interno de DB2.) Para controlar el acceso alos datos de interés interno de DB2, cada vez que se cambian los datos, DB2 lospone en antememoria en un área de almacenamiento denominada agrupación dealmacenamientos intermedios de grupo (GBP).

DB2 detecta dinámicamente el interés interno de DB2, lo que significa que DB2únicamente puede invocar protocolos de compartimiento de datos entre sistemascuando los datos se comparten activamente para lectura-escritura entre miembros.DB2 puede detectar cuando los datos no se comparten activamente paralectura-escritura entre sistemas. En estos casos, los protocolos de bloqueo o depuesta en antememoria del compartimiento de datos no son necesarios, lo quepuede obtener como resultado un mejor rendimiento.

Cuando existe interés de lectura-escritura interno de DB2 en un espacio de tablas,índice o partición determinados, este interés de lectura-escritura interno de DB2 esdependiente de la agrupación de almacenamientos intermedios de grupo odependiente de la agrupación de almacenamientos intermedios de grupo.

Para definir las agrupaciones de almacenamientos intermedios de grupo utilicepolíticas de gestión de recursos del recurso de acoplamiento (CFRM).

Capítulo 12. Compartimiento de datos con los datos de DB2 329

Page 339: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

La figura siguiente muestra la correlación que existe entre una agrupación dealmacenamientos intermedios de grupo y las agrupaciones de almacenamientosintermedios de los miembros del grupo. Por ejemplo, cada subsistema DB2 tieneuna agrupación de almacenamientos intermedios denominada BP0. Para elcompartimiento de datos, debe definir una agrupación de almacenamientosintermedios de grupo (GBP0) en el recurso de acoplamiento que se correlacionecon la agrupación de almacenamientos intermedios BP0. GBP0 se utiliza paraponer en antememoria el espacio de tablas de catálogo de DB2 y su índice, ycualquier otros espacios de tablas, índices o particiones que utilicen la agrupaciónde almacenamientos intermedios BP0.

La misma agrupación de almacenamientos intermedios de grupo no puede residiren más de un recurso de acoplamiento (a menos que se haya realizado un dúplexde la misma).

Cuando se cambia una página de datos determinada, DB2 pone en antememoriaesta página de la agrupación de almacenamientos intermedios. El recurso deacoplamiento invalida cualquier imagen de la página que pueda existir en lasagrupaciones de almacenamientos intermedios asociadas con cada miembro. Acontinuación, cuando otro subsistema DB2 solicita posteriormente los mismosdatos, este subsistema DB2 busca los datos en la agrupación de almacenamientosintermedios de grupo.

Ventajas en el rendimientoEl recurso de acoplamiento proporciona operaciones de bloqueo globalrápidas para el control de simultaneidad. Sysplex paralelo ofrece lassiguientes ventajas en rendimiento y escalabilidad:v Las páginas cambiadas se escriben de forma síncrona en el recurso de

acoplamiento, sin la conmutación de proceso asociada con E/S de disco.

Figura 59. Relación entre agrupaciones de almacenamientos intermedios y agrupaciones de almacenamientosintermedios de grupo. Existe una agrupación de almacenamientos intermedios para todas las agrupaciones dealmacenamientos intermedios con el mismo nombre.

330 Introducción a DB2 para z/OS

Page 340: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

v Las señales de invalidación de almacenamiento intermedio se envían yprocesan sin producir ninguna interrupción del procesador, a diferenciade las técnicas en las que se pasan mensajes.

v Una instrucción de hardware rápida detecta los almacenamientosintermedios invalidados y el recurso de acoplamiento puede renovar deforma síncrona los almacenamientos intermedios invalidados sinsobrecarga por conmutación de proceso, a diferencia de en E/S de disco.

Opciones de rendimiento para adaptarse a las necesidades de la propiaaplicación

Aunque el comportamiento por omisión es poner en antememoriaúnicamente los datos actualizados, también dispone de opciones paraponer en antememoria todos los datos o ningún dato. Dispone incluso dela opción de poner en antememoria datos de objetos grandes (LOB).

Conceptos relacionados

″Cómo protege DB2 la coherencia de los datos″ (DB2 Data sharing: Planningand Administration)

Cómo se realizan actualizaciones en un entorno de compartimiento dedatos

Esta información describe el proceso de puesta al día en un entorno decompartimiento de datos.

Puede que esté interesado en saber qué sucede en una página de datos cuandoexperimenta un proceso de puesta al día. La versión más reciente de la página dedatos aparece sombreada en las ilustraciones. En este caso de ejemplo también sesupone que la agrupación de almacenamientos intermedios de grupo se utilizapara poner en antememoria únicamente los datos cambiados (el comportamientopor omisión) y que se duplican para obtener alta disponibilidad. La duplicación esla capacidad de escribir datos para dos instancias de una estructura de agrupaciónde almacenamientos intermedios de grupo: una agrupación primaria dealmacenamientos intermedios de grupo y una agrupación secundaria de almacenamientosintermedios de grupo.

Suponga, tal como muestra la figura siguiente, que una aplicación emite unasentencia UPDATE desde DB2A y que los datos no residen en la agrupación dealmacenamientos intermedios del miembro ni en la agrupación dealmacenamientos intermedios de grupo. En este caso, DB2A debe recuperar losdatos del disco y actualizar los datos en su propia agrupación de almacenamientosintermedios. De forma simultánea, DB2A obtiene los bloqueos apropiados paraimpedir que otro miembro actualice los mismos datos al mismo tiempo. Una vezque la aplicación ha confirmado la actualización, DB2A libera los bloqueoscorrespondientes. La página de datos cambiados permanece en la agrupación dealmacenamientos intermedios de DB2A. Debido a que ningún otro subsistema DB2comparte la tabla en este momento, DB2 no utiliza proceso de compartimiento dedatos para la actualización de DB2A.

Capítulo 12. Compartimiento de datos con los datos de DB2 331

Page 341: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

A continuación, suponga que otra aplicación, que se ejecuta en DB2B, necesitaactualizar esta misma página de datos. (Vea la figura siguiente.) DB2 sabe queexiste un interés interno de DB2, por lo tanto cuando DB2A confirma latransacción, DB2 escribe la página de datos cambiados en la agrupación primariade almacenamientos intermedios de grupo. La escritura en la agrupación dealmacenamientos intermedios de grupo (secundaria) de copia de seguridad sesolapa con la escritura en la agrupación primaria de almacenamientos intermediosde grupo. A continuación, DB2B recupera la página de datos de la agrupaciónprimaria de almacenamientos intermedios de grupo.

Figura 60. Los datos se leen desde disco y una aplicación ejecutada en DB2A los actualiza

332 Introducción a DB2 para z/OS

Page 342: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Una vez que la aplicación que se ejecuta en DB2B ha confirmado la actualización,DB2B mueve una copia de la página de datos a la agrupación de almacenamientosintermedios de grupo (tanto primaria como secundaria) y la página de datos seinvalida en la agrupación de almacenamientos intermedios de DB2A. (Vea la figurasiguiente.) Se produce una invalidación cruzada desde la agrupación primaria dealmacenamientos intermedios de grupo.

Figura 61. Cómo actualiza DB2B la misma página de datos. Cuando DB2B hace referencia a la página, obtiene laversión más reciente de los datos de la agrupación primaria de almacenamientos intermedios de grupo.

Capítulo 12. Compartimiento de datos con los datos de DB2 333

Page 343: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

A continuación, como muestra la figura siguiente, cuando DB2A necesita leer losdatos, la página de datos de su propia agrupación de almacenamientos intermediosno es válida. Por lo tanto, lee la copia más reciente de la agrupación primaria dealmacenamientos intermedios de grupo.

Figura 62. La página actualizada se escribe en la agrupación de almacenamientos intermedios de grupo. La páginade datos se invalida en la agrupación de almacenamientos intermedios de DB2A.

334 Introducción a DB2 para z/OS

Page 344: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

A diferencia de los sistemas de compartimiento de disco que utilizan técnicas deE/S de disco y de transferencia de mensajes tradicionales, el recurso deacoplamiento ofrece las ventajas siguientes:v Las interacciones de agrupaciones de almacenamientos intermedios de grupo

tienen sincronicidad de CPU. Las interacciones con sincronicidad de CPUproporcionan un buen rendimiento al evitar la sobrecarga por conmutación deproceso y al mantener tiempos de respuesta adecuados.

v Las señales de invalidación cruzada no crean interrupciones del procesador enlos sistemas receptores; el hardware las maneja. Las señales evitan unasobrecarga por conmutación de proceso y las interrupciones de antememoria deCPU que se pueden producir si se necesitan interrupciones del procesador paramanejar las invalidaciones cruzadas de entrada.Conceptos relacionados

″Cómo se produce una actualización″ (DB2 Data sharing: Planning andAdministration)

Cómo escribe DB2 los datos cambiados en disco en un entorno decompartimiento de datos

De manera periódica, DB2 debe escribir las páginas cambiadas de una agrupaciónde almacenamientos intermedios de grupo en disco. Este proceso se denominaconversión. El proceso de conversión se ejecuta en segundo plano sin interferir contransacciones.

Suponga que DB2A es el responsable de convertir los datos cambiados. En primerlugar estos datos deben pasar por el espacio de direcciones de DB2A porque noexiste ninguna conexión directa entre el recurso de acoplamiento y el disco. (Vea lafigura siguiente.) Estos datos pasan a través de una agrupación de

Figura 63. DB2A lee los datos desde la agrupación de almacenamientos intermedios de grupo

Capítulo 12. Compartimiento de datos con los datos de DB2 335

Page 345: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

almacenamientos intermedios privada, no a través de agrupaciones dealmacenamientos intermedios de DB2.

Cuando se duplica una agrupación de almacenamientos intermedios de grupo, losdatos no se convierten desde la agrupación de almacenamientos intermedios degrupo secundario al disco. Cuando un conjunto de páginas se escribe en discodesde la agrupación de almacenamientos intermedios de grupo primario, DB2suprime estas páginas de la agrupación de almacenamientos intermedios de gruposecundario.

Conceptos relacionados

″Cómo escribe DB2 los datos cambiados en el disco″ (DB2 Data sharing:Planning and Administration)

Modos en que el compartimiento de datos afecta a otras tareasDebido a que el compartimiento de datos no cambia la interfaz de aplicación, losprogramadores de aplicaciones y los usuarios finales no tienen tareas nuevas. Sinembargo, algunas tareas de programación, de operación y administrativas sonexclusivas del entorno de compartimiento de datos.

Las tareas siguientes son exclusivas del entorno de compartimiento de datos:v Establecimiento de un convenio de denominación para grupos, miembros de

grupos y recursosv Asignación de nuevos miembros a un grupo de compartimiento de datosv Fusión de información de catálogo cuando se mueven datos de subsistemas DB2

existentes a un grupo de compartimiento de datos

Debido a que el catálogo de DB2 está compartido, la definición, la autorización y elcontrol de datos es igual que en entornos que no son de compartimiento de datos.Un administrador necesita asegurar que cada objeto tiene un nombre exclusivo,teniendo en cuenta que los datos existentes se pueden fusionar en un grupo. Esnecesario que los datos residan en discos compartidos.

Figura 64. Escritura de los datos en disco

336 Introducción a DB2 para z/OS

Page 346: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Modos en que el compartimiento de datos afecta a la disponibilidadAlgunas de las ventajas de disponibilidad y consideraciones en un entorno decompartimiento de datos son la capacidad de mantener la disponibilidad duranteuna interrupción, mantener la disponibilidad del recurso de acoplamiento yduplicar agrupaciones de almacenamientos intermedios de grupo.

Disponibilidad durante una interrupción

Una ventaja de disponibilidad significativa durante una interrupción planificada ono planificada de un miembro de grupo de DB2 es que los datos de DB2permanecen disponibles a través de otros miembros del grupo. Algunas situacionescomunes en las que puede planificarse una interrupción incluyen la aplicación demantenimiento de software, la modificación de un parámetro del sistema o lamigración a un release nuevo. Por ejemplo, durante el mantenimiento de softwarepuede aplicar el mantenimiento a un miembro a la vez, lo cual deja disponiblesotros miembros de DB2 para trabajar.

Disponibilidad del recurso de acoplamiento

Cuando se planifica la configuración de compartimiento de datos para la máximadisponibilidad, el principal interés debe ser la protección física del recurso deacoplamiento y las estructuras del recurso de acoplamiento.

Para obtener la máxima disponibilidad debe tener como mínimo dos recursos deacoplamiento. Uno de ellos debe estar físicamente aislado. El recurso deacoplamiento aislado debe residir en un CPC que no contenga ningún miembro deDB2 que esté conectado a estructuras de dicho recurso de acoplamiento. Con dosrecursos de acoplamiento como mínimo se puede evitar un único punto deanomalía.

Duplicación de agrupaciones de almacenamientos intermediosde grupo

Con más de un recurso de acoplamiento también se puede considerar laduplicación de las agrupaciones de almacenamientos intermedios de grupo. Con laduplicación, una agrupación secundaria de almacenamientos intermedios de grupoestá disponible como reserva en otro recurso de acoplamiento, preparada paraactuar como relevo si la estructura de la agrupación primaria de almacenamientosintermedios de grupo falla o si se produce una anomalía de conectividad.

La ejecución de parte o todas las agrupaciones de almacenamientos intermedios degrupo en modalidad de duplicación es un modo de conseguir una disponibilidadalta para las agrupaciones de almacenamientos intermedios de grupo en variostipos de anomalías, que incluyen conexiones perdidas y estructuras dañadas.

Capítulo 12. Compartimiento de datos con los datos de DB2 337

Page 347: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Glosario

terminación anómalaVéase terminación anómala de tarea.

código de razón de terminación anómalaCódigo hexadecimal de 4 bytes queidentifica de modo exclusivo un problemade DB2.

finalización anormal de una tarea (terminaciónanormal)

Finalización de una tarea, trabajo osubsistema debido a una condición deerror que los recursos de recuperación nopueden solucionar durante la ejecución.

servicios de método de accesoRecurso que se utiliza para definir,modificar, imprimir y reproducir archivosen secuencia por clave VSAM.

vía de accesoVía que se utiliza para localizar datos quese especifican en sentencias de SQL. Unavía de acceso puede ser indexada osecuencial.

archivo de registro activoParte del archivo de registro de DB2donde se escriben registros de anotacionesa medida que se generan. El archivo deregistro activo contiene siempre losregistros de anotaciones más recientes.Véase también archivo de registro dearchivar.

espacio de direccionesRango de páginas de almacenamientovirtual que se identifica mediante unnúmero (ASID) y una colección de tablasde segmento y página que correlaciona laspáginas virtuales con las páginas realesde la memoria del sistema.

conexión del espacio de direccionesEl resultado de conectar un espacio dedirecciones aliado a DB2. Véase tambiénespacio de direcciones aliado y bloque decontrol de tareas.

identificador del espacio de direcciones (ASID)Identificador exclusivo asignado por elsistema para un espacio de direcciones.

desencadenante AFTER (posterior)Desencadenante especificado paraactivarse después de un suceso

desencadenante definido (una operaciónde inserción, actualización o supresión enla tabla especificada en una definición dedesencadenante). Compárese condesencadenante BEFORE ydesencadenante INSTEAD OF.

agente En DB2, estructura que asocia todos losprocesos que intervienen en una unidadde trabajo de DB2. Véase también agentealiado y agente del sistema.

función de totalesOperación que obtiene su resultadoutilizando valores procedentes de una omás filas. Compárese con función escalar.

alias Nombre alternativo que puede utilizarseen sentencias de SQL para especificar unatabla o vista situada en un subsistemalocal o remoto de DB2. Un alias se puedecalificar con un calificador de esquema ypor lo tanto los otros usuarios puedenhacer referencia al mismo. Compárese consinónimo.

espacio de direcciones aliadoÁrea de almacenamiento que es externa aDB2 y que está conectada a DB2. Unespacio de direcciones aliado puedesolicitar servicios de DB2. Véase tambiénespacio de direcciones.

agente aliadoAgente que representa peticiones detrabajo que se originan en espacios dedirecciones aliados. Véase también agentedel sistema.

hebra aliadaHebra que se origina en el subsistemalocal de DB2 y que puede acceder a losdatos de un subsistema remoto de DB2.

cursor asignadoCursor que se define para conjuntos deresultados de procedimientosalmacenados utilizando la sentenciaALLOCATE CURSOR de SQL.

cursor ambiguoCursor de base de datos para el que DB2no puede determinar si se utiliza confines de actualización o sólo de lectura.

© Copyright IBM Corp. 2001, 2008 357

|||

||||||

|||

||||||

||||||||

Page 348: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

APAR Véase informe autorizado de análisis deprograma.

APF Véase programa autorizado.

API Véase interfaz de programación deaplicaciones.

APPL Sentencia de definición de red de VTAMque se utiliza para definir DB2 paraVTAM como programa de aplicación queutiliza protocolos LU 6.2 de SNA.

aplicaciónPrograma o conjunto de programas querealiza una tarea; por ejemplo, unaaplicación de nóminas.

plan de aplicaciónEstructura de control que se producedurante el proceso de vinculación. DB2utiliza el plan de aplicación para procesarsentencias de SQL que encuentra durantela ejecución de sentencias.

proceso de aplicaciónUnidad a la que se asignan recursos ybloqueos. Un proceso de aplicaciónimplica la ejecución de uno o másprogramas.

Interfaz de programación de aplicaciones (API)Interfaz funcional facilitada por el sistemaoperativo o por medio de un programabajo licencia que puede pedirse porseparado y que permite a un programa deaplicación escrito en un lenguaje de altonivel utilizar funciones o datos específicosdel programa bajo licencia o del sistemaoperativo.

peticionario de aplicacionesComponente situado en un sistemaremoto que genera peticiones de datos deDRDA en nombre de una aplicación.

servidor de aplicacionesDestino de una petición procedente deuna aplicación remota. En el entorno DB2,el recurso de datos distribuidosproporciona la función de servidor deaplicaciones y se utiliza para acceder adatos de DB2 desde aplicaciones remotas.

archivo de registro de archivarParte del archivo de registro de DB2 quecontiene registros de anotaciones que sehan copiado del archivo de registroactivo. Véase también archivo de registroactivo.

ASCII Esquema de cifrado que se utiliza pararepresentar series en muchos entornos,normalmente en sistemas PC y estacionesde trabajo. Compárese con EBCDIC yUnicode.

ASID Véase identificador de espacio dedirecciones.

recurso de conexiónInterfaz entre DB2 y TSO, IMS, CICS oespacios de direcciones de proceso porlotes. El recurso de conexión permite quelos programas de aplicación accedan aDB2.

atributoCaracterística de una entidad. Porejemplo, en el diseño de bases de datos, elnúmero de teléfono de un empleado esun atributo de dicho empleado.

ID de autorizaciónSerie de caracteres que se puede verificarpara la conexión a DB2 y que tieneasignado un conjunto de privilegios. UnID de autorización puede representar unindividuo o un grupo organizativo.

informe autorizado de análisis de programa(APAR)

Informe sobre un problema ocasionadopor un presunto defecto en un releaseactual de un programa proporcionado porIBM.

recurso de programa autorizado (APF)Recurso que permite que una instalaciónidentifique programas del sistema o delusuario que pueden utilizar funcionessensibles del sistema.

vinculación automática(Más correctamente, revinculaciónautomática.) Proceso por el que lassentencias de SQL se vinculanautomáticamente (sin que el usuarioemita un mandato BIND) cuando unproceso de aplicación comienza laejecución y el plan o paquete deaplicación vinculado necesario para eseproceso no es válido.

reescritura automática de consultasProceso por el que se examina unasentencia de SQL donde se especificanuna o más tablas base o tablas deconsultas materializadas y, si es necesario,vuelve a escribir la consulta para mejorarsu rendimiento.

358 Introducción a DB2 para z/OS

|||||

||||

Page 349: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

índice auxiliarÍndice de una tabla auxiliar en la quecada entrada de índice hace referencia aun LOB o documento XML.

tabla auxiliarTabla que contiene columnas situadasfuera de la tabla en la que se handefinido. Las tablas auxiliares puedencontener datos LOB o XML.

restituirProceso de deshacer los cambios noconfirmados que realizó un proceso deaplicación. La restitución a menudo serealiza en el caso de un error en unproceso de aplicación o como resultadode una situación de punto muerto.

recuperación inversa del registroFase final del proceso de reinicio durantela cual DB2 examina el archivo de registroen sentido inverso para aplicar registrosUNDO para todos los cambiosterminados anormalmente.

tabla baseTabla que se crea por medio de lasentencia de CREATE TABLE de SQL yque contiene datos persistentes.Compárese con tabla de réplica, tabla deconsultas materializadas, tabla deresultados, tabla temporal y tabla detransición.

espacio de tablas baseEspacio de tablas que contiene tablasbase.

formato de fila básicoFormato de fila en el que se almacenanvalores para las columnas en la fila en elorden en el que la sentencia CREATETABLE define las columnas. Compáresecon formato de fila reordenado.

método de acceso secuencial básico - BSAMMétodo de acceso para almacenar orecuperar bloques de datos en unasecuencia continua, utilizando undispositivo de acceso secuencial o deacceso directo.

desencadenante BEFORE (anterior)Desencadenante especificado paraactivarse antes de un sucesodesencadenante definido (una operaciónde inserción, actualización o supresiónespecificada en una definición de

desencadenante). Compárese condesencadenante AFTER y desencadenanteINSTEAD OF.

objeto grande binario (BLOB)Tipo de datos de serie binaria quecontiene una secuencia de bytes quepuede estar entre 0 bytes y 2 GB, menos 1byte. Esta serie no tiene una página decódigos y juego de caracteres asociados.Los BLOB pueden contener, por ejemplo,datos de imagen, audio o vídeo. Engeneral, se utilizan valores de BLOBsiempre que una serie binaria puedeexceder los límites del tipo VARBINARY.

serie binariaSecuencia de bytes que no está asociada aun CCSID. El tipo de datos de seriebinaria se puede clasificar además comoBINARY, VARBINARY o BLOB.

vinculaciónProceso por el que se genera unaestructura de control utilizable consentencias de SQL; la estructura amenudo se denomina plan de acceso,plan de aplicación o paquete. Duranteeste proceso de vinculación, seseleccionan las vías de acceso a los datosy se realizan algunas comprobaciones deautorización. Véase también vinculaciónautomática.

datos de bit

v Datos con tipo de carácter CHAR oVARCHAR definido con la cláusulaFOR BIT DATA. Tenga en cuenta quese recomienda encarecidamente utilizarBINARY o VARBINARY en lugar deFOR BIT DATA.

v Datos con tipo de carácter CHAR oVARCHAR definido con la cláusulaFOR BIT DATA.

v Forma de datos de tipo carácter.Normalmente los datos binarios sonmucho más recomendables que losdatos carácter-para-bit.

BLOB Véase objeto grande binario.

captación en bloqueCapacidad de DB2 para recuperar ocaptar un conjunto grande de filas juntas.La captación en bloque puede disminuirsignificativamente el número de mensajesque se envían por la red. La captación en

Glosario 359

|||

||||||

||||||

|||

||||||||||

||||

||||||||||

||||||

|||

||||

|||||

Page 350: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

bloque sólo es aplicable a cursores que noson de conjunto de filas que no actualizanlos datos.

archivo de arranque (BSDS)Archivo VSAM que contiene informaciónde nombre y estado para DB2 yespecificaciones de rangos de RBA paratodos los archivos de datos activos y dearchivado. BSDS también contienecontraseñas para el directorio y catálogode DB2 y listas de registros de punto decontrol y rearranque condicionales.

BSAMVéase método de acceso secuencial básico.

BSDS Véase archivo de arranque.

agrupación de almacenamientos intermediosÁrea de memoria en la que se leen,modifican y mantienen páginas de datosdurante el proceso.

tipo de datos incorporadoTipo de datos proporcionado por IBM.Entre los tipos de datos incorporados paraDB2 para z/OS se encuentran lossiguientes: string, numeric, XML, ROWIDy datetime. Compárese con tipodiferenciado.

función incorporadaFunción generada por DB2 y que estácontenida en el esquema SYSIBM.Compárese con función definida por elusuario. Véase también función, funciónde conversión, función externa, funciónderivada y función de SQL.

dimensión de negocioCategoría de datos, tales como productoso períodos de tiempo, que una empresapuede desear analizar.

estructura de antememoriaEstructura del recurso de acoplamientoque almacena datos que pueden estardisponibles para todos los miembros deun Sysplex. Un grupo de compartimientode datos de DB2 utiliza estructuras deantememoria como agrupaciones dealmacenamiento intermedio de grupo.

CAF Véase recurso de conexión de llamada.

recurso de conexión de llamada (CAF)Recurso de conexión de DB2 paraprogramas de aplicación que se ejecutanen TSO o z/OS por lotes. El CAF es unaalternativa al procesador de mandatos de

DSN y proporciona un mayor controlsobre el entorno de ejecución. Compáresecon recurso de conexión de los serviciosdel gestor de recursos recuperables.

interfaz de nivel de llamada (CLI)Interfaz de programación de aplicaciones(API) invocable, que se utiliza paraacceder a bases de datos como alternativaal uso de SQL incorporado.

supresión en cascadaProceso mediante el que DB2 aplicarestricciones de referencia cuandosuprime todas las filas descendientes deuna fila padre suprimida.

expresión CASEExpresión que se selecciona de acuerdocon la evaluación de una o máscondiciones.

función de conversiónFunción que se utiliza para convertirinstancias de un tipo de datos (fuente) eninstancias de un tipo de datos diferente(destino).

conversiónProceso de DB2 por el que las páginascambiadas de una agrupación dealmacenamiento intermedio de grupo segraban en disco.

propietario de la conversiónMiembro de DB2 encargado de convertirun conjunto de páginas o una particióndeterminados.

catálogoEn DB2, colección de tablas que contienedescripciones de objetos tales como tablas,vistas e índices.

tabla de catálogoCualquier tabla del catálogo de DB2.

CCSIDVéase identificador de juego de caracterescodificados.

CDB Véase base de datos de comunicaciones.

CDRAVéase Arquitectura de representación dedatos de tipo carácter.

CEC Véase complejo central de procesadores.

complejo electrónico central (CEC)Véase complejo central de procesadores.

360 Introducción a DB2 para z/OS

|||

|||

||||||

||||||

Page 351: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

complejo central de procesadores (CPC)Colección física de hardware que constade almacenamiento principal, uno o másprocesadores centrales, temporizadores ycanales.

procesador central (CP)Parte del sistema que contiene losrecursos de ordenación y proceso para laejecución de instrucciones, la carga inicialdel programa y otras operaciones demáquina.

CFRM Véase gestión de recursos del recurso deacoplamiento.

política de CFRMNormas de asignación para unaestructura del recurso de acoplamientoque son declaradas por un administradorde z/OS.

conversión de caracteresProceso de cambiar caracteres desde unsistema de codificación a otro.

Arquitectura de representación de datos de tipocarácter (CDRA)

Arquitectura que se utiliza pararepresentar de forma coherente, procesare intercambiar datos de tipo carácter.

objeto grande de caracteres (CLOB)Tipo de datos de serie de caracteres quecontiene una secuencia de bytes querepresenta caracteres (byte único,multibyte, o ambos) que puede estar entre0 bytes y 2 GB de tamaño, menos 1 byte.En general, los valores de CLOB seutilizan cuando una serie de caracterespuede superar los límites del tipoVARCHAR.

juego de caracteresJuego definido de caracteres.

serie de caracteresSecuencia de bytes que representan datosbinarios, caracteres de un solo byte o unamezcla de caracteres de un solo byte y devarios bytes. Los datos de tipo carácter sepueden clasificar además comoCHARACTER, VARCHAR o CLOB.

restricción de comprobaciónRestricción definida por el usuario queespecifica los valores que puedencontener columnas especificas de unatabla base.

integridad de comprobaciónCondición que existe cuando cada fila deuna tabla cumple las restricciones decomprobación que se han definido en esatabla.

pendiente de comprobaciónEstado de un espacio de tablas o particiónque impide su utilización por parte dealgunos programas de utilidad y dealgunas sentencias de SQL debido a filasque violan restricciones de referencia,restricciones de comprobación o ambasrestricciones.

punto de controlPunto en el que DB2 registra informaciónde estado en el archivo de registro deDB2; el proceso de recuperación utilizaesta información si DB2 finaliza de formaanómala.

bloqueo hijoEn un bloqueo jerárquico explícito,bloqueo que se mantiene sobre una tabla,página, fila u objeto grande (LOB). Cadabloqueo hijo tiene un bloqueo padre.Véase también bloqueo padre.

CI Véase intervalo de control.

CICS En el contexto presente, este términocorresponde a: CICS Transaction Serverfor z/OS: Customer Information ControlSystem Transaction Server for z/OS.

recurso de conexión CICSRecurso que proporciona una conexiónmultihebra a DB2 para permitir que lasaplicaciones que se ejecutan en el entornoCICS ejecuten sentencias de DB2.

reclamaciónNotificación que se hace a DB2 parainformarle de que se está accediendo a unobjeto. Las reclamaciones impiden que seproduzcan consumos hasta que se liberala reclamación, lo cual suele ocurrir en unpunto de confirmación. Compárese conconsumo.

clase de reclamaciónTipo específico de acceso a objeto, quepuede ser uno de los niveles deaislamiento siguientes:v Estabilidad del cursor (CS)v Lectura repetida (RR)v Escritura

Glosario 361

|||||||||

||||||

||||

Page 352: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

clase de servicioTérmino de VTAM que designa una listade rutas de una red, dispuestas por ordende preferencia para su utilización.

cláusulaEn SQL, parte diferenciada de unasentencia, tal como una cláusula SELECTo una cláusula WHERE.

CLI Véase interfaz de nivel de llamada.

clienteVéase peticionario.

CLOB Véase objeto grande de caracteres.

objeto de réplicaObjeto asociado con una tabla de réplica,incluida la propia tabla de réplica y lasrestricciones de comprobación, índices ydesencadenantes BEFORE en la tabla deréplica.

tabla de réplicaTabla estructuralmente idéntica a unatabla base. La tabla base y la tabla deréplica tienen archivos VSAM distintos,identificados por sus números deinstancia de archivo. Compárese con tablabase.

aplicación cerradaAplicación que requiere la utilizaciónexclusiva de determinadas sentencias enciertos objetos de DB2, por lo que losobjetos únicamente se gestionan a travésde la interfaz externa de la aplicación.

índice de clústerÍndice que determina cómo las filas seordenan físicamente (agrupan en clústeres)en un espacio de tablas. Si un índice declúster en una tabla particionada no es uníndice de particionamiento, las filas seordenan en la secuencia de clúster encada partición de datos en lugar dedividirse entre las particiones.

CM Véase modalidad de compatibilidad.

CM* Véase modalidad de compatibilidad*.

miembro C++Función u objeto de datos contenido enuna estructura, unión o clase.

función de miembro C++Operador o función que se ha declaradocomo miembro de una clase. Una funciónde miembro tiene acceso a los miembrosde datos privados y protegidos y a las

funciones de miembro de los objetos desu clase. A las funciones de miembrotambién se las denomina métodos.

objeto C++Región de almacenamiento. Objeto que secrea cuando se define una variable o seinvoca una nueva función.

Instancia de una clase.

juego de caracteres codificadosConjunto de normas no ambiguas quedefinen un juego de caracteres y lasrelaciones ″de uno a uno″ entre loscaracteres del conjunto y susrepresentaciones codificadas.

identificador de juego de caracteres codificados(CCSID)

Número de 16 bits que identificaexclusivamente una representacióncodificada de caracteres gráficos. Designaun identificador de esquema decodificación y uno o más pares queconstan de un identificador del juego decaracteres y un identificador de la páginade códigos asociada.

página de códigosConjunto de asignaciones de caracteres apuntos de código. Dentro de una páginade códigos, cada elemento de código tieneun solo significado específico. EnEBCDIC, por ejemplo, el carácter A tieneasignado el elemento de código X’C1’, yel carácter B tiene asignado el elementode código X’C2’.

elemento de códigoEn CDRA, patrón de bits exclusivo querepresenta un carácter de una página decódigos.

unidad de códigoAncho binario fundamental en unaarquitectura de sistemas utilizado pararepresentar datos de tipo carácter, talescomo 7 bits, 8 bits, 16 bits, o 32 bits. Enfunción de la forma de codificación decaracteres que se utiliza, cada punto decódigo en un juego de caracterescodificado puede estar representado poruna o varias unidades de código.

coexistenciaDurante la migración, período de tiempoen el que dos releases existen en el mismogrupo de compartimiento de datos.

362 Introducción a DB2 para z/OS

||||||

|||||||

|

|

Page 353: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

arranque en fríoProceso por el que DB2 rearranca sinprocesar ningún registro del archivo deregistro. Compárese con arranque encaliente.

colecciónGrupo de paquetes que tienen el mismocalificador.

columnaComponente vertical de una tabla. Unacolumna tiene un nombre y un tipo dedatos determinado (por ejemplo,CHARACTER, DECIMAL o INTEGER).

función de columnaVéase función de agregación.

comprobación de la procedencia (″come from″)Opción de seguridad de LU 6.2 quedefine una lista de los ID de autorizaciónque pueden conectarse a DB2 desde unaLU asociada.

mandatoMandato de operador o submandato deDSN de DB2. Un mandato es diferente deuna sentencia de SQL.

prefijo de mandatoIdentificador de mandatos de 1 a 8caracteres. El prefijo de mandatodistingue el mandato como pertenecientea una aplicación o subsistema en lugar depertenecer a z/OS.

carácter de reconocimiento de mandatos (CRC)Carácter que permite que un operador deconsola z/OS o un usuario de unsubsistema de IMS direccione mandatosde DB2 hacia subsistemas de DB2específicos.

ámbito del mandatoÁmbito de actuación de un mandato enun grupo de compartimiento de datos.

confirmarOperación por la que finaliza una unidadde trabajo mediante la liberación debloqueos para que los cambios de base dedatos hechos por esa unidad de trabajopuedan ser percibidos por otros procesos.Compárese con retrotraer.

punto de confirmaciónPunto en el tiempo en el que los datos seconsideran coherentes.

área de servicio común (CSA)En z/OS, parte del área común quecontiene áreas de datos que sondireccionables por todos los espacios dedirecciones. La mayor parte del uso deDB2 se realiza en el CSA ampliado, queestá situado sobre la línea de 16 MB.

base de datos de comunicaciones (CDB)Conjunto de tablas del catálogo de DB2que se utilizan para establecerconversaciones con sistemas de gestión debases de datos remotos.

operador de comparaciónSímbolo (tal como =, > o < ) que se utilizapara especificar una relación entre dosvalores.

modalidad* de compatibilidad (CM*)Etapa del proceso de migración deversión a versión que se aplica a ungrupo de compartimiento de datos osubsistema de DB2 que estaba enmodalidad de habilitación de nuevafunción (ENFM), modalidad* dehabilitación de nueva función (ENFM*) omodalidad de nueva función (NFM) enun momento dado. No se permite volvera una versión anterior. Cuando está enmodalidad* de compatibilidad, un grupode compartimiento de datos de DB2 nopuede coexistir con miembros que aún seencuentran en el nivel de versión anterior.Compárese con modalidad decompatibilidad, modalidad de habilitaciónde nueva función, modalidad dehabilitación de nueva función* ymodalidad de nueva función.

modalidad de compatibilidad (CM)Primera etapa del proceso de migraciónde versión a versión. En un grupo decompartimiento de datos de DB2, puedencoexistir miembros en modalidad decompatibilidad con miembros que aún seencuentran en el nivel de versión anterior.También se permite volver a la versiónanterior. Cuando está en modalidad decompatibilidad, el subsistema de DB2 nopuede utilizar ninguna función nueva dela nueva versión. Compárese conmodalidad de compatibilidad*, modalidadde habilitación de nueva función,modalidad de habilitación de nuevafunción* y modalidad de nueva función.

Glosario 363

||||||

||||||||||||||||||||

||||||||||||||||

Page 354: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

clave compuestaConjunto ordenado de columnas clave oexpresiones de la misma tabla.

diccionario de compresiónEl diccionario que controla el proceso decompresión y descompresión. Estediccionario se crea a partir de los datosdel espacio de tablas o de la partición delespacio de tablas.

simultaneidadUtilización compartida de recursos porparte de más de un proceso de aplicaciónal mismo tiempo.

reinicio condicionalReinicio de DB2 que ha sido dirigido porun registro de control de reiniciocondicional definido por el usuario(CRCR).

conexiónEn SNA, existencia de una vía decomunicación entre dos LU asociadas quepermite el intercambio de información(por ejemplo, dos subsistemas de DB2 queestán conectados y se comunicanmediante una conversación).

contexto de conexiónEn SQLJ, objeto de Java que representauna conexión con una fuente de datos.

cláusula de declaración de conexiónEn SQLJ, sentencia que declara unaconexión con una fuente de datos.

descriptor de conexiónObjeto de datos que contiene informaciónasociada con una conexión gestionada porDB2 ODBC. Incluye información generalde estado, de estado de transacción einformación de diagnóstico.

ID de conexiónIdentificador que proporciona el recursode conexión y que está asociado a unaconexión de espacio de direccionesespecífico.

símbolo de coherenciaIndicación horaria que se utiliza paragenerar el identificador de versión parauna aplicación. Véase también versión.

constanteElemento de lenguaje que especifica unvalor no variable. Las constantes puedenser constantes de tipo serie o constantesnuméricas. Compárese con variable.

restricciónNorma que limita los valores que sepueden insertar, eliminar o actualizar enuna tabla. Véase restricción de referencia,restricción de comprobación y restricciónde exclusividad.

contextoConexión lógica de una aplicación con lafuente de datos e información deconexión ODBC de DB2 asociada quepermite a la aplicación dirigir susoperaciones a una fuente de datos. Uncontexto ODBC de DB2 representa unahebra de DB2.

conversión con contracciónProceso que se produce cuando lalongitud de una serie de caracteresconvertida es menor que la serie original.Por ejemplo, este proceso ocurre cuandouna serie mixta de caracteres EBCDIC quecontiene caracteres DBCS se convierte adatos ASCII mixtos; la serie convertida esmás corta debido a la supresión de loscódigos de desplazamiento.

intervalo de control (control interval, CI)

v Unidad de información que VSAMtransfiere entre almacenamiento virtualy auxiliar.

v En un archivo en secuencia por clave,conjunto de registros al que apunta unaentrada en el registro de índice deconjuntos de secuencia.

conversaciónComunicación, basada en LU 6.2 o APPC(Advanced Program-to-ProgramCommunication), entre una aplicación yun programa de transacciones remoto através de una sesión SNA de unidadlógica a unidad lógica (LU-LU) quepermite la comunicación mientras seprocesa una transacción.

coordinadorComponente del sistema que coordina laconfirmación o retrotracción de unaunidad de trabajo que incluye el trabajoque se realiza en uno o más sistemasdiferentes.

coprocesadorVéase coprocesador de sentencias de SQL.

agrupación de copiaColección de nombres de grupos de

364 Introducción a DB2 para z/OS

||

|

Page 355: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

almacenamiento que se procesancolectivamente para operaciones rápidasde réplica.

destino de copiaConjunto con nombre de grupos dealmacenamiento de SMS que se utilizaráncomo contenedores para las copias de losvolúmenes de una agrupación de copia.Un destino de copia es una construcciónde SMS que permite definir los grupos dealmacenamiento que deben utilizarsecomo contenedores para los volúmenesque se copian utilizando la funciónFlashCopy.

versión de copiaCopia de FlashCopy de punto en eltiempo gestionada por HSM. Cadaagrupación de copias tiene un parámetrode versión que especifica cuántasversiones de copia se mantienen en eldisco.

columnas correlacionadasRelación entre el valor de una columna yel valor de otra columna.

subconsulta correlacionadaSubconsulta (parte de una cláusulaWHERE o HAVING) aplicada a una fila ogrupo de filas de una tabla o vistanombrada en una sentencia subselectexterna.

ID de correlaciónIdentificador asociado a una hebraespecífica. En TSO, es un ID deautorización o el nombre de trabajo.

nombre de correlaciónIdentificador que se especifica y utilizadentro de una sentencia individual deSQL como nombre expuesto para objetostales como una tabla, una vista, unareferencia de función de tabla, unaexpresión de tabla anidada o el resultadode una sentencia de cambio de datos. Losnombres de correlación son útiles en unasentencia de SQL para permitir dosreferencias distintas a la misma tabla basey para permitir que se utilice un nombrealternativo para representar un objeto.

categoría de costeCategoría en la que DB2 coloca lasestimaciones de coste para sentencias deSQL en el momento en que se vincula lasentencia. La categoría de coste se

externaliza en la columnaCOST_CATEGORY deDSN_STATEMNT_TABLE cuando seexplica una sentencia.

recurso de acoplamientoPartición lógica (LPAR) especial dePR/SM que ejecuta el programa decontrol del recurso de acoplamiento yproporciona puesta en antememoria dealta velocidad, proceso de listas yfunciones de bloqueo en Parallel Sysplex.

gestión de recursos del recurso de acoplamiento(CFRM)

Componente de z/OS que proporcionalos servicios para gestionar recursos delrecurso de acoplamiento en un ParallelSysplex. Esta gestión incluye la aplicaciónde políticas de CFRM para asegurar quese cumplan los requisitos del recurso deacoplamiento y de estructura.

CP Véase procesador central.

CPC Véase complejo central de procesadores.

CRC Véase carácter de reconocimiento demandatos.

tabla temporal creadaTabla permanente que contiene datostemporales y se define mediante lasentencia CREATE GLOBALTEMPORARY TABLE de SQL. En elcatálogo de DB2 se almacena informaciónsobre tablas temporales creadas, quepuede ser compartida por procesos deaplicación. Compárese con tabla temporaldeclarada. Véase también tabla temporal.

recurso de acoplamiento entre sistemas (XCF)Componente de z/OS que proporcionafunciones para permitir la cooperaciónentre programas autorizados que seejecutan en un Sysplex.

servicios ampliados entre sistemas (XES)Conjunto de servicios de z/OS permitenque varias instancias de una aplicación osubsistema, que se ejecutan en diferentessistemas en un entorno Sysplex, apliquenun compartimiento de datos de altorendimiento y alta disponibilidadutilizando un recurso de acoplamiento.

CS Véase estabilidad del cursor.

CSA Véase área de servicio común.

CT Véase tabla de cursor.

Glosario 365

|||

||||||||||||

||||||

Page 356: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

datos actualesDatos de la estructura de sistemaprincipal que es actual (idéntica) respectoa los datos de la tabla base.

reconstrucción del estado actualSegunda fase del proceso de reiniciodurante la cual el estado del subsistemase reconstruye a partir de la informacióndel registro.

cursor Estructura de control que un programa deaplicación utiliza para apuntar a una ovarias filas dentro de un conjuntoordenado de filas de una tabla deresultados. Un cursor puede utilizarsepara recuperar, actualizar o suprimir filasde una tabla de resultados.

sensibilidad del cursorGrado en el que las actualizaciones de labase de datos pueden ser percibidas porlas sentencias FETCH subsiguientes en uncursor.

estabilidad del cursor (CS)Nivel de aislamiento que proporciona elmáximo nivel de simultaneidad sin laposibilidad de leer datos no confirmados.Con la estabilidad del cursor, una unidadde trabajo sólo mantiene bloqueos paralos cambios no confirmados y para la filaactual de cada uno de sus cursores. Véasetambién estabilidad de lectura, lecturarepetible y lectura no confirmada.

tabla de cursor (CT)Representación interna de un cursor.

ciclo Conjunto de tablas que pueden ordenarsede modo que cada tabla descienda de laprecedente y la primera descienda de laúltima tabla. Una tabla de autorreferenciaes un ciclo con un único miembro. Véasetambién ciclo referencial.

base de datosColección de tablas o colección deespacios de tablas y de espacios de índice.

hebra de acceso a base de datos (DBAT)Hebra que accede a datos del subsistemalocal a petición de un sistema remoto.

administrador de la base de datos (DBA)Persona encargada de diseñar, desarrollar,dirigir, proteger, mantener y utilizar unabase de datos.

alias de base de datosNombre del servidor de destino, si es

distinto del nombre de ubicación. El aliasde base de datos se utiliza paraproporcionar el nombre del servidor debases de datos tal como es conocido en lared.

descriptor de base de datos (DBD)Representación interna de la definición deuna base de datos de DB2, que refleja ladefinición de los datos encontrados en elcatálogo de DB2. Los objetos que sedefinen en un descriptor de base de datosson espacios de tabla, tablas, índices,espacios de índices, relaciones,restricciones de comprobación ydesencadenantes. Un DBD tambiéncontiene información sobre las tablas deacceso de la base de datos.

estado de excepción de la base de datosEn un entorno de compartimiento dedatos, indicación de que hay algo mal enuna base de datos.

identificador de base de datos (DBID)Identificador interno de la base de datos.

sistema de gestión de bases de datos (DBMS)Sistema de software que controla lacreación, organización y modificación deuna base de datos y el acceso a los datosque están almacenados en ella.

módulo de solicitud de la base de datos(DBRM)

Miembro de archivo creado por elprecompilador de DB2 y que contieneinformación sobre sentencias de SQL. LosDBRM se utilizan en el proceso devinculación.

servidor de bases de datosDestino de una petición procedente deuna aplicación local o un servidor debases de datos intermedio remoto.

vigencia de los datosEstado en el que los datos recuperados enuna variable de lenguaje principal de unprograma son una copia de los datos dela tabla base.

diccionario de datosDepósito de información sobre losprogramas de aplicación, bases de datos,modelos lógicos de datos, usuarios yautorizaciones existentes en una empresa.

366 Introducción a DB2 para z/OS

|

Page 357: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

partición de datosArchivo VSAM que se halla en un espaciode tablas particionado.

índice secundario de datos particionados (DPSI)El índice secundario que está particionadosegún los datos subyacentes. Compáresecon índice secundario no particionado.

número de instancia de archivoNúmero que indica el archivo quecontiene los datos para un objeto.

compartimiento de datosFunción de DB2 para z/OS que permiteque aplicaciones situadas en subsistemasDB2 diferentes lean y escriban en losmismos datos concurrentemente.

grupo de compartimiento de datosColección de uno o más subsistemas DB2que acceden directamente y cambian losmismos datos al tiempo que mantienen laintegridad de los datos.

miembro de compartimiento de datosSubsistema de DB2 asignado por losservicios de XCF a un grupo decompartimiento de datos.

fuente de datosGestor de datos relacionales o norelacionales local o remoto que puede darsoporte al acceso de datos por medio deun controlador de ODBC que da soportea las API de ODBC. En el caso de DB2para z/OS, las fuentes de datos sonsiempre gestores de bases de datosrelacionales.

tipo de datosAtributo de columnas, constantes,variables, parámetros, registros especialesy los resultados de funciones yexpresiones.

depósito de datosSistema que proporciona informacióncomercial crítica a una empresa. Eldepósito de datos depura los datos paraque sean exactos y actuales y luego lospresenta al proceso de toma de decisionespara que se puedan interpretar y utilizarde forma efectiva y eficiente.

DBA Véase administrador de la base de datos.

DBAT Véase hebra de acceso a base de datos.

catálogo de DB2Colección de tablas mantenidas por DB2

que contienen descripciones de objetos deDB2, tales como tablas, vistas e índices.

DBCLOBVéase objeto grande de caracteres dedoble byte.

mandato de DB2Instrucción para el subsistema de DB2que un usuario debe entrar para iniciar odetener DB2, visualizar información sobreusuarios actuales, iniciar o detener basesde datos, visualizar información sobre elestado de las bases de datos, etc.

DBCS Véase juego de caracteres de doble byte.

DBD Véase Descripción de base de datos.

DB2I Véase DB2 Interactivo.

DBID Véase identificador de base de datos.

DB2 Interactivo (DB2I)Servicio interactivo de DB2 que facilita laejecución de sentencias de SQL, mandatosde DB2 (operador) y mandatos deprogramador, así como la invocación deprogramas de utilidad.

DBMSVéase sistema de gestión de bases dedatos.

DBRMVéase módulo de petición de base dedatos.

hebra de DB2Estructura del gestor de bases de datosque describe una conexión de aplicación,rastrea su progreso, procesa las funcionesde recursos y delimita su accesibilidad alos recursos y servicios del gestor debases de datos. La mayoría de lasfunciones de DB2 para z/OS se ejecutande acuerdo con una estructura de hebras.

DCLGENVéase generador de declaraciones.

DDF Véase recurso de datos distribuidos.

punto muertoConflicto irresoluble por la utilización deun recurso, tal como una tabla o uníndice.

generador de declaraciones (DCLGEN)Subcomponente de DB2 que generadeclaraciones de tabla de SQL ydeclaraciones de estructura de datos deCOBOL, C o PL/I que se adaptan a la

Glosario 367

|||

||||||||

Page 358: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

tabla. Las declaraciones se generan desdela información de catálogo de sistema deDB2.

tabla temporal declarada tablas temporalesdeclaradas

Tabla no permanente que contiene datostemporales y se define mediante lasentencia DECLARE GLOBALTEMPORARY TABLE de SQL. Lainformación sobre tablas temporalesdeclaradas no se almacena en el catálogode DB2 y sólo puede ser utilizada por elproceso de aplicación que emitió lasentencia DECLARE. Compárese con tablatemporal creada. Véase también tablatemporal.

valor por omisiónValor, atributo u opción predeterminadosque se presupone cuando no se especificaexplícitamente ningún otro. Se puededefinir un valor por omisión para datosde columna contenidos en tablas de DB2especificando la palabra clave DEFAULTen una sentencia de SQL que cambiedatos (tal como INSERT, UPDATE yMERGE).

SQL incorporado diferidoSentencias de SQL que no soncompletamente estáticas nicompletamente dinámicas. Estassentencias están incluidas dentro de unaaplicación y se preparan durante laejecución de la aplicación.

escritura diferidaProceso de escribir de forma asíncronapáginas de datos modificadas en el discoduro.

grado de paralelismoNúmero de operaciones ejecutadas demodo simultáneo que se inician paraprocesar una consulta.

hueco por supresiónUbicación en la que se encuentra uncursor cuando se vuelve a leer una fila enuna tabla de resultados y la fila ya noexiste en la tabla base. Véase tambiénhueco por actualización.

norma de supresiónNorma que indica a DB2 lo que ha dehacer en una fila dependiente cuando sesuprime una fila padre. Las normas de

supresión incluyen CASCADE,RESTRICT, SET NULL o NO ACTION.

desencadenante de supresiónDesencadenante que se define con laoperación de SQL de desencadenante desupresión.

identificador delimitadoSecuencia de caracteres que estánencerrados entre caracteres de escape.

símbolo delimitadorConstante de tipo carácter, identificadordelimitado, símbolo de operador ocualquiera de los caracteres especiales queaparecen en los diagramas de sintaxis deDB2.

denormalizaciónDuplicación intencionada de columnas envarias tablas para aumentar laredundancia de datos. Ladenormalización es a veces necesaria paraminimizar los problemas de rendimiento.Compárese con normalización.

dependienteObjeto (fila, tabla o espacio de tablas) quetiene como mínimo un padre. También sedice que el objeto (fila, tabla o espacio detablas) es dependiente de su padre. Véasetambién fila padre, tabla padre y espaciode tablas padre.

fila dependienteFila que contiene una clave externa quecoincide con el valor de una claveprimaria en la fila padre.

tabla dependienteTabla que es dependiente como mínimoen una restricción de referencia.

descendienteObjeto que es dependiente de un objeto ode un descendiente de un objeto.

fila descendenteFila que es dependiente de otra fila o filaque desciende de una fila dependiente.

tabla descendenteTabla que es dependiente de otra tabla otabla que es descendiente de una tabladependiente.

función deterministaFunción definida por el usuario cuyoresultado depende de los valores de losargumentos de entrada. Es decir, las

368 Introducción a DB2 para z/OS

|||||||||

||

Page 359: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

sucesivas invocaciones a los mismosvalores de entrada producen la mismarespuesta. A veces conocida como funciónno variante. Compárese con función nodeterminista (a veces denominada funciónvariante).

dimensiónCategoría de datos como por ejemplotiempo, productos o mercados. Se hacereferencia a los elementos de unadimensión como miembros. Véasetambién tabla de dimensión.

tabla de dimensiónRepresentación de una dimensión en unesquema en estrella. Cada fila de unatabla de dimensión representa todos losatributos de un miembro específico de ladimensión. Véase también dimensión,esquema en estrella y unión en estrella.

directorioBase de datos del sistema DB2 quecontiene objetos internos, como losdescriptores de base de datos y tablas decursor esquemáticas.

disco Dispositivo de almacenamiento de accesodirecto que registra los datos de formamagnética.

tipo diferenciadoTipo de datos definido por el usuario quese representa internamente como un tipoexistente (su tipo de fuente), pero que seconsidera como un tipo separado eincompatible para finalidades semánticas.

datos distribuidosDatos que residen en un DBMS distintodel sistema local.

recurso de datos distribuidos (DDF)Conjunto de componentes de DB2 através de los cuales DB2 se comunica conotro sistema de bases de datos relacional.

Distributed Relational Database Architecture(DRDA)

Protocolo de conexión para el proceso debases de datos relacionales distribuidasque es utilizado por los productos debases de datos relacionales de IBM.DRDA incluye los protocolos para lascomunicaciones entre una aplicación y unsistema de gestión de bases de datosrelacionales remotas y para lacomunicación entre sistemas de gestión de

bases de datos relacionales. Véasetambién acceso DRDA.

DNS Véase servidor de nombre de dominio.

DOCIDVéase ID de documento

ID de documentoValor que identifica exclusivamente unafila que contiene una columna XML. Estevalor se almacena con la fila y no cambianunca.

dominioConjunto de valores válidos para unatributo.

nombre de dominioNombre mediante el que las aplicacionesde TCP/IP hacen referencia a un sistemaprincipal de TCP/IP dentro de una redTCP/IP.

servidor de nombres de dominio (DNS)Servidor de red de TCP/IP especial quegestiona un directorio distribuido que seutiliza para correlacionar nombres desistema principal TCP/IP con direccionesde IP.

objeto grande de carácter de doble byte(DBCLOB)

Tipo de datos de serie gráfica en la queuna secuencia de bytes representacaracteres de doble byte que van de 0bytes a 2 GB, menos 1 byte. En general,los valores DBCLOB se utilizan cuando esposible que una serie de caracteres dedoble byte supere los límites del tipoVARGRAPHIC.

juego de caracteres de doble byte (DBCS)Juego de caracteres utilizado por algunosidiomas, tales como el japonés o el chino,que tienen más símbolos que los quepueden representarse por medio de unsolo byte. Cada carácter tiene 2 bytes delongitud. Compárese con juego decaracteres de un solo byte y juego decaracteres de múltiples bytes.

número de coma flotante de doble precisiónRepresentación aproximada de 64 bits deun número real.

DPSI Véase índice secundario de datosparticionados.

consumoActo de adquirir un recurso bloqueado

Glosario 369

||

|||||

||||||||

Page 360: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

mediante la inmovilización del acceso aese objeto. Compárese con reclamación.

bloqueo de consumoBloqueo sobre una clase de reclamaciónque impide que se produzca unareclamación.

DRDAVéase Distributed Relational DatabaseArchitecture.

acceso a DRDAMétodo abierto de acceder a datosdistribuidos que pueden utilizarse paraconectarse con otro servidor de bases dedatos a fin de ejecutar paquetes que sehan vinculado anteriormente en laubicación del servidor.

DSN

v Nombre del subsistema de DB2 poromisión.

v Nombre del procesador de mandatosde TSO de DB2.

v Los tres primeros caracteres del módulode DB2 y nombre de macro.

cursor dinámicoEstructura de control con nombre que unprograma de aplicación utiliza paracambiar el tamaño de la tabla deresultados y el orden de sus filas despuésde abrir el cursor. Compárese con cursorestático.

vuelco dinámicoVuelco que se emite durante la ejecuciónde un programa, normalmente bajo elcontrol de dicho programa.

SQL dinámicoSentencias de SQL que se preparan y seejecutan en tiempo de ejecución. En elSQL dinámico, la sentencia de SQL estácontenida como serie de caracteres en unavariable de lenguaje principal o como unaconstante, y no se precompila.

espacio de tablas habilitado para EAEspacio de tablas o de índice habilitadopara la direccionabilidad ampliada (EA) yque contiene particiones individuales (opiezas, para espacios de tablas LOB) queson mayores que 4 GB.

EB Véase exabyte.

EBCDICExtended binary coded decimal

interchange code (código de intercambiodecimal ampliado codificado en binario).Sistema de codificación que se utiliza pararepresentar datos de tipo carácter en losentornos z/OS, VM, VSE e iSeries.Compárese con ASCII y Unicode.

SQL incorporadoSentencias de SQL codificadas dentro deun programa de aplicación. Véase SQLestático.

modalidad* de habilitación de nueva función(ENFM*)

Etapa de transición del proceso demigración de versión a versión que seaplica a un grupo de compartimiento dedatos o subsistema de DB2 que estaba enmodalidad de nueva función (NFM) enun momento dado. Cuando está enmodalidad* de habilitación de nuevafunción, un grupo de compartimiento dedatos o subsistema de DB2 se estápreparando para utilizar las nuevasfunciones de la nueva versión pero nopuede utilizarlas aún. Un grupo decompartimiento de datos que se encuentraen modalidad* de habilitación de nuevafunción no puede coexistir con miembrosque se encuentran aún en el nivel deversión anterior. No se permite volver auna versión anterior. Compárese conmodalidad de compatibilidad, modalidadde compatibilidad*, modalidad dehabilitación de nueva función ymodalidad de nueva función.

modalidad de habilitación de nueva función(ENFM)

Estado de transición del proceso demigración de versión a versión durante elcual el grupo de compartimiento de datoso subsistema de DB2 se está preparandopara utilizar las nuevas funciones de lanueva versión. Cuando está en modalidadde habilitación de nueva función, ungrupo de compartimiento de datos deDB2 no puede coexistir con miembros queaún se encuentran en el nivel de versiónanterior. No se permite volver a unaversión anterior y las nuevas funciones dela nueva versión no están disponiblespara ser utilizadas en modalidad dehabilitación de nueva función. Compáresecon modalidad de compatibilidad,modalidad de compatibilidad*, modalidad

370 Introducción a DB2 para z/OS

||||||

||||||||||||||||||||||||

|||||||||||||||||||

Page 361: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

de habilitación de nueva función* ymodalidad de nueva función.

enclaveEn Language Environment, colecciónindependiente de rutinas, una de lascuales se ha designado como rutinaprincipal. Un enclave es similar a unprograma o unidad de ejecución. Véasetambién enclave de WLM.

sistema de codificaciónConjunto de normas para representardatos de tipo carácter (ASCII, EBCDIC oUnicode).

ENFM Véase modalidad de habilitación denueva función.

ENFM*Véase modalidad de habilitación denueva función*.

entidadPersona, objeto o concepto sobre los quese almacena información. En una base dedatos relacional, las entidades serepresentan como tablas. Una base dedatos incluye información sobre lasentidades de una organización o negocio,y sus relaciones entre ellas.

lista enumeradaConjunto de objetos de DB2 definidos poruna sentencia de control del programa deutilidad LISTDEF en la que no se utilizancaracteres de comparación de patrones (*,%, _ ni ?).

entornoColección de nombres de recursos lógicosy físicos que se utilizan para dar soporteal rendimiento de una función.

descriptor de entornoDescriptor de contexto que identifica elcontexto global para el acceso a la base dedatos. Todos los datos pertinentes a todoslos objetos en el entorno están asociadoscon este descriptor de contexto.

unión de equivalenciaOperación de unión en la que lacondición de unión tiene el formatoexpresión = expresión. Véase tambiénunión, unión externa completa, unióninterna, unión externa izquierda, uniónexterna y unión externa derecha.

rango de páginas de errorRango de páginas que se consideran

físicamente dañadas. DB2 no permitirá alos usuarios el acceso a las páginas que seencuentran dentro de este rango.

carácter de escapeSímbolo, un símbolo de comillas dobles(″), por ejemplo, que se utiliza paracontener un identificador delimitado deSQL.

exabyteUnidad de medida para procesadores,capacidades de almacenamiento real yvirtual, y volúmenes de canal cuyo valores 1.152.921.504.606.846.976 bytes, lo queequivale a 260.

excepciónOperación de SQL que implica aloperador de conjunto EXCEPT, quecombina dos tablas de resultados. Elresultado de una operación de excepciónconsta de todas las filas que están sólo enuna de las tablas de resultados.

tabla de excepciónTabla que contiene filas que violan lasrestricciones de referencia o lasrestricciones de comprobación de tablaque encuentra el programa de utilidadCHECK DATA.

bloqueo de exclusividadBloqueo que impide que los procesos deaplicación que se ejecutansimultáneamente lean o cambien datos.Compárese con bloqueo decompartimiento.

sentencia ejecutableSentencia de SQL que puede incorporarseen un programa de aplicación, prepararsey ejecutarse dinámicamente o emitirse deforma interactiva.

contexto de ejecuciónEn SQLJ, objeto de Java que se puedeutilizar para controlar la ejecución desentencias de SQL.

rutina de salidaPrograma escrito por el usuario (oprograma por omisión proporcionado porIBM) que recibe el control de DB2 pararealizar funciones determinadas. Lasrutinas de salida se ejecutan comoextensiones de DB2.

conversión con expansiónProceso que se produce cuando la

Glosario 371

||

||

||

|||||||

|||||

||||||

Page 362: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

longitud de una serie de caracteresconvertida es mayor que la serie original.Por ejemplo, este proceso ocurre cuandouna serie mixta ASCII que contienecaracteres DBCS se convierte a una seriede datos mixta EBCDIC; la serieconvertida es más larga debido a laadición de caracteres de control.

bloqueo jerárquico explícitoBloqueo utilizado para hacer que larelación padre/hijo entre recursos resulteconocida para IRLM. Esta clase debloqueo evita la actividad globalresultante del bloqueo cuando no existeningún interés dentro de DB2 para unrecurso.

privilegio explícitoPrivilegio que tiene un nombre y semantiene como resultado de unasentencia GRANT de SQL y se revocacomo resultado de una sentenciaREVOKE de SQL. Por ejemplo, elprivilegio de SELECT.

nombre expuestoNombre de correlación o nombre de vistao tabla para la que no se especifica unnombre de correlación.

expresiónOperando o colección de operadores yoperandos que proporciona un únicovalor.

Extended Recovery Facility (XRF)Recurso que minimiza el efecto de loserrores en z/OS, VTAM, el procesadorprincipal o en las aplicaciones de altadisponibilidad durante las sesiones entreaplicaciones de alta disponibilidad yterminales designados. Este recursoproporciona un subsistema alternativopara tomar el control de las sesiones delsubsistema anómalo.

Extensible Markup Language (XML)Metalenguaje estándar para definirlenguajes de marcación que es unsubconjunto de Standardized GeneralMarkup Language (SGML).

función externaFunción que tiene su lógica funcionalimplementada en una aplicación delenguaje de programación que residefuera de la base de datos, en el sistema dearchivos del servidor de bases de datos.

Asociación de la función con la aplicaciónde código externo especificada por lacláusula EXTERNA de la sentenciaCREATE FUNCTION. Las funcionesexternas se pueden clasificar comofunciones escalares externas y funcionesde tabla externas. Compárese con funciónderivada, función incorporada y funciónde SQL.

procedimiento externoProcedimiento que tiene su lógica deprocedimiento implementada en unaaplicación de lenguaje de programaciónexterno. Asociación del procedimiento conla aplicación externa se especificamediante una sentencia CREATEPROCEDURE con una cláusulaLANGUAGE que tiene un valor distintode SQL y una cláusula EXTERNAL queimplícita o explícitamente especifica elnombre de la aplicación externa.Compárese con procedimiento externo deSQL y procedimiento nativo de SQL.

rutina externaFunción definida por el usuario oprocedimiento almacenado que estábasado en código escrito en un lenguajede programación externo.

procedimiento de SQL externoProcedimiento de SQL que se procesautilizando un programa C generado quees una representación del procedimiento.Cuando se llama a un procedimiento SQLexterno, la representación del programa Cdel procedimiento se ejecuta en unespacio de direcciones de procedimientosalmacenados. Compárese conprocedimiento externo y procedimientode SQL nativo.

estado de miembro anómaloEstado de un miembro de un grupo decompartimiento de datos en el que latarea del miembro, el espacio dedirecciones o el sistema z/OS terminaantes de que el estado cambie de activo ainmovilizado.

retrocederProceso de volver a un release anterior deDB2 después de intentar o completar lamigración a un release actual. Se permitevolver a un release anterior sólo desde unsubsistema que esté en modalidad decompatibilidad.

372 Introducción a DB2 para z/OS

||||||

|||||

|||||||||

|||||||||||||

|||||||||||

||||||

Page 363: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

contención de bloqueo global falsoIndicación de disputa procedente delrecurso de acoplamiento que se producecuando varios nombres de bloqueo danlugar al mismo indicador y cuando nohay ninguna disputa real.

conjunto de abanicoVía de acceso física directa a los datos,proporcionada por un índice, función decálculo aleatorio o enlace; un conjunto deabanico es el método mediante el que elDB2 da soporte a la ordenación de datos.

base de datos federadaCombinación de un servidor DB2 (en losentornos Linux, UNIX, y Windows) convarias fuentes de datos a las que elservidor envía consultas. En un sistemade bases de datos federadas, unaaplicación cliente puede utilizar unasentencia de SQL para unir datos queestán repartidos entre varios sistemas degestión de bases de datos y puedevisualizar los datos como si fueranlocales.

sentido de captaciónEspecificación de la ubicación deseada delcursor como parte de una sentenciaFETCH. La especificación se puederealizar antes o después de las filas de latabla de resultados (con BEFORE oAFTER). La especificación también puedetener un sentido de lectura para una solafila (por ejemplo, NEXT, LAST oABSOLUTE n) o un sentido de lecturapara conjuntos de filas (por ejemplo,NEXT ROWSET, LAST ROWSET oROWSET STARTING AT ABSOLUTE n).

procedimiento de campoRutina de salida escrita por el usuariodiseñada para recibir un único valor ytransformar (codificar o decodificar) lamisma en la forma que pueda especificarel usuario.

variable de referencia a archivoVariable de lenguaje principal declaradacon uno de los tipos de datos derivados(BLOB_FILE, CLOB_FILE,DBCLOB_FILE); las variables dereferencia a archivo gobiernan la lectura oescritura de un LOB en un archivo.

factor de filtroNúmero comprendido entre 0 y 1 que

evalúa la proporción de filas de una tablapara las que se cumple un predicado.

serie de caracteres de longitud fijaSerie de caracteres, gráfica o binaria cuyalongitud se especifica y no se puedecambiar. Compárese con serie decaracteres de longitud variable.

FlashCopyFunción de IBM Enterprise Storage Serverque, en combinación con el programa deutilidad BACKUP SYSTEM, puede crearuna copia de punto en el tiempo de losdatos mientras una aplicación se estáejecutando.

clave externaColumna o conjunto de columnas de unatabla dependiente de una relación derestricción. La clave debe tener el mismonúmero de columnas, con las mismasdescripciones, que la clave primaria de latabla padre. Cada valor de clave externadebe coincidir con un valor de clavepadre situado en la tabla padre asociada oser nulo.

bosqueConjunto ordenado de subárboles denodos XML.

recuperación de registro hacia adelanteLa tercera fase del proceso de reiniciodurante la cual DB2 procesa el registrohacia adelante para aplicar todos losregistros REDO.

espacio libreCantidad total de espacio no utilizado deuna página; es decir, espacio que no seutiliza para almacenar registros niinformación de control.

unión externa completaEl resultado de una operación de uniónque incluye las filas coincidentes de lasdos tablas que se unen y conserva las filasno coincidentes de ambas tablas. Véasetambién unión, unión de equivalencia,unión interna, unión externa izquierda,unión externa y unión externa derecha.

selección completaUna subselección, una selección completaen paréntesis o una serie de amboscombinados mediante operadores set. Unaselección completa especifica una tabla deresultados. Si no se utiliza un operadorset, el resultado de la selección completa

Glosario 373

||||||||||||

|||||||

||||

||||||

|||||||

Page 364: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

es el resultado de la subselección oselección completa especificada.

correlación con escape completoCorrelación entre un identificador de SQLy un nombre de XML cuando elidentificador de SQL es un nombre decolumna.

funciónCorrelación que está integrada dentro deun programa (el cuerpo de la función)que obtiene un valor individual (elresultado) a partir de cero o más valoresde entrada (argumentos). Véase tambiénfunción de agregación y función escalar.

Las funciones pueden ser funcionesdefinidas por el usuario, incorporadas ogeneradas por DB2. (Véase tambiénfunción incorporada, función deconversión, función externa, funciónderivada, función de SQL y funcióndefinida por el usuario.)

definidor de funciónID de autorización del propietario delesquema de la función que se especificaen la sentencia CREATE FUNCTION.

paquete de funciónPaquete que resulta de vincular DBRMpara un programa de función.

propietario de paquete de funciónEl ID de autorización del usuario quevincula el DBRM del programa defunción en un paquete de función.

firma de funciónLa concatenación lógica de un nombre defunción calificado al completo con lostipos de datos de todos sus parámetros.

GB Gigabyte. Valor equivalente a 1 073 741824 bytes.

GBP Véase agrupación de almacenamientosintermedios de grupo.

dependiente de GBPEstado de un conjunto de páginas o deuna partición de un conjunto de páginasque es dependiente de la agrupación dealmacenamientos intermedios de grupo.El interés de lectura/escritura es activoentre subsistemas de DB2 para esteconjunto de páginas o el conjunto depáginas ha cambiado páginas de laagrupación de almacenamientos

intermedios de grupo que todavía no sehan convertido al disco.

recurso de rastreo generalizado (GTF)Programa de servicio de z/OS queregistra sucesos significativos del sistema,como por ejemplo interrupciones de E/S,interrupciones de SVC, interrupciones deprograma o interrupciones externas.

nombre de recurso genéricoNombre que VTAM utiliza pararepresentar diversos programas deaplicación que proporcionan la mismafunción, para gestionar el equilibrado ydistribución de sesiones en un entornoSysplex.

característica geográficaObjeto de la superficie terrestre (comouna ciudad o un río), espacio (como unazona de seguridad que rodea un lugarpeligroso) o suceso que se produce en unaubicación (como un accidente de tráficoque se produce en un determinado cruce).

sistema de información geográficaCompleto de objetos, datos y aplicacionesque se utiliza para crear y analizar lainformación espacial sobre característicasgeográficas.

getpageOperación en la que DB2 accede a unapágina de datos.

bloqueo globalBloqueo que proporciona control deconcurrencia dentro de subsistemas DB2 yentre ellos. El ámbito del bloqueo abarcatodos los subsistemas de DB2 de ungrupo de compartimiento de datos.

contención de bloqueo globalConflictos debidos a peticiones debloqueo entre diferentes miembros deDB2 de un grupo de compartimiento dedatos cuando dichos miembros intentanserializar recursos compartidos.

rutina de gobiernoVéase recurso de límite de recursos.

serie gráficaSecuencia de caracteres de DBCS. Losdatos gráficos se pueden clasificar ademáscomo GRAPHIC, VARGRAPHIC oDBCLOB.

GRECPVéase recuperación pendiente de la

374 Introducción a DB2 para z/OS

||

|||||||

|||||

||||

||

Page 365: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

agrupación de almacenamientosintermedios de grupo.

bloqueo generalBloqueo en la modalidad decompartimiento, actualización o deexclusividad, que se mantiene sobre unatabla, partición o espacio de tablas.

duplicación de agrupación de almacenamientosintermedios de grupo

Capacidad de grabar datos para dosinstancias de una estructura deagrupación de almacenamientosintermedios de grupo: una agrupación dealmacenamientos intermedios de grupoprimaria y una agrupación dealmacenamientos intermedios de gruposecundaria. Las publicaciones de z/OShacen referencia a estas instancias comoestructuras “antiguas” (para la primaria)y “nuevas” (para la secundaria).

agrupación de almacenamientos intermedios degrupo (GBP)

Estructura de antememoria del recurso deacoplamiento que es utilizada por ungrupo de compartimiento de datos paraponer en antememoria datos y asegurar lacoherencia de los datos para todos losmiembros.

recuperación de agrupación de almacenamientosintermedios de grupo pendiente (GRECP)

Estado que existe después de que laagrupación de almacenamientosintermedios para un grupo decompartimiento de datos se pierde.Cuando un conjunto de páginas está eneste estado, los cambios que se registranen el registro se deben aplicar al conjuntode páginas afectado antes de que sepueda utilizar el conjunto de páginas.

nivel de grupoNivel de release de un grupo decompartimiento de datos, que se establececuando el primer miembro migra a unnuevo release.

nombre de grupoIdentificador XCF de z/OS para un grupode compartimiento de datos.

reinicio de grupoUn reinicio de al menos un miembro deun grupo de compartimiento de datos

después de la pérdida de los bloqueos ode un área de comunicacionescompartida.

GTF Véase recurso de rastreo generalizado.

descriptor de contextoEn ODBC de DB2, variable que hacereferencia a una estructura de datos y asus recursos asociados. Véase tambiéndescriptor de sentencia, descriptor deconexión, y descriptor de entorno.

panel de ayudaPantalla de información que presentatexto de guía para ayudar a un usuarioque se encuentre en la estación de trabajoo el terminal.

daño heurísticoIncoherencia en los datos entre uno o másparticipantes que está implícita cuandouna decisión heurística para solucionaruna LUW dudosa en uno o másparticipantes difiere de la decisión que seregistra en el coordinador.

decisión heurísticaDecisión que implanta la resolucióndudosa en un participante por un mediodiferente a la resincronización automáticaentre el coordinador y el participante.

estadísticas de histogramaForma de resumen la distribución dedatos. Esta técnica divide el rango devalores posibles en un archivo enintervalos, de tal forma que cada intervalocontiene aproximadamente el mismoporcentaje de los valores. Para cadaintervalo se recopila un conjunto deestadísticas.

hueco Fila de la tabla de resultados a la que nose puede acceder debido a que se harealizado una supresión o unaactualización en la fila. Véase tambiénhueco por supresión y hueco poractualización.

espacio de direcciones inicialÁrea de almacenamiento que z/OSreconoce actualmente como despachada.

sistema principalConjunto de programas y recursos queestán disponibles en una determinadainstancia de TCP/IP.

expresión de sistema principalVariable o expresión de Java a la que se

Glosario 375

||

|||||||||||

|||||||||

Page 366: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

hace referencia en un programa deaplicación de SQLJ mediante cláusulas deSQL.

identificador de sistema principalNombre que se declara en el programa desistema principal.

lenguaje principalLenguaje de programación en el quepuede incorporar sentencias de SQL.

programa de sistema principalPrograma de aplicación escrito en unlenguaje de sistema principal y quecontiene sentencias de SQL incorporado.

estructura de sistema principalEn un programa de aplicación, estructuraa la que se hace referencia por medio desentencias de SQL incorporado.

variable de lenguaje principalEn un programa de aplicación escrito enun lenguaje de sistema principal, variablede aplicación a la que se hace referenciamediante sentencias de SQL incorporado.

matriz de variables de lenguaje principalMatriz de elementos, cada uno de loscuales se corresponde con un valor parauna columna. La dimensión de la matrizdetermina el número máximo de filaspara el que es posible utilizar la matriz.

Procesador integrado IBM System z9 (zIIP)Procesador especializado que se puedeutilizar para algunas funciones de DB2.

IDCAMSPrograma de IBM que se utiliza paraprocesar mandatos de los servicios demétodo de acceso. Puede invocarse comotrabajo o paso de trabajo, desde unterminal TSO o desde un programa deaplicación del usuario.

IDCAMS LISTCATRecurso para obtener la información quese encuentra en el catálogo de servicios demétodo de acceso.

columna de identidadColumna que proporciona una forma paraque DB2 genere automáticamente unvalor numérico para cada fila. Lascolumnas de identidad se definenmediante la cláusula AS IDENTITY. Paraasegurar la exclusividad de los valorespuede definirse un índice de exclusividadde una sola columna que sólo contenga la

columna de identidad. Una tabla nopuede tener más de una columna deidentidad.

IFCID Véase identificador de componente derecurso de instrumentación.

IFI Véase interfaz de recurso deinstrumentación.

llamada IFIInvocación de la interfaz del recurso deinstrumentación (IFI) por medio de unade sus funciones definidas.

copia de imagenReproducción exacta de la totalidad oparte de un espacio de tablas. DB2proporciona programas de utilidad paracrear copias de imagen completa (paracopiar todo el espacio de tablas) o copiasde imágenes incrementales (para copiarsólo las páginas que se han modificadodesde la última copia de imagen).

recurso de conexión de IMSSubcomponente de DB2 que utilizaprotocolos de la interfaz del subsistema(SSI) de z/OS y la edición cruzada deenlaces para procesar peticiones de IMS aDB2 y para coordinar la asignación derecursos.

en cancelación anómalaEstado de una unidad de recuperación. SiDB2 falla una vez, comienza a retrotraerseuna unidad de recuperación, pero antesde que finalice el proceso, DB2 continúarestituyendo los cambios durante elreinicio.

en confirmaciónEstado de una unidad de recuperación. SiDB2 falla después de comenzar el procesode confirmación de la fase 2, DB2 ″sabe″,al reiniciarse, que los cambios efectuadosen los datos son coherentes. Estasunidades de recuperación se denominanen confirmación.

independienteObjeto (fila, tabla o espacio de tablas) queno es padre ni es dependiente de otroobjeto.

índice Conjunto de punteros que ordenanlógicamente los valores de una clave. Losíndices pueden proporcionar un accesomás rápido a los datos y pueden asegurarla exclusividad en las filas de una tabla.

376 Introducción a DB2 para z/OS

||

||||||||

|||

Page 367: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

particionamiento controlado por índiceTipo de particionamiento en el que loslímites de la partición de una tablaparticionada están controlados por losvalores especificados en la sentenciaCREATE INDEX. Los límites de lapartición se guardan en la columnaLIMITKEY de la tabla de catálogosSYSIBM.SYSINDEXPART.

clave de índiceConjunto de columnas de una tabla quese utilizan para determinar el orden delas entradas del índice.

partición del índiceArchivo VSAM que se halla en un espaciode índice de particionamiento.

espacio de índiceConjunto de páginas que se utiliza paraalmacenar las entradas de un índice.

columna indicadoraValor de 4 bytes que se almacena en unatabla base en lugar de una columna LOB.

variable indicadoraVariable que se utiliza para representar elvalor nulo en un programa de aplicación.Si el valor para la columna seleccionadaes nulo, se coloca un valor negativo en lavariable indicadora.

dudosoEstado de una unidad de recuperación. SiDB2 falla después de haber acabado elproceso de confirmación de la fase 1 yantes de comenzar la fase 2, únicamenteel coordinador de confirmación sabe siuna unidad de recuperación va aconfirmarse o retrotraerse. En el reinicio,si DB2 no tiene la información quenecesita para tomar esta decisión, elestado de la unidad de recuperación esdudoso hasta que DB2 obtiene estainformación del coordinador. Más de unaunidad de recuperación puede ser dudosadurante el reinicio.

resolución dudosaEl proceso de resolver el estado de unaunidad de trabajo lógica dudosa al estadode retrotraer o confirmar.

en vueloEstado de una unidad de recuperación. SiDB2 falla antes de que su unidad derecuperación haya completado la fase 1del proceso de confirmación, simplemente

restituye las actualizaciones de su unidadde recuperación durante el reinicio. Estasunidades de recuperación se denominanen vuelo.

herenciaTransferencia, en sentido descendente, deatributos o recursos de clase desde unaclase padre de la jerarquía de clases a unaclase hija.

archivo de inicializaciónPara las aplicaciones ODBC de DB2,archivo que contiene valores que sepueden definir para ajustar el rendimientodel gestor de bases de datos.

copia incorporadaCopia que se produce por medio delprograma de utilidad LOAD o REORG. Elarchivo que la copia incorporada producees equivalente de modo lógico a unacopia de imagen completa producida alejecutar el programa de utilidad COPYcon acceso de sólo lectura (SHRLEVELREFERENCE).

unión internaResultado de una operación de unión queincluye sólo las filas coincidentes de lasdos tablas que se unen. Véase tambiénunión, unión de equivalencia, uniónexterna completa, unión externaizquierda, unión externa y unión externaderecha.

paquete no operativoPaquete que no puede utilizarse debido ala eliminación de una o más funcionesdefinidas por el usuario o deprocedimientos de los que depende elpaquete. Dicho paquete debe volverse avincular de modo explícito. Compáresecon paquete no válido.

cursor insensibleCursor que no es sensible a lasinserciones, actualizaciones ni supresioneshechas en las filas subyacentes de unatabla de resultados una vez creada ésta.

desencadenante de inserciónDesencadenante que se define con laoperación de SQL de desencadenante, unainserción.

instalarProceso de preparar un subsistema deDB2 para que funcione con un subsistemade z/OS.

Glosario 377

Page 368: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

desencadenante INSTEAD OF (en lugar de)Desencadenante asociado con una únicavista y activado por una operación deinserción, actualización o supresión en lavista y que puede definir para propagarla operación de inserción, actualización osupresión en la vista a las tablassubyacentes de la vista. Compárese condesencadenante BEFORE ydesencadenante AFTER.

identificador del componente de recurso deinstrumentación (IFCID)

Valor que designa e identifica un registrode rastreo de un suceso que se puederastrear. Como parámetro de losmandatos START TRACE y MODIFYTRACE, especifica que el sucesocorrespondiente debe rastrearse.

interfaz de recurso de instrumentación (IFI)Interfaz de programación que permite alos programas obtener datos de rastreo enlínea sobre DB2, para enviar mandatos deDB2 y pasar datos a DB2.

Interactive System Productivity Facility (ISPF)Programa bajo licencia de IBM queproporciona servicios de diálogointeractivo en un entorno z/OS.

interés de lectura/escritura entre DB2Propiedad de los datos de un espacio detablas, índice o partición que ha sidoabierto por más de un miembro de ungrupo de compartimiento de datos paraque escriba en él al menos uno de esosmiembros.

servidor de bases de datos intermedioDestino de una petición procedente deuna aplicación local o peticionario deaplicación remoto que se reenvía a otroservidor de bases de datos.

gestor interno de bloqueo de recursos (IRLM)Subsistema de z/OS que DB2 utiliza paracontrolar el bloqueo de comunicaciones ybases de datos.

internacionalizaciónSoporte a un esquema de codificación quees capaz de representar los caracterescodificados correspondientes a muchaszonas geográficas e idiomas diferentes.Para dar soporte a todos los países, elestándar Unicode necesita más de 1 bytepara representar un carácter individual.Véase también Unicode.

intersecciónOperación de SQL que implica aloperador de conjunto INTERSECT, quecombina dos tablas de resultados. Elresultado de una operación deintersección consta de todas las filas queestán en ambas tablas de resultados.

paquete no válidoPaquete que depende de un objeto (queno sea una función definida por elusuario) que se ha eliminado. Dichopaquete se vuelve a vincularimplícitamente durante la invocación.Compárese con paquete no operativo.

dirección IPValor que identifica exclusivamente unsistema principal de TCP/IP.

IRLM Véase gestor interno de bloqueo derecursos.

nivel de aislamientoEl grado en el que una unidad de trabajoestá aislada de las operaciones deactualización de otras unidades detrabajo. Véase también estabilidad delcursor, estabilidad de lectura, lecturarepetible y lectura no confirmada.

ISPF Véase Interactive System ProductivityFacility.

iteradorEn SQLJ, objeto que contiene el conjuntode resultados de una consulta. Uniterador equivale a un cursor en otroslenguajes de sistema principal.

cláusula de declaración de iteradorEn SQLJ, declaración que genera unaclase de declaración de iterador. Uniterador es un objeto de una clase dedeclaración de iterador.

JAR Véase Java Archive.

Java Archive (JAR)Formato de archivo que se utiliza paracombinar muchos archivos en uno solo.

JDBC Interfaz de programación de aplicaciones(API) para bases de datos de SunMicrosystems para Java que permite quelos programas accedan a sistemas degestión de bases de datos mediante SQLinvocable.

unión Operación relacional que permite larecuperación de datos de dos o más tablas

378 Introducción a DB2 para z/OS

||||||||||

|||||||

||

Page 369: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

basándose en valores de columnacoincidentes. Véase también unión deequivalencia, unión externa completa,unión interna, unión externa izquierda,unión externa y unión externa derecha.

KB Kilobyte. Valor de 1024 bytes.

KerberosProtocolo de autentificación de red queestá diseñado para proporcionar unservicio potente de autentificación paraaplicaciones cliente/servidor mediante elcifrado por clave secreta.

certificado de acceso KerberosMecanismo de aplicación transparenteque transmite la identidad de un usuarioemisor a su destino. Un certificado deacceso simple contiene la identidad delusuario, una clave de sesión, unaindicación de fecha y hora y otros datos,todo lo cual se sella utilizando la clavesecreta del destino.

clave Columna, colección ordenada decolumnas o expresión identificada en ladescripción de una tabla, índice orestricción de referencia. La mismacolumna o expresión puede formar partede más de una clave.

archivo en secuencia por clave (KSDS)Archivo VSAM cuyos registros se carganen secuencia por clave y son controladospor un índice.

KSDS Véase archivo en secuencia por clave.

objeto grande (LOB)Secuencia de bytes que representan datosde bit, caracteres de un solo byte,caracteres de doble byte o una mezcla decaracteres de un solo byte y de doblebyte. Un LOB puede tener una longitudmáxima de 2 GB menos 1 byte. Véasetambién objeto grande binario, objetogrande de tipo carácter y objeto grandede tipo carácter de doble byte.

última optimización de agenteFlujo de confirmación optimizado paraprotocolos de cancelación anormalasumidos o nada asumido, en la que elúltimo agente o el participante final, seconvierte en el coordinador deconfirmación. Este flujo guarda al menosun mensaje.

enclavamientoMecanismo de DB2 para controlar sucesosconcurrentes o la utilización de recursosdel sistema.

LCID Véase definición del intervalo de controldel registro.

LDS Véase archivo lineal.

página finalPágina de índice que contiene pares declaves e identificadores de registro (RID)y que apunta a datos propiamente dichos.Compárese con página no final.

unión externa izquierdaResultado de una operación de unión queincluye las filas coincidentes de las dostablas que se unen y conserva las filas nocoincidentes de la primera tabla. Véasetambién unión, unión de equivalencia,unión externa completa, unión interna,unión externa y unión externa derecha.

clave límiteValor más alto de la clave de índice deuna partición.

archivo lineal (LDS)Archivo VSAM que contiene datos perono contiene información de control.Archivo lineal al que se puede accedercomo serie de bytes direccionables en elalmacenamiento virtual.

editor de enlacesPrograma de software para crear módulosde carga a partir de uno o más módulosobjeto o módulos de carga mediante laresolución de referencias cruzadas entrelos módulos y, si es necesario, el ajuste dedirecciones.

edición de enlacesAcción de crear un programa de softwarecargable utilizando un editor de enlaces.

lista Tipo de objeto, que puede ser procesadopor programas de utilidad de DB2, queidentifica varios espacios de tablas, variosespacios de índice o ambas cosas. Laslistas se definen mediante la sentencia decontrol LISTDEF.

estructura de listaEstructura del recurso de acoplamientoque permite que se compartan datos y semanejen como elementos de una cola.

Glosario 379

||||||

Page 370: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

bloqueo LVéase bloqueo lógico.

módulo de cargaUnidad de programa que resultaapropiada para la carga en elalmacenamiento principal para laejecución. La salida de un editor deenlaces.

LOB Véase objeto grande.

localizador de LOBMecanismo que permite a un programade aplicación manipular un valor deobjeto grande en el sistema de base dedatos. Un localizador de LOB es un valorde entero de palabra completa querepresenta un único valor de LOB. Unprograma de aplicación recupera unlocalizador de LOB en una variable delenguaje principal y a continuaciónpueden aplicarse funciones de SQL alvalor de LOB asociado utilizando ellocalizador.

bloqueo LOBBloqueo sobre un valor de LOB.

espacio de tablas de LOBEspacio de tablas que contiene todos losdatos para una columna de LOBdeterminada en la tabla base asociada.

local Forma de hacer referencia a cualquierobjeto que el subsistema local de DB2mantiene. Una tabla local, por ejemplo, esuna tabla mantenida por un subsistemalocal de DB2. Compárese con remoto.

entorno localDefinición de un subconjunto del entornode un usuario que combina un CCSID ycaracteres definidos para un idioma y unpaís específicos.

bloqueo localBloqueo que proporciona control deconcurrencia dentro de DB2, pero nocontrol de concurrencia entre DB2; esdecir, su ámbito es un DB2 individual.

subsistema localDBMS relacional exclusivo al que estádirectamente conectado el usuario o elprograma de aplicación (en el caso deDB2, por medio de uno de los recursos deconexión de DB2).

ubicaciónNombre exclusivo de un servidor de

bases de datos. Una aplicación utiliza elnombre de ubicación para acceder a unservidor de bases de datos de DB2. Esposible utilizar un alias de la base dedatos para alterar temporalmente elnombre de ubicación al acceder a unservidor remoto.

alias de ubicaciónOtro nombre por el que se identifica en lared un servidor de bases de datos. Lasaplicaciones pueden utilizar este nombrepara acceder a un servidor de bases dedatos de DB2.

bloqueoForma de controlar sucesos simultáneos oel acceso a datos. El bloqueo de DB2 lorealiza IRLM.

duración de bloqueoEl intervalo en el que se mantiene elbloqueo de DB2.

reajuste de bloqueosPromoción de un bloqueo desde unbloqueo de fila, de página o de LOB a unbloqueo de espacio de tablas debido a queel número de bloqueos de página que semantienen de modo simultáneo en undeterminado recurso supera un límitepredefinido.

bloqueoEl proceso por el que se asegura laintegridad de los datos. El bloqueoimpide a los usuarios simultáneos accedera datos incoherentes. Véase tambiénreclamación, consumo y enclavamiento.

modalidad de bloqueoRepresentación del tipo de acceso que losprogramas que se están ejecutandosimultáneamente pueden tener a unrecurso que mantiene un bloqueo de DB2.

objeto de bloqueoRecurso controlado por un bloqueo deDB2.

promoción de bloqueoProceso de cambiar el tamaño o lamodalidad de un bloqueo de DB2 a unnivel superior, más restrictivo.

tamaño de bloqueoCantidad de datos controlada por unbloqueo de DB2 sobre los datos de unatabla; el valor puede ser una fila, una

380 Introducción a DB2 para z/OS

Page 371: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

página, un LOB, una partición, una tablao un espacio de tablas.

estructura de bloqueoEstructura de datos del recurso deacoplamiento que está formada por unaserie de entradas de bloqueo parapermitir el bloqueo de compartimiento yel bloqueo exclusivo para recursoslógicos.

registroColección de registros que describen lossucesos que se producen durante laejecución de DB2 y que indican susecuencia. La información registrada deeste modo se utiliza para la recuperaciónen caso de un error durante la ejecuciónde DB2.

definición del intervalo de control del registroSufijo del registro físico que indica cómoregistrar los segmentos que se colocan enel intervalo de control físico.

reclamación lógicaReclamación de una partición lógica deun índice de no particionamiento.

partición de índice lógicaConjunto de todas las claves que hacenreferencia a la misma partición de datos.

bloqueo lógico (bloqueo L)Tipo de bloqueo que las transaccionesutilizan para controlar el accesoconcurrente a los datos en y entre DB2.Compárese con bloqueo físico (enlace P).

lógicamente completoEstado en que el proceso de copiasimultánea finaliza con la inicialización delos objetos de destino que se copian. Losobjetos destino están disponibles para suactualización.

lista de páginas lógicas (LPL)Lista de páginas erróneas a las que nopueden hacer referencia las aplicacioneshasta que se recuperen las páginas. Lapágina tiene un error lógico, pues elsoporte de almacenamiento (recurso deacoplamiento o disco) puede que nocontenga errores. Normalmentecorresponde a la pérdida de conexión conel soporte de almacenamiento.

partición lógicaConjunto de pares de claves o RID de un

índice sin particionamiento que estánasociados a una partición determinada.

pendiente de recuperación lógica (LRECP)El estado en el que los datos y las clavesde índice que hacen referencia a losmismos son incoherentes.

unidad lógica (LU)Punto de acceso a través del cual unprograma de aplicación accede a la redSNA para comunicarse con otro programade aplicación. Véase también nombre deLU.

unidad de trabajo lógicaProceso que un programa ejecuta entrepuntos de sincronización.

identificador de unidad de trabajo lógica(LUWID)

Nombre que identifica una hebra demodo exclusivo en una red. Este nombreconsta de un nombre de red LU calificadoal completo, un número de instancia deLUW y un número de secuencia de LUW.

inicialización del archivo de registroPrimera fase del proceso de reiniciodurante la cual DB2 intenta localizar elfinal actual del archivo de registro.

cabecera de registro (LRH)Prefijo, en cada registro, que contieneinformación de control.

número de secuencia de registro de anotaciones(LRSN)

Identificador de un registro deanotaciones que está asociado a unmiembro de compartimiento de datos.DB2 utiliza el LRSN para realizar elentorno de compartimiento de datos.

truncamiento del registroProceso por el que se establece una RBAinicial explícita. Esta RBA es el punto enel que deberá grabar el siguiente byte dedatos del registro.

LPL Véase lista de páginas lógicas.

LRECPVéase pendiente de recuperación lógica.

LRH Véase cabecera de registro de anotaciones.

LRSN Véase número de secuencia de registro deanotaciones.

LU Véase unidad lógica.

Glosario 381

Page 372: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

nombre de LUNombre de unidad lógica, que es elnombre por el cual VTAM reconoce a unnodo en una red.

LUW Véase unidad de trabajo lógica.

LUWIDVéase identificador de unidad de trabajológica.

tabla de correlaciónTabla que el programa de utilidadREORG utiliza para correlacionar lasasociaciones entre los RID de los registrosde datos de la copia original y la copia desombra. Esta tabla la crea el usuario.

supresión masivaSupresión de todas las filas de una tabla.

materializar

v Proceso de colocar filas de una vista oexpresión de tabla anidada en unarchivo de trabajo para su procesoadicional por parte de una consulta.

v Colocación de un valor de LOB enalmacenamiento contiguo. Puesto quelos valores de LOB pueden ser muygrandes, DB2 evita materializar losdatos de LOB hasta que llega a serabsolutamente necesario.

tabla de consultas materializadasTabla que se utiliza para contenerinformación derivada de una o más tablasfuente y que puede resumirse a partir delas mismas. Compárese con tabla base.

MB Megabyte (1 048 576 bytes).

MBCS Véase juego de caracteres de múltiplesbytes.

nombre de miembroIdentificador XCF de z/OS para unsubsistema de DB2 determinado en ungrupo de compartimiento de datos.

menú Lista visualizada de funciones disponiblespara su selección por parte del operador.A veces un menú recibe el nombre depanel de menú.

metalenguajeLenguaje que se utiliza para crear otroslenguajes especializados.

migraciónProceso de convertir un subsistema conun release anterior de DB2 a un release

actual o actualizado. En este proceso, elusuario puede obtener las funciones delrelease actual o actualizado sin perder losdatos creados en el release anterior.

serie de datos mixtaSerie de caracteres que puede contenertanto caracteres de un solo byte comocaracteres de doble byte.

nombre de modalidadEn VTAM, nombre que designa lacolección de características físicas ylógicas y atributos de una sesión.

bloqueos de modificaciónBloqueo L o bloqueo P con un atributoMODIFY. En todo momento se conservauna lista de estos bloqueos activos en laestructura de bloqueo del recurso deacoplamiento. Si el subsistema solicitantede DB2 falla, esos bloqueos demodificación del subsistema DB2 seconvierten en bloqueos retenidos.

juego de caracteres de varios bytes (MBCS)Juego de caracteres en el que cadacarácter está representado por más de unbyte. UTF-8 es un ejemplo de un MBCS.Los caracteres de UTF-8 pueden tener de1 a 4 bytes en DB2. Compárese con juegosde caracteres de un solo byte y juego decaracteres de doble byte. Véase tambiénUnicode.

análisis multidimensionalProceso de evaluar una empresa a más deun nivel.

Multiple Virtual Storage (MVS)Elemento del sistema operativo z/OS.Este elemento también se denomina BaseControl Program (BCP).

actualización múltipleProceso de bases de datos relacionalesdistribuidas en el que los datos seactualizan en más de un lugar dentro deuna única unidad de trabajo individual.

ejecución simultánea de procesosVarios TCB que ejecutan una copia delcódigo ODBC de DB2 de formaconcurrente (compartiendo unprocesador) o en paralelo (enprocesadores centrales separados).

MVS Véase Multiple Virtual Storage.

procedimiento nativo de SQLProcedimiento de SQL que se procesa

382 Introducción a DB2 para z/OS

||

Page 373: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

convirtiendo las sentencias deprocedimiento a una representaciónnativa almacenada en el directorio debase de datos, como se realiza con otrassentencias de SQL. Cuando se invoca unprocedimiento de SQL nativo, se carga larepresentación nativa contenida en eldirectorio y DB2 ejecuta el procedimiento.Compárese con procedimiento externo yprocedimiento externo de SQL.

expresión de tabla anidadaSelección completa en una cláusula FROM(encerrada entre paréntesis).

identificador de red (NID)ID de red asignado por IMS o CICS, o siel tipo de conexión es RRSAF, el ID de launidad de recuperación de RRS (URID).

modalidad de nueva función (NFM)Modalidad normal de funcionamiento queexiste después de una finalizaciónsatisfactoria de una migración de versióna versión. En esta página estándisponibles para su utilización todas lasnuevas funciones de la nueva versión. Ungrupo de compartimiento de datos deDB2 no puede coexistir con miembros queaún se encuentran en el nivel de versiónanterior, y no se permite volver a unaversión anterior. Compárese conmodalidad de compatibilidad, modalidadde compatibilidad*, modalidad dehabilitación de nueva función ymodalidad de habilitación de nuevafunción*.

NFM Véase modalidad de nueva función.

NID Véase identificador de red.

índice de ID de nodoVéase índice de ID de nodo XML.

función no deterministaFunción definida por el usuario cuyoresultado no sólo depende de los valoresde los argumentos de entrada. Es decir,sucesivas invocaciones con los mismosvalores de argumento pueden producir unresultado diferente. Este tipo de funciónen ocasiones recibe el nombre de funciónvariable. Compárese con funcióndeterminista (a veces denominada funciónno variante).

página no finalPágina que contiene claves y números depágina de otras páginas del índice (ya

sean páginas finales o no finales). Laspáginas no finales nunca apuntan a datospropiamente dichos. Compárese conpágina final.

índice no particionadoÍndice que no está particionadofísicamente. Los índices departicionamiento y los índices secundariospueden no estar particionados.

índice secundario no particionado (NPSI)Índice de un espacio de tablasparticionado que no es el índice departicionamiento ni está particionado.Compárese con índice secundario dedatos particionados.

índice de no particionamientoVéase índice secundario.

cursor no desplazableCursor que sólo se puede mover en elsentido de avance. También llamados aveces cursores sólo de avance o cursoresserie.

normalizaciónPaso básico en la tarea de crear un diseñológico para las bases de datosrelacionales. La normalización ayuda aevitar redundancias e incoherencias en losdatos. Una entidad está normalizada sicumple un conjunto de restricciones parauna forma normal determinada (primeraforma normal, segunda forma normal,etc.). Compárese con denormalización.

función no variableVéase función determinista.

NPSI Véase índice secundario no particionado.

NUL El carácter nulo (’\0’), que estárepresentado por el valor X’00. En ellenguaje C, este carácter indica el final deuna serie de caracteres.

nulo Valor especial que denota ausencia deinformación.

terminador nuloEn el lenguaje C, valor que indica el finalde una serie de caracteres. Para series decaracteres de EBCDIC, ASCII y UnicodeUTF-8, el terminador nulo es un valor deun solo byte (X’00’). Para series decaracteres de Unicode UTF-16 o UCS-2(ancho), el terminador nulo es un valor dedoble byte (X’0000’).

Glosario 383

||||||||||

|||||||||||||||||

|

||

||||||||

Page 374: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

ODBCVéase Open Database Connectivity.

controlador de ODBCBiblioteca de enlace dinámico (DLL) queutiliza llamadas de función de ODBC einteracciona con una fuente de datos.

OLAP Véase proceso analítico en línea.

proceso analítico en línea (OLAP)Proceso de recopilar datos de una o variasfuentes; transformar y analizar los datosconsolidados de forma rápida einteractiva; y examinar los resultadosentre distintas dimensiones de los datosbuscando patrones, tendencias yexcepciones en relaciones complejas deesos datos.

Open Database Connectivity (ODBC)Interfaz de programación de aplicaciones(API) de base de datos de Microsoft parael lenguaje C que permite acceder asistemas de gestión de bases de datosutilizando SQL invocable. ODBC norequiere la utilización de unpreprocesador de SQL. Además, ODBCproporciona una arquitectura que permitea los usuarios añadir módulos, llamadoscontroladores de base de datos, los cualesenlazan la aplicación con sistemasseleccionados de gestión de bases dedatos durante la ejecución. Esto significaque las aplicaciones ya no necesitan estarenlazadas directamente con los módulosde todos los sistemas soportados degestión de bases de datos.

identificador ordinarioLetra mayúscula seguida de cero o máscaracteres, cada uno de los cuales es unaletra mayúscula, un dígito o el carácter desubrayado. Un identificador ordinario nodebe ser una palabra reservada.

símbolo ordinarioConstante numérica, identificadorordinario, identificador del lenguajeprincipal o palabra clave.

tarea de origenEn un grupo paralelo, agente primarioque recibe datos de otras unidades deejecución (denominadas tareas paralelas)que son partes en ejecución de la consultaen paralelo.

unión externaResultado de una operación de unión que

incluye las filas coincidentes de las dostablas que se están uniendo y preserva latotalidad o parte de las filas nocoincidentes de las tablas que se estánuniendo. Véase también unión, unión deequivalencia, unión externa completa,unión interna, unión externa izquierda yunión externa derecha.

función sobrecargadaNombre de función para el que existenvarias instancias de función.

paqueteObjeto que contiene un conjunto desentencias de SQL que se han vinculadoestáticamente y que está disponible parasu proceso. Un paquete en ocasionesrecibe también el nombre de paquete deaplicación.

lista de paquetesLista ordenada de nombres de paquetesque pueden utilizarse para ampliar unplan de aplicación.

nombre de paqueteNombre de un objeto utilizado para unpaquete de aplicación o un paquete deprocedimiento de SQL. Un paquete deaplicación es una versión vinculada de unmódulo de petición de base de datos(DBRM) creado mediante el mandatoBIND PACKAGE o REBIND PACKAGE.Un paquete de lenguaje de procedimientode SQL creado por un mandato CREATEo ALTER PROCEDURE para unprocedimiento de SQL nativo. El nombrede un paquete consta de un nombre deubicación, un ID de colección, un ID depaquete y un ID de versión.

páginaUnidad de almacenamiento dentro de unespacio de tablas (4 KB, 8 KB, 16 KB o 32KB) o espacio de índice (4 KB, 8 KB, 16KB o 32 KB). En un espacio de tablas, unapágina contiene una o más filas de unatabla. En un espacio de tablas de LOB oXML, un valor de LOB o XML puedeabarcar más de una página, pero no haymás de un valor de LOB o XMLalmacenado en una página.

conjunto de páginasForma alternativa de aludir a un espaciode tablas o espacio de índice. Cadaconjunto de páginas consta de unacolección de archivos VSAM.

384 Introducción a DB2 para z/OS

||

|||||||||

||||||||||||||

||||||||||

Page 375: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

conjunto de páginas pendiente de recuperación(PSRCP)

Estado restrictivo de un espacio de índice.En este caso, debe recuperarse todo elconjunto de páginas. Se prohíbe larecuperación de una parte lógica.

panel Imagen de pantalla predefinida quedefine las posiciones y características delos campos de pantalla en una superficiede visualización (por ejemplo, un panel demenú).

complejo paraleloGrupo de máquinas que trabajan juntaspara manejar varias transacciones yaplicaciones.

grupo paraleloConjunto de operaciones consecutivas quese ejecutan en paralelo y que tienen elmismo número de tareas paralelas.

proceso de E/S paralelaForma de proceso de E/S en el que DB2inicializa varias peticiones simultáneaspara una única consulta de usuario yrealiza el proceso de E/S de modosimultáneo (en paralelo) sobre variasparticiones de datos.

asistente de paralelismoEn el paralelismo de consultas de Sysplex,subsistema de DB2 que ayuda a procesarpartes de una consulta paralela que seoriginó en otro subsistema de DB2 en elgrupo de compartimiento de datos.

coordinador de paralelismoEn el paralelismo de consultas de Sysplex,subsistema de DB2 en el que se origina laconsulta paralela.

Sysplex paraleloConjunto de sistemas z/OS que secomunican entre sí y trabajanconjuntamente mediante ciertos serviciosde software y componentes de hardwarepara procesar cargas de trabajo de cliente.

tarea paralelaLa unidad de ejecución que se creadinámicamente para procesar unaconsulta en paralelo. Una tarea paralela laimplanta un bloque de peticiones deservicio de z/OS.

marcador de parámetroSigno de interrogación (?) que aparece enuna serie de sentencia de una sentencia

de SQL dinámica. El signo deinterrogación puede aparecer dondepodría aparecer una variable si la serie desentencia fuese una sentencia de SQLestático.

nombre-parámetroIdentificador de SQL que designa unparámetro en una rutina escrita por unusuario. Los nombres de parámetro sonnecesarios para procedimientos de SQL yfunciones de SQL, y se utilizan en elcuerpo de la rutina para referirse a losvalores de los parámetros. Los nombresde parámetro son opcionales para lasrutinas externas.

clave padreClave primaria o exclusiva de la tablapadre de una restricción de referencia. Losvalores de una clave padre determinan losvalores válidos de la clave externa en larestricción de referencia.

bloqueo padreEn el bloqueo jerárquico explícito,bloqueo que se mantiene sobre un recursoque puede tener bloqueos hijo que estánmás abajo en la jerarquía. Un bloqueopadre suele ser el bloqueo de espacio detablas o el bloqueo de intención departición. Véase también bloqueo hijo.

fila padreFila cuyo valor de clave primaria es elvalor de clave externa de una filadependiente.

tabla padreTabla a cuya clave primaria se hacereferencia por medio de la clave externade una tabla dependiente.

espacio de tablas padreEspacio de tablas que contiene una tablapadre. Un espacio de tablas que contieneun dependiente de dicha tabla es unespacio de tablas dependiente.

participanteUna entidad que no sea el coordinador deconfirmación que toma parte en elproceso de confirmación. El términoparticipante es sinónimo de agente enSNA.

particiónPorción de un conjunto de páginas. Cadapartición se corresponde con un únicoarchivo ampliable de modo

Glosario 385

||

|||||

|||||||||

|||

Page 376: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

independiente. El tamaño máximo de unapartición depende del número departiciones en el conjunto de páginasparticionado. Todas las particiones de undeterminado conjunto de páginas tienenel mismo tamaño máximo.

espacio de tablas de crecimiento por particiónEspacio de tablas cuyo tamaño puedeaumentar para acomodar el crecimientode los datos. DB2 para z/OS gestionaespacios de tablas de crecimiento porpartición añadiendo automáticamentenuevos archivos cuando la base de datosnecesita más espacio para satisfacer unaoperación de inserción. Compárese conespacio de tablas particionado por rangos.Véase también espacio de tablasuniversal.

archivo particionado (PDS)Archivo de almacenamiento en disco queestá dividido en particiones, denominadasmiembros. Cada partición puede contenerun programa, parte de un programa odatos. Una biblioteca de programa es unejemplo de un archivo particionado.

índice particionadoÍndice que está particionado físicamente.Los índices de particionamiento y losíndices secundarios pueden estarparticionados.

conjunto de páginas particionadoEspacio de índice o espacio de tablasparticionado. Las páginas de cabecera, laspáginas de mapa de espacio, las páginasde datos y las páginas de índice hacenreferencia únicamente a los datos dentrodel ámbito de la partición.

espacio de tablas particionadoEspacio de tablas basado en una únicatabla y que está subdividido enparticiones, cada una de las cuales puedeser procesada independientemente porprogramas de utilidad. Compárese conespacio de tablas segmentado y espaciode tablas universal.

índice de particionamientoÍndice en el que las columnas situadasmás a la izquierda son las columnas departicionamiento de la tabla. El índicepuede estar particionado o noparticionado.

unidad lógica asociadaPunto de acceso de la red SNA que estáconectado al subsistema DB2 local pormedio de una conversación VTAM.

vía de accesoVéase vía de SQL.

PDS Véase archivo particionado.

coherencia físicaEl estado de una página que no está enun estado cambiado parcialmente.

bloqueo físico (bloqueo P)Tipo de bloqueo que DB2 adquiere paraproporcionar la coherencia de los datosque se guardan en diferentes subsistemasde DB2. Los bloqueos físicos se utilizansólo en entornos de compartimiento dedatos. Compárese con bloqueo lógico(bloqueo L).

físicamente completoEstado existente cuando el proceso decopia simultánea ha finalizado y se hacreado el archivo de salida.

fragmentoarchivo de un conjunto de páginas noparticionado.

plan Véase plan de aplicación.

asignación del planProceso de asignar recursos de DB2 a unplan en preparación para la ejecución.

miembro de planCopia vinculada de un DBRM que estáidentificado en la cláusula de miembro.

nombre de planEl nombre de un plan de aplicación.

bloqueo PVéase bloqueo físico.

punto de coherenciaMomento en el que todos los datosrecuperables a los que accede unaaplicación son coherentes con otros datos.El término punto de coherencia essinónimo de punto de sincronización opunto de confirmación.

políticaVéase política de CFRM.

UR de cancelación anómala aplazadaUnidad de recuperación que estabapendiente o en cancelación anómala, se

386 Introducción a DB2 para z/OS

||||||

||||||||||||

||||||

|||||||

Page 377: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

interrumpió por una cancelación o errordel sistema y no finalizó la restitucióndurante el reinicio.

precisiónEn SQL, número total de dígitos de unnúmero decimal (llamado tamaño en ellenguaje C). En el lenguaje C, número dedígitos situados a la derecha de la comadecimal (en SQL se denomina escala). Lainformación de DB2 utiliza los términosde SQL.

precompilaciónProceso de los programas de aplicaciónque contienen sentencias de SQL quetienen lugar antes de la compilación. Lassentencias de SQL se sustituyen porsentencias que son reconocidas por elcompilador del lenguaje principal. Lasalida de esta precompilación incluye elcódigo fuente que puede someterse alcompilador y el módulo de petición debase de datos (DBRM) que es la entradaal proceso de vinculación.

predicadoElemento de una condición de búsquedaque expresa o implica una operación decomparación.

prefijoCódigo situado al comienzo de unmensaje o registro.

preformatearProceso de preparar un archivo lineal deVSAM para su utilización por DB2,mediante la escritura de patrones dedatos específicos.

preparaciónLa primera fase de un proceso deconfirmación en dos fases en la que sepide a todos los solicitantes que sepreparen para la confirmación.

sentencia de SQL preparadaObjeto con nombre que es la formaejecutable de una sentencia de SQL queha procesado la sentencia PREPARE.

ID de autorización primariaID de autorización que se utiliza paraidentificar el proceso de aplicación paraDB2.

agrupación primaria de almacenamientosintermedios de grupo

Para una agrupación de almacenamientos

intermedios de grupo replicada,estructura que se utiliza para mantener lacoherencia de los datos de laantememoria. Esta estructura se utilizapara el registro de páginas e invalidacióncruzada. El equivalente de z/OS es laestructura antigua. Compárese conagrupación secundaria dealmacenamientos intermedios de grupo.

índice primarioÍndice que asegura la exclusividad de unaclave primaria.

clave primariaEn una base de datos relacional, claveexclusiva, no nula que forma parte de ladefinición de una tabla. Una tabla nopuede definirse como padre a menos quetenga una clave exclusiva o una claveprimaria.

principalEntidad que puede comunicarse de modoseguro con otra entidad. En Kerberos, losprincipales se representan como entradasen la base de datos de registro deKerberos e incluyen usuarios, servidores,sistemas y otros.

nombre de principalEl nombre por el que un principal resultaconocido para los servicios de seguridadde DCE.

privilegioCapacidad de realizar una funciónespecífica, a veces en un objeto específico.Véase también privilegio explícito

juego de privilegios

v Con respecto al ID de SYSADM deinstalación, conjunto de todos losprivilegios posibles.

v Para cualquier otro ID de autorización,incluido el ID de autorización PUBLIC,conjunto de todos los privilegiosregistrados para ese ID en el catálogode DB2.

procesoEn DB2, unidad a la que DB2 asignarecursos y bloqueos. En ocasiones recibeel nombre de proceso de aplicación, unproceso implica la ejecución de uno o másprogramas. La ejecución de una sentenciade SQL siempre se asocia a algún proceso.El método para iniciar y terminar unproceso depende del entorno.

Glosario 387

||||

|||

|||||

Page 378: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

programaÚnica colección compilable de sentenciasejecutables de un lenguaje deprogramación.

arreglo temporal de programa (PTF)Solución o modo de eludir un problemaque se diagnostica como resultado de undefecto en el release actual no modificadode un programa bajo licencia. Un arreglode informe autorizado de análisis deprograma (APAR) es un servicio decorrección para un problema existente. UnPTF es un servicio preventivo para losproblemas que pudieran encontrar otrosusuarios del producto. Un PTF estemporal, ya que un arreglo permanentenormalmente no se incorpora al productohasta el siguiente release.

conversación protegidaConversación de VTAM que escompatible con la confirmación en dosfases.

PSRCPVéase conjunto de páginas pendiente derecuperación.

PTF Véase arreglo temporal de programa.

QSAMVéase método de acceso secuencial porcolas.

consultaComponente de determinadas sentenciasde SQL que especifica una tabla deresultados.

bloque de consultaParte de una consulta que se representapor medio de una de las cláusulas FROM.Cada cláusula FROM puede tenermúltiples bloques de consulta,dependiendo del proceso de DB2 de laconsulta.

paralelismo de CP de consultaEjecución en paralelo de una únicaconsulta, que se consigue utilizandovarias tareas. Véase también paralelismode consulta de Sysplex.

paralelismo de E/S de consultaAcceso paralelo a datos, que se consigueal desencadenar varias peticiones de E/Sen una única consulta.

método de acceso secuencial por colas (QSAM)Versión ampliada del método de acceso

secuencial básico (BSAM). Cuando seutiliza este método, se forma una cola debloque de datos. Los bloques de datos deentrada esperan a ser procesados y losbloques de datos de salida se transfieren aalmacenamiento auxiliar o a undispositivo de salida.

punto de inmovilizaciónPunto en el que los datos son coherentescomo resultado de ejecutar el programade utilidad QUIESCE de DB2.

RACF Recurso de control de acceso de recursos.Componente del servidor de seguridad dez/OS.

espacio de tablas particionado por rangosTipo de espacio de tablas universalbasado en rangos de particionamiento yque contiene una única tabla. Compáresecon espacio de tablas de crecimiento porpartición. Véase también espacio de tablasuniversal.

RBA Véase dirección relativa de byte.

RCT Véase tabla de control de recursos.

RDO Véase definición de recursos en línea.

estabilidad de lectura (RS)Nivel de aislamiento que es similar a lalectura repetible, pero que no aíslacompletamente un proceso de aplicaciónde todos los demás procesos de aplicaciónque se están ejecutando simultáneamente.Véase también estabilidad del cursor,lectura repetible y lectura no confirmada.

revincularCreación de un nuevo plan de aplicaciónpara un programa de aplicación que se havinculado previamente. Si, por ejemplo,ha añadido un índice a una tabla a la quela aplicación accede, debe revincular laaplicación para sacar partido a dichoíndice.

reconstruirProceso de reasignar una estructura delrecurso de acoplamiento. Para laestructura del área de comunicacionescompartida (SCA) y de bloqueo, laestructura se vuelve a completar; para laagrupación de almacenamientosintermedios de grupo, las páginascambiadas suelen convertirse en un discoy la nueva estructura sólo se completa

388 Introducción a DB2 para z/OS

|||||||

||

Page 379: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

con páginas cambiadas que no se hayanconvertido de modo satisfactorio.

registroRepresentación en el almacenamiento deuna fila u otros datos.

identificador de registro (RID)Identificador exclusivo que DB2 utilizapara identificar una fila de datos en unatabla. Compárese con identificador de fila.

agrupación de identificadores de registros (RID)Área de almacenamiento principal que seutiliza para ordenar los identificadores deregistros durante el proceso deprecaptación de listas.

longitud de registroSuma de la longitud de todas lascolumnas de una tabla, que es la longitudde los datos tal como están almacenadosfísicamente en la base de datos. Losregistros pueden ser de longitud fija ovariable, dependiendo de cómo esténdefinidas las columnas. Si todas lascolumnas son de longitud fija, el registroes de longitud fija. Si una o más columnasson de longitud variable, el registro es delongitud variable.

recurso de conexión de los servicios del gestorde recursos recuperables (RRSAF)

Subcomponente de DB2 que hace uso deRRS (servicios de recuperación derecursos) para coordinar la asignación derecursos entre DB2 y todos los demásgestores de recursos que también utilizanRRS en un sistema z/OS.

recuperaciónProceso de reconstruir bases de datosdespués de un error del sistema.

archivo de registro de recuperaciónColección de registros que describe lossucesos que se producen durante laejecución de DB2 e indica su secuencia.La información registrada se utiliza parala recuperación en caso de error durantela ejecución de DB2.

gestor de recuperaciónSubcomponente que proporciona serviciosde coordinación que controlan lainteracción de gestores de recursos deDB2 durante los procesos deconfirmación, cancelación anormal, puntode control y reinicio. El gestor derecuperación también da soporte a los

mecanismos de recuperación de otrossubsistemas (por ejemplo, IMS) actuandocomo participante en el proceso del otrosubsistema para proteger los datos quehan alcanzado un punto de coherencia.

Coordinador o participante (o ambos), enla ejecución de una confirmación en dosfases, que puede acceder a un registro derecuperación que mantiene el estado de launidad de trabajo lógica y da nombre alcoordinador de comunicaciones ensentido inverso inmediato y a losparticipantes de comunicaciones ensentido directo.

pendiente de recuperación (RECP)Condición que impide a SQL acceder a unespacio de tablas que debe recuperarse.

símbolo de recuperaciónIdentificador para un elemento que seutiliza en la recuperación (por ejemplo,NID o URID).

RECP Véase pendiente de recuperación.

rehacerEstado de una unidad de recuperaciónque indica que los cambios deben volvera aplicarse al soporte en disco paraasegurar la integridad de los datos.

código reentranteCódigo ejecutable que puede residir en lamemoria como copia individualcompartida por todas las hebras. Elcódigo reentrante no se modifica a símismo y proporciona áreas dealmacenamiento independientes para cadahebra. Véase también seguridad dehebras.

restricción de referenciaRequisito por el que los valores no nulosde una clave externa designada sólo sonválidos si son iguales a valores de la claveprimaria de una tabla designada.

ciclo referencialConjunto de restricciones referenciales detal forma que cada tabla base en elconjunto es un descendiente de sí misma.Las tablas implicadas en un cicloreferencial están ordenadas de tal formaque cada tabla es un descendiente de latabla anterior, y la primera tabla es undescendiente de la última tabla.

Glosario 389

|||||||||

Page 380: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

integridad de referenciaEstado de una base de datos en el queson válidos todos los valores de todas lasclaves externas. Para mantener laintegridad de referencia es necesarioaplicar restricciones de referencia paratodas las operaciones que modifican losdatos de una tabla sobre la que se handefinido las restricciones de referencia.

estructura de referenciaConjunto de tablas y relaciones queincluye al menos una tabla y para cadatabla del conjunto, todas las relaciones enlas que participa dicha tabla y todas lastablas con las que está relacionado.

edad de renovaciónLa duración entre la hora actual y la horaen que se renovó por última vez una tablade consultas materializada.

registroVéase base de datos de registro.

base de datos de registroBase de datos de información deseguridad sobre principales, grupos,organizaciones, cuentas y políticas deseguridad.

base de datos relacionalBase de datos que puede percibirse comoconjunto de tablas y manipularse conarreglo al modelo de datos relacional.

sistema de gestión de bases de datosrelacionales (RDBMS)

Colección de hardware y software queorganiza y proporciona acceso a una basede datos relacional.

esquema relacionalVéase esquema de SQL.

relaciónConexión definida entre las filas de unatabla o las filas de dos tablas. Unarelación es la representación interna deuna restricción de referencia.

dirección relativa de byte (RBA)Desplazamiento de un registro de datos ointervalo de control desde el principio delespacio de almacenamiento que se asignaal archivo (dataset) o archivo al quepertenece.

remigraciónProceso de volver a un release actual deDB2 después de una retrotracción a un

nivel anterior. Este procedimientoconstituye otro proceso de migración.

remotoCualquier objeto mantenido por medio deun subsistema DB2 remoto (es decir, pormedio de un subsistema de DB2 que nosea el local). Una vista remota, porejemplo, es una vista mantenida por unsubsistema remoto de DB2. Compáresecon local.

subsistema remotoCualquier DBMS relacional, excepto elsubsistema local, con el que puedecomunicarse el usuario o aplicación. Noes necesario que el subsistema sea remotoen sentido físico e incluso puede operaren el mismo procesador bajo el mismosistema z/OS.

reoptimizaciónProceso de DB2 de reconsiderar la vía deacceso de una sentencia de SQL entiempo de ejecución; durante lareoptimización DB2 utiliza los valores devariables de sistema principal, losmarcadores de parámetros o los registrosespeciales.

formato de fila reordenadoFormato de fila que facilita el rendimientomejorado en recuperación de filas quetienen columnas de longitud variable.DB2 reorganiza el orden de las columnas,tal como está definido en la sentenciaCREATE TABLE, de forma que lascolumnas de longitud fija se almacenan alprincipio de la fila y las columnas delongitud variable se almacenan al final dela fila. Compárese con formato de filabásico.

pendiente de REORG (REORP)Condición que restringe el acceso de SQLy la mayoría de los programas de utilidada un objeto que debe reorganizarse.

REORPVéase pendiente de REORG.

lectura repetible (RR)Nivel de aislamiento que proporciona lamáxima protección respecto a la ejecuciónde otros programas de aplicación. Cuandoun programa de aplicación se ejecuta conla protección de lectura repetible, otrosprogramas no pueden cambiar las filas alas que el programa hace referencia hasta

390 Introducción a DB2 para z/OS

||

||||||||||||

Page 381: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

que el programa llegue a un punto deconfirmación. Véase también estabilidaddel cursor, estabilidad de lectura y lecturano confirmada.

grupo repetitivoSituación en la que una entidad incluyevarios atributos que son intrínsecamenteel mismo. La presencia de un gruporepetitivo viola el requisito de la primeraforma normal. En una entidad quecumpla el requisito de la primera formanormal, cada atributo es independiente yexclusivo en su significado y en sunombre. Véase también normalización.

mecanismo de detección de reproducciónMétodo que permite a un principaldetectar si una petición es una peticiónválida procedente de una fuente en la quepuede confiarse o si una entidad fiable hacapturado información procedente de unintercambio previo y está reproduciendoel intercambio de información paraobtener acceso al principal.

confirmación de peticiónVoto que se somete a la fase depreparación si el participante hamodificado datos y está preparado paraconfirmar o retrotraer.

peticionarioFuente de una petición para acceder a losdatos que hay en un servidor remoto. Enel entorno DB2, el recurso de datosdistribuidos proporciona la función depeticionario.

recursoEl objeto de un bloqueo o reclamación,que puede ser un espacio de tablas, unespacio de índice, una partición de datos,una partición de índice o una particiónlógica.

asignación de recursosLa parte de la asignación de planes quetrata específicamente con los recursos debase de datos.

tabla de control de recursosConstrucción de versiones anteriores delrecurso de conexiones de CICS que definelos parámetros de autorización y accesopara las transacciones o grupos detransacciones. A partir de CICSTransaction Server Versión 1.3, losrecursos se definen utilizando la

definición de recursos en línea en lugarde la tabla de control de recursos. Véasetambién definición de recursos en línea.

definición de recursos en línea (RDO)Método recomendado para definirrecursos en CICS mediante la creacióndefiniciones de recursos de formainteractiva o utilizando un programa deutilidad, y luego guardar las definicionesen el archivo de definiciones de CICS. Enversiones anteriores de CICS, los recursosse definían utilizando la tabla de controlde recursos (RCT), que ya no estásoportada.

recurso de límite de recursos (RLF)Parte del código de DB2 que impide quelas sentencias de SQL de manipulacióndinámica superen los límites de tiempoespecificados. El recurso de límite derecursos a veces recibe el nombre degobernador.

tabla de especificación de límite de recursos(RSLT)

Tabla definida por el emplazamiento queespecifica los límites que ha de implantarel recurso de límite de recursos.

gestor de recursos

v Función que es responsable degestionar un determinado recurso y quegarantiza la coherencia de todas lasactualizaciones efectuadas en recursosrecuperables dentro de una unidad detrabajo lógica. El recurso que se estágestionando puede ser físico (porejemplo, un disco o un almacenamientoprincipal) o lógico (por ejemplo, undeterminado tipo de servicio desistema).

v Participante, en la ejecución de unaconfirmación en dos fases, que tienerecursos recuperables que pudieranhaberse modificado. El gestor derecursos tiene acceso a un registro derecuperación para que pueda confirmaro retrotraer los efectos de la unidad detrabajo lógica en los recursosrecuperables.

pendiente de reinicio (RESTP)Estado restrictivo de un conjunto depáginas o partición que indica que eltrabajo de reinicio (restitución) debeefectuarse en el objeto.

Glosario 391

|||||||

|||

||||||||||

Page 382: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

RESTPVéase pendiente de reinicio.

conjunto de resultadosConjunto de filas que un procedimientoalmacenado devuelve a una aplicacióncliente.

localizador de conjunto de resultadosValor de 4 bytes que DB2 utiliza paraidentificar de modo exclusivo un conjuntode resultados de consulta que unprocedimiento almacenado devuelve.

tabla de resultadosConjunto de filas especificadas por mediode una sentencia SELECT.

bloqueo retenidoBloqueo MODIFY que un subsistema deDB2 estaba reteniendo en el momento enque se ha producido una anomalía delsubsistema. El bloqueo se mantiene en laestructura de bloqueo del recurso deacoplamiento después de un error de DB2para z/OS.

RID Véase identificador de registro.

agrupación de RIDVéase agrupación de identificadores deregistro.

unión externa derechaResultado de una operación de unión queincluye las filas coincidentes de las dostablas que se están uniendo y preserva lasfilas no coincidentes del segundooperando de unión. Véase también unión,unión de equivalencia, unión externacompleta, unión interna, unión externaizquierda y unión externa.

RLF Véase recurso de límite de recursos.

RLST Véase tabla de especificación de límite derecursos.

rol Entidad de base de datos que agrupaconjuntamente uno o más privilegios yque puede ser asignada a un ID deautorización primario o a PUBLIC. El rolestá disponible sólo en un contexto fiable.

retrotraerProceso de restaurar datos, cambiados porsentencias de SQL, al estado que teníanen su último punto de confirmación. Seliberan todos los bloqueos. Compáresecon confirmar.

página raízPágina de índice que se encuentra en elnivel más alto (o punto inicial) de uníndice.

rutina Un objeto de base de datos que incluyelógica de procedimiento y sentencias deSQL se almacena en el servidor de basesde datos y se puede invocar desde unasentencia de SQL o utilizando la sentenciaCALL. Las clases principales de rutinasson procedimientos y funciones.

fila El componente horizontal de una tabla.Una fila consta de una secuencia devalores, uno por cada columna de latabla.

identificador de fila (ROWID)Valor que identifica exclusivamente unafila. Este valor se almacena con la fila yno cambia nunca.

bloqueo de filaBloqueo sobre una fila de datosindividual.

sentido de lectura posicionado en filaEspecificación de la ubicación deseada delcursor como parte de una sentenciaFETCH, respecto a una única fila (porejemplo, NEXT, LAST o ABSOLUTE n).Compárese con sentido de lecturaposicionado en conjunto de filas.

conjunto de filasConjunto de filas para el que se haestablecido una posición del cursor.

cursor de conjunto de filasCursor que se ha definido para que seaposible devolver una o más filas como unconjunto de filas en una sola sentenciaFETCH. El cursor está situado en elconjunto de filas que se capta.

sentido de lectura posicionado en conjunto defilas Especificación de la ubicación deseada del

cursor como parte de una sentenciaFETCH, con respecto a un conjunto defilas (por ejemplo, NEXT ROWSET, LASTROWSET o ROWSET STARTING ATABSOLUTE n). Compárese con sentido delectura posicionado en fila.

desencadenante de filaDesencadenante que se define con lagranularidad de desencadenante FOREACH ROW.

392 Introducción a DB2 para z/OS

||||||

|||||||

||||||

|||||||

Page 383: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

RRSAFVéase Recurso de conexión de losservicios del gestor de recursosrecuperables.

RS Véase estabilidad de lectura.

punto de rescateEntidad, con nombre, que representa elestado de los datos y esquemas en undeterminado momento dentro de unidadde trabajo.

SBCS Véasesingle-byte character set.

SCA Véase área de comunicacionescompartidas.

función escalarOperación de SQL que produce un valorindividual a partir de otro valor y serepresenta por un nombre de funciónseguido de una lista de argumentosencerrados entre paréntesis.

escala En SQL, número de dígitos existentes a laderecha de la coma decimal (en ellenguaje C este número se denominaprecisión). La información de DB2 utilizala definición de SQL.

esquemaOrganización o estructura de una base dedatos.

Colección de, y una forma de calificar,objetos de base de datos tales comotablas, vistas, rutinas, índices odesencadenantes que definen una base dedatos. Un esquema de base de datosproporciona una clasificación lógica deobjetos de base de datos.

capacidad de desplazamientoCapacidad de un cursor para leer en ladirección de avance y de retroceso. Lasentencia FETCH (buscar) permite variossentidos de captación para indicar lanueva posición del cursor. Véase tambiénsentido de lectura.

cursor desplazableCursor que se puede mover tanto en elsentido de avance como en el deretroceso.

condición de búsquedaCriterio para seleccionar filas en unatabla. Una condición de búsqueda constade uno o más predicados.

ID de autorización secundariaID de autorización que se ha asociado aun ID de autorización primaria por mediode una rutina de salida de autorización.

agrupación secundaria de almacenamientosintermedios de grupo

Para una agrupación replicada dealmacenamientos intermedios de grupo,estructura que se utiliza para copiarpáginas cambiadas que se graban en laagrupación primaria de almacenamientosintermedios de grupo. No se produceningún registro de páginas ni invalidacióncruzada al utilizar la agrupaciónsecundaria de almacenamientosintermedios de grupo. El equivalente dez/OS es la estructura nueva.

índice secundarioÍndice no particionado que sirve paraaplicar una restricción de exclusividad,agrupar datos en clústeres o proporcionarvías de acceso a datos para realizarconsultas. Un índice secundario puedeestar particionado o no particionado.Véase también índice secundario de datosparticionados (DPSI) e índice secundariono particionado (NPSI).

secciónSegmento de un plan o paquete quecontiene las estructuras ejecutables parauna sentencia de SQL individual. Para lamayoría de las sentencias de SQL, hayuna sección del plan para cada sentenciade SQL del programa fuente. Sinembargo, para sentencias relacionadas conel cursor, las sentencias DECLARE,OPEN, FETCH y CLOSE hacen referenciaa la misma sección ya que cada una deestas hace referencia a la sentenciaSELECT nombrada en la sentenciaDECLARE CURSOR. Las sentencias deSQL, como por ejemplo, COMMIT,ROLLBACK y algunas sentencias SET noutilizan una sección.

etiqueta de seguridadClasificación del acceso de los usuarios aobjetos o filas de datos en un entorno deseguridad de varios niveles.

segmentoGrupo de páginas que contiene filas deuna tabla individual. Véase tambiénespacio de tablas segmentado.

Glosario 393

||||

Page 384: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

espacio de tablas segmentadoEspacio de tablas que está dividido engrupos de páginas de igual tamañollamados segmentos. Los segmentos seasignan a tablas de modo que las filas detablas diferentes no se guarden nunca enel mismo segmento. Compárese conespacio de tablas particionado y espaciode tablas universal.

restricción de autorreferenciaRestricción de referencia que define unarelación en la que una tabla depende de símisma.

tabla de autorreferenciaTabla con una restricción deautorreferencia.

cursor sensibleCursor que es sensible a los cambios quese efectúan en la base de datos una vezcreada la tabla de resultados.

secuenciaObjeto definido por el usuario que generauna secuencia de valores numéricos deacuerdo con las especificaciones delusuario.

archivo secuencialArchivo no perteneciente a DB2 cuyosregistros se organizan de acuerdo con sussucesivas posiciones físicas, tal comoocurre en una cinta magnética. Variosprogramas de utilidad de base de datosde DB2 requieren archivos secuenciales.

precaptación secuencialMecanismo que desencadena operacionesde E/S asíncronas consecutivas. Laspáginas se leen antes de ser solicitadas yse leen varias páginas con una solaoperación de E/S.

perfil serializadoObjeto de Java que contiene sentencias deSQL y descripciones de variables desistema principal. El conversor de SQLJproduce un perfil serializado para cadacontexto de conexión.

servidorDestino de una petición procedente de unpeticionario remoto. En el entorno deDB2, el recurso de datos distribuidoproporciona la función de servidor, que seutiliza para acceder a datos de DB2 desdeaplicaciones remotas.

clase de servicioIdentificador de ocho caracteres queWorkload Manager de z/OS utiliza paraasociar los objetivos de rendimiento deusuario con una determinada hebra o unprocedimiento almacenado de DDF.También se utiliza una clase de serviciopara clasificar el trabajo en los asistentesde paralelismo.

bloque de petición de servicioUnidad de trabajo planificada paraejecutarse.

sesión Enlace entre dos nodos de una redVTAM.

protocolos de sesiónEl conjunto disponible de peticiones yrespuestas de comunicación de SNA.

operador de conjuntoOperadores UNION, EXCEPT yINTERSECT de SQL correspondientes alos operadores relacionales de unión,diferencia e intersección. Un operador setderiva una tabla de resultadoscombinando otras dos tablas deresultados.

área de comunicaciones compartida (SCA)Estructura de lista del recurso deacoplamiento que un grupo decompartimiento de datos de DB2 utilizapara la comunicación entre sistemas DB2.

bloqueo de compartimientoBloqueo que impide que los procesos deaplicación que se ejecutansimultáneamente cambien datos, pero queno impide que lean datos. Compárese conbloqueo exclusivo.

carácter de desplazamiento a teclado estándarCarácter de control especial (X’0F’) que seutiliza en sistemas EBCDIC para denotarque los bytes subsiguientes representancaracteres SBCS. Véase también carácterde desplazamiento a teclado ideográfico.

carácter de desplazamiento a teclado ideográficoCarácter de control especial (X’0E’) que seutiliza en sistemas EBCDIC para denotarque los bytes subsiguientes, hasta elsiguiente carácter de desplazamiento ateclado estándar, representan caracteresDBCS. Véase también carácter dedesplazamiento a teclado estándar.

394 Introducción a DB2 para z/OS

||

||||||||

Page 385: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

inicio de sesiónPetición hecha en nombre de un procesode aplicación de CICS o IMS por unrecurso de conexión para permitir queDB2 verifique que ese proceso deaplicación está autorizado para utilizarrecursos de DB2.

conjunto de páginas simpleConjunto de páginas no particionado. Unconjunto de páginas simple inicialmenteconsta de un único archivo (fragmento delconjunto de páginas). Si se amplía esearchivo a 2 GB, en ese momento se creaotro archivo y así sucesivamente, hasta unmáximo de 32 archivos. DB2 consideraque los archivos son un único espacio dedirecciones contiguo lineal que contieneun máximo de 64 GB. Los datos sealmacenan en la siguiente ubicacióndisponible dentro de este espacio dedirecciones sin tener en cuenta ningúnesquema de particionamiento.

espacio de tablas simpleEspacio de tablas que no está niparticionado ni segmentado. La creaciónde espacios de tablas simples no estásoportada en DB2 Versión 9.1 para z/OS.Compárese con espacio de tablasparticionado, espacio de tablassegmentado y espacio de tablas universal.

juego de caracteres de un solo byte (SBCS)Juego de caracteres en el que cadacarácter está representado por un solobyte. Compárese con juego de caracteresde doble byte o juego de caracteres devarios bytes.

número de coma flotante de precisión simpleRepresentación aproximada de 32 bits deun número real.

SMP/EVéase System ModificationProgram/Extended.

SNA Véase Systems Network Architecture.

red SNALa parte de una red que se ajusta a losformatos y protocolos de la Arquitecturade red de sistemas (SNA).

socket Interfaz de programación invocable deTCP/IP que utilizan las aplicaciones dered de TCP/IP para comunicarse consistemas TCP/IP remotos.

función derivadaFunción que se implementa por medio deotra función incorporada o definida por elusuario que ya es conocida por el gestorde bases de datos. Esta función puede seruna función escalar o una función detotales; devuelve un valor único a partirde un conjunto de valores (por ejemplo,MAX o AVG). Compárese con funciónincorporada, función externa, y funciónde SQL.

programa fuenteConjunto de sentencias de lenguajeprincipal y sentencias de SQL que esprocesado un precompilador de SQL.

tabla fuenteTabla que puede ser una tabla base, unavista, una expresión de tabla o unafunción de tabla definida por el usuario.

tipo fuenteTipo existente que DB2 utiliza pararepresentar un tipo diferenciado.

espacioSecuencia de uno o más caracteres enblanco.

columna espacialColumna de una tabla que se defineutilizando uno de los tipos de datosespaciales que proporciona IBM SpatialSupport para DB2 para z/OS.

datos espacialesDatos formados por coordenadas queidentifican una ubicación o regióngeográfica.

función espacialFunción que proporciona IBM SpatialSupport para DB2 para z/OS y querealiza varias operaciones sobre datosespaciales.

sistema de referencia espacialConjunto de parámetros que incluyecoordenadas que definen la extensiónmáxima posible de espacio a la que hacereferencia un determinado rango decoordenadas, un identificador del sistemade coordenadas a partir del que sederivan coordenadas y números queconvierten coordenadas en enterospositivos a fin de mejorar el rendimientocuando se procesan las coordenadas.

Glosario 395

||||||||||

|||||

||||

|||||

|||||||||||

Page 386: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

registro especialÁrea de almacenamiento que DB2 definepara que un proceso de aplicación lautilice para almacenar información a laque se puede hacer referencia ensentencias de SQL. Ejemplos de registrosespeciales son SESSION_USER yCURRENT DATE.

nombre de función específicoFunción definida por el usuario que elgestor de bases de datos conoce por sunombre específico. Muchas funcionesdefinidas por el usuario pueden tener elmismo nombre de función. Cuando sedefine una función definida por elusuario para la base de datos, a cadafunción se le asigna un nombre específicoque es exclusivo dentro del esquema de lafunción. El usuario puede proporcionareste nombre o bien se utiliza un nombrepor omisión.

SPUFI Véase SQL Processor Using File Input.

SQL Véase Lenguaje de consulta estructurada.

ID de autorización de SQL (ID de SQL)ID de autorización que se utiliza paracomprobar sentencias de SQL dinámicoen algunas situaciones.

SQLCAVéase área de comunicaciones de SQL.

área de comunicaciones de SQL (SQLCA)Estructura que se utiliza paraproporcionar información a un programade aplicación sobre la ejecución de sussentencias de SQL.

conexión de SQLAsociación entre un proceso de aplicacióny un servidor de aplicaciones o de basesde datos local o remoto.

SQLDAVéase área de descriptores de SQL.

área de descriptores de SQL (SQLDA)Estructura que describe variables deentrada, variables de salida o lascolumnas de una tabla de resultados.

carácter de escape de SQLSímbolo que se utiliza para delimitar unidentificador delimitado de SQL. Estesímbolo es el signo de comilla doble (″).Véase también carácter de escape.

función de SQLFunción definida por el usuario en la quela sentencia CREATE FUNCTIONcontiene el código fuente. El códigofuente es una expresión individual deSQL cuya evaluación da como resultadoun solo valor. La función de SQL definidapor el usuario puede devolver elresultado de una expresión. Véasetambién función incorporada, funciónexterna y función derivada.

ID de SQLVéase ID de autorización de SQL.

SQLJ SQL (lenguaje de consulta estructurada)que está incorporado en el lenguaje deprogramación Java.

vía de acceso de SQLLista ordenada de nombres de esquemaque se utilizan en la resolución dereferencias no calificadas a funcionesdefinidas por el usuario, tiposdiferenciados y procedimientosalmacenados. En el SQL dinámico, la víade acceso de SQL se encuentra en elregistro especial CURRENT PATH. En elSQL estático, la vía de acceso de SQL sedefine en la opción de vinculación PATH.

procedimiento de SQLPrograma de aplicación, escrito por unusuario, que se puede invocar mediante lasentencia CALL de SQL. Unprocedimiento de SQL se escribe en ellenguaje de procedimiento de SQL. Estánsoportados dos procedimientos de SQL:procedimientos de SQL externos yprocedimientos de SQL nativos. Véasetambién procedimiento externo yprocedimiento nativo de SQL.

conversación de proceso de SQLCualquier conversación que requieraacceder a datos de DB2, ya sea a travésde una aplicación o mediante peticionesde consulta dinámica.

SQL Processor Using File Input (SPUFI)Recurso del subcomponente de conexiónde TSO que permite al usuario de DB2Iejecutar sentencias de SQL sinintercalarlas en un programa deaplicación.

código de retorno de SQLSQLCODE o SQLSTATE.

396 Introducción a DB2 para z/OS

|||||||

||||||||||

||||||||||

Page 387: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

rutina de SQLFunción definida por el usuario oprocedimiento almacenado que estánbasados en un código escrito en SQL.

esquema de SQLColección de objetos de base de datostales como tablas, vistas, índices,funciones, tipos diferenciados, esquemas odesencadenantes que definen una base dedatos. Un esquema de SQL proporcionauna clasificación lógica de objetos de basede datos.

coprocesador de sentencias de SQLAlternativa al precompilador de DB2 quepermite al usuario procesar sentencias deSQL durante la compilación. Para invocarun coprocesador de sentencias de SQL sedebe especificar una opción decompilador.

delimitador de series de caracteres de SQLSímbolo que se utiliza para delimitar unaconstante de tipo carácter de SQL. Eldelimitador de series de caracteres delSQL es el apóstrofe (’), excepto en lasaplicaciones COBOL, en las que el usuarioasigna el símbolo, que puede ser unapóstrofe o un signo de comilla doble (″).

SRB Véase bloque de petición de servicio.

autónomoAtributo de un programa que significaque puede ejecutarse de modoindependiente de DB2, sin utilizarservicios de DB2.

unión en estrellaMétodo para unir una columna dedimensión de una tabla de hechos con lacolumna de clave de la tabla dedimensión correspondiente. Véasetambién unión, dimensión y esquema enestrella.

esquema en estrellaCombinación de una tabla de hechos (quecontiene la mayoría de los datos) y variastablas de dimensión. Véase también uniónen estrella, dimensión y tabla dedimensión.

descriptor de sentenciaEn ODBC de DB2, objeto de datos quecontiene información sobre una sentenciade SQL gestionada por ODBC de DB2.Esto incluye información como porejemplo argumentos dinámicos,

vinculaciones para argumentos dinámicosy columnas, información de cursor,valores de resultado e información deestado. Cada descriptor de sentencia estáasociado al descriptor de conexión.

serie de sentenciaPara una sentencia de SQL dinámica, elformato de serie de caracteres de lasentencia.

desencadenante de sentenciaDesencadenante que se define con lagranularidad de desencadenante FOREACH STATEMENT.

cursor estáticoEstructura de control con nombre que nocambia el tamaño de la tabla deresultados ni el orden de sus filas despuésde que una aplicación abra el cursor.Compárese con cursor dinámico.

SQL estáticoSentencias de SQL, incorporadas en unprograma, que se preparan durante elproceso de preparación de programa(antes de que se ejecute el programa).Después de prepararse, la sentencia deSQL no cambia (aunque los valores devariables especificados por la sentenciapueden cambiar).

grupo de almacenamientoConjunto de objetos de almacenamientoen el que se pueden almacenar los datosde DB2 para z/OS. Un objeto dealmacenamiento puede tener una clase dedatos SMS, una clase de gestión, una clasede almacenamiento y una lista denúmeros de serie de volumen.

procedimiento almacenadoPrograma de aplicación, escrito por elusuario, que se puede invocar mediante lasentencia CALL de SQL. Losprocedimientos almacenados a veces sedenominan procedimientos.

serie Véase serie de caracteres binaria, serie decaracteres o serie de caracteres gráfica.

tipificación estrictaProceso que asegura que sólo lasfunciones definidas por el usuario y lasoperaciones que están definidas en untipo diferenciado pueden aplicarse a esetipo. Por ejemplo, no puede comparardirectamente dos tipos de divisa, talescomo los dólares americanos y los dólares

Glosario 397

||||||||

||||||||

|||||||

Page 388: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

canadienses. Pero puede proporcionar unafunción definida por el usuario paraconvertir una divisa a la otra y despuésefectuar la comparación.

estructura

v Nombre que designa colectivamente losdiferentes tipos de objetos de DB2, talescomo tablas, bases de datos, vistas,índices y espacios de tablas.

v Construcción que hace uso de z/OSpara correlacionar y gestionaralmacenamiento en un recurso deacoplamiento. Véase también estructurade antememoria, estructura de lista oestructura de bloqueo.

Lenguaje de consulta estructurada (SQL)Lenguaje estandarizado para definir ymanipular datos en una base de datosrelacional.

propietario de la estructuraEn relación a las agrupaciones dealmacenamientos intermedios de grupo,miembro de DB2 que se encarga de lasactividades siguientes:v Coordinar el proceso de reconstrucción,

puntos de control y valoración dedaños

v Supervisar el umbral de agrupación dealmacenamientos intermedios de grupoy notificar a los propietarios de laconversión el momento en que sealcanza el umbral.

subcomponenteGrupo de módulos de DB2 estrechamenterelacionados que funcionanconjuntamente para proporcionar unafunción general.

tabla sujetoTabla para la que se crea undesencadenante. Cuando se produce elsuceso desencadenante definido en estatabla, se activa el desencadenante.

subconsultaSentencia SELECT dentro de la cláusulaWHERE o HAVING de otra sentencia deSQL; una sentencia de SQL anidada.

subselecciónForma de una consulta que incluye sólouna cláusula SELECT, una cláusula FROMy opcionalmente una cláusula WHERE,

cláusula GROUP BY, cláusula HAVING,cláusula ORDER BY o cláusula FETCHFIRST.

carácter de sustituciónCarácter exclusivo que se utiliza comosustituto durante la conversión decaracteres para los caracteres delprograma fuente que no tienen unacorrespondencia en la representacióncodificada de destino.

subsistemaInstancia diferenciada de un sistema degestión de bases de datos relacionales(RDBMS).

par sustitutoRepresentación codificada de un carácterindividual que consta de una secuenciade dos unidades de código de 16 bits; elprimer valor del par está dentro del rangoU+D800 - U+DBFF y el segundo valorestá dentro del rango U+DC00 - U+DFFF.Los pares sustitutos proporcionan unaforma de codificación ampliada para917.476 caracteres sin necesidad deutilizar caracteres de 32 bits.

vuelco de SVCVuelco que se emite cuando una rutina derecuperación funcional de z/OS o DB2detecta un error.

punto de sincronizaciónVéase punto de confirmación.

árbol de punto de sincronizaciónÁrbol de gestores de recuperación y degestores de recursos que están implicadosen una unidad de trabajo lógica,comenzando por el gestor derecuperación, que adoptan la decisión deconfirmación final.

sinónimoEn SQL, nombre alternativo para unatabla o vista. Los sinónimos sólo puedenutilizarse para hacer referencia a objetosen el subsistema donde está definido elsinónimo. Un sinónimo no puede estarcualificado y por lo tanto no puede serutilizado por otros usuarios. Compáresecon alias.

SysplexVéase Sysplex paralelo.

paralelismo de consulta de SysplexEjecución en paralelo de una única

398 Introducción a DB2 para z/OS

|||

|||

||||||||

Page 389: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

consulta que se consigue utilizando variastareas en más de un subsistema de DB2.Véase también paralelismo de CP deconsulta.

administrador del sistemaPersona que, en la instalación de unsistema, diseña, controla y gestiona el usodel sistema.

agente del sistemaPetición de trabajo que DB2 crea, tal comoun proceso de precaptación, escriturasdiferidas y tareas de servicio. Véasetambién agente aliado.

ID de autorización del sistemaID de autorización principal de DB2 quese utiliza para establecer una conexiónfiable. ID de autorización del sistemaderivado del ID de usuario del sistemaproporcionado por una entidad externa,como por ejemplo un servidormiddleware.

conversación del sistemaConversación que dos subsistemas deDB2 deben establecer para procesarmensajes del sistema antes de que puedacomenzar cualquier proceso distribuido.

System Modification Program/Extended (SMP/E)Herramienta de z/OS para efectuarcambios en el software de sistemas deprogramación (por ejemplo DB2) y paracontrolar estos cambios.

Arquitectura de red de sistemas (SNA)La descripción de la estructura lógica,formatos, protocolos y secuenciasoperacionales para transmitir informacióny controlar la configuración yfuncionamiento de redes.

tabla Objeto de datos con nombre que constade un número específico de columnas yun cierto número de filas sin ordenar.Véase también tabla base o tablatemporal. Compárese con tabla auxiliar,tabla de réplica, tabla de consultasmaterializadas, tabla de resultados y tablade transición.

particionamiento de tabla controladoTipo de particionamiento en el que loslímites de la partición de una tablaparticionada están controlados por losvalores definidos en la sentencia CREATETABLE.

función de tablaFunción que recibe un conjunto deargumentos y devuelve una tabla a lasentencia de SQL que hace referencia a lafunción. Las funciones de tabla sólopueden invocarse en la cláusula FROM deuna subselección.

localizador de tablasMecanismo que permite acceder a tablasde desencadenante en SQL o desde dentrode funciones definidas por el usuario. Unlocalizador de tablas es un valor entero depalabra completa que representa una tablade transición.

espacio de tablasConjunto de páginas que se utiliza paraalmacenar registros en una o más tablas.Véase también espacio de tablasparticionado, espacio de tablassegmentado y espacio de tablas universal.

conjunto de espacios de tablasConjunto de espacios de tablas yparticiones que deben recuperarseconjuntamente por una de las razonessiguientes:v Cada uno de ellos contiene una tabla

que es padre o descendiente de otratabla que se encuentra en uno de losdemás.

v El conjunto contiene una tabla base ytablas auxiliares asociadas.

Un conjunto de espacios de tablas puedecontener ambos tipos de relaciones.

bloque de control de tareas (TCB)Bloque de control de z/OS que se utilizapara comunicar información sobre lastareas de un espacio de direcciones queestán conectado a un subsistema. Véasetambién conexión del espacio dedirecciones.

TB Terabyte. Valor equivalente a 1 099 511627 776 bytes.

TCB Véase bloque de control de tareas.

TCP/IPProtocolo de comunicaciones de redutilizado por sistemas informáticos paraintercambiar información a través deenlaces de telecomunicaciones.

puerto de TCP/IPValor de 2 bytes que identifica un usuario

Glosario 399

||||||||

||||||

Page 390: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

final o una aplicación de red de TCP/IPen un sistema principal de TCP/IP.

plantillaDescriptor de archivos de programas deutilidad de DB2 que se utiliza para laasignación dinámica. Las plantillas sedefinen mediante la sentencia de controlde programa de utilidad TEMPLATE.

tabla temporalTabla que contiene datos temporales. Lastablas temporales son útiles para contenero clasificar resultados intermediosprocedentes de consultas que contienenun gran número de filas. Existen dos tiposde tablas temporales: la tabla temporalcreada y la tabla temporal declarada, lascuales son creadas por sentencias de SQLdiferentes. Compárese con tabla deresultados. Véase también tabla temporalcreada y tabla temporal declarada.

hebra Véase hebra de DB2.

líneas de proceso segurasCaracterística del código de programaciónque permite la ejecución simultánea dehebras al proporcionar áreas dealmacenamiento privadas para cada hebray serializar debidamente las áreas dealmacenamiento compartido (globales).

nombre de tres partesNombre completo de una tabla, vista oalias. Consta de un nombre de asignación,un nombre de esquema y un nombre deobjeto, separados por un punto.

hora Valor de tres partes que designa una horadel día en horas, minutos y segundos.

tiempo de espera excedidoTerminación anormal del subsistema deDB2 o de una aplicación debido a la nodisponibilidad de recursos. Lasespecificaciones de instalación seestablecen para determinar tanto elespacio de tiempo que DB2 deberáesperar servicios de IRLM después delinicio como el espacio de tiempo queIRLM deberá esperar si no está disponibleun recurso solicitado por la aplicación. Sise supera cualquiera de estasespecificaciones de tiempo, se declara untiempo de espera excedido.

Time-Sharing Option (TSO)Opción de z/OS que proporciona

compartimiento de tiempo interactivodesde terminales remotos.

indicación de fecha y horaValor formado por siete partes que constade una fecha y una hora. La indicación defecha y la hora se expresa en años, meses,días, horas, minutos, segundos ymicrosegundos.

rastreoRecurso de DB2 que facilita la capacidadde supervisar y recopilar datos desupervisión, auditoría, rendimiento,contabilidad, estadísticas y servicio(globales) de DB2.

transacciónSerie atómica de sentencias de SQL quecomponen una unidad lógica de trabajo.Todas las modificaciones de datosrealizadas durante una transacción seconfirman conjuntamente como unaunidad o se retrotraen como una unidad.

bloqueo de transaccionesBloqueo que se utiliza para controlar laejecución simultánea de sentencias deSQL.

nombre de programa de transaccionesEn conversaciones de SNA LU 6.2,nombre del programa en la unidad lógicaremota que deberá ser la otra mitad de laconversación.

tabla de transiciónTabla temporal que contiene todas lasfilas afectadas de la tabla en cuestión ensu estado anterior o posterior al sucesodesencadenante. Las sentencias de SQLdesencadenadas en la definición dedesencadenante que hacen referencia a latabla de filas cambiadas en el estadoantiguo o en el nuevo. Compárese contabla auxiliar, tabla base, tabla de réplicay tabla de consultas materializadas.

variable de transiciónVariable que contiene un valor decolumna de la fila afectada de la tabla encuestión en su estado anterior o posterioral suceso desencadenante. Las sentenciasde SQL desencadenadas en la definiciónde desencadenante pueden hacerreferencia al conjunto de valores antiguoso al conjunto de valores nuevos.

estructura en árbolEstructura de datos que representa las

400 Introducción a DB2 para z/OS

|||||||

Page 391: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

entidades como nodos, la mayoría con unnodo padre para cada nodo y sólo unnodo raíz.

desencadenanteObjeto de base de datos asociado con unaúnica tabla base o vista que define unanorma. La norma consta de un conjuntode sentencias de SQL que se ejecutancuando se realiza una operación de basede datos de inserción, actualización osupresión en la tabla base o vistaasociada.

activación de desencadenanteEl proceso que se produce cuando seejecuta el suceso desencadenante que sedefine en una definición dedesencadenante. La activación deldesencadenante consta de la evaluaciónde la condición de acción desencadenaday la ejecución condicional de lassentencias de SQL desencadenadas.

tiempo de activación de desencadenanteIndicación en la definición dedesencadenante de si debe activarse o noel desencadenante antes o después delsuceso desencadenante.

cuerpo desencadenanteEl conjunto de sentencias de SQL que seejecuta cuando se activa undesencadenante y se evalúa comoverdadera su condición de accióndesencadenada. Un cuerpodesencadenante también se denominasentencias de SQL desencadenadas.

desencadenante en cascadaEl proceso que se produce cuando laacción desencadenada de undesencadenante ocasiona la activación deotro desencadenante.

acción desencadenadaLógica de SQL que se realiza cuando seactiva un desencadenante. La accióndesencadenada consta de una condiciónde acción desencadenada y de unconjunto de sentencias de SQLdesencadenadas que sólo se ejecutan si seevalúa como verdadera la condición.

condición de acción desencadenadaParte opcional de la accióndesencadenada. Esta condición Booleanaaparece como una cláusula WHEN yespecifica una condición que DB2 evalúa

para determinar si deben ejecutarse lassentencias de SQL desencadenadas.

sentencias de SQL desencadenadasEl conjunto de sentencias de SQL que seejecuta cuando se activa undesencadenante y se evalúa comoverdadera su condición de accióndesencadenada. Las sentencias de SQLdesencadenadas también reciben elnombre de cuerpo desencadenante.

granularidad desencadenanteEn SQL, característica de undesencadenante, que determina si seactiva el desencadenante:v Sólo una vez para la sentencia de SQL

desencadenantev Una vez para cada fila que la sentencia

de SQL modifica

suceso desencadenanteLa operación especificada en unadefinición del desencadenante queocasiona la activación de dichodesencadenante. El sucesodesencadenante está compuesto por unaoperación desencadenante (insert, updateo delete) y una tabla sujeto en la que seefectúa la operación.

operación de SQL desencadenanteOperación de SQL que hace que se activeun desencadenante cuando la operaciónse efectúa en la vista o tabla sujeto.

paquete desencadenantePaquete que se crea cuando se ejecuta unasentencia CREATE TRIGGER. El paquetese ejecuta cuando se activa eldesencadenante.

atributo fiableAtributo en el que establecer la confianza.Una relación fiable se estable en base auno o varios atributos fiables.

conexión fiableConexión de base de datos cuyosatributos coinciden con los atributos deun contexto fiable exclusivo definido en elservidor de bases de datos de DB2.

reutilización de conexión fiableCapacidad de conmutar el ID de usuarioactual en una conexión fiable a un ID deusuario distinto.

contexto fiableObjeto de seguridad de base de datos que

Glosario 401

||||||||

||||||||

|||

||||

|||||

||||

||

Page 392: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

permite el establecimiento de una relaciónfiable entre un sistema de gestión debases de datos de DB2 y una entidadexterna.

rol por omisión de contexto fiableRol asociado con un contexto fiable. Losprivilegios otorgados al rol por omisiónde contexto fiable se pueden adquirir sólocuando se establece o reutiliza unaconexión fiable basada en el contextofiable.

usuario de contexto fiableID de usuario al que está permitidoconmutar el ID de usuario actual en unaconexión fiable.

rol específico de usuario de contexto fiableRol asociado con un usuario específico decontexto fiable. Altera temporalmente elrol por omisión de contexto fiable si el IDde usuario actual en la conexión fiablecoincide con el ID del usuario de contextofiable específico.

relación fiableRelación privilegiada entre dos entidadestales como un servidor middleware y unservidor de bases de datos. Esta relaciónpermite un conjunto exclusivo deinteracciones entre dos entidades quesería imposible de otra forma.

TSO Véase Time-Sharing Option.

Recurso de conexión de TSORecurso de DB2 que consta delprocesador de mandatos de DSN y deDB2I. Las aplicaciones no escritas para losentornos CICS o IMS pueden ejecutarsedesde el recurso de conexión de TSO.

marcador de parámetros tipificadoMarcador de parámetros que se especificajunto con su tipo de datos de destino. Suformato general es:CAST(? AS tipo-datos)

índices de tipo 2Índices que se han creado en un releasede DB2 posterior a la Versión 7 o que seespecifican como índices de tipo 2 en laVersión 4 o posterior.

UCS-2 Juego de caracteres universal, codificadoen 2 octetos, lo que significa que cadacarácter está representado por 16 bits.

UDF Véase función definida por el usuario.

UDT Tipo de datos definido por el usuario. EnDB2 para z/OS, se utiliza el término tipodiferenciado en lugar de tipo de datosdefinido por el usuario. Véase tipodiferenciado.

lectura no confirmada (UR)Nivel de aislamiento que permite que unaaplicación lea datos sin confirmar. Véasetambién estabilidad del cursor, estabilidadde lectura y lectura repetible.

vista subyacenteVista en la que está definida otra vista demodo directo o indirecto.

deshacerEstado de una unidad de recuperaciónque indica que los cambios que la unidadde recuperación ha efectuado en recursosde DB2 recuperables deben retrotraerse.

UnicodeEstándar análogo al estándar ISO-10646.Existen varias implementaciones delestándar Unicode y todas puedenrepresentar un porcentaje elevado de loscaracteres pertenecientes a muchosalfabetos utilizados en el mundo.

unión Operación de SQL que implica eloperador de conjunto UNION, quecombina los resultados de dos sentenciasSELECT. Las uniones suelen utilizarsepara fusionar listas de valoresprocedentes de dos tablas.

restricción de exclusividadNorma de SQL por la que dos valores deuna clave primaria o clave de un índicede exclusividad no pueden ser iguales.

índice de exclusividadÍndice que asegura que no se almacenenvalores de clave iguales en una tabla.

unidad de recuperación (UOR)Secuencia recuperable de operacionesdentro de gestor de recursos individual,tal como una instancia de DB2.Compárese con unidad de trabajo.

unidad de trabajo (UOW)Secuencia recuperable de operacionesdentro de un proceso de aplicación. Encualquier momento, un proceso deaplicación es una unidad de trabajoindividual, pero la vida de un proceso deaplicación puede abarcar muchasunidades de trabajo como resultado de

402 Introducción a DB2 para z/OS

||||

|||||||

||||

|||||||

|||||||

||||||

Page 393: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

operaciones de confirmación oretrotracción. En una operación deactualización múltiple, una unidad detrabajo individual puede incluir variasunidades de recuperación. Compárese conunidad de recuperación.

espacio de tablas universalEspacio de tablas que está segmentado yparticionado. Compárese con espacio detablas particionado, espacio de tablassegmentado, espacio de tablas decrecimiento por partición y espacio detablas particionado por rangos.

desbloquearActo de liberar un objeto o recurso delsistema que estaba bloqueadoanteriormente y devolverlo a la condiciónde disponibilidad general dentro de DB2.

marcador de parámetros sin tipoMarcador de parámetros que se especificasin su tipo de datos de destino. Serepresenta mediante un signo final deinterrogación (?).

actualizableCapacidad de un cursor para realizaractualizaciones y supresionesposicionadas. La naturaleza actualizablede un cursor se puede modificar mediantela sentencia SELECT y la opción desensibilidad de cursor que se especifica enla sentencia DECLARE CURSOR.

hueco por actualizaciónUbicación en la que se encuentra uncursor cuando se lee de nuevo una fila deuna tabla resultante y los nuevos valoresya no cumplen la condición de búsqueda.Véase también hueco por supresión.

desencadenante de actualizaciónDesencadenante que se define con laoperación activadora update de SQL.

UR Véase lectura no confirmada.

tipo de datos definido por el usuario (UDT)Véase tipo diferenciado.

función definida por el usuario (UDF)Función que se define para DB2utilizando la sentencia CREATEFUNCTION y a la que puede hacersereferencia posteriormente en sentencias deSQL. Una función definida por el usuariopuede ser una función externa, una

función derivada o una función de SQL.Compárese con función incorporada.

vista de usuarioEn la creación de modelos lógicos dedatos, modelo o representación deinformación crítica que es necesaria parauna empresa.

UTF-16(Unicode Transformation Format).Formato de codificación de 16 bits queestá diseñado para codificar más de unmillón de caracteres y es unsuperconjunto de UCS-2. El valor deCCSID para los datos en formato UTF-16es 1200. DB2 para z/OS da soporte aUTF-16 en campos de datos gráficos.

UTF-8 (Unicode Transformation Format).Formato de codificación de 8 bits que estápensado para su fácil utilización con lossistemas actuales basados en ASCII. Elvalor de CCSID para los datos en formatoUTF-8 es 1208. DB2 para z/OS da soportea UTF-8 en campos de datos mixtos.

valor Unidad de datos más pequeña que semanipula en SQL.

variableElemento de datos que especifica un valorque puede cambiarse. Un elemento dedatos elementales de COBOL constituyeun ejemplo de una variable de sistemaprincipal. Compárese con constante.

función variableVéase función no determinista.

serie de longitud variableSerie de caracteres, gráfica o binaria cuyalongitud varía dentro de límites definidos.Compárese con serie de caracteres delongitud fija.

versiónMiembro de un conjunto de programas,módulos de petición de base de datos(DBRM), paquetes u objetos grandes(LOB) similares.v Una versión de un programa es el

código fuente producido al precompilarel programa. La versión del programase identifica por medio del nombre delprograma y de una indicación dehoraria (símbolo de coherencia).

v Una versión de una rutina de lenguajede procedimiento de SQL se produce

Glosario 403

|||||||

||||

||||

||||||

||

Page 394: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

emitiendo la sentencia CREATE oALTER PROCEDURE para unprocedimiento de SQL nativo.

v Una versión de DBRM es el DBRMque se produce al precompilar unprograma. La versión de DBRM seidentifica por medio del mismo nombrede programa e indicación de la horaque una versión de programacorrespondiente.

v Una versión de un paquete deaplicación es el resultado de vincularun DBRM en un sistema de base dedatos determinado. La versión depaquete de aplicación se identifica pormedio del mismo nombre de programay símbolo de coherencia que el DBRM.

v Una versión de un LOB es una copiade un valor de LOB en un momento enel tiempo. El número de versión de unLOB se almacena en la entrada deíndice auxiliar para el LOB.

v Una versión de un registro es unacopia del registro en un momento en eltiempo.

vista Tabla lógica que consta de datosgenerados por una consulta. Una vista sepuede basar en una o varias tablas base ovistas subyacentes y los datos de unavista se determinan mediante unasentencia SELECT que se ejecuta en tablasbase o vistas subyacentes.

Virtual Storage Access Method (VSAM)Método de acceso para proceso directo osecuencial de registros de longitud fija yde longitud variable en dispositivos dedisco.

Virtual Telecommunications Access Method(VTAM)

Programa bajo licencia de IBM quecontrola la comunicación y el flujo dedatos en una red SNA (en z/OS).

tabla volátilTabla para la que las operaciones de SQLeligen el acceso de índice siempre que esposible.

VSAMVéase Método de acceso dealmacenamiento virtual.

VTAMVéase Virtual Telecommunications AccessMethod.

arranque en calienteProceso de reinicio normal de DB2, quecomprende la lectura y el proceso deregistros de anotaciones para que losdatos bajo el control de DB2 seancoherentes. Compárese con arranque enfrío.

entorno de aplicación de WLMAtributo de Workload Manager paraz/OS que está asociado con uno o variosprocedimientos almacenados. El entornode aplicación de WLM determina elespacio de direcciones en el que se ejecutaun determinado procedimientoalmacenado de DB2.

enclave de WLMConstrucción que puede abarcar variasunidades susceptibles de envío (tareas ybloqueos de petición de servicio) envarios espacios de direcciones,permitiendo que se informe sobre lasmismas y sean gestionadas por WLMcomo parte de una única petición detrabajo.

grabación para el operador (WTO)Servicio opcional codificado por elusuario que permite la grabación de unmensaje en la consola del sistemainformando al operador acerca de erroresy condiciones anormales del sistema quepueden precisar correcciones (en z/OS).

WTO Véase write to operator.

WTORMensaje Write to Operator (WTO) concontestación.

XCF Véase recurso de acoplamiento entresistemas.

XES Véase servicios ampliados entre sistemas.

XML Véase Extensible Markup Language.

atributo de XMLPar nombre-valor contenido en unelemento de XML con identificadores quemodifica ciertas características delelemento.

Columna XMLColumna de una tabla que almacena XMLy se define utilizando el XML de tipo dedatos. Los valores de XML que estánalmacenados en columnas XML sonrepresentaciones internas de documentosXML correctamente formados.

404 Introducción a DB2 para z/OS

|||

|||||||

|||||||

|||||

|||

|||||||

||||

|||||||||

|||||||

Page 395: INTRODUCION DB2_VERSION9_Z_ESPAÑOL1

Tipo de datos XMLTipo de datos con valores XML.

elemento de XMLEstructura lógica de un documento enXML que está delimitada por unidentificador de inicio y un identificadorde fin. Cualquier elemento entre el códigode inicio y el código de finalización es elcontenido del elemento.

índice XMLÍndice en una columna XML queproporciona acceso eficaz a nodos en undocumento XML proporcionado claves deíndice basadas en patrones XML.

Bloqueo XMLBloque a nivel de columna para datosXML. La operación de bloqueos XML essimilar al funcionamiento de bloqueos deLOB.

Nodo de XMLLa unidad más pequeña de estructuracompleta válida de un documento. Porejemplo, un nodo puede representar unelemento, un atributo una serie de texto.

índice de ID de nodo XMLÍndice creado implícitamente, en una tablade XML que proporciona acceso eficaz adocumentos XML y navegación entrevarias filas de datos XML en el mismodocumento.

Patrón XMLLista de nombres de elemento, separadospor barras inclinadas, un nombre deatributo opcional (al final) o pruebas declase, que describen una vía de acceso enun documento XML en una columnaXML. El patrón es una forma restrictivade expresiones de vía de acceso yseleccionada nodos que coinciden con lasespecificaciones. Los patrones XML seespecifican para crear índices en columnasXML en una base de datos.

Función de publicación de XMLFunción que devuelve un valor XML delos valores de SQL. Una función depublicación de XML también se denominaconstructor de XML.

Esquema XMLEn XML, mecanismo que describe yrestringe el contenido de los archivosXML indicando qué elementos estánpermitidos y en qué combinaciones. Los

esquemas de XML son una alternativa alas definiciones de tipo de documentos(las DTD) y se pueden utilizar paraampliar la funcionalidad en las áreas deespecificación de datos, herencia ypresentación.

repositorio de esquema XML (XSR)Repositorio que permite que el sistema debase de datos de DB2 almacene esquemasde XML. Cuando están registrados con elXSR, estos objetos tienen un identificadorexclusivo y se puede utilizar para validardocumentos de instancia de XML.

Función de serialización de XMLFunción que devuelve una serie de XMLserializada de un valor XML.

Tabla de XMLTabla auxiliar que se crea implícitamentecuando una columna XML se añade a unatabla base. Esta tabla almacena los datosXML y la columna en la tabla base apuntaa la misma.

Espacio de tablas XMLEspacio de tablas que se creaimplícitamente cuando una columna XMLse añade a una tabla base. El espacio detablas almacena la tabla XML. Si la tablabase está particionada, existe un espaciode tablas particionadas para cadacolumna XML de datos.

X/OpenOrganización de sistemas abiertos,internacionales e independientes, que estásoportada por la mayoría de los mayoresproveedores de sistemas de información,organizaciones de usuario y compañías desoftware. El objetivo de X/Open esaumentar la portabilidad de lasaplicaciones combinando estándaresexistentes y emergentes.

XRF Véase Recurso de recuperación ampliado.

XSR Véase repositorio de esquema XML

zIIP Véase Procesador integrado IBM Systemz9.

z/OS Sistema operativo para la línea deproductos System z que da soporte alalmacenamiento real y virtual de 64 bits.

Entorno de proceso distribuido z/OS (z/OS DCE)Conjunto de tecnologías proporcionadaspor Open Software Foundation paraimplementar el proceso distribuido.

Glosario 405

||

|||||

|||||

||||||

||||||||||||

||||

|||||

||||||

|||||||

|||

||||||

|

||

|||


Top Related