Escolar Documentos
Profissional Documentos
Cultura Documentos
1 para z/OS
SC11-3682-02
Contenido
Acerca de esta información . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
A quién va dirigido este manual . . . . . . . . . . . . . . . . . .
. ix . . . . . . . . .
Conjunto de programas de utilidad de DB2 . . . . . . . . . . . . . . .
. ix . . . . . . . . .
Terminología y referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
Características de accesibilidad para DB2 Version 9.1 for z/OS . . . . . . . . . . . . . . . . . . x
Cómo enviar comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Contenido v
Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Valores nulos y por omisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Utilización de restricciones de comprobación para imponer la validez de valores de columnas . . . . . . 196
Diseño de una fila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Longitudes de registro y páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Diseños que desperdician espacio . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Creación de espacios de tablas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Tipos de espacios de tablas de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Cómo DB2 crea implícitamente un espacio de tablas . . . . . . . . . . . . . . . . . . . . 208
| CómoDB2 crea implícitamente un espacio de tabla XML . . . . . . . . . . . . . . . . . . . 208
Asignación de espacios de tablas a almacenamiento físico . . . . . . . . . . . . . . . . . . 212
Creación de índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Tipos de índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Cómo pueden ayudar los índices a evitar clasificaciones . . . . . . . . . . . . . . . . . . . 216
Claves de índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Atributos de índices generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
| Atributos de índices XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Atributos de índices de tablas particionadas . . . . . . . . . . . . . . . . . . . . . . . 225
Creación de vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Vista de una única tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Vista que combina información de varias tablas . . . . . . . . . . . . . . . . . . . . . . 232
Inserciones y actualizaciones de datos mediante vistas. . . . . . . . . . . . . . . . . . . . 232
Creación de objetos grandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Creación de bases de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Creación de relaciones con restricciones de referencia . . . . . . . . . . . . . . . . . . . . . 236
Cómo DB2 impone restricciones de referencia . . . . . . . . . . . . . . . . . . . . . . 236
Construcción de una estructura de referencia . . . . . . . . . . . . . . . . . . . . . . . 239
Tablas de una estructura de referencia . . . . . . . . . . . . . . . . . . . . . . . . . 240
Creación de tablas de excepción . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Creación de desencadenantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Creación de funciones definidas por el usuario . . . . . . . . . . . . . . . . . . . . . . . 241
Avisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Información de interfaz de programación . . . . . . . . . . . . . . . . . . . . . . . . . 355
Interfaz de programación de uso general e información de ayuda asociada . . . . . . . . . . . . . 355
Marcas registradas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
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 Information
Management System (IMS). Quizás nunca ha trabajado con DBMS, pero desea
trabajar con este producto, que muchas empresas utilizan para datos de tareas
críticas y programas de aplicaciones. Independientemente de sus conocimientos, si
desea aprender sobre DB2 para z/OS, esta información puede resultarle útil.
Terminología y referencias
En esta información, se hace referencia a DB2 Versión 9.1 para z/OS como ″DB2
for z/OS.″ En los casos en que el contexto ofrece un significado claro, se hace
referencia a DB2 for z/OS como ″DB2.″ Cuando esta información se refiere a
tí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 Version
9.1 for z/OS SQL Reference.)
Cuando se hace referencia a un producto de DB2 distinto a DB2 for z/OS, en esta
información se utiliza el nombre completo del producto para evitar ambigüedades.
Puede acceder a las funciones de los paneles de ISPF de DB2 Version 9.1 for z/OS
utilizando un teclado o atajos de teclado.
Para obtener información sobre la navegación por los paneles de ISPF de DB2
Version 9.1 for z/OS utilizando TSO/E o ISPF, consulte el manual z/OS TSO/E
Primer, z/OS TSO/E User’s Guide y z/OS ISPF User’s Guide. Estas guías describen
cómo navegar por cada una de estas interfaces, incluyendo la utilización de atajos
de teclado o teclas de función (teclas PF). Esta guía incluye los valores por omisión
para las teclas PF y explica cómo modificar estas funciones.
Hay disponible documentación en línea para DB2 Version 9.1 for z/OS en el
Centro 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
http://www.ibm.com/support/docview.wss?&uid=swg27011656
También necesita comprender cómo funciona DB2 con una amplia variedad de
sistemas operativos.
Puede preguntarse: “¿Por qué las empresas grandes eligen DB2 for z/OS?” La
respuesta es “Porque estas empresas necesitan un servidor de bases de datos eficaz
que asegure una disponibilidad y escalabilidad superiores.”
Resulta fácil comprender por qué estas empresas necesitan que el sistema de bases
de datos que procesa estas transacciones sea continuamente disponible, escalable y
seguro. Estos sistemas empresariales deben estar disponibles para los clientes que
buscan 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 ejecuta
dicha transacción de repente falla, puede perder la oportunidad de realizar un
negocio en la bolsa en un momento crítico. El objetivo clave de una alta
disponibilidad 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 y
servicios nuevos, o las nuevas regulaciones del gobierno, pueden acelerar la
rapidez con qué crecen las necesidades de proceso de datos de las empresas. A
medida que se produce un crecimiento rápido, las empresas necesitan un modo
para ajustar sus empresas de forma satisfactoria.
| Las empresas necesitan un sistema de bases de datos grande diseñado para
| absorber fácilmente las adiciones actuales de nuevos tipos de información y
| procesos de aplicaciones sin perjudicar el rendimiento ni la disponibilidad. Este
| sistema de bases de datos nunca debe imponer una restricción en el crecimiento.
Caso de ejemplo 2: El banco ejecuta trabajos por lotes cada noche y la carga de
trabajo en línea se ejecuta cerca de 24 horas al día. ¿Cómo puede ejecutar el banco
cargas de trabajo variadas, mantenerlas equilibradas y evitar problemas en las
horas punta?
| DB2 es el único servidor de datos en System z10 para sacar el máximo partido a
| las posibilidades de WLM.
Caso de ejemplo 3: El banco crea un sitio web para proporcionar a sus clientes
servicios bancarios en línea 24 horas al día. En este caso DBMS no puede estar
nunca fuera de servicio a causa de actividades de mantenimiento. ¿Cómo puede el
banco aplicar mantenimiento a su DBMS si tiene que estar operativo 24 horas al
día?
El entorno Sysplex paralelo proporciona varias vías de acceso a los datos y crea
redundancia en el recurso de acoplamiento para evitar un único punto de
anomalía. Con la tecnología de Sysplex paralelo, el banco puede añadir
mantenimiento a un miembro a la vez mientras sus sistemas siguen ejecutándose y
permanecen actualizados en servicio. Esta tecnología también permite al banco
migrar a un nuevo release de software al aplicar el nuevo release a un miembro a
la vez. Con este diseño, el banco evita interrupciones.
Quizás ha oído hablar los términos depósito de datos y minería de datos. Puede
imaginar un depósito de datos como un sistema que proporciona información
empresarial crítica a una organización. Minería de datos es la acción de recopilar
información empresarial crítica del depósito de datos, correlacionarla y descubrir
asociaciones, patrones y tendencias. El sistema de depósito de datos depura los
datos para que sean exactos y actuales. El sistema de depósito de datos también
presenta los datos a los encargados de tomar decisiones para que puedan
interpretarlos y utilizarlos de forma efectiva y eficiente.
DDF también permite que las aplicaciones se ejecuten en un entorno remoto que
soporte DRDA. Estas aplicaciones pueden utilizar DDF para acceder a los datos de
servidores de DB2. Entre los ejemplos de peticionarios de aplicaciones se incluyen
IBM DB2 Connect y otros productos cliente compatibles con DRDA.
Conceptos relacionados
“Recurso de datos distribuidos” en la página 62
Capítulo 10, “DB2 y la web”, en la página 297
| IBM da mucha importancia a las relaciones con sus business partners, tales como
| SAP. Esta compañía, y otras similares, desarrollan y dan soporte a aplicaciones
| principales para sus clientes. Estas aplicaciones proporcionan funciones
| empresariales vitales como, por ejemplo, Gestión de relaciones con los clientes y
| Gestión de la cadena de suministro.
| Además de aprender sobre DB2 for z/OS, también deseará tener información sobre
| algunos de los productos que trabajan con DB2 para z/OS. Probablemente su
| empresa utiliza algunos de estos otros productos.
| Los servidores de datos DB2 incluyen soporte para los siguientes productos:
v DB2 for z/OS
v DB2 para i5/OS
v DB2 Database para Linux, UNIX y Windows
v DB2 para Linux en IBM System z10
Servidores empresariales
Los servidores empresariales son los sistemas que gestionan los datos
empresariales principales de una empresa y dan soporte a aplicaciones
empresariales clave.
Fuentes de datos
El acceso a datos heterogéneos es una ventaja muy útil para una organización que
tiene datos de diversas fuentes.
Los siguientes productos son especialmente útiles para personas que gestionan un
entorno DB2:
v Herramientas de DB2 e IMS
v Centro de control de DB2
| La mayoría de herramientas de base de datos que dan soporte a DB2 for z/OS
| proporcionan una interfaz gráfica de usuario (GUI) y además contienen una
| interfaz ISPF (Interactive System Productivity Facility) que le permite realizar la
| mayoría de tareas de DB2 de forma interactiva. Con las interfaces ISPF integradas,
| puede moverse perfectamente de una herramienta a otra.
| 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 Centro
| de control de DB2 puede gestionar servidores locales y remotos desde una única
| estación de trabajo. Desde el Centro de control, puede realizar operaciones en
| objetos de base de datos entre varios servidores de datos de DB2. También puede
| utilizar el Centro de control de DB2 para iniciar otras herramientas como, por
| ejemplo, el Centro de réplica.
Información relacionada
″Herramientas de DB2″ en ibm.com
″Herramientas de IMS″ en ibm.com
DB2 Connect
DB2 Connect mejora la información de la empresa independientemente del lugar
donde está la información. DB2 Connect proporciona a las aplicaciones un acceso
rá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 otras
aplicaciones que se ejecutan en sistemas operativos UNIX o Windows.
DB2 Connect ofrece varias ediciones que proporcionan conectividad con el sistema
principal y servidores de bases de datos de i5/OS. DB2 Connect Personal Edition
proporciona conectividad directa, mientras que DB2 Connect Enterprise Edition
proporciona conectividad indirecta mediante el servidor de DB2 Connect.
WebSphere Studio
WebSphere Studio forma parte de la gama de Foundation & Tools WebSphere.
WebSphere Studio en realidad es una serie de herramientas que incluyen desarrollo
para la web, la empresa y los dispositivos inalámbricos.
Los sistemas de bases de datos federadas de IBM ofrecen recursos de gran utilidad
para combinar información de varias fuentes de datos. Estos recursos le
proporcionan acceso de lectura y escritura a diversos datos de una amplia variedad
de fuentes y sistemas operativos como si los datos fueran un único recurso. Con
un sistema federado, puede:
v Conservar los datos donde residen en lugar de moverlos a un único almacén de
datos
v Utilizar una sola API para buscar, integrar y transformar datos como si
estuvieran en una única base de datos virtual
v 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 de
Oracle y un archivo codificado XML.
| WebSphere DataStage
| IBM WebSphere DataStage proporciona la posibilidad de realizar operaciones de
| extracción, transformación y carga (ETL) desde varios orígenes en varios destinos,
| incluyendo DB2 for z/OS.
WebSphere QualityStage
IBM WebSphere QualityStage proporciona una solución de calidad de datos que
puede utilizarse para estandarizar hechos de cliente, ubicación y producto.
Interfaces Java
Con el soporte de DB2 for z/OS para JDBC se pueden escribir aplicaciones de SQL
dinámico en Java; con el soporte de SQLJ se pueden escribir aplicaciones de SQL
estático en Java. Estas aplicaciones Java pueden acceder a datos locales de DB2 o a
datos relacionales remotos de cualquier servidor con soporte de DRDA.
Con DB2 for z/OS se puede utilizar un procedimiento almacenado que esté escrito
en Java. (La familia de DB2 Database da soporte a procedimientos almacenados
escritos en numerosos lenguajes adicionales.) Un procedimiento almacenado es un
programa de aplicación escrito por el usuario que el servidor almacena y ejecuta.
Una única sentencia CALL de SQL invoca a un procedimiento almacenado. El
procedimiento almacenado contiene sentencias de SQL que se ejecutan localmente
en el servidor. El resultado puede ser una reducción significativa de transmisiones
en la red.
ODBC
Servicios web
| IBM DB2 Database Add-Ins for Microsoft Visual Studio 2005 es un conjunto de
| herramientas de administración y desarrollo de aplicaciones altamente integradas
| diseñadas para DB2 Database. Los Add-Ins (accesorios) se integran en el entorno
| de Visual Studio .NET para que los programadores de aplicaciones pueden trabajar
| con facilidad dentro de su entorno de desarrollo integrado (IDE) para acceder a
| datos de DB2.
Estándares abiertos
Los estándares abiertos proporcionan una infraestructura para negocios bajo
demanda ampliamente aceptada entre la industria informática. En estándares
abiertos, los clientes y proveedores pueden escribir programas de aplicaciones que
se pueden ejecutar en diferentes sistemas de bases de datos con muy poca o
ninguna modificación. La portabilidad de aplicaciones simplifica el desarrollo de
aplicaciones y finalmente reduce los costes de desarrollo.
En una base de datos relacional, se puede observar que los datos existen en una o
más tablas. Cada tabla contiene un número específico de columnas y un número de
filas sin ordenar. Cada columna de una tabla está relacionada de algún modo con
las otras columnas. Pensar en los datos como una colección de tablas hace que sea
má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 base
de datos de DB2 implica algo más que una colección de tablas; una base de datos
de DB2 también implica otros objetos como, por ejemplo, vistas e índices, y
contenedores de datos más grandes como, por ejemplo, espacios de tablas.
Cuando un usuario escribe una sentencia de SQL, especifica qué desea hacer, no
cómo hacerlo. Para acceder a datos, sólo necesita nombrar las tablas y columnas
que contienen los datos. No es necesario que describa cómo llegar a los datos.
Ejemplo: Suponga que va a comprarse unos zapatos y desea saber qué estilos de
zapatos están disponibles en el número 8. La consulta de SQL que debe escribir es
similar a la pregunta que le haría a un vendedor, ″¿Qué estilos de zapatos están
disponibles en el número 8?″ Del mismo modo que el vendedor comprueba el
inventario de zapatos y regresa con una respuesta, DB2 recupera información de
una tabla (SHOES) y devuelve una tabla de resultados. La consulta sería:
SELECT STYLE
FROM SHOES
WHERE SIZE = 8;
Puede enviar una sentencia de SQL a DB2 de varias formas. Una forma es
interactivamente, entrando sentencias de SQL en un teclado. Otra forma es
mediante un programa de aplicación. El programa puede contener sentencias de
SQL incluidas estáticamente en la aplicación. Como alternativa, el programa puede
crear sus propias sentencias de SQL dinámicamente, por ejemplo, en respuesta a la
información que un usuario proporciona al rellenar un formulario. En esta
información puede leer sobre estos dos métodos.
Conceptos relacionados
Capítulo 5, “SQL: lenguaje de DB2”, en la página 87
Capítulo 6, “Programación de aplicaciones para DB2”, en la página 147
Referencia relacionada
″DB2 for z/OS SQL Reference″
Información relacionada
″DB2 Application Programming and SQL Guide″
Para gestionar eficazmente tipos de datos de SQL tradicionales y datos XML, DB2
utiliza dos mecanismos de almacenamiento diferentes. Sin embargo, el mecanismo
de almacenamiento subyacente que se utiliza para un tipo de datos determinado es
transparente para la aplicación. No es necesario que la aplicación especifique
explícitamente el mecanismo de almacenamiento que debe utilizarse o que gestione
el almacenamiento físico para objetos XML y no XML.
Almacenamiento de documentos XML
El tipo de datos de columna XML se proporciona para almacenar datos
Base de datos
Tabla T1 Tabla T2
Volumen 3
X1 X2 Volumen 2
Índice Índice
Volumen 1
Espacio Espacio
de tabla de índice
particionado
Tabla Índice de
Parte 1 part. Parte 1
Parte 2 Parte 2
Parte 3 Parte 3
Parte 4 Parte 4
Grupo de almacenamiento G2
Volumen
Volumen 3
2 Volumen
1
Las estructuras de DB2 desde las más inclusivas a las menos inclusivas son las
siguientes:
Bases de datos
Conjunto de estructuras de DB2 que incluyen una colección de tablas, sus
índices asociados y los espacios de tablas en los que residen.
Tablas de DB2
Las tablas son estructuras lógicas mantenidas por DB2. DB2 da soporte a diferentes
tipos de tablas.
Las tablas están formadas por columnas y filas. Las filas de una tabla relacional no
tienen un orden fijo. Sin embargo, el orden de las columnas siempre es el orden en
que se han especificado al definir la tabla.
De modo conceptual, puede imaginar un índice de las filas de una tabla de DB2
como un índice de las páginas de un libro. Cada índice se basa en los valores de
datos de una o más columnas de una tabla.
Tenga en cuenta que los índices tienen tanto ventajas como desventajas. Un mayor
número de índices puede mejorar simultáneamente el rendimiento del acceso de
una transacción determinada y necesitar proceso adicional para insertar, actualizar
y suprimir claves de índice. Después de crear un índice, DB2 mantiene el índice,
pero puede realizar el mantenimiento necesario como, por ejemplo, su
reorganización o recuperación, según convenga.
Conceptos relacionados
Claves de DB2
Una clave es una columna o una colección ordenada de columnas que se identifica
en la descripción de una tabla, un índice o una restricción de referencia. Las claves
son 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 aseguran
que cada registro de una tabla se identifique de forma exclusiva, ayudan a
establecer e imponer integridad de referencia y establecen relaciones entre tablas.
La misma columna puede formar parte de más de una clave.
Claves exclusivas
| Una restricción exclusiva es una regla en la que los valores de una clave únicamente
| son válidos si son exclusivos. Una clave restringida a tener valores exclusivos es
| una clave exclusiva. DB2 utiliza un índice exclusivo para imponer la restricción
| durante la ejecución del programa de utilidad LOAD y cada vez que se utilice una
| sentencia INSERT, UPDATE o MERGE para añadir o modificar datos. Cada clave
| exclusiva es una clave de un índice exclusivo. Puede definir una clave exclusiva
| utilizando la cláusula UNIQUE de la sentencia CREATE TABLE o ALTER TABLE.
| Una tabla puede tener cualquier número de claves exclusivas.
Claves primarias
Una tabla no puede tener más de una clave primaria. Las claves primarias son
opcionales y se pueden definir en sentencias CREATE TABLE o ALTER TABLE.
| El índice exclusivo de una clave primaria se denomina índice primario. Cuando una
| clave primaria se define en una sentencia CREATE TABLE o una sentencia ALTER
| TABLE, DB2 crea automáticamente el índice primario si se cumple una de las
| condiciones 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.
Claves padre
Una clave padre es una clave primaria o una clave exclusiva de la tabla padre de
una restricción de referencia. Los valores de una clave padre determinan los
valores 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ón
de referencia en una sentencia CREATE o ALTER TABLE. Una clave foránea hace
referencia a una clave padre específica o está relacionada con ella.
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 un
empleado es un director.
Vistas de DB2
Una vista es una forma alternativa para representar datos que existen en una o más
tablas. Una vista puede incluir todas o algunas de las columnas de una o más
tablas base.
Para definir una vista, utilice la sentencia CREATE VIEW y asigne un nombre (con
un máximo de 128 caracteres de longitud) a la vista. La especificación de la vista
en otras sentencias de SQL es en efecto como ejecutar una sentencia SELECT de
SQL. En cualquier momento, la vista está formada por las filas que resultan de la
sentencia SELECT que contiene. Puede pensar en una vista formada por columnas
y 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 omite
información confidencial sobre empleados y renombra algunas de las columnas.
Nota sobre la figura: La vista EMPINFO representa una tabla que incluye
columnas denominadas EMPLOYEE, FIRSTNAME, LASTNAME, TEAM y
JOBTITLE. Los datos de la vista proceden de las columnas EMPNO, FIRSTNME,
LASTNAME, DEPT y JOB de la tabla EMP.
En general, una vista hereda los atributos del objeto del cual deriva. Las columnas
que se añaden a las tablas después de definir la vista en dichas tablas no aparecen
en la vista.
| 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 espacios
| de tablas se dividen en unidades de igual tamaño, llamadas páginas, que se
| escriben en disco o se leen desde disco en una operación. Puede especificar
| tamaños de página (tamaños de 4 KB, 8 KB, 16 KB o 32 KB) para los datos; el
| tamaño de página por omisión es de 4 KB. Por regla general, debería tener como
| máximo entre 10 y 20 espacios de tabla en una base de datos de DB2. Si utiliza una
| base de datos de archivos de trabajo, debe crear como mínimo un espacio de tablas
| en la base de datos TEMP con páginas con un tamaño de 8 KB.
Como alternativa, puede dejar que DB2 cree implícitamente un espacio de tablas
en lugar del usuario emitiendo una sentencia CREATE TABLE que no especifique
Una única base de datos, por ejemplo, puede contener todos los datos asociados
con una aplicación o con un grupo de aplicaciones relacionadas. La recopilación de
estos datos en una base de datos le permite iniciar o detener el acceso a todos los
datos en una operación. También puede otorgar autorización de acceso a todos los
datos como una única unidad. Si suponemos que tiene autorización para acceder a
los 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 de
| tablas. La definición de una base de datos para cada tabla mejora el rendimiento,
| la disponibilidad y la manejabilidad.
| Cuando se migra a la versión actual, DB2 adopta la base de datos por omisión y el
| grupo 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.
En DB2 para z/OS, una base de datos es una colección lógica de espacios de tablas
y espacios de índices. Considere los factores siguientes cuando decida si va a
definir 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 que
nombre únicamente la base de datos. Por lo tanto, coloque en la misma base de
datos un conjunto de tablas que se utilicen juntas. (La misma base de datos
contiene todos los índices en dichas tablas.)
v Algunas operaciones bloquean una base de datos completa. Por ejemplo, algunas
fases 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 base
de datos a menudo no resulta conveniente.
Cuando un usuario ejecuta una sentencia CREATE, ALTER o DROP para una
tabla, ningún otro usuario puede acceder a la base de datos que contiene dicha
Catálogo de DB2
DB2 mantiene un conjunto de tablas que contienen información sobre los datos que
DB2 controla. Estas tablas se conocen colectivamente con el nombre de catálogo. Las
tablas de catálogo contienen información sobre objetos de DB2 como, por ejemplo
tablas, vistas e índices. Cuando se crea, modifica o descarta un objeto, DB2 inserta,
actualiza o suprime filas del catálogo que describen el objeto.
Para comprender el rol del catálogo, considere lo que sucede cuando se crea la
tabla EMP. DB2 registra los datos siguientes:
Información de tabla
Para 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 de
datos, DB2 inserta una fila en el catálogo.
| Las tablas del catálogo son como cualquier otra tabla de base de datos en cuanto a
| la recuperación. Si dispone de autorización para ello, puede utilizar sentencias de
| SQL para ver datos de las tablas de catálogo del mismo modo que se recuperan
| datos de cualquier tabla de la base de datos de DB2. DB2 comprueba que el
| catálogo contiene descripciones de objetos precisas. Si tiene autorización para
| acceder a las tablas o vistas específicas del catálogo, puede aplicar SELECT al
| catá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 CDB
consta de un conjunto de tablas que establecen conversaciones con sistemas de
gestió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 DB2
El directorio de DB2 contiene información que DB2 utiliza durante la operación
normal.
DB2 escribe cada registro del archivo de registro en un conjunto de datos de disco
denominado registro activo. Cuando el registro activo está lleno, DB2 copia el
contenido del registro activo en un conjunto de datos de disco o cinta magnética
denominado registro de archivado.
Cuando un programa de aplicación accede a una fila de una tabla, DB2 recupera la
página que contiene la fila y coloca la página en un almacenamiento intermedio. Si
los datos necesarios ya están en un almacenamiento intermedio, no es necesario
que el programa de aplicación espere a que se recuperen del disco, con lo cual el
tiempo y el coste de recuperación de la página se reducen significativamente.
Puede establecer un único límite para todos los usuarios, límites diferentes para
usuarios individuales o ambas cosas. Puede elegir aplicar estos límites antes de
ejecutar la sentencia (denominado control predictivo o mientras se ejecuta una
sentencia (a veces denominado control reactivo). Incluso puede utilizar ambas
modalidades de manejo. Estos límites se definen en una o más tablas de
especificación de límite de recursos (RLST).
| DB2 crea una base de datos de archivos de trabajo y varios espacios de tablas en él
| durante la instalación. Puede crear espacios de tablas de archivos de trabajo en
| cualquier momento. Puede descartar, volver a crear y modificar la base de datos de
| archivos de trabajo o los espacios de tablas de éste, o ambos, en cualquier
| momento.
| También puede utilizar la base de datos de archivos de trabajo para todas las
| tablas temporales.
| Integridad de referencia es el estado en que todos los valores de todas las claves
| foráneas son válidos. La integridad de referencia está basada en la integridad de
| entidad. La integridad de entidad necesita que cada entidad tenga una clave
| exclusiva. Por ejemplo, si cada fila de una tabla representa relaciones para una
| entidad exclusiva, la tabla debería tener una columna o un conjunto de columnas
| que 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 que
| la clave padre no contenga valores duplicados, debe definirse un índice exclusivo
| en la columna o columnas que forman la clave padre. La definición de la clave
| padre se denomina integridad de entidad.
Una restricción de referencia es la regla de que los valores no nulos de una clave
foránea sólo son válidos si también aparecen como valores de una clave padre. La
La relación entre algunas filas de las tablas DEPT y EMP, que se muestran en la
siguiente 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 de
la columna DEPT de la tabla EMP coincide con un valor de clave primaria de la
columna 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 la
tabla DEPT. Según esta relación de clave foránea, la tabla DEPT es la tabla padre
de la tabla EMP. Puede asignar un empleado a ningún departamento
(especificando un valor nulo), no puede asignar un empleado a un
departamento que no exista.
v La clave foránea de la columna MGRNO también establece una relación entre
padre y dependiente. Debido a que MGRNO depende de EMPNO, EMP es la
tabla 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 que
| incluye dos o más columnas se denomina clave compuesta. Una clave foránea
| también puede incluir una o más columnas. Cuando una clave foránea contiene
| varias 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 de
| la clave padre y los tipos de datos de las columnas correspondientes deben ser
| compatibles. (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 de
autorreferencia. Por ejemplo, la tabla DEPT es una tabla de autorreferencia debido a
que el valor del departamento administrativo (ADMRDEPT) debe ser un ID de
Una terminología similar se aplica a las filas de una relación padre-hijo. Una fila
de una tabla dependiente, denominada fila dependiente, hace referencia a una fila de
una tabla padre, denominada fila padre. Pero una fila de una tabla padre no
siempre 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 clave
foránea puede permitir valores nulos, que no hacen referencia a ninguna otra fila).
Para dar soporte a integridad de referencia, DB2 impone reglas cuando los
usuarios insertan, cargan, actualizan o suprimen datos.
Restricciones de comprobación
Una restricción de comprobación es una regla que especifica los valores permitidos en
una o más columnas de cada fila de una tabla base.
Desencadenantes
Un desencadenante define un conjunto de acciones que deben ejecutarse cuando se
produce una operación de inserción, actualización o supresión en una tabla
especificada.
Por ejemplo, suponga que necesita evitar que se realice una actualización en una
columna cuando un valor nuevo exceda de una cantidad determinada. En lugar de
impedir la actualización, puede utilizar un desencadenante. El desencadenante
puede sustituir a un valor válido e invocar un procedimiento que envíe una
advertencia a un administrador sobre la actualización no válida que se ha
intentado.
Para asegurar la coherencia de los datos, DB2 utiliza varias técnicas que incluyen
una operación de confirmación, una operación de retrotracción y bloqueos.
DB2 adquiere bloqueos para evitar que los cambios sin confirmar realizados por un
proceso de aplicaciones pueda percibirlo otro proceso de aplicaciones. DB2 libera
automáticamente todos los bloqueos que ha adquirido en nombre de un proceso de
aplicaciones cuando el proceso finaliza, pero un proceso de aplicaciones también
puede solicitar explícitamente que los bloqueos se liberen antes. Una operación de
confirmación libera los bloqueos que un proceso de aplicaciones ha adquirido y
confirma los cambios realizados en la base de datos por el mismo proceso.
DB2 también proporciona un modo para restituir los cambios sin confirmar que
realiza un proceso de aplicaciones. Puede ser necesaria una restitución en el caso
de una anomalía en la parte de un proceso de aplicaciones o en una situación de
punto muerto. Un punto muerto se produce cuando la contención por la utilización
de un recurso como, por ejemplo, una tabla, no se puede resolver. Sin embargo, un
proceso de aplicaciones puede solicitar explícitamente que se restituyan los
cambios que ha realizado en la base de datos. Esta operación se denomina
retrotracción. La interfaz que un programa de SQL utiliza para especificar
explícitamente estas operaciones de confirmación y de retrotracción depende del
entorno. Por ejemplo, en el entorno JDBC las aplicaciones utilizan métodos de
confirmació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
En general, los planes y paquetes se crean utilizando los mandatos BIND PLAN y
BIND PACKAGE de DB2.
Los paquetes para aplicaciones JDBC, SQLJ y ODBC tienen propósitos diferentes
sobre 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
Rutinas
Una rutina es un objeto de SQL ejecutable. Los dos tipos de rutinas son funciones y
procedimientos.
Funciones
Una función es una rutina que se puede invocar desde otras sentencias de SQL y
que devuelve un valor.
| Para definir funciones utilice la sentencia CREATE FUNCTION. Puede clasificar las
| funciones como funciones incorporadas, funciones definidas por el usuario o
| funciones de conversión generadas para tipos diferenciados. Las funciones también
| 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 una
| tabla creada mediante una sentencia CREATE TABLE. Las funciones de tabla se
| pueden calificar con un nombre de esquema.
Conceptos relacionados
“Creación de funciones definidas por el usuario” en la página 241
Referencia relacionada
″Funciones″ (Consulta de DB2 SQL)
Procedimientos
| Un procedimiento, también denominado procedimiento almacenado, es una rutina
| que se puede llamar para realizar operaciones que pueden incluir sentencias de
| SQL.
| DB2 for z/OS da soporte a los dos tipos de procedimientos de SQL siguientes:
Procedimientos de SQL externos
Los procedimientos de SQL externos son procedimientos cuyo cuerpo está
escrito en SQL. DB2 da soporte a este tipo de procedimientos generando
un programa C asociado para cada procedimiento. Todos los
procedimientos de SQL creados antes de la Versión 9.1 son procedimientos
de SQL externos. A partir de la Versión 9.1, se puede crear un
procedimiento de SQL externo especificando FENCED o EXTERNAL en la
sentencia CREATE PROCEDURE.
Procedimientos de SQL nativos
Los procedimientos de SQL nativos son procedimientos cuyo cuerpo está
escrito en SQL. Para procedimientos de SQL nativos, DB2 no genera un
programa C asociado. A partir de la Versión 9.1, todos los procedimientos
de SQL creados sin las opciones FENCED o EXTERNAL en la sentencia
CREATE PROCEDURE son procedimientos de SQL nativos. Se pueden
crear procedimientos de SQL nativos en un paso. Las sentencias de SQL
nativos dan soporte a más funciones y generalmente proporcionan un
mejor rendimiento que las sentencias de SQL externas.
Datos distribuidos
Los datos distribuidos son datos que residen en un DBMS que no es el sistema local.
Servidores remotos
Un servidor remoto puede ser físicamente remoto o puede formar parte del mismo
sistema operativo bajo el cual se ejecuta el DBMS local.
Conectividad
La conectividad en el entorno de cliente/servidor permite la comunicación entre
aplicaciones y sistemas de bases de datos en sistemas operativos diferentes.
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.
IRLM se proporciona con DB2 y cada subsistema DB2 debe tener su propia
instancia de IRLM. No se puede compartir un IRLM entre subsistemas DB2 o entre
subsistemas DB2 e IMS. (IRLM también se proporciona con IMS.) Si ejecuta un
grupo de compartimiento de datos de DB2, un grupo de IRLM corresponde a
dicho grupo de compartimiento de datos.
IRLM trabaja con DB2 para serializar el acceso a los datos. DB2 solicita bloqueos
desde IRLM para asegurar la integridad de los datos cuando aplicaciones,
programas de utilidad y mandatos intentan acceder a los mismos datos.
IRLM requiere control y supervisión. Las interfaces externas con IRLM incluyen:
Instalación
Instale IRLM cuando instale DB2. Considere que los bloqueos ocupan
almacenamiento y un almacenamiento adecuado para IRLM es decisivo
para el rendimiento del sistema.
Otro elemento importante para el rendimiento es hacer que el espacio de
direcciones de IRLM tenga prioridad sobre todos los espacios de
direcciones de DB2.
Mandatos
Algunos mandatos de z/OS específicos de IRLM le permiten modificar
parámetros, visualizar información sobre el estado de IRLM y la utilización
de su almacenamiento, además de iniciar y detener IRLM.
Rastreo
El recurso de rastreo de DB2 le permite realizar un rastreo de las
interacciones de bloqueo.
Puede utilizar opciones IRLMPROC y mandatos de rastreo de z/OS para
controlar los rastreos de diagnóstico para IRLM. Normalmente estos
rastreos se utilizan bajo la dirección del Servicio de soporte de software de
IBM.
Conceptos relacionados
“Rendimiento mejorado mediante la utilización de bloqueos” en la página 256
DB2 y DFSMS
SMS (Storage Management Subsystem) DFSMSdfp se puede utilizar para gestionar
conjuntos de datos de disco de DB2.
La figura siguiente muestra los recursos de conexión de z/OS con interfaces con
DB2.
Los recursos de conexión funcionan en los distintos entornos tal como se describe a
continuación:
v Los productos WebSphere que están integrados con DB2 incluyen WebSphere
Application Server, WebSphere Studio y Transaction Servers & Tools. En el
entorno WebSphere, puede utilizar el recurso de conexión RRS.
v CICS es un servidor de aplicaciones que proporciona gestión de transacciones en
línea para aplicaciones. En el entorno CICS, puede utilizar el recurso de
conexión CICS para acceder a DB2.
v IMS es un sistema informático de bases de datos. IMS incluye el gestor de bases
de datos jerárquico de IMS, el gestor de transacciones de IMS y productos
middleware de base de datos que proporcionan acceso a bases de datos y
transacciones de IMS. En el entorno IMS, puede utilizar el recurso de conexión
IMS para acceder a DB2.
v TSO proporciona la posibilidad de compartimiento de tiempo interactivo desde
terminales remotos. En los entornos TSO y de proceso por lotes, puede utilizar
los 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 el
| componente Workload Manager de z/OS. En un entorno de procedimientos
| almacenados, puede utilizar el recurso de conexión RRS.
Ejemplos::
EXEC CICS WAIT EXEC CICS ABEND
Tanto si accede a DB2 en primer plano o por lotes, la conexión mediante el recurso
de TSO y el procesador de mandatos de DSN hace que el acceso sea más fácil.
Las aplicaciones que utilizan CAF pueden controlar explícitamente el estado de sus
conexiones en DB2 utilizando funciones de conexión que CAF proporciona.
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 y
servidores remotos. Un servidor de DB2 puede reenviar peticiones en nombre de
clientes remotos a otros servidores remotos independientemente de si los datos
solicitados están en el servidor de DB2.
DDF también permite que las aplicaciones se ejecuten en un entorno remoto que
soporte DRDA. Estas aplicaciones pueden utilizar DDF para acceder a los datos de
servidores de DB2. Entre los ejemplos de peticionarios de aplicaciones se incluyen
IBM DB2 Connect y otros productos cliente compatibles con DRDA.
Los subsistemas DB2 que comparten datos deben pertenecer a un DB2 grupo de
compartimiento de datos. Un grupo de compartimiento de datos es una colección de
uno o más subsistemas DB2 que acceden a datos compartidos de DB2. Cada
subsistema DB2 que pertenece a un grupo de compartimiento de datos
determinado es un miembro de este grupo. Todos los miembros de un grupo
utilizan el mismo catálogo compartido de DB2. La figura siguiente muestra un
ejemplo de un grupo de compartimiento de datos con tres miembros.
Puede configurar su entorno de manera flexible. Por ejemplo, puede adaptar cada
imagen de z/OS para que cumpla los requisitos para el usuario establecido en esa
imagen. Para un proceso que tiene lugar durante periodos de carga de trabajo en
horas punta, puede activar un DB2 latente para ayudar a procesar el trabajo.
Conceptos relacionados
Para diseñar una base de datos se realizan dos tareas generales. La primera tarea
es la creación de modelos de datos lógicos y la segunda tarea es la creación de
modelos de datos físicos. En la creación de modelos de datos lógicos, se diseña un
modelo de datos sin prestar atención a las funciones y posibilidades específicas del
DBMS que almacenará los datos. En realidad, incluso podría crear un modelo de
datos lógicos sin saber qué DBMS va a utilizar. A continuación, viene la tarea de
creación de modelos de datos físicos. Aquí ya se acerca más a una implementación
física. La finalidad básica de la etapa de diseño físico es optimizar el rendimiento a
la vez que se asegura la integridad de los datos.
Todos ellos son hechos empresariales que un modelo de datos lógico de una
empresa de fabricación debe incluir. Muchas personas dentro y fuera de la empresa
cuentan con la información basada en estos hechos. Muchos informes incluyen
datos sobre estos hechos.
Quizás se pregunte cómo se crean los modelos de datos. Los analistas de datos
pueden realizar la tarea de creación de modelos de varias formas. (En este proceso
se supone que un analista de datos realiza los pasos, pero algunas empresas
asignan esta tarea a otras personas de la organización.) Muchos analistas de datos
siguen estos pasos:
1. Crean vistas de usuario críticas.
Los analistas empiezan la creación de un modelo de datos examinando con
atención una única actividad o función empresarial. Desarrollan una vista de
usuario, que es el modelo o representación de información crítica necesaria para
la actividad empresarial. (En una etapa posterior, el analista combina cada vista
de usuario individual con todas las otras vistas de usuario para formar un
modelo de datos lógico consolidado.) Esta etapa inicial del proceso de creación
de modelos de datos es sumamente interactivo. Debido a que los analistas no
pueden comprender por completo todas las áreas de la empresa para la que
realizan el modelo, trabajan estrechamente con los usuarios reales. El hecho de
trabajar juntos permite a los analistas y usuarios definir las principales entidades
(objetos significativos de interés) y determinar las relaciones generales entre
estas entidades.
| 2. Añaden reglas empresariales a vistas de usuario.
A continuación, los analistas añaden elementos de información detallada clave
y las reglas empresariales más importantes. Las reglas empresariales clave
afectan a las operaciones de inserción, actualización y supresión realizadas en
los datos.
Ejemplo 1: Una regla empresarial requiere que cada entidad de cliente tenga
como mínimo un identificador exclusivo. Cualquier intento de insertar o
Ejemplo 3: Suponga que una regla empresarial necesita que una entidad de
cliente disponga de un número de teléfono o una dirección, o ambas cosas. Si
esta regla no se aplica a los mismos datos, los programadores deben desarrollar,
probar y mantener aplicaciones que verifiquen la existencia de uno de estos
atributos.
Los requisitos empresariales dirigidos a los datos mantienen una relación
directa con los datos, evitando de este modo un trabajo adicional a los
programadores.
5. Integran vistas de usuario.
En esta última etapa de la creación de modelos de datos, los analistas combinan
las distintas vistas de usuario que han creado para formar un modelo de datos
lógico consolidado. Si ya existen otros modelos de datos en la organización, los
analistas integran el nuevo modelo de datos en el existente. En esta etapa, los
analistas también se esfuerzan para hacer que el modelo de datos sea flexible
de modo que pueda soportar el entorno empresarial actual y los posibles
cambios futuros.
Ejemplo 4: Suponga que una empresa minorista trabaja en un único país y que
dicha empresa planea añadir una ampliación a otros países. Con el
conocimiento de estos planes, los analistas pueden crear el modelo para que sea
suficientemente flexible para soportar la expansión a otros países.
Para crear modelos de datos adecuados, los analistas siguen un método bien
planificado, que incluye:
v Trabajar interactivamente con los usuarios lo máximo posible.
Para llevar a cabo la tarea de creación de modelos de datos empiece definiendo las
entidades, los objetos significativos de interés. Las entidades son las cosas sobre las
que desea almacenar información. Por ejemplo, puede que desee definir una
entidad para los empleados denominada EMPLOYEE ya que necesita almacenar
información sobre todos los que trabajan para su organización. También puede
definir una entidad, denominada DEPARTMENT, para los departamentos.
A continuación, define las claves primarias para las entidades. Una clave primaria
es un identificador exclusivo para una entidad. En el caso de la entidad
EMPLOYEE, 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 clave
primaria. En este caso, podría elegir un ID o número de empleado exclusivo
(EMPLOYEE_NUMBER) como clave primaria. En el caso de la entidad
DEPARTMENT, 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 las
relaciones que existen entre las entidades. Las relaciones se basan en las claves
primarias. Si tiene una entidad para EMPLOYEE y otra entidad para
DEPARTMENT, la relación que existe es que se asignan empleados a
departamentos.
Después de definir las entidades, sus claves primarias y sus relaciones, puede
definir atributos adicionales para las entidades. En el caso de la entidad
EMPLOYEE, puede definir los siguientes atributos adicionales:
v Fecha de nacimiento
v Fecha de contratación
v Dirección particular
v Número de teléfono de la oficina
v Sexo
v Currículum
Puede leer más sobre la definición de atributos más adelante en esta información.
En la figura siguiente, puede ver que existe una relación de uno con varios entre
las dos entidades: empleado y departamento. Esta figura refuerza las reglas
empresariales en las que un departamento puede tener varios empleados, pero
cada empleado individual sólo puede trabajar para un departamento.
Si observa las tablas de ejemplo de esta información, encontrará las respuestas a las
siguientes 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 de
proyecto OP2011 y OP2012. Los empleados que trabajan en el número de proyecto
OP2012 son Ramlal Mehta y Wing Lee.
Referencia relacionada
“Tablas de ejemplo de DB2” en la página 124
Los diseñadores de bases de datos y los analistas de datos pueden ser más eficaces
cuando tienen una buena comprensión de la empresa. Si comprenden los datos, las
aplicaciones y las reglas empresariales, pueden tener éxito al producir un diseño de
base de datos acertado.
Cuando una organización no tiene unas direcciones bien definidas para los
nombres de atributos, los administradores de bases de datos intentan determinar
cómo los diseñadores de bases de datos utilizan atributos denominados
históricamente. Se producen problemas cuando varias personas inventan sus
propios esquemas de denominación sin consultarse entre ellos.
Ejemplos: Puede utilizar los siguientes tipos de datos para los atributos de la
entidad EMPLOYEE:
v EMPLOYEE_NUMBER: CHAR(6)
v EMPLOYEE_LAST_NAME: VARCHAR(15)
v EMPLOYEE_HIRE_DATE: DATE
v 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 cambiar
definiciones 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 estas
definiciones o puede que realice una selección diferente por motivos de
rendimiento.
Por ejemplo, es posible que necesite representar cantidades monetarias, pero DB2 y
muchos lenguajes principales no tienen un tipo de datos MONEY. En Estados
Unidos, una selección natural del tipo de datos SQL en esta selección es
DECMAL(10,2) para representar dólares. Pero también es posible que considere el
tipo de datos INTEGER para obtener un rendimiento rápido y eficaz.
Conceptos relacionados
“Nombres de columna” en la página 184
Por ejemplo, puede que no desee permitir datos numéricos en un atributo para un
nombre de persona. Los tipos de datos que elige limitan los valores que se aplican
a un atributo determinado, pero también puede utilizar otros mecanismos. Estos
otros mecanismos son dominios, valores nulos y valores por omisión.
Dominio
Un dominio describe las condiciones que un valor de atributo debe cumplir para ser
un 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 reglas
empresariales para asegurar que los datos tengan sentido.
Ejemplos:
Valores nulos
Al diseñar atributos para entidades, a veces puede encontrarse con que un atributo
no tiene un valor válido para cada instancia de la entidad. Por ejemplo, puede que
desee un atributo para un nombre medio de persona, pero no puede exigir un
valor porque algunas personas no tienen un nombre medio. En estos casos, puede
definir el atributo de modo que pueda contener valores nulos.
Del mismo modo que debería permitirse que algunos atributos contengan valores
nulos, otros atributos no deberían contener valores nulos.
Ejemplo: Para la entidad EMPLOYEE, puede que no desee permitir que el atributo
EMPLOYEE_LAST_NAME contenga un valor nulo.
Las reglas para la forma normal son acumulativas. Es decir, para que una entidad
cumpla las reglas de la segunda forma normal, también debe cumplir las reglas de
la primera forma normal. Una entidad que cumple las reglas de la cuarta forma
normal también cumple las reglas de la primera, segunda y tercera forma normal.
Conceptos relacionados
“Desnormalización para mejorar el rendimiento” en la página 83
Conceptos relacionados
“Claves de DB2” en la página 29
En lugar de ello, puede evitar esta violación creando dos entidades que
representen a ambas relaciones, como muestra la figura siguiente.
Sin embargo, si los hechos son interdependientes (es decir, el empleado aplica
determinados idiomas únicamente a determinadas habilidades) no debería dividir
la entidad.
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ísicas
v Qué atributos utilizar para las columnas de las tablas físicas
v Qué columnas de las tablas deben definirse como claves
v Qué índices deben definirse en las tablas
v Qué vistas deben definirse en las tablas
v Cómo desnormalizar las tablas
v 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 elegido
| durante el diseño lógico. Por ejemplo, puede abreviar el nombre de columna que
| identifica a los empleados, EMPLOYEE_NUMBER, como EMPNO. En DB2 para
| z/OS, debe abreviar los nombres de columna y los nombres de tabla para
| ajustarlos a la restricción física de un máximo de 30 bytes para nombres de
| columna y un máximo de 128 bytes para nombres de tabla.
DB2 le permite cambiar muchos de los atributos clave del diseño mediante
sentencias ALTER SQL. Por ejemplo, suponga que diseña una tabla particionada de
modo que almacena datos para 36 meses. Más adelante descubre que necesita
ampliar el diseño a datos para 84 meses. Puede añadir o rotar particiones para los
36 meses actuales a fin de acomodar el nuevo diseño.
Durante el diseño físico, los analistas transforman las entidades en tablas y los
atributos en columnas. Considere de nuevo el ejemplo del apartado “Segunda
forma normal” en la página 76. La columna de dirección de almacén aparece
primero como parte de una tabla que contiene información sobre componentes y
almacenes. Para normalizar adicionalmente el diseño de la tabla, los analistas
eliminan la columna de dirección de almacén de la tabla. Los analistas también
definen la columna como parte de una tabla que contiene información únicamente
sobre almacenes.
Ejemplo 1: Considere el diseño en que ambas tablas tienen una columna que
contiene las direcciones de almacenes. Si este diseño hace que no sean necesarias
operaciones de unión, podría ser que la redundancia valga la pena. Las direcciones
de almacenes no cambian a menudo y si cambia alguna puede utilizar SQL para
actualizar todas las instancias con bastante facilidad.
Cuando crea el diseño físico, el usuario y sus colegas necesitan decidir si deben
desnormalizarse los datos. Específicamente, necesita decidir si deben combinarse
tablas o partes de tablas a las que accedan con frecuencia uniones que tienen
requisitos de alto rendimiento. Se trata de una decisión compleja sobre la cual esta
información no puede proporcionar un consejo específico. Para tomar esta decisión
necesita evaluar los requisitos de rendimiento, los diferentes métodos de acceder a
los datos y los costes de desnormalización de los datos. Debe tener en cuenta el
coste y el resultado; ¿es la duplicación, en varias tablas, de columnas solicitadas
con 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 datos
y las transacciones empresariales que acceden a los datos. Consulte con los
desarrolladores de aplicaciones antes de desnormalizar tablas para mejorar el
rendimiento de las consultas de los usuarios.
Otra decisión que debe tomar está relacionada con la utilización de grupos
repetitivos.
Ejemplo 3: Suponga que una transacción que se utiliza mucho necesita el número
de cables que se venden al mes en un año específico. Los factores de rendimiento
podrían justificar cambiar una tabla de modo que viole la regla de la primera
forma normal almacenando grupos repetitivos. En este caso, el grupo repetitivo
sería: MONTH, WIRE. La tabla contendría una fila para el número de cables
vendidos para cada mes (cables de enero, cables de febrero, cables de marzo, etc.).
Algunos usuarios pueden encontrarse con que ninguna tabla individual contiene
todos los datos que necesitan; en lugar de ello, los datos pueden estar diseminados
entre varias tablas. Además, una tabla puede contener más datos de los que los
usuarios desean ver o más datos de los que se desea dar autorización a los
usuarios para que los vean. En estas situaciones se pueden crear vistas.
Ejemplo: Puede definir una vista para la tabla EMP para mostrar todas las
columnas excepto SALARY y COMM (comisión). Puede otorgar acceso a esta
vista a personas que no son directores debido a que probablemente no desea que
tengan acceso a este tipo de información.
v Para combinar datos de varias tablas
| Puede crear una vista que utilice uno de los operadores establecidos, UNION,
| INTERSECT o EXCEPT, para combinar datos de forma lógica a partir de tablas
| de resultados intermedios. Además, puede especificar DISTINCT (valor por
| omisión) o ALL con un operador establecido. Puede consultar una vista definida
| con un operador establecido como si fuera una tabla de resultados grande.
Ejemplo: Suponga que tres tablas contienen datos para un periodo de tiempo de
un mes. Puede crear una vista que sea UNION ALL de tres selecciones
completas, una para cada mes del primer trimestre del 2004. Al final del tercer
mes, puede ver datos trimestrales completos.
Puede crear una vista en cualquier momento una vez que las tablas subyacentes
existen. El propietario de un conjunto de tablas implícitamente tiene la
autorización para crear una vista para estas tablas. Un usuario con autorización
administrativa en el nivel del sistema o de base de datos puede crear una vista
para cualquier propietario de cualquier conjunto de tablas. Si disponen de la
autorización necesaria, otros usuarios también pueden crear vistas para una tabla
que no han creado.
Conceptos relacionados
“Mecanismos de autorización y seguridad para el acceso a datos” en la página
273
“Vista que combina información de varias tablas” en la página 232
Los datos que se recuperan mediante SQL siempre tienen formato de tabla. Como
las tablas de las que se recuperan datos, una tabla de resultados tiene filas y
columnas. Un programa capta estos datos de una o más filas a la vez.
Muchos de los ejemplos de esta información se basan en las tablas de ejemplo, que
representan información de ejemplo sobre una empresa de informática.
Conceptos relacionados
Capítulo 2, “Conceptos de DB2”, en la página 23
Esta sentencia SELECT recupera datos de cada columna (SELECT *) de cada fila
recuperada de la tabla DEPT. Debido a que el ejemplo no especifica ninguna
clá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 identifica
ningún director para este departamento. Todos los ejemplos de salida de esta
información muestran guiones para los valores nulos.
Puede seleccionar columnas que deriven de una constante, una expresión o una
función.
Esta consulta selecciona datos de todas las filas de la tabla EMP, calcula el
resultado de la expresión y devuelve las columnas en el orden en que indica la
sentencia SELECT. En la tabla de resultados, las columnas derivadas, como
(SALARY + COMM) en este ejemplo, no tienen nombres. Puede utilizar la cláusula
AS para proporcionar nombres a las columnas sin nombre.
Para ordenar las filas de la tabla de resultados según los valores de una columna
derivada, especifique un nombre para la columna utilizando la cláusula AS y
utilice este nombre en la cláusula ORDER BY.
Puede utilizar más de una palabra clave DISTINCT en una única consulta.
Con AS, puede denominar columnas en una cláusula SELECT. Esta palabra clave
es especialmente útil para una columna que deriva de una expresión o una
función.
Este resultado es diferente del resultado de una consulta similar que no utiliza una
cláusula AS.
Conceptos relacionados
“Modos de filtrar el número de filas devueltas” en la página 97
“Valores nulos” en la página 99
Capítulo 6, “Programación de aplicaciones para DB2”, en la página 147
“Modos de ordenar filas” en la página 104
Referencia relacionada
″Sentencia select″ (Consulta de DB2 SQL)
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 HAVING
de otra sentencia de SQL se denomina subconsulta.
| v La cláusula ORDER BY se puede incluir en una subselección, una selección
| completa o en una sentencia SELECT.
v Si utiliza una cláusula AS para definir un nombre en la cláusula SELECT más
exterior, 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 nombre
al que define fuera de la subselección.
Una función incorporada es una función que se proporciona con DB2 for z/OS.
Concatenación de series
Puede concatenar series utilizando el operador CONCAT o la función incorporada
CONCAT.
Esta sentencia SELECT concatena el apellido, una coma y el nombre de cada fila de
resultados. La tabla de resultados es similar a la siguiente:
================
HAAS,CHRISTINE
THOMPSON,MICHAEL
KWAN,SALLY
STERN,IRVING
.
.
.
Los tipos de datos numéricos son entero binario, separador flotante decimal y
decimal. Los tipos de datos de fecha y hora son fecha, hora e indicación de fecha y
hora.
Puede recuperar valores calculados, del mismo modo que se visualizan columnas
de valores, para filas seleccionadas.
| Puede utilizar DISTINCT con las funciones SUM, AVG, COUNT y COUNT_BIG.
| DISTINCT indica que la función seleccionada tan solo funciona en los valores
| exclusivos de una columna.
Las funciones de totales como COUNT ignoran los nulos en los valores en los que
operan. El ejemplo anterior cuenta los valores de ocupaciones diferentes que no
son nulos.
Nota: No utilice DISTINCT con las funciones MAX y MIN puesto que su
utilizació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)
Como una función de totales, una función escalar produce un único valor. A
diferencia del argumento de una función de totales, un argumento de una función
escalar es un único valor.
Ejemplo: YEAR: Esta consulta, que utiliza la función escalar YEAR, devuelve el
año en que se contrató a cada empleado de un departamento concreto:
SELECT YEAR(HIREDATE) AS HIREYEAR
FROM EMP
WHERE DEPT = 'A00';
La función escalar YEAR produce un único valor escalar para cada fila de EMP
que cumpla la condición de búsqueda. En este ejemplo, tres filas cumplen la
condición de búsqueda, por lo tanto YEAR tiene como resultado tres valores
escalares.
Funciones anidadas
Las funciones escalares y de totales se pueden anidar de varias formas.
Ejemplo: Suponga que desea conocer el número medio de años de empleo para
los empleados del departamento A00. Utilice esta consulta:
SELECT AVG(DECIMAL(YEAR(CURRENT DATE - HIREDATE)))
FROM EMP
WHERE DEPT = 'A00';
Expresiones CASE
Se puede utilizar una expresión CASE para ejecutar expresiones de SQL de
distintas 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 de
una tabla de resultados por unos valores más significativos.
La expresión CASE sustituye cada valor entero pequeño de EDL por una
descripción del grado de formación de cada representante de campo. Si el valor de
EDL 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 operaciones
no deseadas como, por ejemplo, una división entre cero, en valores de la columna.
| Tipo de
| comparació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 dos OR HIREDATE < ’2000-01-01’ OR SALARY < 40000
| predicados
| Ambos predicados AND HIREDATE < ’2000-01-01’ AND SALARY < 40000
| Entre dos valores BETWEEN SALARY BETWEEN 20000 AND 40000
| Igual a un valor de un IN (X, Y, Z) DEPTNO IN (’B01’, ’C01’, ’D11’)
| conjunto
| Compara un valor con otro DISTINCT valor 1 IS DISTINCT de valor 2
| valor
| Nota: Otro predicado, EXISTS, comprueba la existencia de determinadas filas. El resultado del predicado es
| verdadero si la tabla de resultados que devuelve la subselección contiene como mínimo una fila. De lo contrario, el
| resultado es falso.
| El predicado XMLEXISTS se puede utilizar para limitar el conjunto de filas que devuelve una consulta, basándose en
| los valores de columnas XML. El predicado XMLEXISTS especifica una expresión XPath. Si la expresión XPath
| devuelve una secuencia vacía, el valor del predicado XMLEXISTS es falso. De lo contrario, XMLEXISTS devuelve un
| valor verdadero. Se devuelven las filas que corresponden a un valor verdadero de XMLEXISTS.
|
Valores nulos
Un valor nulo indica la ausencia de un valor de columna en una fila. Un valor nulo
no es igual que cero o todo blancos. Puede recuperar o excluir filas que contengan
un valor nulo en una fila específica.
Ejemplo 1: Puede utilizar una cláusula WHERE para recuperar filas que contengan
un 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 valor
nulo. (WHERE nombre-columna = NULL no está permitido.)
Igualdades y desigualdades
Puede utilizar un signo de igual (=), varios símbolos de desigualdad y la palabra
clave NOT para especificar condiciones de búsqueda en la cláusula WHERE.
Puede utilizar un signo de igual (=) para seleccionar filas para las cuales una
columna 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 EMP
WHERE DEPT = 'A00';
Ejemplo: Para seleccionar los empleados que se contrataron antes del 1 de enero
de 2001, puede utilizar esta consulta:
SELECT HIREDATE, FIRSTNME, LASTNAME
FROM EMP
WHERE HIREDATE < '2001-01-01';
Ejemplo 1: Para seleccionar las filas en las que el número de departamento es A00
y el nivel de educación es 14, puede utilizar la consulta siguiente:
SELECT FIRSTNME, LASTNAME
FROM EMP
WHERE (DEPT, EDL) = ('A00', 14);
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 el
predicado es falso (pero no las filas para las que el predicado es desconocido). La
palabra clave NOT debe preceder al predicado.
La tabla siguiente compara cláusulas WHERE que utilizan una palabra clave NOT
con operadores de comparación y cláusulas WHERE que solamente utilizan
operadores 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’
También puede utilizar NOT LIKE para especificar una serie de caracteres que no
es similar al valor de columna de las filas que desea seleccionar.
Ejemplo: La consulta siguiente selecciona datos de cada fila para empleados con
las iniciales D B:
SELECT FIRSTNME, LASTNAME, DEPT
FROM EMP
WHERE FIRSTNME LIKE 'D%' AND LASTNAME LIKE 'B
Varias condiciones
Puede utilizar los operadores AND y OR para combinar predicados y buscar varias
condiciones.
Utilice el operador AND para especificar que una búsqueda debe cumplir ambas
condiciones. Utilice el operador OR para especificar que la búsqueda debe cumplir
como mínimo una de las condiciones.
Nota: :
SELECT EMPNO, HIREDATE, SALARY
FROM EMP
WHERE HIREDATE < '1998-01-01' OR SALARY < 35000;
Si utiliza más de dos condiciones con los operadores AND u OR, puede utilizar
paréntesis para especificar el orden en que desea que DB2 evalúe las condiciones
de búsqueda. Si mueve los paréntesis, el significado de la cláusula WHERE puede
cambiar significativamente.
Ejemplo: Esta consulta recupera la fila de cada empleado que cumple como
mí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 EMP
WHERE (HIREDATE < '1998-01-01' AND SALARY < 40000) OR (EDL < 18);
Ejemplo: Esta consulta recupera la fila de cada empleado que cumple ambas
condiciones 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.
Rangos de valores
Puede utilizar BETWEEN para seleccionar filas en las que una columna tiene un
valor dentro de dos límites.
También puede utilizar NOT BETWEEN para seleccionar filas en las que una
columna tiene un valor que está fuera de los dos límites.
Clave de clasificación
Puede especificar el orden de las filas seleccionadas utilizando claves de
clasificación que se identifican en la cláusula ORDER BY.
Puede listar las filas en orden ascendente o descendente. Los valores nulos se
incluyen los últimos en una clasificación ascendente y los primeros en una
clasificación descendente.
Orden ascendente
Puede recuperar resultados en orden ascendente especificando ASC en la cláusula
ORDER BY.
Orden descendente
Puede recuperar resultados en orden descendente especificando DESC en la
cláusula ORDER BY.
Ejemplo: Esta consulta lista, para cada departamento, el nivel de formación más
alto y más bajo dentro del departamento. La tabla de resultados es similar a la
siguiente:
SELECT DEPT, MIN(EDL), MAX(EDL)
FROM EMP
GROUP BY DEPT;
DEPT
==== == ==
A00 14 18
B01 18 18
C01 18 20
D11 16 18
E21 14 16
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 misma
ocupación en los departamentos D11 y E21:
SELECT DEPT, JOB, AVG(SALARY) AS AVG_SALARY
FROM EMP
WHERE DEPT IN ('D11', 'E21')
GROUP BY DEPT, JOB;
Ejemplo: Esta consulta busca el salario medio para todos los empleados que se
contrataron en el mismo año. Puede utilizar la siguiente subselección para agrupar
las filas por año de contratación:
SELECT AVG(SALARY), YEAR(HIREDATE)
FROM EMP
GROUP BY YEAR(HIREDATE);
Referencia relacionada
″Cláusula group by″ (Consulta de DB2 SQL)
Una unión es una operación de SQL que combina los resultados de dos sentencias
SELECT para formar una única tabla de resultados. Cuando DB2 encuentra la
palabra clave UNION, procesa cada sentencia SELECT para formar una tabla de
resultados temporales. A continuación, DB2 combina la tabla de resultados
temporales de cada sentencia. Si utiliza UNION para combinar dos columnas con
el mismo nombre, la columna correspondiente de la tabla de resultados hereda este
nombre.
Puede utilizar la palabra clave UNION para obtener diversas filas en la tabla de
resultados de una unión o puede utilizar UNION con la palabra clave opcional
ALL para obtener todas las filas, incluidos los duplicados.
Ejemplo 1: Liste los números de empleado de todos los empleados para los cuales
se 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%'
UNION
SELECT EMPNO FROM EMPPROJACT
WHERE PROJNO LIKE 'MA
Ejemplo 1: Sustituya la palabra clave UNION del ejemplo anterior por UNION
ALL:
Ahora, 000010 se incluye en la lista más de una vez debido a que este empleado
trabaja en un departamento que empieza con ’D’ y también trabaja en un proyecto
que empieza con ’MA’.
Referencia relacionada
″Selección completa″ (Consulta de DB2 SQL)
Utilice HAVING para especificar una condición de búsqueda que cada grupo
recuperado debe cumplir. La cláusula HAVING actúa como una cláusula WHERE
para grupos y puede contener el mismo tipo de condiciones de búsqueda que se
especifican en una cláusula WHERE. La condición de búsqueda de la cláusula
HAVING prueba las propiedades de cada grupo en lugar de las propiedades de
filas individuales del grupo.
| Una tabla unida especifica una tabla de resultados intermedios que es el resultado
| de una unión interna o una unión externa. La tabla se obtiene aplicando uno de los
| operadores de unión (INNER, FULL OUTER, LEFT OUTER o RIGHT OUTER) a
| sus operandos.
La figura siguiente muestra que cada fila de la tabla PARTS contiene datos de de
un único componente: el nombre de componente, el número de componente y el
proveedor del componente.
La figura siguiente muestra que cada fila de la tabla PRODUCTS contiene datos
para 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 y
PRODUCTS utilizando funciones de unión externa. La ilustración se basa en un
subconjunto de columnas de cada tabla.
Una unión interna consta de filas formadas a partir de las tablas PARTS y
PRODUCTS, basándose en la coincidencia de igualdad de valores de columna
entre la columna PROD# de la tabla PARTS y la columna PROD# de la tabla
PRODUCTS. La unión interna no contiene ninguna fila formada a partir de
columnas no coincidentes cuando las columnas PROD# no son iguales.
Las columnas resultantes de una unión tienen nombres si la lista SELECT más
exterior hace referencia a columnas base. Sin embargo, si se utiliza una función
(por ejemplo, COALESCE) para crear una columna del resultado, dicha columna
no 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 interna
Puede solicitar una unión interna, ejecutando una sentencia SELECT en la que
especifique las tablas a las que desea unir la cláusula FROM y especificar una
cláusula WHERE o una cláusula ON para indicar la condición de unión. La
condición de unión puede ser cualquier condición de búsqueda simple o
compuesta que no contenga ninguna referencia de subconsulta.
Ejemplo: Puede unir las tablas PARTS y PRODUCTS en la columna PROD# para
formar una tabla de componentes con sus proveedores y los productos que utilizan
los componentes. Considere las dos sentencias SELECT siguientes:
Ejemplo: Para eliminar los proveedores que empiezan con la letra A de la tabla de
componentes, proveedores, números de producto y productos, escriba una consulta
como la siguiente:
Ejemplo: En este ejemplo se une la tabla PROJ a sí misma utilizando una unión
interna. 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 B
WHERE A.PROJNO = B.MAJPROJ;
Al igual que en una unión interna, la condición de unión de una unión externa
izquierda puede ser cualquier condición de búsqueda simple o compuesta que no
contenga ninguna referencia de subconsulta.
Ejemplo: Para incluir filas de la tabla PARTS que no tengan valores coincidentes
en la tabla PRODUCTS e incluir los precios superiores a $10.00, ejecute esta
consulta:
Debido a que la tabla PARTS puede tener filas que no coincidan con valores de las
columnas unidas y debido a que la columna PRICE no está en la tabla PARTS, las
filas en las que el valor de PRICE no es superior a $10.00 se incluyen en el
resultado 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 dos
columnas de la derecha debido a que PROD# 160 no coincide con otro número de
producto. PROD# 30 tiene valores nulos en las dos columnas de la derecha debido
a que el precio de PROD# 30 es inferior a $10.00.
Conceptos relacionados
“Subconsultas” en la página 117
Referencia relacionada
″Sentencia select″ (Consulta de DB2 SQL)
Al igual que en una unión interna, la condición de unión de una unión externa
derecha puede ser cualquier condición de búsqueda simple o compuesta que no
contenga ninguna referencia de subconsulta.
Ejemplo: Para incluir las filas de la tabla PRODUCTS que no tengan valores
coincidentes 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 PRODUCTS
ON PARTS.PROD# = PRODUCTS.PROD#
WHERE PRODUCTS.PRICE>10.00;
Debido a que la tabla PRODUCTS no puede tener filas que no coincidan con
valores de las columnas unidas y debido a que la columna PRICE está en la tabla
PRODUCTS, las filas en las que el valor de PRICE no es superior a $10.00 no se
incluyen en el resultado de la unión.
La condición de unión para una unión externa completa debe ser una condición de
búsqueda que compare dos columnas. Los predicados de la condición de búsqueda
se 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 y
PRODUCTS:
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
FROM PARTS FULL OUTER JOIN PRODUCTS
ON PARTS.PROD# = PRODUCTS.PROD#;
Utilización de COALESCE
Subconsultas
Puede utilizar una subconsulta para limitar una condición de búsqueda basada en
información de una tabla intermedia.
Una subconsulta es una sentencia de SQL anidada, o subselección, que contiene una
sentencia SELECT dentro de la cláusula WHERE o HAVING de otra sentencia de
SQL. También puede codificar subconsultas más complejas como, por ejemplo,
subconsultas correlacionadas y subconsultas con predicados cuantificados.
Ejemplo: Suponga que desea obtener una lista de los números de empleado,
nombres y comisiones de todos los empleados que trabajan en un proyecto
determinado como, por ejemplo, el número de proyecto IF2000. La primera parte
de la sentencia SELECT es fácil de escribir:
SELECT EMPNO, LASTNAME, COMM
FROM EMP
. WHERE EMPNO
.
.
Sin embargo, no puede continuar porque la tabla EMP no incluye datos sobre el
número de proyecto. No puede saber qué empleados trabajan en el proyecto
IF2000 sin emitir otra sentencia SELECT para la tabla EMPPROJACT.
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 EMPNO
FROM EMPPROJACT
WHERE PROJNO = 'IF2000');
El resultado es la siguiente tabla de resultados intermedios:
EMPNO
======
000140
000140
000030
Ejemplo:
EXEC SQL SET :HVRANDVAL = RAND(:HVRAND);
v Además, puede utilizar la sentencia VALUES INTO para devolver el valor de
una 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
Antes de modificar datos de las tablas, debe crear tablas duplicadas con fines de
prueba para que los datos de las tablas originales permanezcan intactos. Suponga
que ha creado dos tablas nuevas, NEWDEPT y NEWEMP, que son los duplicados
de las tablas DEPT y EMP.
Inserciones
Puede utilizar una sentencia INSERT o una sentencia MERGE para añadir filas
nuevas 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én
| puede utilizar una sentencia MERGE con matrices de variables de lenguaje
| principal para insertar y actualizar datos.
v Incluir una sentencia SELECT en la sentencia INSERT para indicar a DB2 que
otra 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. Utilice
esta sentencia INSERT:
INSERT INTO NEWDEPT (DEPTNO, DEPTNAME, MGRNO, ADMRDEPT)
VALUES ('E31', 'PUBLISHING', '000020', 'D11');
También puede añadir datos nuevos a una tabla existente de otras formas. Quizás
necesite añadir grandes cantidades de datos a una tabla existente. Algunas
Actualizaciones
Puede cambiar los datos de una tabla utilizando la sentencia UPDATE o la
sentencia MERGE.
| Puede utilizar una sentencia UPDATE o MERGE para especificar los valores que
| deben actualizarse de una única fila. Puede especificar constantes, variables de
| lenguaje principal, expresiones, DEFAULT o NULL. Especifique NULL para
| eliminar un valor de una columna de una fila (sin eliminar la fila).
Supresiones
Puede utilizar la sentencia DELETE para eliminar filas enteras de una tabla.
Esta sentencia DELETE suprime cada fila de la tabla NEWEMP que tenga el
número de empleado 000060.
Referencia relacionada
″DELETE″ (Consulta de DB2 SQL)
SQL estático
La forma de origen de una sentencia de SQL estático se incluye en un programa de
aplicación que se escribe en un lenguaje de programación de sistema principal
como, por ejemplo, C. La sentencia se prepara antes de ejecutar el programa y la
forma operativa 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.
Conceptos relacionados
″Diferencias entre SQL estático y dinámico″ (DB2 Application Programming and
SQL Guide)
Referencia relacionada
″SQL estático″ (Consulta de DB2 SQL)
SQL dinámico
Las sentencias de SQL dinámico se construyen y preparan durante el tiempo de
ejecución.
DB2 ODBC
DB2 ODBC (Open Database Connectivity) es una interfaz de programación de
aplicaciones (API) que permite que programas de aplicaciones C y C++ accedan a
bases de datos relacionales.
SQL interactivo
SQL interactivo hace referencia a sentencias de SQL que se someten a DB2
utilizando una herramienta de consulta como, por ejemplo, DB2 QMF para
Workstation.
Aunque este tema se centra en DB2 QMF para Workstation, hay disponibles otras
opciones. Puede utilizar DB2 QMF para WebSphere para entrar y ejecutar
sentencias de SQL desde el navegador web o utilizar DB2 QMF para TSO/CICS
para entrar y ejecutar sentencias de SQL desde TSO o CICS. Además, puede entrar
y ejecutar sentencias de SQL en un terminal TSO utilizando el recurso SPUFI
(procesador de SQL utilizando entrada de archivo). SPUFI prepara y ejecuta estas
sentencias dinámicamente. Todas estas herramientas preparan y ejecutan
dinámicamente las sentencias de SQL.
Además de DB2 QMF para Workstation, que se describe en este tema, la familia de
DB2 QMF incluye las ediciones siguientes:
Con las características relacionadas con consultas de DB2 QMF para Workstation
puede realizar las tareas siguientes:
v Crear consultas muy eficaces sin conocimientos de SQL
v Analizar resultados de consultas en línea, incluido el análisis OLAP
v Editar resultados de consultas para actualizar datos de DB2
v Formatear informes basados en texto tradicional e informes con formato rico
v Visualizar gráficas y otros visuales complejos
v Enviar resultados de consultas a la aplicación que el usuario selecciona
v Desarrollar aplicaciones utilizando mandatos de API de gran capacidad
Puede crear las sentencias de SQL utilizando DB2 QMF para Workstation de varias
formas:
v Utilice la ventana Database Explorer para encontrar y ejecutar con facilidad
consultas guardadas (también conocida como una consulta escrita) que pueden
compartir todos los usuarios del mismo servidor de bases de datos.
v Si tiene conocimientos sobre SQL, escriba la sentencia de SQL directamente en la
ventana.
v Si no tiene conocimientos sobre SQL, utilice la interfaz asistida o de diagrama
para crear la sentencia de SQL.
Si necesita crear una consulta nueva, puede entrar las sentencias de SQL
directamente en la ventana de consulta o puede crear las sentencias de SQL
utilizando diagramas o solicitudes. Cuando crea una consulta utilizando diagramas
o solicitudes, puede abrir una vista para ver el SQL que se está creando.
Cuando termine de crear la consulta, puede pulsar el botón Run Query (Ejecutar
consulta) para ejecutar las sentencias de SQL. Después de ejecutar la consulta, DB2
QMF para Workstation devuelve los resultados de la consulta en una ventana
interactiva.
(La Tabla 13 en la página 128 muestra la primera mitad (lado derecho) del
contenido de la tabla de empleados.)
Tabla 14. Mitad derecha de DSN8910.EMP: tabla de empleados
(EMPNO) JOB EDLEVEL SEX BIRTHDATE SALARY BONUS COMM
La tabla siguiente muestra los índices para las tablas auxiliares que dan soporte a
la 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 de
empleados
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
Debido a que la tabla de proyectos hace referencia a sí misma la clave foránea para
esta restricción debe añadirse más adelante con la sentencia siguiente:
ALTER TABLE DSN8910.PROJ
FOREIGN KEY RPP (MAJPROJ) REFERENCES DSN8910.PROJ
ON DELETE CASCADE;
Referencia relacionada
“Tabla de proyectos (DSN8910.PROJ)” en la página 132
“Tabla de actividades (DSN8910.ACT)” en la página 124
La tabla siguiente muestra los índices para la tabla de empleados para actividades
de proyectos:
Tabla 23. Índices de la tabla de empleados de actividades de proyectos
Nombre En columnas Tipo de índice
DSN8910.XEMPPROJACT1 PROJNO, ACTNO, Exclusivo, ascendente
EMSTDATE, EMPNO
DSN8910.XEMPPROJACT2 EMPNO Ascendente
Referencia relacionada
“Tabla de actividades (DSN8910.ACT)” en la página 124
“Tabla de departamentos (DSN8910.DEPT)” en la página 125
La tabla siguiente indica las tablas en las que se define cada vista y las
aplicaciones de ejemplo que utilizan la vista. Todos los nombres de vista tienen el
calificador DSN8910.
Tabla 25. Vistas en tablas de ejemplo
Nombre de vista En tablas o vistas Utilizada en la aplicación
VDEPT DEPT
Proyecto de
Proyecto
VHDEPT DEPT Organización distribuida
VEMP EMP
Organización distribuida
Proyecto de
Proyecto
VPROJ PROJ Proyecto
VACT ACT Proyecto
VPROJACT PROJACT Proyecto
VEMPPROJACT EMPPROJACT Proyecto
VDEPMG1 Organización
DEPT
EMP
VEMPDPT1 Organización
DEPT
EMP
VASTRDE1 DEPT
VASTRDE2 Organización
VDEPMG1
EMP
VPROJRE1 Proyecto
PROJ
EMP
VPSTRDE1 Proyecto
VPROJRE1 VPROJRE2
VPSTRDE2 VPROJRE1 Proyecto
Los programadores disponen de una amplia variedad de opciones para diseñar sus
aplicaciones 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 aplicaciones
de varios niveles. Una aplicación de varios niveles compleja puede tener un cliente
navegador con lógica de aplicaciones empresariales para acceso a datos que se
ejecute en un servidor de aplicaciones web de nivel medio y lógica de base de
datos que se ejecute con el servidor de bases de datos como procedimientos
almacenados.
El acceso desde estas herramientas se realiza mediante todas las API de utilización
frecuente entre las que se incluye JDBC y ODBC, OLE DB, ADO.NET y ADO. Con
estas opciones de acceso, los programadores de aplicaciones pueden utilizar
muchas otras herramientas de desarrollo actuales, que incluyen soporte de editor
bá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 procedimiento
almacenado” en la página 173
Con WebSphere Studio Application Developer puede crear aplicaciones J2EE con
archivos JSP (JavaServer Page) y componentes de EJB (Enterprise JavaBean), crear
aplicaciones de servicios web y generar documentos XML.
Conceptos relacionados
“Aplicaciones basadas en la web y WebSphere Studio Application Developer”
en la página 303
Las herramientas basadas en ODBC proporcionan una alternativa más simple para
desarrollar aplicaciones que la utilización de un lenguaje de programación de alto
nivel. QMF para Windows proporciona acceso a datos de DB2 para estas
herramientas. Con todas estas herramientas, puede especificar DB2 for z/OS como
la base de datos a la que debe accederse.
Conceptos relacionados
“Utilización de DB2 Query Management Facility para Workstation” en la
página 123
DB2
Compilador DBRM
precompilador
Editor de Proceso de
enlaces vinculación
Módulo Paquete
de carga o plan
Figura 29. Visión general del proceso de preparación de un programa para aplicaciones que
contienen SQL incorporado cuando se utiliza el precompilador de DB2
| Cuando utiliza SQL estático, no puede cambiar la forma de las sentencias de SQL a
| menos que realice cambios en el programa. Sin embargo, puede aumentar la
| flexibilidad de estas sentencias utilizando variables de lenguaje principal. La
| utilización de SQL estático y variables de lenguaje principal es más segura que la
| utilización de SQL.
Suponga que escribe un programa de aplicación para acceder a los datos de una
base de datos de DB2. Cuando el programa ejecuta una sentencia de SQL, el
programa necesita comunicarse con DB2. Cuando DB2 finaliza el proceso de una
sentencia de SQL, DB2 devuelve un código de retorno, denominado código de
retorno de SQL. El programa debe probar el código de retorno para examinar los
resultados de la operación.
El ejemplo siguiente utiliza una variable de lenguaje principal para recuperar una
única fila de datos.
Suponga que no sabe cuántas filas devolverá DB2 o espera que se devuelva más de
una 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 procesar
un 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 y
estructuras″ (DB2 Application Programming and SQL Guide)
Referencia relacionada
″Referencias a variables de lenguaje principal″ (Consulta de DB2 SQL)
El programa puede tener varios cursores. Cada cursor tiene los siguientes
requisitos:
v Una sentencia DECLARE CURSOR para definir el cursor
v Sentencias OPEN y CLOSE para abrir y cerrar el cursor
v 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 ellas
en una sentencia DECLARE CURSOR. Para definir e identificar un conjunto de
filas a las que se debe acceder con un cursor, emita una sentencia DECLARE
CURSOR. La sentencia DECLARE CURSOR nombra un cursor y especifica una
sentencia SELECT. La sentencia SELECT define los criterios para las filas que
pertenecen a la tabla de resultados.
Puede utilizar cursores para captar, actualizar o suprimir una o más filas de una
tabla, pero no puede utilizarlos para insertar una fila en una tabla.
Ejemplo: Utilice el cursor para recuperar una fila: La sentencia siguiente utiliza el
cursor, THISEMP, para recuperar una fila:
EXEC SQL
FETCH THISEMP
INTO :EMP-NUM, :NAME2,
:DEPT, :JOB-NAME
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 con
desplazamiento bidireccional dinámico. Con un cursor con desplazamiento
bidireccional dinámico, las aplicaciones pueden desplazarse directamente en una
tabla 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)
Un programa que incluye sentencias de SQL puede tener un área que se reserva
para la comunicación con DB2—un área de comunicaciones de SQL (SQLCA). Cuando
DB2 procesa una sentencia de SQL en el programa, coloca códigos de retorno en
las variables de lenguaje principal SQLSTATE y SQLCODE o en los
correspondientes campos del SQLCA. Los códigos de retorno indican si la
sentencia se ha ejecutado satisfactoriamente o ha fallado.
Una aplicación que utiliza SQL dinámico genera una sentencia de SQL con formato
de serie de caracteres o acepta una sentencia de SQL como entrada. Según las
necesidades 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 para
que emita únicamente las sentencias que devuelven un número de valores
conocidos de tipos de datos conocidos. En general, los programas dinámicos más
complejos son aquéllos en los que desconoce previamente las sentencias de SQL
que va a emitir la aplicación. Una aplicación normalmente realiza los pasos
siguientes:
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.
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");
/*********************************************************/
Otra ventaja del acceso ODBC es que puede ayudar a ocultar las diferencias entre
catálogos del sistema de servidores de bases de datos diferentes. A diferencia de
SQL incorporado, DB2 ODBC proporciona una interfaz coherente para que las
aplicaciones consulten y recuperen información de catálogo del sistema dentro de
la familia de sistemas de gestión de bases de datos de DB2 Database. Esta
posibilidad reduce la necesidad de escribir consultas de catálogo específicas de
cada servidor de bases de datos. DB2 ODBC puede devolver tablas de resultados a
estos programas.
Ejemplo de ODBC: Este ejemplo muestra una parte de un programa ODBC que
mantiene un inventario de libros.
/*********************************************************/
/* Determinar qué tabla debe actualizarse */
/*********************************************************/
rc = SQLBindParameter( hStmt,
1,
SQL_PARAM_INPUT,
SQL_C_CHAR,
SQL_CHAR,
50,
0,
bktitle,
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 = SQLExecute( hStmt );
if( rc != SQL_SUCCESS ) goto dberror;
Soporte de SQLJ
DB2 for z/OS incluye SQLJ, que proporciona soporte para incluir sentencias de
SQL estático en aplicaciones y servlets de Java. Los servlets son programas de
aplicaciones 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 una
conexión JDBC y, a continuación, utilizar esta conexión para ejecutar sentencias de
SQL dinámico mediante JDBC y sentencias de SQL estático incluidas mediante
SQLJ.
Un grupo de empresas entre las que se incluyen Oracle, Hewlett Packard e IBM,
inicialmente desarrollaron SQLJ para complementar el modelo JDBC de SQL
dinámico con un modelo de SQL estático.
Soporte de JDBC
| DB2 for z/OS da soporte a aplicaciones que utilizan interfaces JDBC de Sun
| Microsystems para acceder a datos de DB2 utilizando SQL dinámico. El soporte de
| DB2 for z/OS para JDBC permite a las organizaciones escribir aplicaciones Java
| que accedan a datos locales de DB2 o a datos relacionales remotos de un servidor
| con soporte de DRDA.
Este ejemplo muestra una parte de un programa JDBC que mantiene un inventario
de 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";
| else
| tableName = "NON_FICTION_BOOKS";
| /*********************************************************/
| /* Aplicar PREPARE y EXECUTE a la sentencia */
El soporte de DB2 for z/OS para JDBC ofrece varias ventajas para acceder a datos
de 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 sistemas
de gestión de bases de datos de DB2 Database. Esta posibilidad reduce la
necesidad de escribir consultas de catálogo específicas de cada servidor de bases
de 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 164
Información relacionada
″Programación de aplicaciones JDBC″ (DB2 for z/OS ODBC Guide and
Reference)
Figura 31. Proceso sin procedimientos almacenados. Una aplicación incluye sentencias de
SQL y se comunica con el servidor de forma separada para cada sentencia.
Figura 32. Proceso con procedimientos almacenados. La misma serie de sentencias de SQL
utiliza una única operación de envío o recepción.
Conceptos relacionados
″Procedimientos almacenados″ (DB2 Application Programming and SQL Guide)
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 de
FETCH (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
| 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 objetos
| que crean otras personas. (Por ejemplo, MYDB.TSPACE1 es un espacio de tablas
| diferente de YOURDB.TSPACE1.) Cuando utilice un calificador, evite utilizar SYS
| como los tres primeros caracteres. Si no especifica ningún calificador, DB2 asigna
| un calificador para el objeto.
Conceptos relacionados
Capítulo 4, “Objetos de DB2 y sus relaciones”, en la página 67
Creación de tablas
Diseño de tablas utilizadas por muchas aplicaciones es una tarea crítica. El diseño
de tablas puede ser difícil ya que la misma información se puede representar de
muchas formas diferentes. Esta información resume brevemente cómo crear y
modificar tablas, y cómo controlar la autorización.
Para crear tablas debe utilizar la sentencia SQL CREATE TABLE. Después de haber
creado y empezado a utilizar las tablas, es posible que en algún momento deba
realizar cambios en ellas. La sentencia ALTER TABLE le permite añadir y cambiar
columnas, añadir o eliminar una clave primaria o una clave foránea, añadir o
eliminar 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 en
las aplicaciones.
Sin embargo, si lo desea, puede otorgar la autorización para crear tablas a los
responsables de la implementación de la aplicación. Por ejemplo, probablemente
deseará autorizar determinados programadores de aplicaciones para crear tablas si
necesitan tablas temporales con finalidades de prueba.
Puede que algunos usuarios de la organización deseen utilizar DB2 con la mínima
asistencia o el mínimo control. Puede definir un grupo de almacenamiento y una
base de datos separados para estos usuarios y autorizarlos para crearlos objetos de
datos 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ágina
273
Tipos de tablas
En DB2, los datos del usuario se almacenan en tablas. DB2 da soporte a varios
tipos de tablas, cada uno de los cuales tiene sus propias finalidades y
características.
Cuando crea una tabla, DB2 registra una definición de la tabla en el catálogo de
DB2. La creación de una tabla no almacena los datos de aplicaciones. Puede
colocar datos en la tabla utilizando varios métodos como, por ejemplo, el programa
de utilidad LOAD o la sentencia INSERT.
Ejemplo: La siguiente sentencia CREATE TABLE crea la tabla EMP, que está en
una base de datos denominada MYDB y en un espacio de tablas denominado
MYTS:
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;
Ejemplo: Suponga que necesita crear una tabla de transacciones grande que
incluya la fecha de la transacción en una columna denominada POSTED. Suponga
que 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
Las mejoras de los esquemas en línea proporcionan una flexibilidad que le permite
cambiar una definición de columna. Considere con atención las decisiones que
Nombres de columna
Las siguientes directrices de denominación de columnas que se desarrollan para la
organización aseguran la elección de opciones correctas que sean coherentes.
Tipos de datos
Cada columna de cada tabla de DB2 tiene un tipo de datos. El tipo de datos
influye en el intervalo de valores que puede tener la columna y en el conjunto de
operadores y funciones que se le aplican.
En DB2 for z/OS, los tipos de datos definidos por el usuario se denominan tipos
diferenciados.
Conceptos relacionados
“Tipos de datos para atributos” en la página 73
“Tipos diferenciados” en la página 191
| Las series de caracteres contienen texto y pueden ser de longitud fija o de longitud
| variable. Las series gráficas contienen datos gráficos, que pueden ser de longitud fija
La tabla siguiente describe los diferentes tipos de datos de serie e indica el rango
para 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. n
| debe ser mayor que 0 y no mayor que 255. La longitud por omisión
| es 1.
| VARCHAR(n) Series de caracteres de longitud variable con una longitud máxima
| de n bytes. n debe ser mayor que 0 y menor que un número que
| depende del tamaño de página del espacio de tablas. La longitud
| máxima es 32704.
| CLOB(n) Series de caracteres de longitud variable con un máximo de n
| caracteres. n no puede exceder de 2 147 483 647. La longitud por
| omisión es 1.
| GRAPHIC(n) Series gráficas de longitud fija que contienen n caracteres de doble
| byte. n debe ser mayor que 0 y menor que 128. La longitud por
| omisión es 1.
| VARGRAPHIC(n) Series gráficas de longitud variable. La longitud máxima, n, debe
| ser mayor que 0 y menor que un número que depende del tamaño
| de 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 n
| caracteres de doble byte. n no puede exceder de 1 073 741 824. La
| longitud por omisión es 1.
| BINARY(n) Series binarias de longitud fija o longitud variable con una longitud
| de n bytes. n debe ser mayor que 0 y no mayor que 255. La
| longitud por omisión es 1.
| VARBINARY(n) Series binarias de longitud variable con una longitud de n bytes. La
| longitud de n debe ser mayor que 0 y menor que un número que
| depende del tamaño de página del espacio de tabla. La longitud
| máxima es 32704.
| BLOB(n) Series binarias de longitud variable con una longitud de n bytes. n
| no 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 almacenar
impone el tipo de datos que se elige.
Ejemplo: Suponga que DB2 calcula un rango entre dos números. Si los valores
tienen un tipo de datos de serie, DB2 supone que los valores pueden incluir todas
las combinaciones de caracteres alfanuméricos. Por el contrario, si los valores
tienen un tipo de datos numérico, DB2 puede calcular un rango entre los dos
valores de forma más eficaz.
Puede definir una columna numérica exacta como una columna de identidad. Una
columna de identidad tiene un atributo que permite a DB2 generar automáticamente
un valor numérico exclusivo para cada fila que se inserta en la tabla. Las columnas
de identidad se adaptan mejor a la tarea de generar valores de clave primaria
exclusivos. Las aplicaciones que utilizan columnas de identidad pueden evitar los
problemas de simultaneidad y rendimiento que se producen a veces cuando las
aplicaciones implementan sus propios contadores exclusivos.
La tabla siguiente describe los tipos de datos para fechas, horas e indicaciones de
fecha 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 hora
del día en horas, minutos y segundos dentro del rango de 00.00.00 a
24.00.00.
TIMESTAMP Indicaciones de fecha y hora. Una indicación de fecha y hora es un
valor de siete partes que representa una fecha y hora mediante año,
mes, día, hora, minuto, segundo y microsegundo, dentro del rango
de 0001-01-01-00.00.00.000000 a 9999-12-31-24.00.00.000000.
Puede utilizar las siguientes funciones definidas por el usuario de ejemplo (que se
facilitan 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 carga de valores de fecha u hora desde una fuente externa, DB2 acepta
cualquiera de las opciones de formato de fecha y hora que se listan en esta
información. DB2 convierte valores de entrada válidos al formato interno. Para la
recuperación, se especifica un formato por omisión durante la instalación de DB2.
Posteriormente puede alterar temporalmente el valor por omisión utilizando una
opción de precompilador para todas las sentencias de un programa o utilizando la
función escalar CHAR para una sentencia de SQL determinada y especificando el
formato deseado.
Los valores XML que se almacenan en una columna XML tienen una
representación interna que no es una serie y no se puede comparar directamente
con valores de serie. Un valor XML puede transformarse en un valor de de tipo
serie serializado que representa el documento XML utilizando la función
XMLSERIALIZE o recuperando el valor en una variable de aplicación de un tipo
XML, serie o binario. De forma similar, un valor de tipo serie que representa un
documento XML puede transformarse en un valor XML utilizando la función
XMLPARSE o almacenando un valor de un tipo de datos de aplicación XML,
binario o serie en una columna XML.
| DB2 proporciona tres tipos de datos para almacenar estos objetos de datos como
| series 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 hasta
superar) 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 de
datos DBCS como, por ejemplo, documentos que utilizan un juego de
caracteres DBCS.
Objetos binarios grandes (BLOB)
Utilice el tipo de datos BLOB para almacenar grandes cantidades de datos
no 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 una
o más columnas como columnas LOB. Una ventaja de utilizar LOB es que se
pueden crear funciones definidas por el usuario sólo permitidas en tipos de datos
LOB.
Conceptos relacionados
“Creación de objetos grandes” en la página 233
Referencia relacionada
″Objetos grandes (LOB)″ (Consulta de DB2 SQL)
DB2 puede generar un valor para la columna cuando se añade una fila, según la
opción que se elija (GENERATED ALWAYS o GENERATED BY DEFAULT) al
definir la columna. Puede utilizar una columna ROWID en una tabla por varios
motivos.
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 una
tabla que contiene una columna ROWID, el valor de ID de fila contiene
implícitamente la ubicación de la fila. Si utiliza este valor de ID de fila en la
condición de búsqueda de sentencias SELECT posteriores, es posible que DB2 no
pueda navegar directamente hasta la fila.
La definición del propio tipo diferenciado asegura que tan solo las aplicaciones
definidas explícitamente en un tipo diferenciado puedan aplicarse a sus instancias.
Aunque puede tener distintos tipos diferenciados basados en los mismos tipos de
datos incorporados, los tipos diferenciados tienen la propiedad de tipificación
estricta. Con esta propiedad, no se pueden comparar directamente instancias de un
tipo diferenciado con cualquier otra instancia del mismo tipo. La tipificación
estricta impide semánticamente operaciones incorrectas (como, por ejemplo, la
adición explícita de dos monedas diferentes) sin pasar primero por un proceso de
conversión. El usuario define los tipos de operaciones que pueden producirse para
instancias de un tipo diferenciado.
Ejemplo 2: Puede definir un tipo diferenciado para cada país. Por ejemplo, para
crear tipos US_DOLLAR y tipos CANADIAN_DOLLAR, puede utilizar las
siguientes 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 las
sentencias 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);
Se produce una comparación cuando ambos valores son numéricos, ambos valores
son series de caracteres o ambos valores son series gráficas. También se pueden
producir comparaciones entre datos de caracteres y gráficos o entre datos de
caracteres y de fecha y hora si los datos de caracteres son una representación de
caracteres válida de un valor de fecha y hora. Los diferentes tipos de
comparaciones de serie o numéricas pueden repercutir en el rendimiento.
Valores nulos
Algunas columnas no pueden tener un valor significativo en cada fila. DB2 utiliza
un indicador de valor especial, el valor nulo, para indicar un valor desconocido o
que falta. Un valor nulo es un valor especial que DB2 interpreta para indicar que
no hay datos presentes.
Si una columna está definida como NOT NULL WITH DEFAULT o si el usuario no
especifica NOT NULL, DB2 almacena un valor por omisión para una columna
cada vez que una inserción o una carga no proporciona un valor para dicha
columna. Si una columna está definida como NOT NULL, DB2 no proporciona
ningún valor por omisión.
DB2 genera un valor por omisión para columnas ROWID. DB2 también determina
valores por omisión para columnas que los usuarios definen con NOT NULL
WITH DEFAULT, pero para las que no se especifica un valor específico, tal como
se 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, 0
| BIGINT, DECIMAL,
| NUMERIC, REAL, DOUBLE,
| DECFLOAT o FLOAT
| Series de longitud fija CHAR o GRAPHIC Blancos
Cuando elige un valor por omisión, debe poder asignarlo al tipo de datos de la
columna. Por ejemplo, todas las constantes de tipo serie son VARCHAR. Puede
utilizar una constante de tipo serie VARCHAR como valor por omisión para una
columna CHAR aunque el tipo no coincida de forma exacta. Sin embargo, no
puede especificar un valor por omisión ’N/A’ para una columna con un tipo de
datos 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 referencia
contienen valores de longitud variable.
Ejemplo: Si desea un registro de cada usuario que inserta cualquier fila de una
tabla, 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 los
usuarios actualizar la vista en lugar de la tabla base. Después, DB2 añade, por
omisió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 no
nulas con valor por omisión. Suponga que añade una columna a una tabla
existente y especifica no nulo con valor por omisión. Si DB2 lee de la tabla antes
de añadir datos a la columna, los valores de la columna que se recuperan son los
valores por omisión. Con muy pocas excepciones, los valores por omisión para una
recuperación son iguales que los valores por omisión para una inserción.
Suponga que desea averiguar cuál es el salario medio de todos los empleados de
un departamento. La columna de salario no siempre necesita contener un valor
significativo, por lo tanto puede elegir entre las opciones siguientes:
v Permitir valores nulos para la columna SALARY
La figura siguiente muestra dos casos de ejemplo. La tabla de la figura excluye los
datos de salario para el empleado número 200440 debido a que la empresa acaba
de contratar a este empleado y todavía no ha determinado su salario. El cálculo del
salario medio para el departamento E21 varía, en función de si se utilizan valores
no 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 solamente
incluye tres empleados (000320, 000330 y 200340) para los cuales están
disponibles datos sobre el salario.
v En la parte derecha de la figura se supone que se utiliza un valor por omisión
no nulo distinto de cero (0). En este caso, el cálculo del salario medio para el
departamento E21 incluye todos los cuatro empleados, aunque sólo existe
información válida sobre el salario para tres empleados.
Figura 33. Cuándo es preferible utilizar nulos que valores por omisión
| Los valores nulos son diferentes en la mayoría de situaciones para que dos valores
| nulos no sean iguales entre sí.
Ejemplo: El ejemplo siguiente muestra cómo comparar dos columnas para ver si
son iguales o si ambas columnas son nulas:
WHERE E1.DEPT IS NOT DISTINCT FROM E2.DEPT
Considere esta sentencia INSERT, que añade un empleado que tiene un salario de
65 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);
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 que
sea superior al tamaño de página. No existe ningún otro límite absoluto, pero se
arriesga a desperdiciar espacio de almacenamiento si ignora el tamaño de registro
para implementar un buen diseño teórico.
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 los
datos es aleatorio y generalmente sólo requiere unas pocas filas de cada página.
| 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 especificar
| tamaños de página para los datos; el tamaño de página por omisión es de 4 KB. Si
| DB2 ha creado implícitamente el espacio de tablas, DB2 elige el tamaño de página
| basado en un algoritmo de tamaño de fila.
Por regla general, cada base de datos de DB2 no debería contener como máximo
entre 50 y 100 espacios de tablas. La siguiente directriz ayuda a minimizar el
mantenimiento, a aumentar la simultaneidad y a reducir el volumen de registro.
Cuando se ejecuta una sentencia que busca todas las filas para una tabla, DB2 no
necesita explorar todo el espacio de tablas. En lugar de ello, DB2 puede explorar
únicamente los segmentos del espacio de tablas que contienen dicha tabla. La
siguiente figura muestra una posible organización de los segmentos en un espacio
de tablas segmentado.
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″ (DB2
| Administration Guide)
| No puede crear espacios de tablas simples, pero puede modificar, actualizar datos
| o recuperar datos de espacios de tablas simples. Si crea implícitamente un espacio
| de tabla o crea explícitamente un espacio de tablas sin especificar las opciones
| SEGSIZE, NUMPARTS o MAXPARTITIONS, DB2 crea un espacio de tablas
| segmentado en lugar de un espacio de tablas simple. Por omisión, el espacio de
| tabla segmentado tiene un valor de 4 para SEGSIZE y un valor de ROW para
| LOCKSIZE.
Restricciones:
| v Los espacios de tabla universales no se pueden crear en la base de datos de
| archivo de trabajo.
| v Los espacios de tabla universales necesitan más páginas de correlación de
| espacio 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″ (DB2
Administration Guide)
″Ejemplos de definiciones de espacio de tabla″ (DB2 Administration Guide)
Referencia relacionada
| ″CREATE TABLESPACE″ (Consulta de DB2 SQL)
Los espacios de tabla de partición por crecimiento son un tipo de espacio de tabla
universal que puede contener una única tabla. El espacio en un espacio de tabla de
partición por crecimiento se divide en diferentes particiones. Los espacios de tabla
de partición por crecimiento se utilizan mejor cuando se cree que una tabla puede
superar los 64 GB y no contiene una clave de partición adecuada para dicha tabla.
Un espacio de tabla universal particionado por rango contiene una única tabla, que
la hace similar al espacio de tabla que está exclusivamente particionado. Puede
crear un índice de cualquier tipo en una tabla de un espacio de tabla particionado
por rango.
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 poca
frecuencia. Si lo hace, una exploración de espacio de tablas del resto de datos de la
tabla base será potencialmente más rápida porque la exploración suele incluir
menos páginas.
Un espacio de tablas LOB siempre tiene una relación directa con el espacio de
tablas que contiene los valores de columna LOB lógicos. El espacio de tablas que
contiene 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 almacenan
físicamente en una tabla auxiliar que reside en un espacio de tablas LOB. Tan solo
puede existir una tabla auxiliar en un espacio de tablas de objetos grandes. Un
valor LOB puede abarcar varias páginas. Sin embargo, sólo se almacena un valor
LOB por página.
Es necesario tener un espacio de tablas LOB para cada columna LOB que exista en
una tabla. Por ejemplo, si la tabla tiene columnas LOB para resúmenes y
fotografías, necesitará una tabla LOB (y una tabla auxiliar) para cada una de estas
columnas. 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.
Recomendaciones:
v Considere la definición de columnas de series largas como columnas LOB
cuando una fila no quepa en una página de 32 KB. Utilice las directrices
siguientes 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 largas
puede ser mejor para series no LOB que para series LOB.
| v Considere la especificación de una agrupación de almacenamientos intermedios
| separada 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″ (DB2
Administration 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)
| Cada columna XML tiene su propio espacio de tablas. El espacio de tablas XML no
| tiene teclas de limitación. Los datos XML residen en el número de partición de la
| fila de base.
| El espacio de tabla hereda varios de los atributos del espacio de tabla base, como
| por ejemplo:
| v LOG
| v CCSID
| v LOCKMAX
| 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 tabla siguiente describe la organización del espacio de tabla para los datos
| XML.
| Tabla 35. La organización de los espacios de tabla base corresponden a los espacios de
| tabla XML
| Organización del espacio de XOrganización del
| tabla base espacio de tabla XML Notas
| Simple Partition-by-growth
| universal
| Segmentado Partition-by-growth
| universal
| Particionado Range-partitioned Si la fila de una tabla base se
| universal desplaza a una partición nueva, el
| documento XML también se
| desplaza a una nueva partición.
Figura 36. Estructura de almacenamiento XML para una tabla base en un espacio de tabla segmentada
Índice XML
Tabla base
Partición 1
Columnas: Columnas:
DB2_GENERATED- Tabla XML DOCID
DOC_ID_FOR_XML Partición 1 MIN_NODEID
XMLCOL1 XMLDATA
XMLCOL2 Columnas:
Tabla XML DOCID
Partición 2 MIN_NODEID
Tabla base
XMLDATA
Partición 2
Columnas: Espacio de tabla particionado por
DB2_GENERATED- rango con particiones para XMLCOL1
DOC_ID_FOR_XML
XMLCOL1
XMLCOL2
Espacio de tabla base Índice Id nodo
particionada con dos (no-particionado, ampliado)
particiones. La tabla
tiene dos columnas XML.
Índice XML
Columnas:
Tabla XML DOCID
Partición 1 MIN_NODEID
XMLDATA
Columnas:
Tabla XML DOCID
Partición 2 MIN_NODEID
XMLDATA
Espacio de tabla particionado por
rango con particiones para XMLCOL1
Figura 37. Estructura de almacenamiento XML para una tabla base en un espacio de tabla particionada
| Cuando crea una tabla con columnas XML o MODIFICA una tabla para añadir
| columnas XML, el servidor de bases de datos DB2 crea implícitamente los
| siguientes 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 donde
| está la tabla que contiene la columna XML (la tabla base). El espacio de tabla
| XML está en el codificado UTF-8 Unicode.
| v Una columna en la tabla base con el nombre
| DB2_GENERATED_DOCID_FOR_XML.
| Puede realizar operaciones SQL limitadas, como las siguientes, en los objetos
| creados 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 para
| obtener una lista completa de las operaciones que puede realizar con estos objetos.
DB2 for z/OS incluye las posibilidades de Storage Management Subsystem (SMS).
Un producto clave de la familia de SMS es Data Facility Storage Management
Subsystem (DFSMS). DFSMS puede gestionar automáticamente todos los conjuntos
de datos que DB2 utiliza y necesita. Si utiliza DFSMS para gestionar los conjuntos
de datos, el resultado es una carga de trabajo reducida para los administradores de
almacenamiento y los administradores de bases de datos de DB2.
Creación de índices
Esta información describe cómo se utilizan los índices y qué debe considerarse al
crear índices.
| Los índices proporcionan un acceso eficaz a los datos. Cuando crea una tabla que
| contiene una clave primaria o una restricción exclusiva, debe crear un índice
| exclusivo para la clave primaria y para cada restricción exclusiva. DB2 marca la
También puede optar por utilizar índices debido a los requisitos de acceso.
Tipos de índices
Puede utilizar índices para mejorar el rendimiento del acceso a datos. Los distintos
tipos de índices tienen características diferentes que deben considerarse cuando se
crea un tipo determinado.
Cuando una consulta contiene una cláusula ORDER BY, DB2 busca índices que
cumplan el orden en la consulta. Para que DB2 pueda utilizar un índice para
acceder a datos ordenados, debe definir un índice en las mismas columnas tal
como se especifica en la cláusula ORDER BY.
Exploración de índice hacia adelante
Para que DB2 utilice una exploración de índice hacia adelante, el orden
debe ser exactamente igual que en la cláusula ORDER BY.
Exploración de índice hacia atrás
Para que DB2 utilice una exploración de índice hacia atrás, el orden debe
ser exactamente contrario al que se solicita en la cláusula ORDER BY.
No es necesario crear dos índices para las dos cláusulas ORDER BY. DB2 puede
utilizar el mismo índice para la exploración de índice hacia adelante y la
exploración de índice hacia atrás.
DB2 puede utilizar cualquiera de las claves de índice siguientes para cumplir el
orden:
v CODE, DATE DESC, TIME ASC
v CODE, DATE ASC, TIME DESC
v DATE DESC, TIME ASC
v DATE ASC, TIME DESC
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 que
varios empleados pueden ganar el mismo salario.
Consejo: En general, intente crear un índice que sea selectivo ya que cuanto más
selectivo es un índice, más eficaz es. Un índice eficaz contiene varias columnas, se
ordena en la misma secuencia que la sentencia de SQL y se utiliza con frecuencia
en sentencias de SQL.
La lista siguiente identifica algunos puntos que debería recordar al definir claves
de í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 debe
reflejarse en cada índice.
v Considere utilizar una clave compuesta, que puede resultar más útil que una
clave 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 igualdad
y están disponibles las columnas iniciales. Sin embargo, para comparaciones más
generales como, por ejemplo, A > valor AND B > valor, varios índices pueden
resultar más eficaces.
v Mejore el rendimiento utilizando índices.
Este tema explica los tipos de índices que se aplican a todas las tablas. Los índices
que se aplican únicamente a tablas particionadas se tratan aparte.
Conceptos relacionados
“Atributos de índices de tablas particionadas” en la página 225
Índices exclusivos
DB2 utiliza índices exclusivos para asegurarse de que no se almacenen valores de
clave idénticos en una tabla.
Cuando crea una tabla que contiene una clave primaria, debe crear un índice
exclusivo para dicha tabla en la clave primaria. DB2 marca la tabla como no
disponible hasta la creación explícita de los índices necesarios.
DB2 utiliza este índice para representar la inserción de una fila de la tabla EMP si
su valor de EMPNO coincide con el de una fila existente. La figura anterior ilustra
la relación entre cada valor de EMPNO en el índice y el número de página y fila
correspondientes. DB2 utiliza el índice para ubicar la fila para el empleado 000030,
por ejemplo, en la fila 3 de la página 1.
| Si una tabla tiene una clave primaria (como en el caso de la tabla DEPT), sus
| entradas deben ser exclusivas. DB2 impone esta exclusividad mediante la
| definició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úrese
de que ningún par de filas tenga el mismo valor de clave. Si DB2 encuentra un
valor 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 de
columna, puede utilizar la cláusula WHERE NOT NULL para asegurar que los
valores no nulos de la clave de índice sean exclusivos.
En algunos casos, es posible que no desee utilizar un índice exclusivo. Puede crear
un índice por omisión para mejorar el rendimiento del acceso a datos cuando los
valores de las columnas del índice no son necesariamente exclusivos.
Cuando crea un índice por omisión, DB2 le permite entrar valores duplicados en
una columna de clave.
Por 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);
Consejo: No cree este tipo de índice en tablas muy pequeñas puesto que es más
eficaz utilizar exploraciones de las tablas que utilizar índices.
Referencia relacionada
″CREATE INDEX″ (Consulta de DB2 SQL)
Índices no exclusivos
Puede utilizar índices no exclusivos para mejorar el rendimiento del acceso a datos
cuando los valores de las columnas del índice no son necesariamente exclusivos.
Para crear índices no exclusivos, utilice la sentencia SQL CREATE INDEX. Para
índices no exclusivos, DB2 permite a los usuarios y programas entrar valores
duplicados en una columna de clave.
Cuando una tabla tiene un índice de agrupación en clúster , una sentencia INSERT
hace 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 índice
de agrupación en clúster a menos que el usuario especifique explícitamente
CLUSTER al crear o modificar otro índice. Por ejemplo, si el usuario define
primero un índice exclusivo en la columna EMPNO de la tabla EMP, DB2 inserta
filas en la tabla EMP en el orden del número de identificación de empleado a
menos que el usuario defina explícitamente otro índice para que sea el índice de
agrupación en clúster.
Aunque una tabla puede tener varios índices, sólo un índice puede ser un índice
de agrupación en clúster. Si el usuario no define ningún índice de agrupación en
clú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 posible
que 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 al
proceso de un gran volumen de datos.
Ejemplo: Suponga que a menudo necesita reunir información sobre empleados por
departamento. En la tabla EMP puede crear un índice de agrupación en clúster en
la columna DEPTNO.
CREATE INDEX DEPT_IX
ON EMP
(DEPTNO ASC)
CLUSTER;
Como resultado, probablemente todas las filas para el mismo departamento estarán
cerca. Generalmente DB2 puede acceder a todas las filas para dicho departamento
en una única lectura. (La utilización de un índice de agrupación en clúster no
garantiza que todas las filas para el mismo departamento se almacenen en la
misma 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 algunas
páginas pueden contener filas para más de un departamento.)
Puede elegir no rellenar columnas de serie de longitud variable del índice hasta su
longitud máxima (valor por omisión) o puede elegir rellenarlas.
Sin embargo, la utilización de la cláusula NOT PADDED también puede tener las
desventajas 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 lugar
de comparar la clave entera cuando se rellenan las columnas a su longitud
máxima.
v DB2 almacena un campo con una longitud de 2 bytes adicional para cada
columna de longitud variable. Por lo tanto, si la longitud del relleno (hasta la
longitud máxima) es menor que o igual a 2 bytes, los requisitos de
almacenamiento en efecto podrían ser mayores para las columnas de longitud
variable que no se rellenan.
Consejo: Utilice la cláusula NOT PADDED para implementar acceso de sólo índice
si la aplicación normalmente accede a columnas de longitud variable.
Para controlar si las columnas de longitud variable se rellenan por omisión, utilice
la opción PAD INDEXES BY DEFAULT en el panel de instalación DSNTIPE.
Referencia relacionada
″CREATE INDEX″ (Consulta de DB2 SQL)
| Índice en expresión
| Un índice en expresión le permite crear un índice en una expresión general. Puede
| mejorar el rendimiento de las consultas si el optimizador elige el índice que se crea
| en la expresión.
| Utilice un índice en expresión cuando desee una evaluación eficaz de consultas que
| impliquen una expresión de columna. A diferencia de los índices simples, en los
| que la clave de índice consta de una concatenación de una o más columnas de
| tabla especificadas, los valores de clave de índice no son exactamente iguales que
| los valores de las columnas de tabla. Las expresiones especificadas transforman los
| valores.
| Compresión de índices
| Puede reducir la cantidad de espacio que ocupa un índice en disco comprimiendo
| el índice.
| A diferencia de los índices relacionales simples en los cuales las claves de índice
| están formadas por una o más columnas de tabla especificadas, un índice XML
| utiliza una expresión Xpath determinada para indexar vías de acceso y valores en
| documentos XML almacenados en una única columna XML.
| En un índice XML, en realidad tan solo se indexan los nodos de atributo, los nodos
| de texto o los nodos de elemento que coinciden con la expresión de vía de acceso
| XML. Debido a que un índice XML tan solo indexa los nodos que coinciden con la
| Xpath 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, se
| visualizan en el catálogo. Estos campos no están implicados en la comprobación de
| exclusividad para índices exclusivos.
| Cuando indexa una columna XML con XMLPATTERN, tan solo se indexan las
| partes del documento que cumplen la expresión de vía de acceso XML. Dado que
| varias partes del documento pueden cumplir con la Xpath especificada en
| XMLPATTERN, se pueden generar varias entradas de clave de índice e insertarlas
| en el índice durante la inserción de un único documento.
| Sólo se permite una especificación de índice XML para cada sentencia CREATE
| INDEX. Sin embargo, puede crear varios índices XML en una columna XML.
| Ejemplo 2: Puede crear dos índices XML con la misma expresión de vía de acceso
| utilizando diferentes tipos de datos para cada uno de ellos. Los índices XML
| soportan los tipos de datos VARCHAR y DECFLOAT. Esto le permite seleccionar
| có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én
| se 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, debe
| crear dos índices, uno para el tipo de datos VARCHAR y uno para el tipo de datos
| DECFLOAT. Los valores del documento se convierten al tipo de datos especificado
| para el índice.
Índices de particionamiento
En un particionamiento controlado por índices, un índice de particionamiento es un
índice que define el esquema de particionamiento de un espacio de tablas basado
en la cláusula PARTITION para cada partición de la sentencia CREATE INDEX. En
un particionamiento controlado por tabla, un índice de particionamiento es
opcional.
Ejemplo: Suponga que una tabla contiene códigos de área de estado y que
necesita crear un índice de particionamiento para secuenciar los códigos de área
entre particiones. Puede utilizar las siguientes sentencias de SQL para crear la tabla
y 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)),
...);
| Sólo puede crear un índice secundario particionado de datos en una tabla que
| resida en un espacio de tablas particionado. El índice secundario particionado de
| datos se particiona según el esquema de particionamiento de los datos
| subyacentes. Es decir, las entradas de índice que hacen referencia a datos de la
| partición física 1 de una tabla residen en la partición física 1 del índice, etc.
| Para definir un DPSI utilice la palabra clave PARTITIONED. Si las columnas más a
| la izquierda del índice que especifica con la palabra clave PARTITIONED coinciden
| con las columnas de particionamiento, DB2 tan solo crea el índice como un DPSI si
| la secuencia de clasificación de las columnas coincidentes es diferente.
Puede utilizar las siguientes sentencias de SQL para crear estos índices
secundarios:
CREATE INDEX DPSIIX2 ON AREA_CODES (STATE) PARTITIONED;
CREATE INDEX NPSIIX3 ON AREA_CODES (STATE);
Figura 43. Índice secundario particionado de datos e índice secundario no particionado en la tabla AREA_CODES
Creación de vistas
Al diseñar la base de datos, puede que necesite proporcionar a los usuarios
únicamente acceso a determinadas partes de los datos. Puede proporcionar acceso
a 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 que
liste 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 los
convenios de denominación que ha establecido al diseñar la base de datos
relacional.
Ejemplo: Suponga que desea crear una vista de la tabla DEPT. De las cuatro
columnas 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 en
que aparecen en la vista:
CREATE VIEW MYVIEW AS
SELECT DEPTNO,DEPTNAME,MGRNO
FROM DEPT;
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ón
no coinciden y las filas en las que los valores coinciden. Una unión interna incluye
sólo las filas en las que se devuelven valores coincidentes en las columnas de
unión.
Ejemplo: Suponga que desea crear la vista del ejemplo anterior, pero tan solo
desea incluir los departamentos que informan al departamento A00. Suponga
también que prefiere utilizar un conjunto diferente de nombres de columna. Utilice
la sentencia CREATE VIEW siguiente:
CREATE VIEW MYVIEWA00
(DEPARTMENT, MANAGER, EMPLOYEE_NAME, REPORT_TO_NAME)
AS
SELECT DEPTNO, MGRNO, LASTNAME, ADMRDEPT
FROM EMP, DEPT
WHERE EMP.EMPNO = DEPT.MGRNO
AND ADMRDEPT = 'A00';
Ejemplo: Suponga que define una vista, V1, del modo siguiente:
CREATE VIEW V1 AS
SELECT * FROM EMP
WHERE DEPT LIKE 'D
Suponga que un usuario tiene el privilegio INSERT sobre la vista V1. Un usuario
con los privilegios SELECT e INSERT puede insertar una fila para el departamento
E01, quizás erróneamente, pero no puede seleccionar la fila que se acaba de
insertar.
A continuación se proporcionan los pasos básicos para definir los LOB y mover los
datos a DB2:
1. Defina una columna del tipo LOB adecuado.
Cuando crea una tabla con una columna LOB, o modifica una tabla para añadir
una 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
define una columna ROWID, DB2 define automáticamente una columna
ROWID oculta. Defina sólo una columna ROWID, incluso si existen varias
columnas LOB en la tabla.
La columna LOB contiene información sobre el LOB, no sobre los datos del
LOB. La tabla que contiene la información del LOB se denomina tabla base, que
es diferente de la tabla base común. DB2 utiliza la columna ROWID para
localizar los datos del LOB. Puede definir la columna LOB y la columna
ROWID en una sentencia CREATE TABLE o ALTER TABLE. Si añade una
columna LOB y una columna ROWID a una tabla existente, debe utilizar dos
sentencias ALTER TABLE. Si añade la columna ROWID después de añadir la
columna LOB, la tabla tiene dos ROWID; una oculta y la que ha creado. DB2
asegura 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 y
una tabla se denomina tabla auxiliar. Si la tabla base no está particionada, debe
crear una espacio de tablas de LOB y una tabla auxiliar para cada columna
LOB. Si la tabla base está particionada, debe crear un espacio de tablas de LOB
y 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 cada
columna de LOB si la tabla base tiene tres particiones. Cree estos objetos
utilizando las sentencias CREATE LOB TABLESPACE y CREATE AUXILIARY
TABLE.
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 esta
tarea.
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 32
KB, 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 de
utilidad 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 a
que la aplicación necesita suficiente almacenamiento para contener el valor total
que va a la columna LOB.
Ejemplo: Suponga que necesita definir un espacio de tablas de LOB y una tabla
auxiliar para contener los currículums de los empleados. También necesita definir
un índice en la tabla auxiliar. Debe definir el espacio de tablas de LOB en la misma
base de datos que la tabla base asociada. Suponga que EMP_PHOTO_RESUME es
una tabla base. Esta tabla base contiene una columna LOB denominada
EMP_RESUME. Puede utilizar sentencias como ésta para definir el espacio de
tablas de LOB, el espacio de tablas auxiliar y el índice:
CREATE LOB TABLESPACE RESUMETS
IN MYDB
LOG NO;
COMMIT;
CREATE AUXILIARY TABLE EMP_RESUME_TAB
IN MYDB.RESUMETS
STORES EMP_PHOTO_RESUME
COLUMN EMP_RESUME;
CREATE UNIQUE INDEX XEMP_RESUME
ON EMP_RESUME_TAB;
COMMIT;
Cuando decida si va a definir una nueva base de datos para un nuevo conjunto de
objetos 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 único
mandato que nombre únicamente la base de datos. Por lo tanto, coloque un
conjunto de tablas relacionadas en la misma base de datos. (La misma base de
datos contiene todos los índices en dichas tablas.)
v Si desea mejorar la simultaneidad y la utilización de la memoria, mantenga el
número de tablas de una única base de datos relativamente pequeño (un
máximo de 20 tablas). Por ejemplo, con menos tablas DB2 realiza una
reorganización en un periodo de tiempo más corto.
v La existencia de bases de datos separadas permite ejecutar simultáneamente
definiciones de datos y también utiliza menos espacio para los bloques de
control.
Para crear una base de datos, utilice la sentencia CREATE DATABASE. Un nombre
para una base de datos es un identificador no calificado con un máximo de ocho
caracteres. Un nombre de base de datos de DB2 no debe ser igual que el nombre
de cualquier otra base de datos de DB2.
No es necesario definir una base de datos para que utilice DB2; para el desarrollo
y la prueba, puede utilizar la base de datos por omisión, DSNDB04. Esto significa
Las organizaciones que optan por imponer restricciones de referencia tienen como
mínimo una cosa en común. Necesitan asegurar que los valores de una columna de
una 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 tabla
PARTS identifica a un número de producto que equivale a un número de
producto válido en la tabla PRODUCTS.
v Una empresa desea asegurar que cada valor de DEPT en la tabla EMP equivale
a un valor de DEPTNO válido en la tabla DEPT.
Reglas de inserción
Las reglas de inserción para integridad de referencia se aplican a tablas padre y
dependientes.
Ejemplo: La empresa no desea tener una fila en la tabla PARTS a menos que el
valor de la columna PROD# de dicha fila coincida con un PROD# válido en la
tabla PRODUCTS. La tabla PRODUCTS tiene una clave primaria en PROD#. La
tabla PARTS tiene una clave foránea en PROD#. La definición de restricción
especifica una restricción RESTRICT. Cada fila insertada de la tabla PARTS debe
tener un PROD# que coincida con un PROD# en la tabla PRODUCTS.
Referencia relacionada
″Restricciones de referencia″ (Consulta de DB2 SQL)
Reglas de actualización
Las reglas de actualización para integridad de referencia se aplican a tablas padre y
dependientes.
Si falla una actualización de una tabla con una restricción de referencia, DB2
retrotrae todos los cambios realizados durante la actualización.
Referencia relacionada
″Restricciones de referencia″ (Consulta de DB2 SQL)
Reglas de supresión
Las reglas de supresión, que se aplican a tablas padre y dependientes, constituyen
una parte importante de la integridad de referencia de DB2.
Durante un diseño lógico, se expresan relaciones de varios con varios como si las
relaciones fueran bidireccionales y de varios valores. Durante un diseño físico, los
diseñadores de bases de datos determinan relaciones de varios con varios
utilizando una tabla asociativa. La relación entre empleados y proyectos es un
buen ejemplo de cómo se crea la integridad de referencia. Se trata de una relación
de varios con varios ya que los empleados trabajan en más de un proyecto y un
proyecto puede tener asignado más de un empleado.
Ejemplo: Para determinar la relación de varios con varios entre empleados (en la
tabla EMP) y proyectos (en la tabla PROJ), los diseñadores crean una nueva tabla
asociativa, EMP_PROJ, durante el diseño físico. EMP y PROJ son tablas padre de la
tabla hijo, EMP_PROJ.
| Cuando establece restricciones de referencia, debe crear tablas padre que tengan
| como mínimo una clave exclusiva y los índices correspondientes antes de definir
| las 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
Puede crear espacios de tabla en cualquier orden. Sin embargo, primero debe crear
los espacios de tablas para poder realizar los pasos siguientes. (Este procedimiento
utiliza 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 clave
primaria.
Ejemplo:
CREATE TABLE DEPT
.
.
.
PRIMARY KEY (DEPTNO);
2. Cree la tabla EMP y defina su clave primaria como EMPNO y su clave foránea
como DEPT. La cláusula FOREIGN KEY de la sentencia CREATE TABLE define
la 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″ (DB2
Administration Guide)
Recomendación: Para reglas que implican únicamente una condición de los datos,
considere la utilización de restricciones de referencia y restricciones de
comprobación en lugar de desencadenantes.
Las funciones definidas por el usuario externas pueden devolver un valor único o
una 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
v Las funciones externas que devuelven una tabla se denominan funciones de tabla
definidas por el usuario.
Las funciones definidas por el usuario como, por ejemplo, funciones u operaciones
incorporadas, permiten la manipulación de tipos diferenciados.
Los dos ejemplos siguientes muestran cómo definir y utilizar una función definida
por el usuario y un tipo diferenciado.
Ejemplo 1: Suponga que define una tabla denominada EUROEMP. Una columna
de esta tabla, EUROSAL, tiene un tipo diferenciado de EURO, basado en
DECIMAL(9,2). No puede utilizar la función AVG incorporada para buscar el valor
medio de EUROSAL puesto que AVG opera únicamente en tipos de datos
incorporados. Sin embargo, puede definir una función AVG que tiene como fuente
la función AVG incorporada y acepta argumentos de tipo EURO:
CREATE FUNCTION AVG(EURO)
RETURNS EURO
SOURCE SYSIBM.AVG(DECIMAL);
Ejemplo 2: A continuación, puede utilizar esta función para buscar el valor medio
de la columna EUROSAL:
SELECT AVG(EUROSAL) FROM EUROEMP;
Los dos ejemplos siguientes muestran cómo definir y utilizar una función definida
por el usuario externa.
Los dos ejemplos siguientes muestran cómo definir y utilizar una función de tabla
definida por el usuario.
Ejemplo 5: Puede definir y escribir una función de tabla definida por el usuario
que 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. Esta
función devuelve una tabla de información sobre libros relacionados con un tema
especificado. La definición es similar a la siguiente:
| CREATE FUNCTION BOOKS (VARCHAR(40))
| RETURNS TABLE (TITLE_NAME VARCHAR(25),
| AUTHOR_NAME VARCHAR(25),
Objetivos de rendimiento
La comprensión de los objetivos de rendimiento establecidos puede ayudarle a
realizar las selecciones adecuadas cuando trabaje con DB2. Aunque los objetivos de
rendimiento varían para cada empresa, el modo en que su sitio define un buen
rendimiento de DB2 depende de las necesidades y prioridades del proceso de
datos.
En todos los casos, los objetivos de rendimiento deben ser realistas, comprensibles
y 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 los
requisitos para los recursos, entre los que se incluye la velocidad del procesador, la
cantidad de almacenamiento, software adicional, etc.
Ejemplo: Un objetivo podría ser que el 90% de todos los tiempos de respuesta en
una red local durante un turno principal esté por debajo de dos segundos. Otro
objetivo 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 son
considerablemente superiores.)
En primer lugar, obtenga una descripción de la actividad de las tareas, de las clases
1, 2 y 3 del rastreo de contabilidad. DB2 proporciona un recurso de rastreo que le
permite supervisar y recopilar información detallada sobre DB2, que incluye
información de rendimiento y estadística. A continuación, céntrese en actividades
específicas, tales como procesos de aplicaciones específicos o un intervalo de
tiempo 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
| DB2 Performance Expert tiene ofertas que dan soporte a DB2 for z/OS, System z y
| entornos multiplataforma (Microsoft Windows, HP-UX, Sun’s Solaris, IBM AIX y
| Linux).
Conceptos relacionados
“Herramientas que ayudan a mejorar el rendimiento de las consultas” en la
página 263
“Rol de las agrupaciones de almacenamientos intermedios en la puesta en
antememoria de datos”
Información relacionada
″Utilización de herramientas para supervisar el rendimiento″ (DB2 Performance
Monitoring and Tuning Guide)
Para evitar E/S de disco, puede utilizar páginas actualizadas y disponibles que
contengan datos.
Cuando los datos del almacenamiento intermedio cambian, finalmente estos datos
deben volverse a escribir en disco. Debido a que DB2 no necesita escribir los datos
en disco inmediatamente, los datos pueden permanecer en la agrupación de
almacenamientos intermedios para otras utilizaciones. Los datos permanecen en la
agrupación de almacenamientos intermedios hasta que DB2 decide utilizar el
espacio para otra página. Hasta este momento, las aplicaciones pueden leer o
cambiar los datos sin ninguna operación de E/S de disco.
DB2 Buffer Pool Analyzer for z/OS ayuda a los administradores de bases de datos
a gestionar las agrupaciones de almacenamientos intermedios más eficazmente al
proporcionar información sobre el comportamiento actual de la agrupación de
almacenamientos intermedios y al utilizar simulación para anticipar el
comportamiento futuro. Utilizando esta herramienta puede aprovechar las ventajas
siguientes:
v Recopilación de datos sobre la actividad de la agrupación de almacenamientos
intermedios virtual
v Informe completo de la actividad de la agrupación de almacenamientos
intermedios
v Utilización de la agrupación de almacenamientos intermedios simulada
v Informes y resultados de simulación
v Análisis experto disponible mediante un asistente de fácil utilización
Datos desviados
Puede reequilibrar los datos cambiando los valores de clave límite de todas o la
mayoría de las particiones. La clave límite es el valor más alto de la clave de índice
para 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én
disponibles en un momento determinado.
Ejemplo: Suponga que la partición 9 contiene datos para el año 2002 en el cual el
volumen de ventas fue bajo y la partición 10 contiene datos para el año 2003 en el
cual volumen de ventas fue alto. Como resultado, decide cambiar el límite entre las
particiones 9 y 10. Utilizando el método más manual ALTER TABLE, puede
cambiar el límite del modo siguiente:
ALTER TABLE ALTER PARTITION 9 ENDING AT ("03/31/2003");
DB2 utiliza bloqueos en los datos del usuario. El principal motivo para utilizar
bloqueos es la integridad o la exactitud de los datos. Sin bloqueos, un usuario
podría recuperar un elemento de datos específico mientras otro usuario puede
estar cambiando esos datos. El resultado sería que el primer usuario recuperaría
datos inexactos. En el entorno DB2 for z/OS, que incluye cantidades elevadas de
datos y un gran número de usuarios y transacciones, la probabilidad de datos
inexactos es inaceptable. Por lo tanto, DB2 for z/OS proporciona bloqueos amplios
para asegurar la integridad de los datos.
Este caso de ejemplo no incluye bloqueos. Muestra que Frank ha tomado una
decisión de programa incorrecta. Como resultado, los datos de la empresa de la
base de datos pueden ser inexactos.
Cuando el caso de ejemplo incluye bloqueos, Frank lee los datos correctos y, por lo
tanto, puede tomar la decisión de programa correcta. Como resultado, los datos de
la empresa de la base de datos son exactos.
En este caso de ejemplo, Kathy quiere leer los mismos datos dos veces. Ningún
otro programa ni usuario puede cambiar los datos entre las dos lecturas.
Si Kathy no bloquea los datos entre los dos procesos de lectura, otro usuario puede
actualizar la tabla EMP entre los dos procesos de lectura. Esta actualización puede
hacer que Kathy obtenga un resultado incorrecto.
Los diseñadores de bases de datos pueden realizar las acciones generales siguientes
para aumentar la simultaneidad sin comprometer la integridad de los datos:
Una vía de acceso es la vía que DB2 utiliza para localizar datos que se especifican en
sentencias de SQL. Una vía de acceso puede ser indexada o secuencial.
Para cada acceso a una única tabla, EXPLAIN indica si DB2 utiliza acceso de índice
o 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 leer
las páginas. Para uniones de tablas, EXPLAIN indica el método y tipo de unión, el
orden en que DB2 une las tablas y las ocasiones en que clasifica filas y los motivos.
A medida que gana experiencia al trabajar con DB2, puede utilizar la tabla de
planes para proporcionar sugerencias de optimización a DB2 que influyan en la
selecció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 and
Tuning Guide)
| IBM Optimization Service Center for DB2 for z/OS (DB2 OSC) es una herramienta
| de estación de trabajo para supervisar y ajustar las sentencias de SQL que se
| ejecutan 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 y
| recibir consejo experto sobre las sentencias que puede reunir para mejorar el
| rendimiento de una sentencia individual o de toda una carga de trabajo.
| También puede utilizar DB2 OSC para diseñar gráficamente sugerencias de plan
| para sugerir mejores vías de acceso a DB2 y desplegar estas sugerencias de plan en
| el subsistema DB2 para z/OS.
| DB2 OSC se ofrece en DB2 Accessories Suite for z/OS. Puede utilizar DB2 OSC en
| una estación de trabajo Windows 2000, Windows XP o Windows 2003 que tenga
| instalado DB2 Connect Enterprise Edition o DB2 Connect Personal Edition, Versión
| 8.1.7.
| IBM DB2 Optimization Expert for z/OS es una herramienta de estación de trabajo
| basada en información experta para la supervisión y el ajuste de sentencias de SQL
| y cargas de trabajo. Además de Optimization Service Center, la creación de
| Optimization Expert amplía las herramientas de ajuste con consejeros basados en
| información experta que pueden recomendarle cómo puede reescribir sentencias de
| SQL, crear índices o reconfigurar recursos del sistema para mejorar el rendimiento
| de sentencias de SQL individuales y de cargas de trabajo completas que se ejecutan
| en el subsistema DB2 para z/OS.
EXPLAIN de DB2
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 de
utilidad depende de hasta qué punto necesita que el catálogo esté actualizado. Si
las 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ás
provechoso cuando se ejecuta en los objetos siguientes:
v Espacios de tablas que contienen tablas a las que se accede con frecuencia
v Tablas que están implicadas en operaciones de clasificación
v Tablas con muchas filas
v Tablas consultadas por sentencias SELECT que incluyen muchos argumentos de
búsqueda
v Tablas con índices
Un índice proporciona un acceso eficaz a los datos. DB2 utiliza diferentes tipos de
exploraciones de índice, cada uno de los cuales afecta de forma diferente al
rendimiento. Algunas veces DB2 puede evitar una clasificación utilizando un
índice.
Otros tipos de exploraciones de índice que DB2 puede utilizar son exploraciones
de í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; DB2
tan 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 índice
y sus filas de datos. Este tipo de exploración es menos probable que proporcione
una vía de acceso eficaz que una exploración de índice coincidente.
En este caso, cada fila de la tabla T debe examinarse para determinar si el valor de
C1 coincide con el valor proporcionado.
Cuando una aplicación realiza una operación de confirmación, debe emitir otra
sentencia PREPARE si esta sentencia de SQL debe volverse a ejecutar. Para una
sentencia SELECT, la posibilidad de declarar un cursor WITH HOLD proporciona
algunas ventajas pero requiere que el cursor esté abierto en el punto de
DB2 Interactive
DB2 para z/OS DB2 proporciona paneles de Interactive System Productivity
Facility (ISPF) que se pueden utilizar para realizar de forma interactiva la mayor
parte de las tareas de DB2. Estos paneles forman un recurso de DB2 denominado
DB2 Interactive (DB2I).
Tareas relacionadas
Mandatos de DB2
Puede utilizar mandatos para realizar las tareas necesarias para controlar y
mantener el subsistema DB2.
Para entrar un mandato de DB2 desde una consola z/OS autorizada, utilice un
prefijo de mandato de subsistema (que contenga entre uno y ocho caracteres) al
principio del mandato. El prefijo de mandato de subsistema por omisión es -DSN1,
que puede cambiar al instalar o migrar DB2.
Además de los mandatos de DB2, es posible que necesite utilizar otros tipos de
mandatos 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 conexiones
v Mandatos de IMS, que controlan las conexiones de IMS y le permiten iniciar y
detener conexiones con DB2 y visualizar la actividad de las conexiones
| v Mandatos de TSO, que le permiten realizar tareas de TSO
v 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 un
prefijo de mandato de subsistema (que contenga entre 1 y 8 caracteres) al principio
del mandato. El prefijo de mandato de subsistema por omisión es -DSN1, que
puede cambiar al instalar o migrar DB2.
Los programas de utilidad fuera de línea se ejecutan como trabajo por lotes
independientes de DB2. Para ejecutar programas de utilidad fuera de línea, utilice
z/OSJCL (lenguaje de control de trabajos). DB2 interactive (DB2I) proporciona un
modo simple de preparar el lenguaje de control de trabajos (JCL) para estos
trabajos 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 realizar
un programa de utilidad concreto. Para ejecutar un trabajo de programa de
utilidad, especifique la sentencia de control en un conjunto de datos que utilice
para la entrada. A continuación, invoque DB2I y seleccione UTILITIES en DB2I
Primary Option Menu. En algunos casos, puede que necesite otros conjuntos de
datos; por ejemplo, el programa de utilidad LOAD necesita un conjunto de datos
de entrada que contenga los datos que se deben cargar.
| También puede utilizar las siguientes herramientas de IBM DB2 para gestionar
| programas de utilidad:
DB2 Automation Tool
Herramienta que permite que los administradores de bases de datos se
centren en más en la optimización de base de datos, automatiza las tareas
de mantenimiento y proporciona informes históricos estadísticos para
análisis de tendencias y previsiones.
DB2 High Performance Unload
Programa de utilidad de DB2 de alta velocidad que descarga tablas de DB2
desde un espacio de tablas o una copia de seguridad de la base de datos.
DB2 Cloning Tool
Herramienta que clona de forma rápida un subsistema DB2, creando el
equivalente de un entorno de producción que se puede utilizar para probar
nuevas características y funciones.
Referencia relacionada
″Introducción a los programas de utilidad de DB2″ (DB2 Utility Guide and
Reference)
Información relacionada
Herramientas de DB2 en ibm.com
Autorización
| Seguridad
Puede utilizar RACF o z/OS Security Server para autenticar los usuarios que
acceden a una base de datos de DB2.
Conceptos relacionados
“DB2 y z/OS Security Server” en la página 56
Por ejemplo, cuando DB2 se ejecuta bajo TSO y utiliza el ID de inicio de sesión de
TSO como ID de autorización primario de DB2, dicho ID se verifica con una
contraseña cuando el usuario inicia la sesión.
Seguridad de Kerberos
La figura siguiente sugiere varias rutas desde un proceso hasta datos de DB2 con
controles en cada ruta.
Autoridades administrativas
Con la seguridad de varios niveles puede definir la seguridad para objetos de DB2
y realizar otras comprobaciones, incluidas las comprobaciones de seguridad de
nivel inferior. Las comprobaciones de seguridad de nivel inferior controlan qué
usuarios tienen autorización para ver, modificar o realizar acciones en filas de
tablas. Con la seguridad de varios niveles no necesita utilizar vistas especiales ni
variables de base de datos para controlar la seguridad en el nivel inferior.
Puede crear una etiqueta de seguridad para una fila de tabla definiendo una
columna de la sentencia CREATE TABLE o ALTER TABLE como la etiqueta de
seguridad. Cuando se accede a cada fila, DB2 utiliza RACF para comparar la
etiqueta de seguridad de la fila y el usuario para determinar si el usuario tiene la
autorización adecuada para acceder a la fila. Las comprobaciones de seguridad de
nivel 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 de
etiqueta de seguridad o ejecuta una petición de programa de utilidad para datos
de una fila protegida mediante una etiqueta de seguridad.
Información relacionada
″Implementación de seguridad de varios niveles con DB2″ (DB2 Administration
Guide)
Ejemplo: Suponga que desea que un ID concreto como, por ejemplo MATH110,
pueda extraer determinados datos de la tabla EMP para una investigación
estadística. Para ser exactos, suponga que desea permitir el acceso a datos como los
siguientes:
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 1996
v Sólo para empleados con un nivel de formación 14 o superior
v Sólo para empleados cuya ocupación no es MGR o PRS
Puede crear y nombrar una vista que muestre exactamente esta combinación de
datos:
| CREATE VIEW SALARIES AS
| SELECT HIREDATE, JOB, EDL, SALARY, COMM
| FROM EMP
| WHERE HIREDATE> '1996-12-15' AND EDLEVEL>= 14
| AND JOB IS DISTINCT FROM 'MGR' AND JOB IS DISTINCT FROM 'PRS';
Los ejemplos siguientes muestran cómo otorgar algunos privilegios del sistema,
utilizar privilegios y privilegios de tablas.
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 usuario
NATZ.
v REVOKE ALL ON TABLE EMP FROM KWAN,ALONZO;
Esta sentencia revoca todos los privilegios sobre la tabla EMP de los usuarios
KWAN y ALONZO.
DB2 proporciona métodos amplios para recuperar datos tras errores, anomalías o
incluso 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 utilizar
funciones de recuperación para realizar una copia de seguridad de un subsistema
DB2 o un grupo de compartimiento de datos completos.
Los problemas específicos que necesitan recuperación pueden ser desde un error
inesperado del usuario hasta la anomalía de un subsistema entero. Puede
producirse un problema en el hardware o software; los daños pueden ser físicos o
ló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 un
subsistema conectado. En ambos casos, DB2 se reinicia de forma automática,
restituye los cambios no confirmados y finaliza el proceso de los cambios
confirmados.
Utilización de registros
El registro de DB2 registra los cambios en los datos y los sucesos significativos a
medida que se producen. DB2 escribe cada registro del archivo de registro en el
registro activo, que es un conjunto de datos de disco. Cuando el conjunto de datos
de registro activo se llena, DB2 copia su contenido en el registro de archivado, que
es un conjunto de datos de disco o cinta. Este proceso se denomina descarga.
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 registro
activo. Con el registro cronológico dual, DB2 mantiene dos copias idénticas de los
También puede utilizar las siguientes herramientas de IBM DB2 e IMS en distintas
situaciones de copia de seguridad y recuperación:
IBM Application Recovery Tool for IMS and DB2 Databases
Herramienta que simplifica y coordina la recuperación de datos de IMS y
Reinicio de DB2
Una clave de la idea de alta disponibilidad consiste en ser capaz de reiniciar
rá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 puede
ejecutar en paralelo.
v Puede registrar DB2 en Automatic Restart Manager de OS/390. Este recurso
reinicia automáticamente DB2 en caso de que se detenga como resultado de una
anomalía.
Información relacionada
″Operación y recuperación″ (DB2 Administration Guide)
DB2 utiliza un proceso de confirmación en dos fases con una amplia variedad de
recursos como, por ejemplo, bases de datos relacionales a las que se accede
mediante DRDA. El soporte de DB2 para confirmación en dos fases también se
puede utilizar desde diferentes entornos de aplicaciones. DB2 puede trabajar con
otros entornos de gestión de transacciones z/OS, tales como aplicaciones IMS y
CICS y en entornos UNIX, aplicaciones Microsoft Windows y WebSphere
Application Server.
Utilizando la confirmación en dos fases puede actualizar una tabla y datos de DB2
de bases de datos no DB2 dentro de la misma transacción. El proceso está bajo el
control de uno de los subsistemas denominado coordinador. Los otros sistemas
implicados son los participantes. Por ejemplo, IMS, CICS o RRS siempre es el
coordinador en interacciones con DB2 y DB2 siempre es el participante. DB2
siempre es el coordinador en interacciones con TSO y, en este caso, controla por
completo el proceso de confirmación. En interacciones con otros DBMS, incluidos
otros subsistemas DB2, los subsistemas DB2 locales pueden ser el coordinador o un
participante.
Conceptos relacionados
“Cómo se coordinan las actualizaciones entre sistemas distribuidos” en la
página 315
Información relacionada
″Operación y recuperación″ (DB2 Administration Guide)
La web ha cambiado el modo en que las empresas dirigen sus negocios. Las
corporaciones tanto grandes como pequeñas, utilizan sitios web para describir los
servicios y productos que proporcionan. Las empresas de entrega permiten a los
clientes realizar un seguimiento del progreso de sus entregas en línea. Los clientes
de bancos pueden ver sus cuentas e iniciar transacciones en línea cómodamente
desde su casa. Las empresas distribuyen información sobre los programas, las
políticas y las noticias de la empresa utilizando intranets de la empresa. Los
accionistas individuales realizan pedidos de compra y venta en línea mediante sus
corredurías cada día. La venta al por menor en línea sigue aumentando su
popularidad. Los compradores utilizan software especializado para los siguientes
tipos de transacciones entre empresas:
v Seguimiento de la actividad de adquisición
v Selección inteligente de proveedores preferidos
v Inicio electrónico de transacciones entre empresas con proveedores
Estos tan solo son unos cuantos ejemplos de las numerosas formas en que las
empresas se benefician de la gran utilidad de la web transformándose a sí mismos
en 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 una
vez acabado. Del mismo modo, antes de crear o trabajar en una aplicación de
negocio bajo demanda, debería tener un alto nivel de conocimiento del entorno
global. También debería tener información sobre los distintos productos y
herramientas de dicho entorno. Probablemente el desarrollo y la implementación
de la aplicación implica productos y herramientas en más de un sistema operativo
(por ejemplo, los sistemas operativos z/OS, Linux y Windows).
Los clientes manejan la lógica de presentación, que controla el modo en que los
usuarios interactúan con la aplicación. En algunos casos, el cliente valida la entrada
proporcionada por el usuario. Las aplicaciones web a veces integran applets Java
en la lógica del cliente para mejorar el nivel de presentación.
Applet
Programa Java que forma parte de una página HMTL (Hypertext Markup
Language). (HTML es el método estándar para presentar datos web a los
usuarios.) Los applets funcionan con navegadores habilitados para Java
como, por ejemplo, Microsoft Internet Explorer; se cargan cuando se
procesa la página HTML.
En muchos casos, el cliente y el servidor para una aplicación web están en sistemas
operativos diferentes. Por ejemplo, el cliente puede estar en un sistema operativo
basado en estación de trabajo como, por ejemplo, Windows XP o UNIX. El servidor
para la aplicación también puede estar en un servidor basado en estación de
trabajo o puede estar en un servidor empresarial como, por ejemplo, z/OS. La
figura siguiente muestra la conectividad de dos niveles entre un cliente basado en
estación de trabajo y ambos tipos de servidores.
XML y DB2
Puede utilizar XML en una base de datos de DB2. XML, que significa Extensible
Markup Language, es un lenguaje de códigos basado en texto. Su estilo es similar
al de HTML, salvo que los usuarios de XML pueden definir sus propios códigos.
Puede imaginar HTML como un medio para comunicar información entre sistemas
y personas. Puede imaginar XML como un medio para comunicar información
entre sistemas. Puede convertir XML en HTML para que las personas puedan ver
la información.
Información relacionada
″Programación para XML″ (DB2 for z/OS XML Guide)
Existen vocabularios de XML para industrias específicas como ayuda para que las
organizaciones 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 resultado
transacciones entre empresas más eficaces y con mayor rendimiento.
Información relacionada
″Programación para XML″ (DB2 for z/OS XML Guide)
| Para integrar XML con datos de DB2 puede utilizar las funciones de publicación de
| SQL/XML y los recursos de DB2 XML Extender que están específicamente
| diseñados para trabajar con DB2. El soporte de XML nativo, o pureXML, en DB2
| proporciona unas posibilidades versátiles para gestionar los datos XML. DB2
| almacena y procesa XML en su formato jerárquico inherente, evitando de este
| modo las limitaciones de rendimiento y flexibilidad que se producen cuando se
| almacena XML como texto en varios CLOB o se correlaciona con tablas
| relacionales.
Los servicios web son conjuntos de funciones empresariales que las aplicaciones u
otros servicios web pueden invocar a través de Internet. Un servicio web realiza un
servicio útil en nombre de un peticionario. Dicho servicio puede incluir varias
empresas e industrias.
Las funciones que los servicios web realizan pueden ser desde peticiones simples a
procesos empresariales complicados. Puede definir un servicio web básico
utilizando sentencias de SQL estándar y procedimientos almacenados de DB2 XML
Extender.
Con la utilización de XML para intercambio de datos, los servicios web dan
soporte a una interacción entre un proveedor de servicios y un peticionario de
El método primario que DB2 utiliza para acceder a los datos de un servidor
remoto se basa en DRDA (Distributed Relational Database Architecture).
Los ejemplos siguientes muestran sentencias que se pueden utilizar para acceder a
datos distribuidos.
Ejemplo 1: Puede escribir sentencias como las siguientes para acceder a los datos
de 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 misma
tarea:
SELECT * FROM CHICAGO.IDEMP01.EMP
WHERE EMPNO = '000030';
Con cualquier método que utilice, deberá vincular los DBRM para las sentencias de
SQL 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 and
Servers)
Ejemplo: Suponga que una aplicación incluye un bucle de programa que lee un
nombre de ubicación, se conecta a la ubicación y ejecuta una sentencia INSERT. La
aplicación inserta un nuevo nombre de ubicación en una variable de lenguaje
principal, :LOCATION_NAME, y ejecuta las sentencias siguientes:
Las variables de lenguaje principal coinciden con la declaración para la tabla PROJ.
Puede utilizar nombres en tres partes para acceder a datos de una ubicación
remota, incluidas tablas y vistas. Con la utilización de un nombre en tres partes, o
un alias, un programa de aplicación conecta implícitamente a cada servidor. Con
estos métodos de acceso, el servidor de bases de datos controla dónde se ejecuta la
sentencia.
Ejemplo: Este ejemplo muestra cómo una aplicación utiliza un nombre en tres
partes en sentencias INSERT, PREPARE y EXECUTE. Suponga que la aplicación
obtiene un nombre de ubicación, ’SAN_JOSE’. A continuación, crea la siguiente
serie de caracteres:
INSERT INTO SAN_JOSE.IDP101.PROJ VALUES (?,?,?,?,?)
Las variables de lenguaje principal coinciden con la declaración para la tabla PROJ.
Un método alternativo útil consiste en utilizar alias al crear serie de caracteres que
se convierten en sentencias preparadas, en lugar de utilizar nombres completos en
tres partes.
Información relacionada
″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters and
Servers)
Alias
Un alias es un sustituto para el nombre en tres partes de una tabla o vista. Un alias
puede estar definido en un servidor local y puede hacer referencia a una tabla o
vista que esté en el servidor actual o en un servidor remoto. El nombre de alias se
puede utilizar dondequiera que se pueda utilizar el nombre de tabla o el nombre
de vista para hacer referencia a la tabla o vista en una sentencia de SQL.
El objeto para el cual está definiendo un alias no es necesario que exista al ejecutar
la sentencia CREATE ALIAS. Sin embargo, el objeto debe existir cuando se ejecute
una sentencia que haga referencia al alias.
Una vez creado un alias, cualquier usuario con autoridad sobre el objeto al que
hace referencia el alias puede utilizar este alias. Un usuario no necesita ningún
privilegio separado para utilizar el alias.
Puede utilizar siempre nombres en tres partes para hacer referencia a datos de otro
servidor remoto. La ventaja de los nombres en tres partes es que permiten ejecutar
código de aplicaciones en diferentes ubicaciones de DB2 sin la sobrecarga adicional
del 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 modificar
el código de aplicaciones o consultas interactivas. Sin embargo, si mueve una tabla
o vista, debe descartar los alias que hacen referencia a estas tablas o vistas. A
continuació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 and
Servers)
JDBC, SQLJ y ODBC utilizan métodos diferentes para vincular paquetes que
implican menos preparación para acceder a un servidor de z/OS.
Ejemplo: Suponga que existen cinco paquetes y que desea invocar el primer
paquete en el servidor. Los nombres de paquete son SCHEMA1.PKG1,
SCHEMA2.PKG2, SCHEMA3.PKG3, SCHEMA4.PKG4 y SCHEMA5.PKG5. En
lugar de emitir una sentencia SET CURRENT PACKAGESET para invocar cada
paquete, puede utilizar una única sentencia SET si el servidor da soporte al
registro 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
Los entornos de aplicaciones que utilizan DB2 Connect para acceder de forma
remota a DB2 pueden utilizar los siguientes productos de gestor de transacciones:
v WebSphere Application Server
v CICS
v IBM TXSeries (CICS y Encina)
v WebSphere MQ
v 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ándar
La interfaz XA es una interfaz bidireccional entre un gestor de transacciones y
gestores que recursos que proporciona actualizaciones coordinadas a través de
una transacción distribuida. The Open Group ha definido protocolos XA
basándose en la especificación Distributed TP: The XA Specification.
Ejemplo: Puede actualizar una base de datos de IMS y una tabla de DB2 dentro de
la misma unidad de trabajo. Suponga que se produce una anomalía en algún
sistema o comunicación mientras se confirma el trabajo en IMS y en DB2. En este
caso, los dos programas restauran los dos sistemas en un punto coherente cuando
se reanuda la actividad.
DB2 coordina las confirmaciones incluso cuando una conexión utiliza confirmación
en una fase en una transacción distribuida. Sin embargo, en este caso sólo una
ubicación puede realizar una actualización.
Conceptos relacionados
“Actualizaciones coordinadas para mantener la coherencia entre servidores” en
la página 292
Información relacionada
″Programación para DRDA″ (DB2 Reference for Remote DRDA Requesters and
Servers)
Cuando accede a una mezcla de sistemas, algunos de los cuales pueden ser
restringidos, puede realizar las acciones siguientes para asegurar la integridad de
los datos:
v Leer desde cualquiera de los sistemas en cualquier momento.
v Actualizar cualquiera de los sistemas muchas veces en una unidad de trabajo.
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 puede
eliminar datos no deseados en el servidor remoto.
v >Utilice FOR READ ONLY. Por ejemplo, recuperar miles de filas como una serie
continua es razonable. Enviar un mensaje separado para cada una puede ser
considerablemente más lento.
| v Si es posible, no vincule planes de aplicación y paquetes con ISOLATION(RR). Si
| la aplicación no necesita volver a consultar las filas que lee una vez, otro nivel
| de aislamiento podría reducir la contención de bloqueos y la sobrecarga de
| mensajes 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 de
| consultas dinámicas que no contienen marcadores de parámetros. Sin embargo,
| se necesitan marcadores de parámetros para poner en antememoria sentencias
| dinámicas de forma eficaz.
Cuando un peticionario de DB2 encuentra una sentencia PREPARE para una
consulta de este tipo, considera con anticipación que la aplicación abrirá un
cursor. Por lo tanto, el peticionario envía al servidor un único mensaje que
contiene una petición combinada de PREPARE, DESCRIBE y OPEN. Un servidor
Captación en bloque
DB2 utiliza captación en bloque para agrupar las filas que una consulta de SQL
recupera en un “bloque” de filas tan grande como quepa en un almacenamiento
intermedio de mensajes y, a continuación, transmite el bloque a través de la red. Al
enviar 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. El
tamaño de un bloque de consulta DRDA en z/OS está limitado a 32 KB.
Para utiliza una captación en bloque, DB2 debe determinar que el cursor no se
utiliza para actualizar ni suprimir. Puede indicar esto en el programa añadiendo la
cláusula FOR READ ONLY a la consulta. Si no especifica FOR READ ONLY, la
utilización de captación en bloque por parte de DB2 depende de cómo se define el
cursor.
Crecimiento escalable
A medida que aumenta el proceso de datos en un entorno DB2, las necesidades de
proceso pueden superar la capacidad de un único sistema. El compartimiento de
datos puede solucionar esta restricción.
Puede beneficiarse de todas estas ventajas, tanto si las cargas de trabajo son para
proceso de transacciones en línea (OLTP) o para una mezcla de OLTP, proceso por
lotes y consultas.
Figura 54. Cómo permite el crecimiento el compartimiento de datos. Puede mover parte de la carga de trabajo de
DB2 existente a otro complejo central de procesadores (CPC).
Figura 55. Consulta procesada en paralelo por los miembros de un grupo de compartimiento de datos. Diferentes
miembros de DB2 procesan diferentes particiones de los datos.
Configuraciones flexibles
El compartimiento de datos de DB2 le permite configurar el entorno del sistema
con mucha más flexibilidad.
Para configurar una configuración de combinación, separe tanto como sea posible
los datos del soporte de decisiones de los datos de operación. Las agrupaciones de
agrupación de almacenamientos intermedios, los discos y las unidades de control
que utiliza en el sistema de soporte de decisiones deberían estar separados de los
que utiliza en el sistema de operación. Esta separación minimiza
considerablemente cualquier impacto negativo en el rendimiento del sistema de
operación.
DB2 detecta dinámicamente el interés interno de DB2, lo que significa que DB2
únicamente puede invocar protocolos de compartimiento de datos entre sistemas
cuando los datos se comparten activamente para lectura-escritura entre miembros.
DB2 puede detectar cuando los datos no se comparten activamente para
lectura-escritura entre sistemas. En estos casos, los protocolos de bloqueo o de
puesta en antememoria del compartimiento de datos no son necesarios, lo que
puede obtener como resultado un mejor rendimiento.
Puede que esté interesado en saber qué sucede en una página de datos cuando
experimenta un proceso de puesta al día. La versión más reciente de la página de
datos aparece sombreada en las ilustraciones. En este caso de ejemplo también se
supone que la agrupación de almacenamientos intermedios de grupo se utiliza
para poner en antememoria únicamente los datos cambiados (el comportamiento
por omisión) y que se duplican para obtener alta disponibilidad. La duplicación es
la capacidad de escribir datos para dos instancias de una estructura de agrupación
de almacenamientos intermedios de grupo: una agrupación primaria de
almacenamientos intermedios de grupo y una agrupación secundaria de almacenamientos
intermedios de grupo.
Suponga, tal como muestra la figura siguiente, que una aplicación emite una
sentencia UPDATE desde DB2A y que los datos no residen en la agrupación de
almacenamientos intermedios del miembro ni en la agrupación de
almacenamientos intermedios de grupo. En este caso, DB2A debe recuperar los
datos del disco y actualizar los datos en su propia agrupación de almacenamientos
intermedios. De forma simultánea, DB2A obtiene los bloqueos apropiados para
impedir que otro miembro actualice los mismos datos al mismo tiempo. Una vez
que la aplicación ha confirmado la actualización, DB2A libera los bloqueos
correspondientes. La página de datos cambiados permanece en la agrupación de
almacenamientos intermedios de DB2A. Debido a que ningún otro subsistema DB2
comparte la tabla en este momento, DB2 no utiliza proceso de compartimiento de
datos para la actualización de DB2A.
A continuación, como muestra la figura siguiente, cuando DB2A necesita leer los
datos, la página de datos de su propia agrupación de almacenamientos intermedios
no es válida. Por lo tanto, lee la copia más reciente de la agrupación primaria de
almacenamientos intermedios de grupo.
Para obtener la máxima disponibilidad debe tener como mínimo dos recursos de
acoplamiento. Uno de ellos debe estar físicamente aislado. El recurso de
acoplamiento aislado debe residir en un CPC que no contenga ningún miembro de
DB2 que esté conectado a estructuras de dicho recurso de acoplamiento. Con dos
recursos de acoplamiento como mínimo se puede evitar un único punto de
anomalía.
Glosario 359
| bloque sólo es aplicable a cursores que no DSN y proporciona un mayor control
| son de conjunto de filas que no actualizan sobre el entorno de ejecución. Compárese
| los datos. con recurso de conexión de los servicios
del gestor de recursos recuperables.
archivo de arranque (BSDS)
Archivo VSAM que contiene información interfaz de nivel de llamada (CLI)
de nombre y estado para DB2 y Interfaz de programación de aplicaciones
especificaciones de rangos de RBA para (API) invocable, que se utiliza para
todos los archivos de datos activos y de acceder a bases de datos como alternativa
archivado. BSDS también contiene al uso de SQL incorporado.
contraseñas para el directorio y catálogo
supresión en cascada
de DB2 y listas de registros de punto de
Proceso mediante el que DB2 aplica
control y rearranque condicionales.
restricciones de referencia cuando
BSAM suprime todas las filas descendientes de
Véase método de acceso secuencial básico. una fila padre suprimida.
BSDS Véase archivo de arranque. expresión CASE
Expresión que se selecciona de acuerdo
agrupación de almacenamientos intermedios
con la evaluación de una o más
| Área de memoria en la que se leen,
condiciones.
| modifican y mantienen páginas de datos
| durante el proceso. función de conversión
Función que se utiliza para convertir
tipo de datos incorporado
instancias de un tipo de datos (fuente) en
| Tipo de datos proporcionado por IBM.
instancias de un tipo de datos diferente
| Entre los tipos de datos incorporados para
(destino).
| DB2 para z/OS se encuentran los
| siguientes: string, numeric, XML, ROWID conversión
| y datetime. Compárese con tipo Proceso de DB2 por el que las páginas
| diferenciado. cambiadas de una agrupación de
almacenamiento intermedio de grupo se
función incorporada
graban en disco.
| Función generada por DB2 y que está
| contenida en el esquema SYSIBM. propietario de la conversión
| Compárese con función definida por el Miembro de DB2 encargado de convertir
| usuario. Véase también función, función un conjunto de páginas o una partición
| de conversión, función externa, función determinados.
| derivada y función de SQL.
catálogo
dimensión de negocio En DB2, colección de tablas que contiene
Categoría de datos, tales como productos descripciones de objetos tales como tablas,
o períodos de tiempo, que una empresa vistas e índices.
puede desear analizar.
tabla de catálogo
estructura de antememoria Cualquier tabla del catálogo de DB2.
Estructura del recurso de acoplamiento
CCSID
que almacena datos que pueden estar
Véase identificador de juego de caracteres
disponibles para todos los miembros de
codificados.
un Sysplex. Un grupo de compartimiento
de datos de DB2 utiliza estructuras de CDB Véase base de datos de comunicaciones.
antememoria como agrupaciones de
CDRA
almacenamiento intermedio de grupo.
Véase Arquitectura de representación de
CAF Véase recurso de conexión de llamada. datos de tipo carácter.
recurso de conexión de llamada (CAF) CEC Véase complejo central de procesadores.
Recurso de conexión de DB2 para
complejo electrónico central (CEC)
programas de aplicación que se ejecutan
Véase complejo central de procesadores.
en TSO o z/OS por lotes. El CAF es una
alternativa al procesador de mandatos de
Glosario 361
clase de servicio funciones de miembro de los objetos de
Término de VTAM que designa una lista su clase. A las funciones de miembro
de rutas de una red, dispuestas por orden también se las denomina métodos.
de preferencia para su utilización.
objeto C++
cláusula Región de almacenamiento. Objeto que se
En SQL, parte diferenciada de una crea cuando se define una variable o se
sentencia, tal como una cláusula SELECT invoca una nueva función.
o una cláusula WHERE.
Instancia de una clase.
CLI Véase interfaz de nivel de llamada.
juego de caracteres codificados
cliente Conjunto de normas no ambiguas que
Véase peticionario. definen un juego de caracteres y las
relaciones ″de uno a uno″ entre los
CLOB Véase objeto grande de caracteres.
caracteres del conjunto y sus
| objeto de réplica representaciones codificadas.
| Objeto asociado con una tabla de réplica,
identificador de juego de caracteres codificados
| incluida la propia tabla de réplica y las
(CCSID)
| restricciones de comprobación, índices y
Número de 16 bits que identifica
| desencadenantes BEFORE en la tabla de
exclusivamente una representación
| réplica.
codificada de caracteres gráficos. Designa
| tabla de réplica un identificador de esquema de
| Tabla estructuralmente idéntica a una codificación y uno o más pares que
| tabla base. La tabla base y la tabla de constan de un identificador del juego de
| réplica tienen archivos VSAM distintos, caracteres y un identificador de la página
| identificados por sus números de de códigos asociada.
| instancia de archivo. Compárese con tabla
página de códigos
| base.
Conjunto de asignaciones de caracteres a
aplicación cerrada puntos de código. Dentro de una página
Aplicación que requiere la utilización de códigos, cada elemento de código tiene
exclusiva de determinadas sentencias en un solo significado específico. En
ciertos objetos de DB2, por lo que los EBCDIC, por ejemplo, el carácter A tiene
objetos únicamente se gestionan a través asignado el elemento de código X’C1’, y
de la interfaz externa de la aplicación. el carácter B tiene asignado el elemento
de código X’C2’.
índice de clúster
Índice que determina cómo las filas se elemento de código
ordenan físicamente (agrupan en clústeres) En CDRA, patrón de bits exclusivo que
en un espacio de tablas. Si un índice de representa un carácter de una página de
clúster en una tabla particionada no es un códigos.
índice de particionamiento, las filas se
unidad de código
ordenan en la secuencia de clúster en
Ancho binario fundamental en una
cada partición de datos en lugar de
arquitectura de sistemas utilizado para
dividirse entre las particiones.
representar datos de tipo carácter, tales
| CM Véase modalidad de compatibilidad. como 7 bits, 8 bits, 16 bits, o 32 bits. En
función de la forma de codificación de
| CM* Véase modalidad de compatibilidad*.
caracteres que se utiliza, cada punto de
miembro C++ código en un juego de caracteres
Función u objeto de datos contenido en codificado puede estar representado por
una estructura, unión o clase. una o varias unidades de código.
función de miembro C++ coexistencia
Operador o función que se ha declarado Durante la migración, período de tiempo
como miembro de una clase. Una función en el que dos releases existen en el mismo
de miembro tiene acceso a los miembros grupo de compartimiento de datos.
de datos privados y protegidos y a las
Glosario 363
clave compuesta restricción
| Conjunto ordenado de columnas clave o Norma que limita los valores que se
| expresiones de la misma tabla. pueden insertar, eliminar o actualizar en
una tabla. Véase restricción de referencia,
diccionario de compresión
restricción de comprobación y restricción
El diccionario que controla el proceso de
de exclusividad.
compresión y descompresión. Este
diccionario se crea a partir de los datos contexto
del espacio de tablas o de la partición del Conexión lógica de una aplicación con la
espacio de tablas. fuente de datos e información de
conexión ODBC de DB2 asociada que
simultaneidad
permite a la aplicación dirigir sus
Utilización compartida de recursos por
operaciones a una fuente de datos. Un
parte de más de un proceso de aplicación
contexto ODBC de DB2 representa una
al mismo tiempo.
hebra de DB2.
reinicio condicional
conversión con contracción
Reinicio de DB2 que ha sido dirigido por
Proceso que se produce cuando la
un registro de control de reinicio
longitud de una serie de caracteres
condicional definido por el usuario
convertida es menor que la serie original.
(CRCR).
Por ejemplo, este proceso ocurre cuando
conexión una serie mixta de caracteres EBCDIC que
En SNA, existencia de una vía de contiene caracteres DBCS se convierte a
comunicación entre dos LU asociadas que datos ASCII mixtos; la serie convertida es
permite el intercambio de información más corta debido a la supresión de los
(por ejemplo, dos subsistemas de DB2 que códigos de desplazamiento.
están conectados y se comunican
intervalo de control (control interval, CI)
mediante una conversación).
v Unidad de información que VSAM
contexto de conexión transfiere entre almacenamiento virtual
En SQLJ, objeto de Java que representa y auxiliar.
una conexión con una fuente de datos.
v En un archivo en secuencia por clave,
cláusula de declaración de conexión conjunto de registros al que apunta una
En SQLJ, sentencia que declara una entrada en el registro de índice de
conexión con una fuente de datos. conjuntos de secuencia.
descriptor de conexión conversación
Objeto de datos que contiene información Comunicación, basada en LU 6.2 o APPC
asociada con una conexión gestionada por (Advanced Program-to-Program
DB2 ODBC. Incluye información general Communication), entre una aplicación y
de estado, de estado de transacción e un programa de transacciones remoto a
información de diagnóstico. través de una sesión SNA de unidad
lógica a unidad lógica (LU-LU) que
ID de conexión
permite la comunicación mientras se
Identificador que proporciona el recurso
procesa una transacción.
de conexión y que está asociado a una
conexión de espacio de direcciones coordinador
específico. Componente del sistema que coordina la
confirmación o retrotracción de una
símbolo de coherencia
unidad de trabajo que incluye el trabajo
Indicación horaria que se utiliza para
que se realiza en uno o más sistemas
generar el identificador de versión para
diferentes.
una aplicación. Véase también versión.
coprocesador
constante
Véase coprocesador de sentencias de SQL.
Elemento de lenguaje que especifica un
valor no variable. Las constantes pueden agrupación de copia
ser constantes de tipo serie o constantes | Colección de nombres de grupos de
numéricas. Compárese con variable.
Glosario 365
datos actuales distinto del nombre de ubicación. El alias
Datos de la estructura de sistema de base de datos se utiliza para
principal que es actual (idéntica) respecto proporcionar el nombre del servidor de
a los datos de la tabla base. bases de datos tal como es conocido en la
red.
reconstrucción del estado actual
Segunda fase del proceso de reinicio descriptor de base de datos (DBD)
durante la cual el estado del subsistema Representación interna de la definición de
se reconstruye a partir de la información una base de datos de DB2, que refleja la
del registro. definición de los datos encontrados en el
catálogo de DB2. Los objetos que se
cursor Estructura de control que un programa de
definen en un descriptor de base de datos
aplicación utiliza para apuntar a una o
son espacios de tabla, tablas, índices,
varias filas dentro de un conjunto
espacios de índices, relaciones,
ordenado de filas de una tabla de
restricciones de comprobación y
resultados. Un cursor puede utilizarse
desencadenantes. Un DBD también
para recuperar, actualizar o suprimir filas
contiene información sobre las tablas de
de una tabla de resultados.
acceso de la base de datos.
sensibilidad del cursor
estado de excepción de la base de datos
Grado en el que las actualizaciones de la
En un entorno de compartimiento de
base de datos pueden ser percibidas por
datos, indicación de que hay algo mal en
las sentencias FETCH subsiguientes en un
una base de datos.
cursor.
identificador de base de datos (DBID)
estabilidad del cursor (CS)
Identificador interno de la base de datos.
Nivel de aislamiento que proporciona el
máximo nivel de simultaneidad sin la sistema de gestión de bases de datos (DBMS)
posibilidad de leer datos no confirmados. Sistema de software que controla la
Con la estabilidad del cursor, una unidad creación, organización y modificación de
de trabajo sólo mantiene bloqueos para una base de datos y el acceso a los datos
los cambios no confirmados y para la fila que están almacenados en ella.
actual de cada uno de sus cursores. Véase
módulo de solicitud de la base de datos
también estabilidad de lectura, lectura
(DBRM)
repetible y lectura no confirmada.
Miembro de archivo creado por el
tabla de cursor (CT) precompilador de DB2 y que contiene
| Representación interna de un cursor. información sobre sentencias de SQL. Los
DBRM se utilizan en el proceso de
ciclo Conjunto de tablas que pueden ordenarse
vinculación.
de modo que cada tabla descienda de la
precedente y la primera descienda de la servidor de bases de datos
última tabla. Una tabla de autorreferencia Destino de una petición procedente de
es un ciclo con un único miembro. Véase una aplicación local o un servidor de
también ciclo referencial. bases de datos intermedio remoto.
base de datos vigencia de los datos
Colección de tablas o colección de Estado en el que los datos recuperados en
espacios de tablas y de espacios de índice. una variable de lenguaje principal de un
programa son una copia de los datos de
hebra de acceso a base de datos (DBAT)
la tabla base.
Hebra que accede a datos del subsistema
local a petición de un sistema remoto. diccionario de datos
Depósito de información sobre los
administrador de la base de datos (DBA)
programas de aplicación, bases de datos,
Persona encargada de diseñar, desarrollar,
modelos lógicos de datos, usuarios y
dirigir, proteger, mantener y utilizar una
autorizaciones existentes en una empresa.
base de datos.
alias de base de datos
Nombre del servidor de destino, si es
Glosario 367
tabla. Las declaraciones se generan desde supresión incluyen CASCADE,
la información de catálogo de sistema de RESTRICT, SET NULL o NO ACTION.
DB2.
desencadenante de supresión
tabla temporal declarada tablas temporales Desencadenante que se define con la
declaradas operación de SQL de desencadenante de
Tabla no permanente que contiene datos supresión.
temporales y se define mediante la
identificador delimitado
sentencia DECLARE GLOBAL
| Secuencia de caracteres que están
TEMPORARY TABLE de SQL. La
| encerrados entre caracteres de escape.
información sobre tablas temporales
declaradas no se almacena en el catálogo símbolo delimitador
de DB2 y sólo puede ser utilizada por el Constante de tipo carácter, identificador
proceso de aplicación que emitió la delimitado, símbolo de operador o
sentencia DECLARE. Compárese con tabla cualquiera de los caracteres especiales que
temporal creada. Véase también tabla aparecen en los diagramas de sintaxis de
temporal. DB2.
valor por omisión denormalización
| Valor, atributo u opción predeterminados Duplicación intencionada de columnas en
| que se presupone cuando no se especifica varias tablas para aumentar la
| explícitamente ningún otro. Se puede redundancia de datos. La
| definir un valor por omisión para datos denormalización es a veces necesaria para
| de columna contenidos en tablas de DB2 minimizar los problemas de rendimiento.
| especificando la palabra clave DEFAULT Compárese con normalización.
| en una sentencia de SQL que cambie
dependiente
| datos (tal como INSERT, UPDATE y
Objeto (fila, tabla o espacio de tablas) que
| MERGE).
tiene como mínimo un padre. También se
SQL incorporado diferido dice que el objeto (fila, tabla o espacio de
Sentencias de SQL que no son tablas) es dependiente de su padre. Véase
completamente estáticas ni también fila padre, tabla padre y espacio
completamente dinámicas. Estas de tablas padre.
sentencias están incluidas dentro de una
fila dependiente
aplicación y se preparan durante la
Fila que contiene una clave externa que
ejecución de la aplicación.
coincide con el valor de una clave
escritura diferida primaria en la fila padre.
Proceso de escribir de forma asíncrona
tabla dependiente
páginas de datos modificadas en el disco
Tabla que es dependiente como mínimo
duro.
en una restricción de referencia.
grado de paralelismo
descendiente
Número de operaciones ejecutadas de
Objeto que es dependiente de un objeto o
modo simultáneo que se inician para
de un descendiente de un objeto.
procesar una consulta.
fila descendente
hueco por supresión
Fila que es dependiente de otra fila o fila
Ubicación en la que se encuentra un
que desciende de una fila dependiente.
cursor cuando se vuelve a leer una fila en
una tabla de resultados y la fila ya no tabla descendente
existe en la tabla base. Véase también Tabla que es dependiente de otra tabla o
hueco por actualización. tabla que es descendiente de una tabla
dependiente.
norma de supresión
Norma que indica a DB2 lo que ha de función determinista
hacer en una fila dependiente cuando se Función definida por el usuario cuyo
suprime una fila padre. Las normas de resultado depende de los valores de los
argumentos de entrada. Es decir, las
Glosario 369
mediante la inmovilización del acceso a interchange code (código de intercambio
ese objeto. Compárese con reclamación. decimal ampliado codificado en binario).
Sistema de codificación que se utiliza para
bloqueo de consumo
representar datos de tipo carácter en los
Bloqueo sobre una clase de reclamación
entornos z/OS, VM, VSE e iSeries.
que impide que se produzca una
Compárese con ASCII y Unicode.
reclamación.
SQL incorporado
DRDA
Sentencias de SQL codificadas dentro de
Véase Distributed Relational Database
un programa de aplicación. Véase SQL
Architecture.
estático.
acceso a DRDA
| modalidad* de habilitación de nueva función
Método abierto de acceder a datos
| (ENFM*)
distribuidos que pueden utilizarse para
| Etapa de transición del proceso de
conectarse con otro servidor de bases de
| migración de versión a versión que se
datos a fin de ejecutar paquetes que se
| aplica a un grupo de compartimiento de
han vinculado anteriormente en la
| datos o subsistema de DB2 que estaba en
ubicación del servidor.
| modalidad de nueva función (NFM) en
DSN | un momento dado. Cuando está en
v Nombre del subsistema de DB2 por | modalidad* de habilitación de nueva
omisión. | función, un grupo de compartimiento de
| datos o subsistema de DB2 se está
v Nombre del procesador de mandatos
| preparando para utilizar las nuevas
de TSO de DB2.
| funciones de la nueva versión pero no
v Los tres primeros caracteres del módulo | puede utilizarlas aún. Un grupo de
de DB2 y nombre de macro. | compartimiento de datos que se encuentra
cursor dinámico | en modalidad* de habilitación de nueva
Estructura de control con nombre que un | función no puede coexistir con miembros
programa de aplicación utiliza para | que se encuentran aún en el nivel de
cambiar el tamaño de la tabla de | versión anterior. No se permite volver a
resultados y el orden de sus filas después | una versión anterior. Compárese con
de abrir el cursor. Compárese con cursor | modalidad de compatibilidad, modalidad
estático. | de compatibilidad*, modalidad de
| habilitación de nueva función y
vuelco dinámico | modalidad de nueva función.
Vuelco que se emite durante la ejecución
de un programa, normalmente bajo el | modalidad de habilitación de nueva función
control de dicho programa. | (ENFM)
| Estado de transición del proceso de
SQL dinámico | migración de versión a versión durante el
| Sentencias de SQL que se preparan y se | cual el grupo de compartimiento de datos
| ejecutan en tiempo de ejecución. En el | o subsistema de DB2 se está preparando
| SQL dinámico, la sentencia de SQL está | para utilizar las nuevas funciones de la
| contenida como serie de caracteres en una | nueva versión. Cuando está en modalidad
| variable de lenguaje principal o como una | de habilitación de nueva función, un
| constante, y no se precompila. | grupo de compartimiento de datos de
espacio de tablas habilitado para EA | DB2 no puede coexistir con miembros que
Espacio de tablas o de índice habilitado | aún se encuentran en el nivel de versión
para la direccionabilidad ampliada (EA) y | anterior. No se permite volver a una
que contiene particiones individuales (o | versión anterior y las nuevas funciones de
piezas, para espacios de tablas LOB) que | la nueva versión no están disponibles
son mayores que 4 GB. | para ser utilizadas en modalidad de
| habilitación de nueva función. Compárese
EB Véase exabyte. | con modalidad de compatibilidad,
EBCDIC | modalidad de compatibilidad*, modalidad
Extended binary coded decimal
Glosario 371
longitud de una serie de caracteres | Asociación de la función con la aplicación
convertida es mayor que la serie original. | de código externo especificada por la
Por ejemplo, este proceso ocurre cuando | cláusula EXTERNA de la sentencia
una serie mixta ASCII que contiene | CREATE FUNCTION. Las funciones
caracteres DBCS se convierte a una serie | externas se pueden clasificar como
de datos mixta EBCDIC; la serie | funciones escalares externas y funciones
convertida es más larga debido a la | de tabla externas. Compárese con función
adición de caracteres de control. | derivada, función incorporada y función
| de SQL.
bloqueo jerárquico explícito
Bloqueo utilizado para hacer que la procedimiento externo
relación padre/hijo entre recursos resulte | Procedimiento que tiene su lógica de
conocida para IRLM. Esta clase de | procedimiento implementada en una
bloqueo evita la actividad global | aplicación de lenguaje de programación
resultante del bloqueo cuando no existe | externo. Asociación del procedimiento con
ningún interés dentro de DB2 para un | la aplicación externa se especifica
recurso. | mediante una sentencia CREATE
| PROCEDURE con una cláusula
privilegio explícito
| LANGUAGE que tiene un valor distinto
| Privilegio que tiene un nombre y se
| de SQL y una cláusula EXTERNAL que
| mantiene como resultado de una
| implícita o explícitamente especifica el
| sentencia GRANT de SQL y se revoca
| nombre de la aplicación externa.
| como resultado de una sentencia
| Compárese con procedimiento externo de
| REVOKE de SQL. Por ejemplo, el
| SQL y procedimiento nativo de SQL.
| privilegio de SELECT.
rutina externa
nombre expuesto
Función definida por el usuario o
Nombre de correlación o nombre de vista
procedimiento almacenado que está
o tabla para la que no se especifica un
basado en código escrito en un lenguaje
nombre de correlación.
de programación externo.
expresión
| procedimiento de SQL externo
Operando o colección de operadores y
| Procedimiento de SQL que se procesa
operandos que proporciona un único
| utilizando un programa C generado que
valor.
| es una representación del procedimiento.
Extended Recovery Facility (XRF) | Cuando se llama a un procedimiento SQL
Recurso que minimiza el efecto de los | externo, la representación del programa C
errores en z/OS, VTAM, el procesador | del procedimiento se ejecuta en un
principal o en las aplicaciones de alta | espacio de direcciones de procedimientos
disponibilidad durante las sesiones entre | almacenados. Compárese con
aplicaciones de alta disponibilidad y | procedimiento externo y procedimiento
terminales designados. Este recurso | de SQL nativo.
proporciona un subsistema alternativo
estado de miembro anómalo
para tomar el control de las sesiones del
Estado de un miembro de un grupo de
subsistema anómalo.
compartimiento de datos en el que la
Extensible Markup Language (XML) tarea del miembro, el espacio de
Metalenguaje estándar para definir direcciones o el sistema z/OS termina
lenguajes de marcación que es un antes de que el estado cambie de activo a
subconjunto de Standardized General inmovilizado.
Markup Language (SGML).
retroceder
función externa | Proceso de volver a un release anterior de
| Función que tiene su lógica funcional | DB2 después de intentar o completar la
| implementada en una aplicación de | migración a un release actual. Se permite
| lenguaje de programación que reside | volver a un release anterior sólo desde un
| fuera de la base de datos, en el sistema de | subsistema que esté en modalidad de
| archivos del servidor de bases de datos. | compatibilidad.
Glosario 373
| es el resultado de la subselección o intermedios de grupo que todavía no se
| selección completa especificada. han convertido al disco.
correlación con escape completo recurso de rastreo generalizado (GTF)
Correlación entre un identificador de SQL Programa de servicio de z/OS que
y un nombre de XML cuando el registra sucesos significativos del sistema,
identificador de SQL es un nombre de como por ejemplo interrupciones de E/S,
columna. interrupciones de SVC, interrupciones de
programa o interrupciones externas.
función
Correlación que está integrada dentro de nombre de recurso genérico
un programa (el cuerpo de la función) Nombre que VTAM utiliza para
que obtiene un valor individual (el representar diversos programas de
resultado) a partir de cero o más valores aplicación que proporcionan la misma
de entrada (argumentos). Véase también función, para gestionar el equilibrado y
función de agregación y función escalar. distribución de sesiones en un entorno
Sysplex.
Las funciones pueden ser funciones
definidas por el usuario, incorporadas o | característica geográfica
generadas por DB2. (Véase también | Objeto de la superficie terrestre (como
función incorporada, función de | una ciudad o un río), espacio (como una
conversión, función externa, función | zona de seguridad que rodea un lugar
derivada, función de SQL y función | peligroso) o suceso que se produce en una
definida por el usuario.) | ubicación (como un accidente de tráfico
| que se produce en un determinado cruce).
definidor de función
ID de autorización del propietario del | sistema de información geográfica
esquema de la función que se especifica | Completo de objetos, datos y aplicaciones
en la sentencia CREATE FUNCTION. | que se utiliza para crear y analizar la
| información espacial sobre características
paquete de función
| geográficas.
Paquete que resulta de vincular DBRM
para un programa de función. getpage
Operación en la que DB2 accede a una
propietario de paquete de función
página de datos.
El ID de autorización del usuario que
vincula el DBRM del programa de bloqueo global
función en un paquete de función. Bloqueo que proporciona control de
concurrencia dentro de subsistemas DB2 y
firma de función
entre ellos. El ámbito del bloqueo abarca
La concatenación lógica de un nombre de
todos los subsistemas de DB2 de un
función calificado al completo con los
grupo de compartimiento de datos.
tipos de datos de todos sus parámetros.
contención de bloqueo global
GB Gigabyte. Valor equivalente a 1 073 741
Conflictos debidos a peticiones de
824 bytes.
bloqueo entre diferentes miembros de
GBP Véase agrupación de almacenamientos DB2 de un grupo de compartimiento de
intermedios de grupo. datos cuando dichos miembros intentan
serializar recursos compartidos.
dependiente de GBP
Estado de un conjunto de páginas o de rutina de gobierno
una partición de un conjunto de páginas Véase recurso de límite de recursos.
que es dependiente de la agrupación de
serie gráfica
almacenamientos intermedios de grupo.
| Secuencia de caracteres de DBCS. Los
El interés de lectura/escritura es activo
| datos gráficos se pueden clasificar además
entre subsistemas de DB2 para este
| como GRAPHIC, VARGRAPHIC o
conjunto de páginas o el conjunto de
| DBCLOB.
páginas ha cambiado páginas de la
agrupación de almacenamientos | GRECP
| Véase recuperación pendiente de la
Glosario 375
hace referencia en un programa de | columna de identidad. Una tabla no
aplicación de SQLJ mediante cláusulas de | puede tener más de una columna de
SQL. | identidad.
identificador de sistema principal IFCID Véase identificador de componente de
Nombre que se declara en el programa de recurso de instrumentación.
sistema principal.
IFI Véase interfaz de recurso de
lenguaje principal instrumentación.
Lenguaje de programación en el que
llamada IFI
puede incorporar sentencias de SQL.
Invocación de la interfaz del recurso de
programa de sistema principal instrumentación (IFI) por medio de una
Programa de aplicación escrito en un de sus funciones definidas.
lenguaje de sistema principal y que
copia de imagen
contiene sentencias de SQL incorporado.
Reproducción exacta de la totalidad o
estructura de sistema principal parte de un espacio de tablas. DB2
En un programa de aplicación, estructura proporciona programas de utilidad para
a la que se hace referencia por medio de crear copias de imagen completa (para
sentencias de SQL incorporado. copiar todo el espacio de tablas) o copias
de imágenes incrementales (para copiar
variable de lenguaje principal
sólo las páginas que se han modificado
En un programa de aplicación escrito en
desde la última copia de imagen).
un lenguaje de sistema principal, variable
de aplicación a la que se hace referencia recurso de conexión de IMS
mediante sentencias de SQL incorporado. Subcomponente de DB2 que utiliza
protocolos de la interfaz del subsistema
matriz de variables de lenguaje principal
(SSI) de z/OS y la edición cruzada de
Matriz de elementos, cada uno de los
enlaces para procesar peticiones de IMS a
cuales se corresponde con un valor para
DB2 y para coordinar la asignación de
una columna. La dimensión de la matriz
recursos.
determina el número máximo de filas
para el que es posible utilizar la matriz. en cancelación anómala
Estado de una unidad de recuperación. Si
Procesador integrado IBM System z9 (zIIP)
DB2 falla una vez, comienza a retrotraerse
| Procesador especializado que se puede
una unidad de recuperación, pero antes
| utilizar para algunas funciones de DB2.
de que finalice el proceso, DB2 continúa
IDCAMS restituyendo los cambios durante el
Programa de IBM que se utiliza para reinicio.
procesar mandatos de los servicios de
en confirmación
método de acceso. Puede invocarse como
Estado de una unidad de recuperación. Si
trabajo o paso de trabajo, desde un
DB2 falla después de comenzar el proceso
terminal TSO o desde un programa de
de confirmación de la fase 2, DB2 ″sabe″,
aplicación del usuario.
al reiniciarse, que los cambios efectuados
IDCAMS LISTCAT en los datos son coherentes. Estas
Recurso para obtener la información que unidades de recuperación se denominan
se encuentra en el catálogo de servicios de en confirmación.
método de acceso.
independiente
columna de identidad Objeto (fila, tabla o espacio de tablas) que
| Columna que proporciona una forma para no es padre ni es dependiente de otro
| que DB2 genere automáticamente un objeto.
| valor numérico para cada fila. Las
índice Conjunto de punteros que ordenan
| columnas de identidad se definen
lógicamente los valores de una clave. Los
| mediante la cláusula AS IDENTITY. Para
índices pueden proporcionar un acceso
| asegurar la exclusividad de los valores
más rápido a los datos y pueden asegurar
| puede definirse un índice de exclusividad
la exclusividad en las filas de una tabla.
| de una sola columna que sólo contenga la
Glosario 377
| desencadenante INSTEAD OF (en lugar de) | intersección
| Desencadenante asociado con una única | Operación de SQL que implica al
| vista y activado por una operación de | operador de conjunto INTERSECT, que
| inserción, actualización o supresión en la | combina dos tablas de resultados. El
| vista y que puede definir para propagar | resultado de una operación de
| la operación de inserción, actualización o | intersección consta de todas las filas que
| supresión en la vista a las tablas | están en ambas tablas de resultados.
| subyacentes de la vista. Compárese con
paquete no válido
| desencadenante BEFORE y
Paquete que depende de un objeto (que
| desencadenante AFTER.
no sea una función definida por el
identificador del componente de recurso de usuario) que se ha eliminado. Dicho
instrumentación (IFCID) paquete se vuelve a vincular
Valor que designa e identifica un registro implícitamente durante la invocación.
de rastreo de un suceso que se puede Compárese con paquete no operativo.
rastrear. Como parámetro de los
dirección IP
mandatos START TRACE y MODIFY
| Valor que identifica exclusivamente un
TRACE, especifica que el suceso
| sistema principal de TCP/IP.
correspondiente debe rastrearse.
IRLM Véase gestor interno de bloqueo de
interfaz de recurso de instrumentación (IFI)
recursos.
Interfaz de programación que permite a
los programas obtener datos de rastreo en nivel de aislamiento
línea sobre DB2, para enviar mandatos de El grado en el que una unidad de trabajo
DB2 y pasar datos a DB2. está aislada de las operaciones de
actualización de otras unidades de
Interactive System Productivity Facility (ISPF)
trabajo. Véase también estabilidad del
Programa bajo licencia de IBM que
cursor, estabilidad de lectura, lectura
proporciona servicios de diálogo
repetible y lectura no confirmada.
interactivo en un entorno z/OS.
ISPF Véase Interactive System Productivity
interés de lectura/escritura entre DB2
Facility.
Propiedad de los datos de un espacio de
tablas, índice o partición que ha sido iterador
abierto por más de un miembro de un En SQLJ, objeto que contiene el conjunto
grupo de compartimiento de datos para de resultados de una consulta. Un
que escriba en él al menos uno de esos iterador equivale a un cursor en otros
miembros. lenguajes de sistema principal.
servidor de bases de datos intermedio cláusula de declaración de iterador
Destino de una petición procedente de En SQLJ, declaración que genera una
una aplicación local o peticionario de clase de declaración de iterador. Un
aplicación remoto que se reenvía a otro iterador es un objeto de una clase de
servidor de bases de datos. declaración de iterador.
gestor interno de bloqueo de recursos (IRLM) JAR Véase Java Archive.
Subsistema de z/OS que DB2 utiliza para
Java Archive (JAR)
controlar el bloqueo de comunicaciones y
Formato de archivo que se utiliza para
bases de datos.
combinar muchos archivos en uno solo.
internacionalización
JDBC Interfaz de programación de aplicaciones
Soporte a un esquema de codificación que
(API) para bases de datos de Sun
es capaz de representar los caracteres
Microsystems para Java que permite que
codificados correspondientes a muchas
los programas accedan a sistemas de
zonas geográficas e idiomas diferentes.
gestión de bases de datos mediante SQL
Para dar soporte a todos los países, el
invocable.
estándar Unicode necesita más de 1 byte
para representar un carácter individual. unión Operación relacional que permite la
Véase también Unicode. recuperación de datos de dos o más tablas
Glosario 379
bloqueo L bases de datos. Una aplicación utiliza el
Véase bloqueo lógico. nombre de ubicación para acceder a un
servidor de bases de datos de DB2. Es
módulo de carga
posible utilizar un alias de la base de
Unidad de programa que resulta
datos para alterar temporalmente el
apropiada para la carga en el
nombre de ubicación al acceder a un
almacenamiento principal para la
servidor remoto.
ejecución. La salida de un editor de
enlaces. alias de ubicación
Otro nombre por el que se identifica en la
LOB Véase objeto grande.
red un servidor de bases de datos. Las
localizador de LOB aplicaciones pueden utilizar este nombre
Mecanismo que permite a un programa para acceder a un servidor de bases de
de aplicación manipular un valor de datos de DB2.
objeto grande en el sistema de base de
bloqueo
datos. Un localizador de LOB es un valor
Forma de controlar sucesos simultáneos o
de entero de palabra completa que
el acceso a datos. El bloqueo de DB2 lo
representa un único valor de LOB. Un
realiza IRLM.
programa de aplicación recupera un
localizador de LOB en una variable de duración de bloqueo
lenguaje principal y a continuación El intervalo en el que se mantiene el
pueden aplicarse funciones de SQL al bloqueo de DB2.
valor de LOB asociado utilizando el
reajuste de bloqueos
localizador.
Promoción de un bloqueo desde un
bloqueo LOB bloqueo de fila, de página o de LOB a un
Bloqueo sobre un valor de LOB. bloqueo de espacio de tablas debido a que
el número de bloqueos de página que se
espacio de tablas de LOB
mantienen de modo simultáneo en un
Espacio de tablas que contiene todos los
determinado recurso supera un límite
datos para una columna de LOB
predefinido.
determinada en la tabla base asociada.
bloqueo
local Forma de hacer referencia a cualquier
El proceso por el que se asegura la
objeto que el subsistema local de DB2
integridad de los datos. El bloqueo
mantiene. Una tabla local, por ejemplo, es
impide a los usuarios simultáneos acceder
una tabla mantenida por un subsistema
a datos incoherentes. Véase también
local de DB2. Compárese con remoto.
reclamación, consumo y enclavamiento.
entorno local
modalidad de bloqueo
Definición de un subconjunto del entorno
Representación del tipo de acceso que los
de un usuario que combina un CCSID y
programas que se están ejecutando
caracteres definidos para un idioma y un
simultáneamente pueden tener a un
país específicos.
recurso que mantiene un bloqueo de DB2.
bloqueo local
objeto de bloqueo
Bloqueo que proporciona control de
Recurso controlado por un bloqueo de
concurrencia dentro de DB2, pero no
DB2.
control de concurrencia entre DB2; es
decir, su ámbito es un DB2 individual. promoción de bloqueo
Proceso de cambiar el tamaño o la
subsistema local
modalidad de un bloqueo de DB2 a un
DBMS relacional exclusivo al que está
nivel superior, más restrictivo.
directamente conectado el usuario o el
programa de aplicación (en el caso de tamaño de bloqueo
DB2, por medio de uno de los recursos de Cantidad de datos controlada por un
conexión de DB2). bloqueo de DB2 sobre los datos de una
tabla; el valor puede ser una fila, una
ubicación
Nombre exclusivo de un servidor de
Glosario 381
nombre de LU actual o actualizado. En este proceso, el
Nombre de unidad lógica, que es el usuario puede obtener las funciones del
nombre por el cual VTAM reconoce a un release actual o actualizado sin perder los
nodo en una red. datos creados en el release anterior.
LUW Véase unidad de trabajo lógica. serie de datos mixta
Serie de caracteres que puede contener
LUWID
tanto caracteres de un solo byte como
Véase identificador de unidad de trabajo
caracteres de doble byte.
lógica.
nombre de modalidad
tabla de correlación
En VTAM, nombre que designa la
Tabla que el programa de utilidad
colección de características físicas y
REORG utiliza para correlacionar las
lógicas y atributos de una sesión.
asociaciones entre los RID de los registros
de datos de la copia original y la copia de bloqueos de modificación
sombra. Esta tabla la crea el usuario. Bloqueo L o bloqueo P con un atributo
MODIFY. En todo momento se conserva
supresión masiva
una lista de estos bloqueos activos en la
Supresión de todas las filas de una tabla.
estructura de bloqueo del recurso de
materializar acoplamiento. Si el subsistema solicitante
v Proceso de colocar filas de una vista o de DB2 falla, esos bloqueos de
expresión de tabla anidada en un modificación del subsistema DB2 se
archivo de trabajo para su proceso convierten en bloqueos retenidos.
adicional por parte de una consulta. juego de caracteres de varios bytes (MBCS)
v Colocación de un valor de LOB en Juego de caracteres en el que cada
almacenamiento contiguo. Puesto que carácter está representado por más de un
los valores de LOB pueden ser muy byte. UTF-8 es un ejemplo de un MBCS.
grandes, DB2 evita materializar los Los caracteres de UTF-8 pueden tener de
datos de LOB hasta que llega a ser 1 a 4 bytes en DB2. Compárese con juegos
absolutamente necesario. de caracteres de un solo byte y juego de
caracteres de doble byte. Véase también
tabla de consultas materializadas
Unicode.
Tabla que se utiliza para contener
información derivada de una o más tablas análisis multidimensional
fuente y que puede resumirse a partir de Proceso de evaluar una empresa a más de
las mismas. Compárese con tabla base. un nivel.
MB Megabyte (1 048 576 bytes). Multiple Virtual Storage (MVS)
Elemento del sistema operativo z/OS.
MBCS Véase juego de caracteres de múltiples
Este elemento también se denomina Base
bytes.
Control Program (BCP).
nombre de miembro
actualización múltiple
Identificador XCF de z/OS para un
Proceso de bases de datos relacionales
subsistema de DB2 determinado en un
distribuidas en el que los datos se
grupo de compartimiento de datos.
actualizan en más de un lugar dentro de
menú Lista visualizada de funciones disponibles una única unidad de trabajo individual.
para su selección por parte del operador.
ejecución simultánea de procesos
A veces un menú recibe el nombre de
Varios TCB que ejecutan una copia del
panel de menú.
código ODBC de DB2 de forma
metalenguaje concurrente (compartiendo un
Lenguaje que se utiliza para crear otros procesador) o en paralelo (en
lenguajes especializados. procesadores centrales separados).
migración MVS Véase Multiple Virtual Storage.
Proceso de convertir un subsistema con
| procedimiento nativo de SQL
un release anterior de DB2 a un release
| Procedimiento de SQL que se procesa
Glosario 383
ODBC incluye las filas coincidentes de las dos
Véase Open Database Connectivity. tablas que se están uniendo y preserva la
totalidad o parte de las filas no
controlador de ODBC
coincidentes de las tablas que se están
Biblioteca de enlace dinámico (DLL) que
uniendo. Véase también unión, unión de
utiliza llamadas de función de ODBC e
equivalencia, unión externa completa,
interacciona con una fuente de datos.
unión interna, unión externa izquierda y
| OLAP Véase proceso analítico en línea. unión externa derecha.
| proceso analítico en línea (OLAP) función sobrecargada
| Proceso de recopilar datos de una o varias Nombre de función para el que existen
| fuentes; transformar y analizar los datos varias instancias de función.
| consolidados de forma rápida e
paquete
| interactiva; y examinar los resultados
Objeto que contiene un conjunto de
| entre distintas dimensiones de los datos
sentencias de SQL que se han vinculado
| buscando patrones, tendencias y
estáticamente y que está disponible para
| excepciones en relaciones complejas de
su proceso. Un paquete en ocasiones
| esos datos.
recibe también el nombre de paquete de
Open Database Connectivity (ODBC) aplicación.
Interfaz de programación de aplicaciones
lista de paquetes
(API) de base de datos de Microsoft para
Lista ordenada de nombres de paquetes
el lenguaje C que permite acceder a
que pueden utilizarse para ampliar un
sistemas de gestión de bases de datos
plan de aplicación.
utilizando SQL invocable. ODBC no
requiere la utilización de un nombre de paquete
preprocesador de SQL. Además, ODBC | Nombre de un objeto utilizado para un
proporciona una arquitectura que permite | paquete de aplicación o un paquete de
a los usuarios añadir módulos, llamados | procedimiento de SQL. Un paquete de
controladores de base de datos, los cuales | aplicación es una versión vinculada de un
enlazan la aplicación con sistemas | módulo de petición de base de datos
seleccionados de gestión de bases de | (DBRM) creado mediante el mandato
datos durante la ejecución. Esto significa | BIND PACKAGE o REBIND PACKAGE.
que las aplicaciones ya no necesitan estar | Un paquete de lenguaje de procedimiento
enlazadas directamente con los módulos | de SQL creado por un mandato CREATE
de todos los sistemas soportados de | o ALTER PROCEDURE para un
gestión de bases de datos. | procedimiento de SQL nativo. El nombre
| de un paquete consta de un nombre de
identificador ordinario
| ubicación, un ID de colección, un ID de
Letra mayúscula seguida de cero o más
| paquete y un ID de versión.
caracteres, cada uno de los cuales es una
letra mayúscula, un dígito o el carácter de página
subrayado. Un identificador ordinario no | Unidad de almacenamiento dentro de un
debe ser una palabra reservada. | espacio de tablas (4 KB, 8 KB, 16 KB o 32
| KB) o espacio de índice (4 KB, 8 KB, 16
símbolo ordinario
| KB o 32 KB). En un espacio de tablas, una
Constante numérica, identificador
| página contiene una o más filas de una
ordinario, identificador del lenguaje
| tabla. En un espacio de tablas de LOB o
principal o palabra clave.
| XML, un valor de LOB o XML puede
tarea de origen | abarcar más de una página, pero no hay
En un grupo paralelo, agente primario | más de un valor de LOB o XML
que recibe datos de otras unidades de | almacenado en una página.
ejecución (denominadas tareas paralelas)
conjunto de páginas
que son partes en ejecución de la consulta
Forma alternativa de aludir a un espacio
en paralelo.
de tablas o espacio de índice. Cada
unión externa conjunto de páginas consta de una
Resultado de una operación de unión que colección de archivos VSAM.
Glosario 385
| independiente. El tamaño máximo de una unidad lógica asociada
| partición depende del número de Punto de acceso de la red SNA que está
| particiones en el conjunto de páginas conectado al subsistema DB2 local por
| particionado. Todas las particiones de un medio de una conversación VTAM.
| determinado conjunto de páginas tienen
vía de acceso
| el mismo tamaño máximo.
Véase vía de SQL.
| espacio de tablas de crecimiento por partición
PDS Véase archivo particionado.
| Espacio de tablas cuyo tamaño puede
| aumentar para acomodar el crecimiento coherencia física
| de los datos. DB2 para z/OS gestiona El estado de una página que no está en
| espacios de tablas de crecimiento por un estado cambiado parcialmente.
| partición añadiendo automáticamente
bloqueo físico (bloqueo P)
| nuevos archivos cuando la base de datos
Tipo de bloqueo que DB2 adquiere para
| necesita más espacio para satisfacer una
proporcionar la coherencia de los datos
| operación de inserción. Compárese con
que se guardan en diferentes subsistemas
| espacio de tablas particionado por rangos.
de DB2. Los bloqueos físicos se utilizan
| Véase también espacio de tablas
sólo en entornos de compartimiento de
| universal.
datos. Compárese con bloqueo lógico
archivo particionado (PDS) (bloqueo L).
| Archivo de almacenamiento en disco que
físicamente completo
| está dividido en particiones, denominadas
Estado existente cuando el proceso de
| miembros. Cada partición puede contener
copia simultánea ha finalizado y se ha
| un programa, parte de un programa o
creado el archivo de salida.
| datos. Una biblioteca de programa es un
| ejemplo de un archivo particionado. fragmento
archivo de un conjunto de páginas no
índice particionado
particionado.
Índice que está particionado físicamente.
Los índices de particionamiento y los plan Véase plan de aplicación.
índices secundarios pueden estar
asignación del plan
particionados.
Proceso de asignar recursos de DB2 a un
conjunto de páginas particionado plan en preparación para la ejecución.
Espacio de índice o espacio de tablas
miembro de plan
particionado. Las páginas de cabecera, las
Copia vinculada de un DBRM que está
páginas de mapa de espacio, las páginas
identificado en la cláusula de miembro.
de datos y las páginas de índice hacen
referencia únicamente a los datos dentro nombre de plan
del ámbito de la partición. El nombre de un plan de aplicación.
espacio de tablas particionado bloqueo P
| Espacio de tablas basado en una única Véase bloqueo físico.
| tabla y que está subdividido en
punto de coherencia
| particiones, cada una de las cuales puede
Momento en el que todos los datos
| ser procesada independientemente por
recuperables a los que accede una
| programas de utilidad. Compárese con
aplicación son coherentes con otros datos.
| espacio de tablas segmentado y espacio
El término punto de coherencia es
| de tablas universal.
sinónimo de punto de sincronización o
índice de particionamiento punto de confirmación.
Índice en el que las columnas situadas
política
más a la izquierda son las columnas de
Véase política de CFRM.
particionamiento de la tabla. El índice
puede estar particionado o no UR de cancelación anómala aplazada
particionado. Unidad de recuperación que estaba
pendiente o en cancelación anómala, se
Glosario 387
programa secuencial básico (BSAM). Cuando se
Única colección compilable de sentencias utiliza este método, se forma una cola de
ejecutables de un lenguaje de bloque de datos. Los bloques de datos de
programación. entrada esperan a ser procesados y los
bloques de datos de salida se transfieren a
arreglo temporal de programa (PTF)
almacenamiento auxiliar o a un
Solución o modo de eludir un problema
dispositivo de salida.
que se diagnostica como resultado de un
defecto en el release actual no modificado punto de inmovilización
de un programa bajo licencia. Un arreglo Punto en el que los datos son coherentes
de informe autorizado de análisis de como resultado de ejecutar el programa
programa (APAR) es un servicio de de utilidad QUIESCE de DB2.
corrección para un problema existente. Un
RACF Recurso de control de acceso de recursos.
PTF es un servicio preventivo para los
Componente del servidor de seguridad de
problemas que pudieran encontrar otros
z/OS.
usuarios del producto. Un PTF es
temporal, ya que un arreglo permanente | espacio de tablas particionado por rangos
normalmente no se incorpora al producto | Tipo de espacio de tablas universal
hasta el siguiente release. | basado en rangos de particionamiento y
| que contiene una única tabla. Compárese
conversación protegida
| con espacio de tablas de crecimiento por
Conversación de VTAM que es
| partición. Véase también espacio de tablas
compatible con la confirmación en dos
| universal.
fases.
RBA Véase dirección relativa de byte.
PSRCP
Véase conjunto de páginas pendiente de RCT Véase tabla de control de recursos.
recuperación.
| RDO Véase definición de recursos en línea.
PTF Véase arreglo temporal de programa.
estabilidad de lectura (RS)
QSAM Nivel de aislamiento que es similar a la
Véase método de acceso secuencial por lectura repetible, pero que no aísla
colas. completamente un proceso de aplicación
de todos los demás procesos de aplicación
consulta
que se están ejecutando simultáneamente.
Componente de determinadas sentencias
Véase también estabilidad del cursor,
de SQL que especifica una tabla de
lectura repetible y lectura no confirmada.
resultados.
revincular
bloque de consulta
Creación de un nuevo plan de aplicación
Parte de una consulta que se representa
para un programa de aplicación que se ha
por medio de una de las cláusulas FROM.
vinculado previamente. Si, por ejemplo,
Cada cláusula FROM puede tener
ha añadido un índice a una tabla a la que
múltiples bloques de consulta,
la aplicación accede, debe revincular la
dependiendo del proceso de DB2 de la
aplicación para sacar partido a dicho
consulta.
índice.
paralelismo de CP de consulta
reconstruir
Ejecución en paralelo de una única
Proceso de reasignar una estructura del
consulta, que se consigue utilizando
recurso de acoplamiento. Para la
varias tareas. Véase también paralelismo
estructura del área de comunicaciones
de consulta de Sysplex.
compartida (SCA) y de bloqueo, la
paralelismo de E/S de consulta estructura se vuelve a completar; para la
Acceso paralelo a datos, que se consigue agrupación de almacenamientos
al desencadenar varias peticiones de E/S intermedios de grupo, las páginas
en una única consulta. cambiadas suelen convertirse en un disco
y la nueva estructura sólo se completa
método de acceso secuencial por colas (QSAM)
Versión ampliada del método de acceso
Glosario 389
integridad de referencia nivel anterior. Este procedimiento
Estado de una base de datos en el que constituye otro proceso de migración.
son válidos todos los valores de todas las
remoto
claves externas. Para mantener la
Cualquier objeto mantenido por medio de
integridad de referencia es necesario
un subsistema DB2 remoto (es decir, por
aplicar restricciones de referencia para
medio de un subsistema de DB2 que no
todas las operaciones que modifican los
sea el local). Una vista remota, por
datos de una tabla sobre la que se han
ejemplo, es una vista mantenida por un
definido las restricciones de referencia.
subsistema remoto de DB2. Compárese
estructura de referencia con local.
Conjunto de tablas y relaciones que
subsistema remoto
incluye al menos una tabla y para cada
Cualquier DBMS relacional, excepto el
tabla del conjunto, todas las relaciones en
subsistema local, con el que puede
las que participa dicha tabla y todas las
comunicarse el usuario o aplicación. No
tablas con las que está relacionado.
es necesario que el subsistema sea remoto
edad de renovación en sentido físico e incluso puede operar
La duración entre la hora actual y la hora en el mismo procesador bajo el mismo
en que se renovó por última vez una tabla sistema z/OS.
de consultas materializada.
reoptimización
registro Proceso de DB2 de reconsiderar la vía de
Véase base de datos de registro. acceso de una sentencia de SQL en
tiempo de ejecución; durante la
base de datos de registro
reoptimización DB2 utiliza los valores de
Base de datos de información de
variables de sistema principal, los
seguridad sobre principales, grupos,
marcadores de parámetros o los registros
organizaciones, cuentas y políticas de
especiales.
seguridad.
| formato de fila reordenado
base de datos relacional
| Formato de fila que facilita el rendimiento
Base de datos que puede percibirse como
| mejorado en recuperación de filas que
conjunto de tablas y manipularse con
| tienen columnas de longitud variable.
arreglo al modelo de datos relacional.
| DB2 reorganiza el orden de las columnas,
sistema de gestión de bases de datos | tal como está definido en la sentencia
relacionales (RDBMS) | CREATE TABLE, de forma que las
Colección de hardware y software que | columnas de longitud fija se almacenan al
organiza y proporciona acceso a una base | principio de la fila y las columnas de
de datos relacional. | longitud variable se almacenan al final de
| la fila. Compárese con formato de fila
| esquema relacional
| básico.
| Véase esquema de SQL.
pendiente de REORG (REORP)
relación
Condición que restringe el acceso de SQL
Conexión definida entre las filas de una
y la mayoría de los programas de utilidad
tabla o las filas de dos tablas. Una
a un objeto que debe reorganizarse.
relación es la representación interna de
una restricción de referencia. REORP
Véase pendiente de REORG.
dirección relativa de byte (RBA)
Desplazamiento de un registro de datos o lectura repetible (RR)
intervalo de control desde el principio del Nivel de aislamiento que proporciona la
espacio de almacenamiento que se asigna máxima protección respecto a la ejecución
al archivo (dataset) o archivo al que de otros programas de aplicación. Cuando
pertenece. un programa de aplicación se ejecuta con
la protección de lectura repetible, otros
remigración
programas no pueden cambiar las filas a
Proceso de volver a un release actual de
las que el programa hace referencia hasta
DB2 después de una retrotracción a un
Glosario 391
RESTP página raíz
Véase pendiente de reinicio. Página de índice que se encuentra en el
nivel más alto (o punto inicial) de un
conjunto de resultados
índice.
Conjunto de filas que un procedimiento
almacenado devuelve a una aplicación | rutina Un objeto de base de datos que incluye
cliente. | lógica de procedimiento y sentencias de
| SQL se almacena en el servidor de bases
localizador de conjunto de resultados
| de datos y se puede invocar desde una
Valor de 4 bytes que DB2 utiliza para
| sentencia de SQL o utilizando la sentencia
identificar de modo exclusivo un conjunto
| CALL. Las clases principales de rutinas
de resultados de consulta que un
| son procedimientos y funciones.
procedimiento almacenado devuelve.
fila El componente horizontal de una tabla.
tabla de resultados
Una fila consta de una secuencia de
Conjunto de filas especificadas por medio
valores, uno por cada columna de la
de una sentencia SELECT.
tabla.
bloqueo retenido
identificador de fila (ROWID)
Bloqueo MODIFY que un subsistema de
Valor que identifica exclusivamente una
DB2 estaba reteniendo en el momento en
fila. Este valor se almacena con la fila y
que se ha producido una anomalía del
no cambia nunca.
subsistema. El bloqueo se mantiene en la
estructura de bloqueo del recurso de bloqueo de fila
acoplamiento después de un error de DB2 Bloqueo sobre una fila de datos
para z/OS. individual.
RID Véase identificador de registro. sentido de lectura posicionado en fila
| Especificación de la ubicación deseada del
agrupación de RID
| cursor como parte de una sentencia
Véase agrupación de identificadores de
| FETCH, respecto a una única fila (por
registro.
| ejemplo, NEXT, LAST o ABSOLUTE n).
unión externa derecha | Compárese con sentido de lectura
Resultado de una operación de unión que | posicionado en conjunto de filas.
incluye las filas coincidentes de las dos
conjunto de filas
tablas que se están uniendo y preserva las
Conjunto de filas para el que se ha
filas no coincidentes del segundo
establecido una posición del cursor.
operando de unión. Véase también unión,
unión de equivalencia, unión externa cursor de conjunto de filas
completa, unión interna, unión externa Cursor que se ha definido para que sea
izquierda y unión externa. posible devolver una o más filas como un
conjunto de filas en una sola sentencia
RLF Véase recurso de límite de recursos.
FETCH. El cursor está situado en el
RLST Véase tabla de especificación de límite de conjunto de filas que se capta.
recursos.
sentido de lectura posicionado en conjunto de
| rol Entidad de base de datos que agrupa | filas Especificación de la ubicación deseada del
| conjuntamente uno o más privilegios y | cursor como parte de una sentencia
| que puede ser asignada a un ID de | FETCH, con respecto a un conjunto de
| autorización primario o a PUBLIC. El rol | filas (por ejemplo, NEXT ROWSET, LAST
| está disponible sólo en un contexto fiable. | ROWSET o ROWSET STARTING AT
| ABSOLUTE n). Compárese con sentido de
retrotraer
| lectura posicionado en fila.
Proceso de restaurar datos, cambiados por
sentencias de SQL, al estado que tenían desencadenante de fila
en su último punto de confirmación. Se Desencadenante que se define con la
liberan todos los bloqueos. Compárese granularidad de desencadenante FOR
con confirmar. EACH ROW.
Glosario 393
espacio de tablas segmentado clase de servicio
Espacio de tablas que está dividido en Identificador de ocho caracteres que
grupos de páginas de igual tamaño Workload Manager de z/OS utiliza para
llamados segmentos. Los segmentos se asociar los objetivos de rendimiento de
asignan a tablas de modo que las filas de usuario con una determinada hebra o un
tablas diferentes no se guarden nunca en procedimiento almacenado de DDF.
el mismo segmento. Compárese con También se utiliza una clase de servicio
espacio de tablas particionado y espacio para clasificar el trabajo en los asistentes
de tablas universal. de paralelismo.
restricción de autorreferencia bloque de petición de servicio
Restricción de referencia que define una | Unidad de trabajo planificada para
relación en la que una tabla depende de sí | ejecutarse.
misma.
sesión Enlace entre dos nodos de una red
tabla de autorreferencia VTAM.
Tabla con una restricción de
protocolos de sesión
autorreferencia.
El conjunto disponible de peticiones y
cursor sensible respuestas de comunicación de SNA.
Cursor que es sensible a los cambios que
| operador de conjunto
se efectúan en la base de datos una vez
| Operadores UNION, EXCEPT y
creada la tabla de resultados.
| INTERSECT de SQL correspondientes a
secuencia | los operadores relacionales de unión,
Objeto definido por el usuario que genera | diferencia e intersección. Un operador set
una secuencia de valores numéricos de | deriva una tabla de resultados
acuerdo con las especificaciones del | combinando otras dos tablas de
usuario. | resultados.
archivo secuencial área de comunicaciones compartida (SCA)
Archivo no perteneciente a DB2 cuyos Estructura de lista del recurso de
registros se organizan de acuerdo con sus acoplamiento que un grupo de
sucesivas posiciones físicas, tal como compartimiento de datos de DB2 utiliza
ocurre en una cinta magnética. Varios para la comunicación entre sistemas DB2.
programas de utilidad de base de datos
bloqueo de compartimiento
de DB2 requieren archivos secuenciales.
Bloqueo que impide que los procesos de
precaptación secuencial aplicación que se ejecutan
Mecanismo que desencadena operaciones simultáneamente cambien datos, pero que
de E/S asíncronas consecutivas. Las no impide que lean datos. Compárese con
páginas se leen antes de ser solicitadas y bloqueo exclusivo.
se leen varias páginas con una sola
carácter de desplazamiento a teclado estándar
operación de E/S.
Carácter de control especial (X’0F’) que se
perfil serializado utiliza en sistemas EBCDIC para denotar
Objeto de Java que contiene sentencias de que los bytes subsiguientes representan
SQL y descripciones de variables de caracteres SBCS. Véase también carácter
sistema principal. El conversor de SQLJ de desplazamiento a teclado ideográfico.
produce un perfil serializado para cada
carácter de desplazamiento a teclado ideográfico
contexto de conexión.
Carácter de control especial (X’0E’) que se
servidor utiliza en sistemas EBCDIC para denotar
Destino de una petición procedente de un que los bytes subsiguientes, hasta el
peticionario remoto. En el entorno de siguiente carácter de desplazamiento a
DB2, el recurso de datos distribuido teclado estándar, representan caracteres
proporciona la función de servidor, que se DBCS. Véase también carácter de
utiliza para acceder a datos de DB2 desde desplazamiento a teclado estándar.
aplicaciones remotas.
Glosario 395
registro especial función de SQL
| Área de almacenamiento que DB2 define | Función definida por el usuario en la que
| para que un proceso de aplicación la | la sentencia CREATE FUNCTION
| utilice para almacenar información a la | contiene el código fuente. El código
| que se puede hacer referencia en | fuente es una expresión individual de
| sentencias de SQL. Ejemplos de registros | SQL cuya evaluación da como resultado
| especiales son SESSION_USER y | un solo valor. La función de SQL definida
| CURRENT DATE. | por el usuario puede devolver el
| resultado de una expresión. Véase
nombre de función específico
| también función incorporada, función
Función definida por el usuario que el
| externa y función derivada.
gestor de bases de datos conoce por su
nombre específico. Muchas funciones ID de SQL
definidas por el usuario pueden tener el Véase ID de autorización de SQL.
mismo nombre de función. Cuando se
SQLJ SQL (lenguaje de consulta estructurada)
define una función definida por el
que está incorporado en el lenguaje de
usuario para la base de datos, a cada
programación Java.
función se le asigna un nombre específico
que es exclusivo dentro del esquema de la vía de acceso de SQL
función. El usuario puede proporcionar Lista ordenada de nombres de esquema
este nombre o bien se utiliza un nombre que se utilizan en la resolución de
por omisión. referencias no calificadas a funciones
definidas por el usuario, tipos
SPUFI Véase SQL Processor Using File Input.
diferenciados y procedimientos
SQL Véase Lenguaje de consulta estructurada. almacenados. En el SQL dinámico, la vía
de acceso de SQL se encuentra en el
ID de autorización de SQL (ID de SQL)
registro especial CURRENT PATH. En el
ID de autorización que se utiliza para
SQL estático, la vía de acceso de SQL se
comprobar sentencias de SQL dinámico
define en la opción de vinculación PATH.
en algunas situaciones.
procedimiento de SQL
SQLCA
| Programa de aplicación, escrito por un
Véase área de comunicaciones de SQL.
| usuario, que se puede invocar mediante la
área de comunicaciones de SQL (SQLCA) | sentencia CALL de SQL. Un
Estructura que se utiliza para | procedimiento de SQL se escribe en el
proporcionar información a un programa | lenguaje de procedimiento de SQL. Están
de aplicación sobre la ejecución de sus | soportados dos procedimientos de SQL:
sentencias de SQL. | procedimientos de SQL externos y
| procedimientos de SQL nativos. Véase
conexión de SQL
| también procedimiento externo y
Asociación entre un proceso de aplicación
| procedimiento nativo de SQL.
y un servidor de aplicaciones o de bases
de datos local o remoto. conversación de proceso de SQL
Cualquier conversación que requiera
SQLDA
acceder a datos de DB2, ya sea a través
Véase área de descriptores de SQL.
de una aplicación o mediante peticiones
área de descriptores de SQL (SQLDA) de consulta dinámica.
Estructura que describe variables de
SQL Processor Using File Input (SPUFI)
entrada, variables de salida o las
Recurso del subcomponente de conexión
columnas de una tabla de resultados.
de TSO que permite al usuario de DB2I
carácter de escape de SQL ejecutar sentencias de SQL sin
Símbolo que se utiliza para delimitar un intercalarlas en un programa de
identificador delimitado de SQL. Este aplicación.
símbolo es el signo de comilla doble (″).
código de retorno de SQL
Véase también carácter de escape.
SQLCODE o SQLSTATE.
Glosario 397
canadienses. Pero puede proporcionar una | cláusula GROUP BY, cláusula HAVING,
función definida por el usuario para | cláusula ORDER BY o cláusula FETCH
convertir una divisa a la otra y después | FIRST.
efectuar la comparación.
carácter de sustitución
estructura Carácter exclusivo que se utiliza como
v Nombre que designa colectivamente los sustituto durante la conversión de
diferentes tipos de objetos de DB2, tales caracteres para los caracteres del
como tablas, bases de datos, vistas, programa fuente que no tienen una
índices y espacios de tablas. correspondencia en la representación
codificada de destino.
v Construcción que hace uso de z/OS
para correlacionar y gestionar subsistema
almacenamiento en un recurso de Instancia diferenciada de un sistema de
acoplamiento. Véase también estructura gestión de bases de datos relacionales
de antememoria, estructura de lista o (RDBMS).
estructura de bloqueo.
par sustituto
Lenguaje de consulta estructurada (SQL) Representación codificada de un carácter
Lenguaje estandarizado para definir y individual que consta de una secuencia
manipular datos en una base de datos de dos unidades de código de 16 bits; el
relacional. primer valor del par está dentro del rango
U+D800 - U+DBFF y el segundo valor
propietario de la estructura
está dentro del rango U+DC00 - U+DFFF.
En relación a las agrupaciones de
Los pares sustitutos proporcionan una
almacenamientos intermedios de grupo,
forma de codificación ampliada para
miembro de DB2 que se encarga de las
917.476 caracteres sin necesidad de
actividades siguientes:
utilizar caracteres de 32 bits.
v Coordinar el proceso de reconstrucción,
puntos de control y valoración de vuelco de SVC
daños Vuelco que se emite cuando una rutina de
recuperación funcional de z/OS o DB2
v Supervisar el umbral de agrupación de
detecta un error.
almacenamientos intermedios de grupo
y notificar a los propietarios de la punto de sincronización
conversión el momento en que se Véase punto de confirmación.
alcanza el umbral.
árbol de punto de sincronización
subcomponente Árbol de gestores de recuperación y de
Grupo de módulos de DB2 estrechamente gestores de recursos que están implicados
relacionados que funcionan en una unidad de trabajo lógica,
conjuntamente para proporcionar una comenzando por el gestor de
función general. recuperación, que adoptan la decisión de
confirmación final.
tabla sujeto
Tabla para la que se crea un sinónimo
desencadenante. Cuando se produce el | En SQL, nombre alternativo para una
suceso desencadenante definido en esta | tabla o vista. Los sinónimos sólo pueden
tabla, se activa el desencadenante. | utilizarse para hacer referencia a objetos
| en el subsistema donde está definido el
subconsulta
| sinónimo. Un sinónimo no puede estar
Sentencia SELECT dentro de la cláusula
| cualificado y por lo tanto no puede ser
WHERE o HAVING de otra sentencia de
| utilizado por otros usuarios. Compárese
SQL; una sentencia de SQL anidada.
| con alias.
subselección
Sysplex
| Forma de una consulta que incluye sólo
Véase Sysplex paralelo.
| una cláusula SELECT, una cláusula FROM
| y opcionalmente una cláusula WHERE, paralelismo de consulta de Sysplex
Ejecución en paralelo de una única
Glosario 399
final o una aplicación de red de TCP/IP compartimiento de tiempo interactivo
en un sistema principal de TCP/IP. desde terminales remotos.
plantilla indicación de fecha y hora
Descriptor de archivos de programas de Valor formado por siete partes que consta
utilidad de DB2 que se utiliza para la de una fecha y una hora. La indicación de
asignación dinámica. Las plantillas se fecha y la hora se expresa en años, meses,
definen mediante la sentencia de control días, horas, minutos, segundos y
de programa de utilidad TEMPLATE. microsegundos.
tabla temporal rastreo
Tabla que contiene datos temporales. Las Recurso de DB2 que facilita la capacidad
tablas temporales son útiles para contener de supervisar y recopilar datos de
o clasificar resultados intermedios supervisión, auditoría, rendimiento,
procedentes de consultas que contienen contabilidad, estadísticas y servicio
un gran número de filas. Existen dos tipos (globales) de DB2.
de tablas temporales: la tabla temporal
| transacción
creada y la tabla temporal declarada, las
| Serie atómica de sentencias de SQL que
cuales son creadas por sentencias de SQL
| componen una unidad lógica de trabajo.
diferentes. Compárese con tabla de
| Todas las modificaciones de datos
resultados. Véase también tabla temporal
| realizadas durante una transacción se
creada y tabla temporal declarada.
| confirman conjuntamente como una
hebra Véase hebra de DB2. | unidad o se retrotraen como una unidad.
líneas de proceso seguras bloqueo de transacciones
Característica del código de programación Bloqueo que se utiliza para controlar la
que permite la ejecución simultánea de ejecución simultánea de sentencias de
hebras al proporcionar áreas de SQL.
almacenamiento privadas para cada hebra
nombre de programa de transacciones
y serializar debidamente las áreas de
En conversaciones de SNA LU 6.2,
almacenamiento compartido (globales).
nombre del programa en la unidad lógica
nombre de tres partes remota que deberá ser la otra mitad de la
Nombre completo de una tabla, vista o conversación.
alias. Consta de un nombre de asignación,
tabla de transición
un nombre de esquema y un nombre de
Tabla temporal que contiene todas las
objeto, separados por un punto.
filas afectadas de la tabla en cuestión en
hora Valor de tres partes que designa una hora su estado anterior o posterior al suceso
del día en horas, minutos y segundos. desencadenante. Las sentencias de SQL
desencadenadas en la definición de
tiempo de espera excedido
desencadenante que hacen referencia a la
Terminación anormal del subsistema de
tabla de filas cambiadas en el estado
DB2 o de una aplicación debido a la no
antiguo o en el nuevo. Compárese con
disponibilidad de recursos. Las
tabla auxiliar, tabla base, tabla de réplica
especificaciones de instalación se
y tabla de consultas materializadas.
establecen para determinar tanto el
espacio de tiempo que DB2 deberá variable de transición
esperar servicios de IRLM después del Variable que contiene un valor de
inicio como el espacio de tiempo que columna de la fila afectada de la tabla en
IRLM deberá esperar si no está disponible cuestión en su estado anterior o posterior
un recurso solicitado por la aplicación. Si al suceso desencadenante. Las sentencias
se supera cualquiera de estas de SQL desencadenadas en la definición
especificaciones de tiempo, se declara un de desencadenante pueden hacer
tiempo de espera excedido. referencia al conjunto de valores antiguos
o al conjunto de valores nuevos.
Time-Sharing Option (TSO)
Opción de z/OS que proporciona estructura en árbol
Estructura de datos que representa las
Glosario 401
| permite el establecimiento de una relación UDT Tipo de datos definido por el usuario. En
| fiable entre un sistema de gestión de DB2 para z/OS, se utiliza el término tipo
| bases de datos de DB2 y una entidad diferenciado en lugar de tipo de datos
| externa. definido por el usuario. Véase tipo
diferenciado.
| rol por omisión de contexto fiable
| Rol asociado con un contexto fiable. Los lectura no confirmada (UR)
| privilegios otorgados al rol por omisión Nivel de aislamiento que permite que una
| de contexto fiable se pueden adquirir sólo aplicación lea datos sin confirmar. Véase
| cuando se establece o reutiliza una también estabilidad del cursor, estabilidad
| conexión fiable basada en el contexto de lectura y lectura repetible.
| fiable.
vista subyacente
| usuario de contexto fiable Vista en la que está definida otra vista de
| ID de usuario al que está permitido modo directo o indirecto.
| conmutar el ID de usuario actual en una
deshacer
| conexión fiable.
Estado de una unidad de recuperación
| rol específico de usuario de contexto fiable que indica que los cambios que la unidad
| Rol asociado con un usuario específico de de recuperación ha efectuado en recursos
| contexto fiable. Altera temporalmente el de DB2 recuperables deben retrotraerse.
| rol por omisión de contexto fiable si el ID
Unicode
| de usuario actual en la conexión fiable
Estándar análogo al estándar ISO-10646.
| coincide con el ID del usuario de contexto
Existen varias implementaciones del
| fiable específico.
estándar Unicode y todas pueden
| relación fiable representar un porcentaje elevado de los
| Relación privilegiada entre dos entidades caracteres pertenecientes a muchos
| tales como un servidor middleware y un alfabetos utilizados en el mundo.
| servidor de bases de datos. Esta relación
| unión Operación de SQL que implica el
| permite un conjunto exclusivo de
| operador de conjunto UNION, que
| interacciones entre dos entidades que
| combina los resultados de dos sentencias
| sería imposible de otra forma.
| SELECT. Las uniones suelen utilizarse
TSO Véase Time-Sharing Option. | para fusionar listas de valores
| procedentes de dos tablas.
Recurso de conexión de TSO
Recurso de DB2 que consta del restricción de exclusividad
procesador de mandatos de DSN y de Norma de SQL por la que dos valores de
DB2I. Las aplicaciones no escritas para los una clave primaria o clave de un índice
entornos CICS o IMS pueden ejecutarse de exclusividad no pueden ser iguales.
desde el recurso de conexión de TSO.
índice de exclusividad
marcador de parámetros tipificado Índice que asegura que no se almacenen
Marcador de parámetros que se especifica valores de clave iguales en una tabla.
junto con su tipo de datos de destino. Su
unidad de recuperación (UOR)
formato general es:
Secuencia recuperable de operaciones
CAST(? AS tipo-datos) dentro de gestor de recursos individual,
índices de tipo 2 tal como una instancia de DB2.
Índices que se han creado en un release Compárese con unidad de trabajo.
de DB2 posterior a la Versión 7 o que se unidad de trabajo (UOW)
especifican como índices de tipo 2 en la Secuencia recuperable de operaciones
Versión 4 o posterior. dentro de un proceso de aplicación. En
UCS-2 Juego de caracteres universal, codificado cualquier momento, un proceso de
en 2 octetos, lo que significa que cada aplicación es una unidad de trabajo
carácter está representado por 16 bits. individual, pero la vida de un proceso de
aplicación puede abarcar muchas
UDF Véase función definida por el usuario. unidades de trabajo como resultado de
Glosario 403
| emitiendo la sentencia CREATE o arranque en caliente
| ALTER PROCEDURE para un Proceso de reinicio normal de DB2, que
| procedimiento de SQL nativo. comprende la lectura y el proceso de
| v Una versión de DBRM es el DBRM registros de anotaciones para que los
| que se produce al precompilar un datos bajo el control de DB2 sean
| programa. La versión de DBRM se coherentes. Compárese con arranque en
| identifica por medio del mismo nombre frío.
| de programa e indicación de la hora entorno de aplicación de WLM
| que una versión de programa Atributo de Workload Manager para
| correspondiente. z/OS que está asociado con uno o varios
| v Una versión de un paquete de procedimientos almacenados. El entorno
| aplicación es el resultado de vincular de aplicación de WLM determina el
| un DBRM en un sistema de base de espacio de direcciones en el que se ejecuta
| datos determinado. La versión de un determinado procedimiento
| paquete de aplicación se identifica por almacenado de DB2.
| medio del mismo nombre de programa
| enclave de WLM
| y símbolo de coherencia que el DBRM.
| Construcción que puede abarcar varias
| v Una versión de un LOB es una copia | unidades susceptibles de envío (tareas y
| de un valor de LOB en un momento en | bloqueos de petición de servicio) en
| el tiempo. El número de versión de un | varios espacios de direcciones,
| LOB se almacena en la entrada de | permitiendo que se informe sobre las
| índice auxiliar para el LOB. | mismas y sean gestionadas por WLM
| v Una versión de un registro es una | como parte de una única petición de
| copia del registro en un momento en el | trabajo.
| tiempo.
grabación para el operador (WTO)
| vista Tabla lógica que consta de datos Servicio opcional codificado por el
| generados por una consulta. Una vista se usuario que permite la grabación de un
| puede basar en una o varias tablas base o mensaje en la consola del sistema
| vistas subyacentes y los datos de una informando al operador acerca de errores
| vista se determinan mediante una y condiciones anormales del sistema que
| sentencia SELECT que se ejecuta en tablas pueden precisar correcciones (en z/OS).
| base o vistas subyacentes.
WTO Véase write to operator.
Virtual Storage Access Method (VSAM)
WTOR
| Método de acceso para proceso directo o
Mensaje Write to Operator (WTO) con
| secuencial de registros de longitud fija y
contestación.
| de longitud variable en dispositivos de
| disco. XCF Véase recurso de acoplamiento entre
sistemas.
Virtual Telecommunications Access Method
(VTAM) XES Véase servicios ampliados entre sistemas.
Programa bajo licencia de IBM que
XML Véase Extensible Markup Language.
controla la comunicación y el flujo de
datos en una red SNA (en z/OS). atributo de XML
Par nombre-valor contenido en un
tabla volátil
elemento de XML con identificadores que
Tabla para la que las operaciones de SQL
modifica ciertas características del
eligen el acceso de índice siempre que es
elemento.
posible.
| Columna XML
VSAM
| Columna de una tabla que almacena XML
Véase Método de acceso de
| y se define utilizando el XML de tipo de
almacenamiento virtual.
| datos. Los valores de XML que están
VTAM | almacenados en columnas XML son
Véase Virtual Telecommunications Access | representaciones internas de documentos
Method. | XML correctamente formados.
Glosario 405