Tabla de contenido INTRODUCCION Muchos expertos de la industria y usuarios han elogiado las nuevas herramientas que IBM desarrollo para facilitar la administración y uso de DB2 Universal Database, constituido en base a dos productos incluidos en el DB2 de AIX en 1994: el DB2 Common Server, que para propósitos generales incluía funciones avanzadas para el mercado de servidores de bases de datos con soporte de hardware SMP y OLTP; y el DB2 Parallel Edition, que fue desarrollado para soportar aplicaciones de gran escala, como el Data Warehousing y Data Minino y aplicaciones de negocios a nivel mundial como la SAP, People Soft y Baan. DB2 incluye todo lo necesario para implementar una solución de replicación de datos en cualquier tipo fr ambiente distribuido o heterogéneo, pues permite enviar los datos a cualquier sitio para cubrir todos los requerimientos de una empresa, desde oficinas centrales a sucursales, usuarios móviles, proveedores, clientes y socios de negocios. Gracias a su alcance global y de bajo costo, Internet puede ser una solución de negocios muy poderosa para realizar operaciones comerciales garantizando un nivel de seguridad y confiabilidad con sus servicios de autorización y autenticación integrados a redes y sistema operativos, soportando el network−computing utilizando Java y JDBC, incluyendo capacidad nativa de almacenar varios tipos de datos: alfanuméricos, video, imagen, audio y los definidos por el usuario. Tanto estas capacidades, un poco de su historia y sus comandos internos es lo desarrollado a continuación. IBM® DB2® Base de datos Universal de Gira Rápida DB2® el Banco de datos Universal Versión 7.1 es el sistema de dirección de base de datos correlativo habilitado. Es escalable de los procesadores a los multiprocesadores simétricos a los racimos masivamente paralelos. DB2 la Base de datos Universal ofrece la capacidad multimedia con la imagen, audio, el video, el texto, el objeto avanzado espacial, y otro el apoyo correlativo. Con Versión 7.1, DB2 el Banco de datos Universal ofrece un gran apoyo para los negocios a través de Java!, XML, y las soluciones móviles así como nuevo apoyo para las soluciones de inteligencias comerciales. Cada nueva versión de DB2 construye en la fundación fuerte del descargo anterior. Con Versión 7.1, DB2 el Banco de datos Universal entrega el apoyo más poderoso para inteligencia comercial, dirección de los datos, y soluciones de negocio. También es incluido el fuerte apoyo por Microsoft® los Windows® 32−bits de sistemas operativos y la compatibilidad agregada por la familia de DB2. 1 El XML Soporte Extendido DB2 le permite ahora guardar el Idioma de Encarecimiento extendido (XML) los documentos como un nuevo datos de la columna. Se puede descomponer y puede guardar XML en su componente parte así como la búsqueda en los campos descompuestos de un documento de XML. Esta función combinó con los perfeccionamientos a Net.Data® le proporcionan una manera más simple de intercambiar y guardar los documentos electrónicamente. Los Perfeccionamientos de Net.Data Net.Data que conecta las aplicaciones de Tejido a DB2 ha construido ahora en la explotación de XML. Esto le permite generar las etiquetas de XML como el rendimiento de su macro de Net.Data, en lugar de entrar en las etiquetas a mano. Se puede especificar un XML estilo hoja (XSL) para ser usado al estructurar y desplegar el rendimiento generado. Inteligencia Comercial El poder de IBM se han unido el Almacén Visual y la simplicidad del DB2 para mantener una sola y nueva interfase del usuario (clientes) de inteligencias comerciales. Se puede acostumbrar el Centro de Almacén de Datos a definir y automatizar el extracto de los datos, transformación, la distribución, y la carga de proceso para los almacenes de los datos. La visualización y manipulación de datos y metadata son hechos más simples con los nuevos wizard. Estos wizard ayudan a construir marcas con asterisco en esquemas y archivos de texto de importación. Ellos también proporcionan SQL Assist mejorado en los rasgos y la nueva visualización de flujo de mando. El Centro de Almacén de Datos también influye en el poder de la repetición de los datos integrada de IBM, mientras proporciona mayor flexibilidad configurando los guiones de movimiento de datos. El log cerrado después del backup Después de que un backup en línea está completo, DB2 obligará a cerrar el log actualmente activo, y como resultado se archivará fuera de. Esto asegura que su disco auxiliar en línea tiene un juego completo de logs archivados y disponibles para la recuperación. Requerimiento de Log de archivo de soporte Usted puede obligar el log actualmente activo al cierre y puede forzar que el log sea archivado. Este rasgo le da el mando más granular a administradores de bases de datos encima de su estrategia del backup/restore. 2 Un principio fundamental de DB2 es que los datos pueden y deben residir dondequiera que tenga más sentido: DB2 está disponible para múltiples sistemas de operaciones, incluyendo UNIX, Microsoft Windows, OS/2, AS/400, y OS/390. Esto significa que pueden tomarse las decisiones basado en la plataforma correcta para una porción específica de los datos. DB2 le permite distribuir y acceder los datos por una red de sistemas. Los usuarios pueden preguntar, agregar, anular, y poner al día los datos en las bases de datos locales y remotos. Las copias múltiples de DB2 servidor código pueden correr adelante en la misma computadora. Esto significa que usted puede tener los casos múltiples de DB2 que corre concurrentemente, cada uno, con una configuración diferente y las vistas entalladas de los datos, e incluso los datos variantes. Pueden dividirse las bases de datos de DB2 por computadoras independientes múltiples conectadas por un LAN o por secciones. Esto le permite que divida bases de datos grandes, o sea que son demasiado grande para que un solo servidor trabaje eficazmente. También significa que los funcionamientos pueden correr en paralelo en las particiones de la base de datos individuales, reduciendo el tiempo de la ejecución. Accesos de Datos DB2 proporciona un juego de datos de acceso de las interfaces para los diferentes tipos de usuarios y aplicaciones: El Centro de Control es un gráfico de uso fácil para los usuarios interactivos y para los administradores de Bases de Datos. Mantiene las herramientas de las tareas diarias para configurar el sistema, creando las tablas y otros objetos, fijando los trabajos, y realizando el apoyo y recuperación. Usted puede ejecutar el Centro del Control en el puesto de trabajo dónde su base de datos se localiza o en un puesto de trabajo remoto. Una solo Centro de Control puede manejar varias bases de datos en varios puestos de trabajo. El Centro de Almacén de Datos es una interfase gráfica que simplifica el proceso de diseñar, mientras construye, y mantiene los almacenes de los datos. El Procesador de Línea de Orden es una interfase texto−orientada que usted puede usar para acceder y manipular las bases de datos del sistema, puede emitir las declaraciones de SQL y DB2 ordenando el acceso de las bases de datos locales y remotos, y mantiene un historial de todas las demandas. Protección de Datos 3 Proteger los datos guardados es una función esencial del sistema de una base datos. DB2 guarda sus datos contra la pérdida, acceso desautorizado, o entradas inválidas proporcionando: Un juego de herramientas que lo protegen contra la pérdida de datos por el evento de un hardware o fracaso del software. Los backups o logs periódicos para restaurar una base de datos al mismo estado que tenía antes del fallo. Un sistema de autoridades y privilegios que protegen los datos contra el acceso desautorizado y la modificación. La autoridad normalmente aplica al derecho de un usuario para realizar ciertos tipos de actividades administrativas, mientras los privilegios son asociados con la habilidad del usuario para realizar las acciones en los objetos de la base de datos. Un medio para controlar la entrada de los datos definiendo las reglas para que los valores sean válidos para una columna en una tabla (los constreñimiento), o cómo se relacionan columnas en uno o más tablas a la integridad del referencial. Una facilidad de la auditoria que genera un sendero de eventos de la base de datos. Estos archivos pueden usarse para supervisar aplicaciones y accesos del usuario, incluso las acciones del administrador de sistema. Esta supervisación podría llevar a los cambios en la estrategia de su protección de datos. Administrando Bases de Datos Usted puede realizar la administración de la DB2 desde cualquier puesto de trabajo. No le importa si su base de datos es local o remota. Usted puede escoger un sistema de administración especializado para todas sus Bases de Datos. Se puede administrar la BD incluso desde un navegador (Web Browser). DB2 incluye herramientas gráficas que le permiten poner a punto la actualización, acceso a los servidores de DB2 remotos, manejar todos los servidores de un solo sitio, desarrollar las aplicaciones, y proceso de pregunta SQL: El Centro de Control proporciona una manera conveniente de ocuparse de las tareas diarias de la administración de la base de datos. El Centro de Control lleva a una vista jerárquica de todos sus sistemas, de las bases de datos, y de los objetos de la base de datos. Esto hace que el sistema sea fácil de configurar, crea objetos de bases de datos y supervisa las bases de datos. El Centro de Administración por Satélite le permite administrar los DB2 Satélite servidores. DB2 la Edición de Satélite de Bases de datos Universal es una función múltiple de alto rendimiento de DB2 para los usuarios que están de vez en cuando conectados (móviles) y los servidores remotos desatendidos. (Tecnología portátil) BACKUP Y RECOVERY DE BASE DE DATOS Desarrollar una estrategia de backup y recovery Una base de datos puede ser fuera de servicio por la causa de las fallas de hardware o software. A veces se encuentra problemas de almacenar, interrupciones de fuente de poder, y fallas de aplicacion. A diferentes escenarios de falla se requieren diferentes acciones de recuperacion. Se protegen los datos de las posibles fallas con una buena estrategia de recuperacion. Unos factores que se deben contestar en el momento de desarrollar la estrategia de recuperacion son: • Sera recuperable o no recuperable la base de datos? • Que tan cerca al tiempo de falla para recuperar la base de datos (punto de recuperacion)? • Que tan frecuente para hacer el respaldo? 4 • Cuanto tiempo se tomaria para hacer la recuperacion de la base de datos? • Cunato tiempo se tomaria para hacer el respaldo de la base de datos? • Cunato espacio de almacenamiento es disponibles para las copias de la base de datos y los archivos de log? • Seria suficiente el respaldo de tablespace, o seria necesario el respaldo de la base de datos entera? Una estrategia de recuperacion de base de datos debe asegurar que todas las informaciones son dispoinbles cuando son requeridos para la recuperacion de base de datos. Debe incluye una horario de respaldos y, en el caso de sistemas de base de datos distribuidos, incluye las copias de base de datos cuando los servidores o nodos estan agregados o eliminados. La estrategia global debe tambien incluye los procedimientos para los scripts de comando de recuperacion, aplicaciones, funciones definidas por usuario, codigo de procedimiento almacenado en libreria de sistema de operacion. Base de datos no recuperable retiene ambos los parametros de configuracion de logretain* y userexit* desactivados, y puede restaurarse unicamente en modo offline* con recuperacion de version recovery. Los datos que son faciles a recrear, se pueden guardarlos en una base de datos no recuperable, por ejemplo: • Tablas que tienen datos para aplicaciones de solo lectura. • Tablas que tienen poca cantidad de datos. • Tablas grandes que tienen pocos registros, y que no se modifican frecuentemente. Base de datos recuperable se retiene los archivos de log activos para crash recovery, y tambien retiene los archivos de log archivados. Se restaura base de datos recuperable a su estado del momento que la imagen de respaldo fue tomada, solamente en modo offline. Sin embargo, con rollforward recovery, se puede regresar la base de datos a un momento especifico o al fin de los archivos de log, con los archivos de log activados y archivados. Los datos que no se pueden recrear facilmente, debe guardar en una base de datos recuperable, por ejemplo: • Datos que fueron modificado por aplicaciones o usuarios finales. • Datos que no pueden recrear, incluyen los datos que tienen su fuente destruido, y los datos que se cargaron manualmente. La operacion de respaldo de una base de datos recuperable se puede realizar en ambos modo offline y modo online*, y la restauracion y la recuperacion se realizan en solo modo offline. Cuando la operacion de respaldo a una(s) tabla(s) esta en proceso en modo online, la(s) tabla(s) tambien esta(n) disponible(s) para actualizar, y los cambios se registran en los archivos de log. Cuando la operacion de rollforward recovery a una(s) tabla(s) esta en proceso en modo online, la misma tabla no sera disponible para actualizar hasta la operacion esta completa, pero usuarios no estan prevenidos de accesar a la(s) otras tabla(s). El concepto de una respaldo de base de datos es la misma que cualquieras otras respaldos de datos: hacer una copia de los datos y almacenar la en un medio diferente en case que se danna el original. El respaldo mas simple es cerrar todas las conexiones a los usuario para asegurar que no habra mas transacciones, y hacer el respaldo. Luego reconstruir la base de datos si se danna o ocure fallas a la base de datos. Los tres tipos diferentes de recuperacion La reconstrucion de la base de datos se conoce como recovery. Los tres tipos diferente de recuperacion son: • Version recovery, que es la restauracion de la base de datos a la version anterior con una imagen de la base de datos que fue creado durante la operacion de respaldo. • Rollforward recovery, que es la reaplicacion de transacciones registradas en los archivos de log despues que una base de datos o una tabla esta restaurada. 5 • Crash recovery, que es la recuperacion automatica de la base de datos si una falla ocurre antes de todas las transacciones estan completas. II − 1. Version Recovery Version recovery es la restauracion de la base de datos de la version anterior con una imagen de la base de datos que fue creado durante la operacion de respaldo. Se usa version recovery con una base de datos no recuperable. En este momento, solo quedan los archivos de log activos para crash recovery. Una operacion de restauracion reconstruira una base de datos entera al estado identico a la base de datos en el momento que se realizo la operacion de respaldo. Sin embargo, se perderan todas las transacciones que se realizaron despues de la operacion de resplado. Con la base de datos distribuido, es necesario hace el respaldo y restuarar la base de datos de cada nodo separado y en el mismo momento. II − 2. Rollforward Recovery Rollforward recovery es la reaplicacion de transacciones registradas en los archivos de log despues que una base de datos o una tabla esta restaurada. Para aplicar el metodo de rollforward recovery, es necesario a hacer un respaldo de la base de datos y los archivos de log. Hay dos tipos de rollforward recovery: • Database rollforward recovery. En este tipo de rollforward recovery, las transacciones registradas en archivos de log seran aplicadas despues de la operacion de la restauracion de la base de datos. Los archivos de log registran todos los cambios a la base de datos. Este metodo recupera la base de datos a su estado del ultimo momento antes de la falla (que es hasta el fin de los archivos de log). Con la base de datos distribuida, si hace una rollforward recovery para regresar la base de datos a un momento especifico, es necesario a aplicar la recuperacion a todos los nodos para asegurarse que todos los nodos estan en el mismo nivel de estado. Si solamente para restaurar un solo nodo, se reaplican todas las transacciones que estan registradas en archivos de log. 6 • Tablespace rollforward recovery. Para comenzar la operacion de table space rollforward recovery, se neceesita la imagen de la base de datos entera (que es, todas los table spaces), o uno o mas table spaces, y tambien los archivos de log que afectan a los table spaces que se restauraran. Se puede restaurar las tablas con los archivos de log a dos puntos: • Fin de los archivos de log. • Un momento particular, que se conoce como point−in−time recovery. II − 3. Crash Recovery Crash recovery es la recuperacion automatica de la base de datos si una falla ocurre antes de todas las transacciones estan completas. Una falla de transaccion se provoca por un error grave o una comdicion que termina la base de datos anormalmente. Si las transacciones estan interrumpidas, la base de datos estaria en un estado inconsistente y inservible. Las condiciones que resultan falla de transaccion incluyen: ♦ Una falla de fuente de poder en la maquina, que cae la base de datos. ♦ Una serie de error del sistema operativo, que cae DB2. ♦ Crash recovery es el proceso que regresa la base de datos al estado consistente con desechar las transacciones incompletas y completar las transacciones con commit que todavia estan en la memoria. III. Recovery Logs y Recovery History File Los archivos de log y los archivos de la historia de recuperacion son creados automaticamente cuando se crea una base de datos. No se pueden modificar directamente a los archivos de log o los archivos de la historia de recuperacion. Sin embargo, son importantes para recuperar los datos perdidos. 7 ♦ Recovery logs, que se usa para recuperar de los errores de aplicacion o sistema. En combinacion con el respaldo de base de datos, los archivos de log son usados para recuperar el estado consistenet de un momento antes de una falla pasa a la base de datos. ♦ Recovery history file, que contiene un resumen de informaciones del respaldo, que se puede usar para recuperar parte o toda de la base de datos a un momento especificado. Se usa para rastrear eventos relacionados a la recuperacion, tales como las operaciones de respaldo y restauracion. III − 1. Recovery log Todas bases de datos tienen los archivos de log asociados. Los logs registran cambios de base de datos. Si una base de dato necesita ser recuperada a un punto despues el ultimo respaldo, los logs son requeridos para realizar la recuperacion. Los logs de DB2 tienen dos tipos de comportamiento: ♦ Circular logging, es el comportamiento default cuando se crea una nueva base de datos. Como su nombre, circular logging usa un anillo de logs activos* en linea para registrar los cambios de base de datos para realizar una crash recovery, pero no se permite una rollforward recovery. Con este tipo de logs, la recuperacion de base de datos que puede realizar un usuario es version recovery. Todas las transacciones que se han realizaos entre el ultimo respaldo y el punto de falla de sistema, se perderan. ♦ Archived logs, son logs cerrados y guardados, y son usados especificamente para rollforward recovery. Pueden ser uno de los dos siguiente tipos: Offline archived logs, que no datos. Online archived logs, que son guardados en el directorio de la base de datos. III − 2. Recovery history file 8 Un RHF (Recovery History File) es creado con cada base de datos, y se actualiza automaticamente cuando hay: ♦ Respaldo de una base de datos o un tablespace ♦ Recuperacion de una base de datos o un tablespace ♦ Roll forward de una base de datos o un tablespace ♦ Alter un tablespace ♦ Renombrar un tablespace ♦ Cargar una tabla ♦ Actualizar una tabla Un RHF contiene un resumen de informaciones del respaldo. Usuario puede consultar las informaciones de un momento especificado. Las informaciones en RHF incluye: ♦ La parte de la base de datos que se hizo respaldo, y como se hizo. ♦ El tiempo que realizo el respaldo. ♦ La localizacion de la copia. ♦ El tiempo que realizo la ultima recuperacion. ♦ El tiempo que se renombro un tablespace, con el nombre previo y el nombre actual. ♦ El estado del respaldo: activo, inactivo, vencido, o borrado. ♦ El ultimo numero de sequencia de log guardado por el respaldo de la base de datos, o procesado por una Rollforward Recovery. INTEGRIDAD Las restricciones son reglas que el administrador de la base de datos establece. Hay tres tipos de restricciones. ♦ Restricción Única. Es una regla que prohíbe que haya valores duplicados en una o en más columnas en una tabla. La restricción de un único valor y las claves primarias no son tomadas como restricciones. Por ejemplo: una restricción única podría definirse para identificar a un proveedor, y asegurarse de esta forma que no haya un mismo identificador para dos proveedores. ♦ Restricción Referencial. Es una regla lógica sobre valores en una o en más columnas, en una o más tablas. Por ejemplo, un conjunto de tablas que comparten información sobre los proveedores de una empresa. Ocasionalmente, el nombre de un proveedor podría cambiar. Este tipo de restricciones permite que se actualicen ese grupo de tablas, permitiendo resultados que puedan ocasionar la pérdida de información del proveedor. ♦ Una tabla de Control de Restricciones: Es un grupo de restricciones que se agregan a los datos de una tabla específica. Por ejemplo: Se podría definir el sueldo de un empleado, tal que nunca deba ser menor a $200. −Estos tipos de integridad referencial pueden ser activados o no. 9 La integridad referencial es el estado en el que todas las claves foráneas de una base de datos deben ser válidas. Una clave foránea es una columna o un grupo de columnas en una tabla cuyos valores son necesarios para poder referenciar a una clave primaria o un único valor de una fila de la tabla de la cual se desprende. La restricción referencial es la regla que permite que una clave foránea sea válida solamente si: ♦ Ellas se aparecen como valores de una clave de la tabla maestra o ♦ Algún componente de la clave foránea es nulo. La tabla que contiene la clave maestra, se define como Tabla Padre de la integridad referencial, y la tabla que contiene la clave foránea se llama dependiente. Esta restricción referencial es opcional y puede definirse con el comando CREATE TABLE y ALTER TABLE. Esta restricción se fuerza por el Administrador de la base de datos durante la ejecución de los comandos INSERT, DELETE, ALTER TABLE ADD CONSTRAIST Y SET CONSTRAITS. Esto es puesto en práctica eficazmente al realizar la declaración. Nota: La integridad referencial, las restricciones de control y los triggers pueden combinarse durante la ejecución. Clave Maestra Es la clave principal o clave única de una restricción preferencial. Fila maestra: Es la fila que tiene al menos una fila dependiente. Tabla maestra o Padre: La tabla que es Padre en por lo menos una restricción referencial. Esta tabla puede ser definida como Padre en un número arbitrario de restricciones referenciales. Una tabla Padre puede ser también una tabla dependiente. Tabla dependiente. Es aquella tabla que depende de al menos una restricción referencial. Una tabla dependiente puede ser 10 también una tabla Padre. Tabla descendente. Una tabla es descendente de una tabla T, si esta es dependiente de T. Fila descendente: Una fila descendente de una fila F, si esta es dependiente de F. Ciclo referencial Es un conjunto de restricciones referenciales, tal que cada tabla es descendente de si misma. Fila Auto−referenciada: Es la fila que es Padre de ella misma. Tabla auto−referenciada. Es la tabla que es padre y dependiente en la misma restricción referencial. Inserción: La regla de inserción en una restricción referencial significa que al colocar un valor no nulo como clave foránea, este debe coincidir con algún valor de la clave Padre en la tabla de la cual esta depende. El valor en una clave foránea, es nulo si algún componente es nulo. Esta regla esta implícita cuando se especificó la clave foránea. UPDATE RULE. (Regla de actualización) La regla de actualización de una restricción referencial se especifica al definir dicha restricción. Las opciones son NO ACTION y RESTRICT. Las reglas de actualización se aplican cuando una fila de la 11 tabla Padre o una fila de la tabla dependiente se actualiza. En caso de una fila padre, cuando un valor de la columna de la clave es actualizada ♦ Si alguna fila en la tabla dependiente concuerda con el original de la clave, esta actualización se rechaza cuando la regla de actualización esta en RESTRICT. ♦ Si alguna fila en la tabla dependiente no tiene su correspondiente clave Padre cuando el comando de actualización se completó, esta actualización se rechaza si la regla se encuentra en NO ACTION. En caso de una fila dependiente. ♦ La regla de actualización está implícita cuando la clave foránea se especifica como NO ACTION significa que un valor no nulo que se actualice, debe corresponder a algún valor de la clave padre o de la tabla padre, cuando el comando de actualización se ejecuta. DELETE RULE. (Regla de eliminación.) Esta regla se específica cuando la restricción referencial se define. Las opciones son NO ACTION, RESTRICT, CASCADE, or SET NULL. SET NULL puede especificarse solo si alguna columna de la clave foránea admite valores nulos. Esta regla se aplica cuando una fila de la tabla es eliminada. Más precisamente, cuando una fila de la tabla padre se intenta borrar y esta tiene filas dependientes en tablas dependientes. Supongamos P es la tabla padre D sea la tabla dependiente p sea la fila padre que es objeto de eliminar y propagar así su eliminación a las filas dependientes. Si la regla de eliminación se determina como: 12 ♦ RESTRICT or NO ACTION; ocurre un error y las filas no son eliminadas. ♦ CASCADE; La operación de eliminación se propaga de la fila dependiente p a D. ♦ SET NULL; cada valor que es factible de anular en la columna correspondiente a la clave foránea de la tabla D es puesto como NULO. Cada restricción referencial en el cual una tabla es padre, tiene sus propias reglas de eliminación. Y todas las reglas de eliminación son utilizadas para determinar el resultado de una operación de borrado. De esta forma, una fila no puede eliminarse si tiene dependientes y se restringe con RESTRICT o NO ACTION, o la eliminación en cascada de cualquiera de sus dependientes con las reglas RESTRICT or NO ACTION. Eliminar una fila de la tabla Padre P que involucra a otras tablas y puede afectar a las filas de esas tablas se guía según el siguiente criterio: ♦ Si la tabla D que es dependiente entre P y la regla es RESTRICT or NO ACTION, D está involucrada en la operación, pero no es afectado por la operación. ♦ Si la tabla D, que depende de P y la regla es SET NULL, D está involucrada en la operación, y las filas D pueden actualizarse durante la operación. ♦ Si la tabla D, es dependiente de P y la regla de eliminación se indica como CASCADE, D esta incluida en la operación y las filas de D pueden eliminarse durante la operación. ♦ Si las filas D son eliminadas, la operación de eliminado en P se dice que se extendió a D. Si D, también es una tabla Padre, las acciones descriptas en esta lista, a su vez, se aplican a los dependientes de D. Cualquier tabla en la que se pueda involucrar una operación de eliminado en P, se dice que esta conectada para eliminado a P. Así, una tabla se dice que esta conectada para eliminado a una tabla P, si esta es dependiente de P o una tabla dependiente que se encuentra con indicación de operaciones en cascada de P. 13 Hay tres tipos de restricciones: Re ♦ − una fila se agrega dentro de la tabla ♦ − una fila de la tabla se modifica El table check constraint se ve obligada por la aplicación a condiciones de búsqueda para cada fila que es agregada o modificada. Un error ocurrirá si el resultado de la condición de búsqueda es falso para alguna fila. Cuando una o mas table check constraints son definidas con el comando ALTER TABLE para una tabla con datos existentes, los datos existentes son verificados nuevamente por la nueva condición antes que alter table suceda. La tabla puede ser puesta en estado de verificación pendiente, el que permitirá ingresar datos sin verificarlos. El set constraint es usado para poner la tabla dentro del estado pendiente de verificación. Esto es también usado para abreviar la verificación de cada fila de la restricción nuevamente. SEGURIDAD EN DB2 DB2 utiliza una combinacion de seguridad esterna y control interno de acceso a proteger datos. Para poder accesar un servidor de base de datos, es necesario a pasar unas revisiones de seguridad. El primar paso de seguridad se llama Autenticacion, donde usuario prueba que es quien que dice. El segundo paso de seguridad se llama Autorizacion, donde SGBD decide que si el usuario autenticado es permitido a realizar accion solicitada o accesar datos solicitada. I. Autenticacion Autenticacion de usuario es completamente fuera de DB2. El proceso puede ser en una parte del SO, en un dispositivo separato, o, en unos casos, no existe. Por ejemplo, en sistemas basados en UNIX, el proceso de autenticacion esta en el mismo SO; y no esiste el proceso en los SO de Windows 95 o Windows 3.1. Se necesitan un User ID y un Password para autenticar un usuario en una de las dos maneras: ♦ Proceso de login a SO con exito, como evidencia de identidad ♦ La combinacion de User ID y Password El usuario tambien hay que ser identificado por DB2 con un nombre autorizado. Un nombre que puede ser el mismo de User ID. Luego, se extrae una lista de grupos que el usuario pertenece. DB2 extraen una lista de, como el maximum, 64 grupos para cada usuario. Si un usuario pertenece a mas que 64 grupos, solamente los primeros 64 grupos son validos. En este momento, no ocurre ningun error, y los restos grupos son ignorados. II. Autorizacion Autorizacion es el proceso, con la informacion acerca de un usuario autenticado, que indica cuales operaciones un usuario puede realizar, y cuales objetos puede accesar. Tablas y archivos de 14 configuracion son utilizados para registrar los permisos de cada nombre autorizado. Hay dos tipos de permisos registrados por DB2: ♦ Privilegio, define un permiso para un nombre autorizado, y le permite a crear o accesar objetos ♦ Nivel de autoridad, es un grupo de privilegios y controles sobre administracion de alto nivel. Ambos son registrados en catalogos de base de datos. III. Jerarquia de autoridades Un usuario o grupo puede tener una o mas de los siguiente niveles de autorizacion: ♦ Autoridad administrativa (SYSADM o DBADM), dan privilegios total para objetos ♦ Autoridad de sistema (SYSCTRL o SYSMAINT), dan privilegios total para administrar el sistema, pero no se permite accesar a los datos ♦ Autoridad de cargar (LOAD), da privilegios a insertar datos a tablas III − 1. Autoridad de administracion de sistema (SYSADM) SYSADM es el mas alto nivel de autoridad administrativa. Usuarios quienes tienen SYSADM pueden utilizar utilidades, utilizar comandos de base de datos, accesar cualquier tabla en base de datos, y tienen el control a todos los objetos. Solo los usuarios quienes tienen SYSADM puede realizar las siguientes funciones: ♦ Mover una base de datos (export / import) ♦ Cambia el archivo de configuracion de administrador de base de datos (incluye dar autoridad de SYSCTRL o SYSMAINT a grupos) ♦ Permite DBADM Ademas, un usuario con SYSADM puede realizar las funciones de SYSCTRL, SYSMAINT, y DBADM. III − 2. Autoridad de control de sistema (SYSCTRL) SYSCTRL es el mas alto nivel de autoridad de control de sistema. Permite a realizar mantenimiento, pero no permite acceso directo a datos en la base de datos. Solo un usuario con autoridad de SYSCTRL o superior puede realizar los siguientes: ♦ Actualiza una base de datos o nodo ♦ Forzar usuarios fuera del sistema (offline) ♦ Crear o eliminar una base de datos ♦ Crear, eliminar, o actualizar un tabla ♦ Restauracion de una nueva base de datos III − 3. Autoridad de mantenimiento de systema (SYSMAINT) SYSMAINT es el segundo nivel de autoridad de control de systema. Permite a realizar mantenimiento, pero no permite acceso directo a datos en la base de datos. Solo un usuario con autoridad de SYSMAINT o superior puede realizar los siguientes: ♦ Actualizar archivos de configuracionn de base de datos ♦ Backup un base de datos o tabla ♦ Restauracion de una base de datos que ya existe ♦ Restaracion de una tabla ♦ Realizar rollforward recovery III − 4. Autoridad de administracion de base de datos (DBADM) 15 DBADM es el segundo nivel de autoridad administrativa. Se aplica solamente a una base de datos especifica, y permite usuario utilizar comandos de la base de datos, accesar datos, grant privilegios a otros, y revoke cualquier privilegios de cualquier usuario. Solo un usuario con autoridad de DBADM o superior puede realizar los siguientes: ♦ Leer archivos log III − 5. Autoridad de cargar (LOAD) Usuarios quienes tienen autoridad de LOAD pueden utilizar el comando LOAD a cargar datos a una tabla. IMPORTACION Y EXPORTACION El Procesador de línea de mandatos de DB2 Everyplace para Palm OS, EPOC, Windows CE, plataformas Win32, Neutrino y Linux incorporado, permite importar datos desde un archivo a DB2 Everyplace y exportar datos de DB2 Everyplace a un archivo. La importación y exportación de datos en Palm OS utiliza los archivos Memo en el dispositivo. Importación de datos desde un archivo a DB2 Everyplace Para importar datos desde un archivo a DB2 Everyplace, escriba: IMPORT FROM nombre−archivo OF DEL INSERT INTO nombre−tabla nombre−archivo es el nombre del archivo desde el que se importa. En Palm OS, nombre−archivo es el nombre del archivo Memo desde el que se importa. El nombre−archivo debe aparecer en la primera línea del archivo Memo. Los archivos Memo de Palm tienen una limitación de 4K bytes de almacenamiento de texto. nombre−tabla es el nombre de una tabla existente a la que se importa. Por ejemplo, para importar datos de un archivo llamado mydata.txt a una tabla existente llamada mytable, escriba: IMPORT FROM mydata.txt OF DEL INSERT INTO mytable Exportación de datos desde DB2 Everyplace a un archivo Para exportar datos desde DB2 Everyplace a un archivo, escriba: EXPORT TO nombre−archivo OF DEL sentencia nombre−archivo es el nombre del archivo en el que se escriben los datos. sentencia es la sentencia SELECT para seleccionar los datos que se exportan. Por ejemplo, para exportar todos los datos desde la tabla llamada mytable a un archivo llamado myfile.txt, escriba: EXPORT TO myfile.txt OF DEL SELECT * FROM mytable TRIGGERS La mayoría de los sistemas de administración de la base de datos relacionales proporcionan ayuda para los triggers La IBM está agregando la ayuda de triggers a DB2 para OS/390 en la versión 6. Pero, ¿qué es un trigger? Si usted nunca ha tenido la oportunidad de utilizarlos, su potencia puede eludirle al principio. Sin embargo, una vez que usted haya utilizado triggers, el vivir sin ellos puede ser increíble! Lo Básico Indicado simplemente, un trigger es una parte del código que se ejecuta en respuesta a una declaración de modificación de los datos; es decir, un insert, un update, o un delete. Para ser un poco más exacto: los triggers son los procedimientos especializados en manejar que se salvan dentro, y son 16 manejados por el RDBMS. Cada uno se asocia a un vector solo, especificado. Los triggers se pueden pensar en como una forma avanzada de regla o de contraint escrito usando una forma extendida de SQL. Un trigger no puede ser llamado o ser ejecutado directamente; es ejecutado (o encendido automáticamente) por el RDBMS como resultado a una acción − una modificación de los datos al vector asociado. Una vez que se crea un trigger se ejecuta siempre cuando ocurre su acontecimiento de la despedida (update, insert, o delete). Por lo tanto los triggers son automáticos, implícitos, y no se puede ignorar. Triggers versus Procedimientos Almacenados Los trigger son similares a los procedimientos almacenados. Ambos consisten en la lógica procesal que se salva en el nivel de la base de datos. Sin embargo, los procedimientos almacenados no son accionados y no se asocian a un vector específico. Un procedimiento almacenado es ejecutado explícitamente invocando una llamada al procedimiento (en vez implícito de ser ejecutado como triggers). Además, un procedimiento almacenado puede tener acceso a muchos vectores sin que sea específicamente asociado a cualquiera de ellos. Por qué Utilice Los Triggers? Los triggers son útiles para implementar código que deben ser ejecutados de forma regular debido a un acontecimiento predefinido. Utilizando triggers, el programar y los problemas de la integridad de los datos pueden ser eliminados porque el trigger será encendido siempre que ocurra el acontecimiento que acciona. Usted no necesita recordar programar o cifrar una actividad para realizar la lógica en el trigger. Sucede automáticamente en virtud de él que está en el trigger. Esto es verdad del SQL estático y dinámico; SQL con fines específicos y previsto del anuncio. Los triggers se pueden poner en ejecución para muchas aplicaciones prácticas. Es absolutamente a menudo imposible cifrar reglas de negocio en la base de datos usando solamente DDL. Por ejemplo, DB2 no utiliza los restricciones complejas (solamente restricciones basados en los check) o en los diferentes tipos de constraints referenciales (tales como delete pendiente de procesar o update cascade). El uso de triggers, genera un ambiente muy flexible para establecer las reglas y restricciones del negocio en ejecución en el DBMS. Esto es importante porque tener las reglas de negocio en la base de datos se asegura de que cada uno utiliza la misma lógica para lograr el mismo proceso. Los triggers se pueden cifrar para tener acceso y/o para modificar a otros vectores, mensajes informativos de la impresión, y especifican restricciones complejas. Por ejemplo, considere a surtidores estándares y parte la aplicación usada en la mayoría de los textos introductorios de la base de datos. Una pieza se puede proveer por muchos surtidores y un surtidor puede proveer muchas piezas. Los triggers se pueden utilizar para utilizar los decorados siguientes: ♦ Qué si existe una regla de negocio especificando que no más de tres surtidores se permiten para proveer cualquier sola parte. Un trigger se puede cifrar para controlar que las filas no pueden ser insertadas si los datos violan este requisito. ♦ Un trigger se puede crear para permitir solamente las pedidos para las piezas que están ya en la acción. O, quizá para las piezas que están ya en la acción o están en orden y se planean para la disponibilidad dentro de la semana próxima. ♦ Los triggers del · se pueden utilizar para realizar cálculos tales como asegurarse de que la cantidad de la orden para las piezas está calculada dada apropiadamente los surtidores elegidos para proporcionar a las piezas. Esto es especialmente útil si la cantidad de la compra de la orden se salva en la base de datos como datos redundantes. ♦ Para contener costes, una decisión económica puede ser tomada que utilizarán al surtidor del 17 bajo costo siempre. Un trigger se puede poner en ejecución rechaza cualquier orden que no sea la orden actual del "bajo costo". El número de las reglas de negocio que se pueden poner en ejecución usando triggers es limitado únicamente por su imaginación (o, más apropiadamente, sus necesidades del negocio). Además, los triggers pueden tener acceso a los recursos non−DB2. Esto puede ser lograda invocando un procedimiento empacado o una función definida por el usuario que se aproveche de los servicios de la recuperación del recurso OS/390 (RRS). ). Los datos almacenados en el recurso del DB2 pueden ser a los que se ganó acceso o modificados en el procedimiento almacenado o la función definida por usuario que es llamada. ¿Cuándo se enciende un trigger? Dos opciones existen para cuando un trigger se puede encender: antes de que ocurra la actividad de la despedida o después de la actividad de la despedida. El DB2 soporta ambos tipos de triggers antes y después. Uno antes se acciona antes de que la actividad de tiroteo ocurra; y después se acciona después de que la actividad de tiroteo ocurra. En DB2 V6, "antes de que" los triggers están restringidos porque no pueden realizar actualizaciones. Saber cómo funcionan los triggers en su base de datos es indispensable. Sin el conocimiento apropiado del funcionamiento de los triggers no se pueden cifrar, utilizar, o mantener con eficacia. Considere, por ejemplo, si ocurre la actividad de la despedida antes de que se encienda el trigger. Es decir el update, el insert, o el delete ocurre primero como un resultado de esta acción, la lógica del trigger se ejecuta. En caso de necesidad, se puede hacer un rollback a la modificación de los datos. ¿Qué ocurre si el trigger es disparado antes de que se de el evento? En esta situación un rollback no sería requerido para el código del acontecimiento del trigger porque no ocurrió. Sin embargo, un rollback se puede requerir para cualquier modificación de los datos que ocurriera antes de este acontecimiento de la despedida dentro de la misma transacción. Otra característica interesante de los triggers de DB2 V6 es la orden en la cual se encienden. Si existen múltiples triggers en la misma tabla, cuál trigger que se enciende primero? Puede diferenciar en cuanto a cómo los triggers deben ser cifrados, ser probados, y ser mantenidos. La regla para el orden de la ejecución es básicamente simple entender, pero puede ser difícil de mantener. Para los triggers del mismo tipo, se ejecutan en el orden en la cual fueron creados. Por ejemplo, si dos trigger de delete se cifran en la misma tabla, el que fue creado físicamente primero, se ejecuta primero. Tenga esto presente como usted realiza cambios a su base de datos. Si usted necesita caer a la tabla y reconstruirla para poner un cambio del esquema en ejecución, se cerciora usted de crear los triggers en la orden deseado (iguales) para guardar las funciones iguales. Como puede ser visto fácilmente, la determinación de la actividad procesal se requiere que cuando los triggers están presentes puede ser una tarea complicada. Es de importancia suprema que todos los reveladores están enseñados en los métodos de la despedida utilizados para los triggers en DB2 V6. Triggers Empacados Cuando se ejecuta un trigger, DB2 crea un conjunto de triggers para las declaraciones en la acción accionada. El conjunto del trigger se registra en SYSIBM.syspackage y tiene el mismo nombre que el trigger. El conjunto del trigger es siempre accesible y puede ser ejecutado solamente cuando un trigger es activado por una operación que acciona. 18 Para suprimir el conjunto del trigger, usted debe utilizar la declaración DROP TRIGGER. Los Triggers Pueden Encender Otros Triggers Como hemos aprendido ya, un trigger puede ser encendido por un insert, un update, o un delete. Sin embargo, un trigger puede también contener el insert, poner al día, y suprimir lógica dentro de sí mismo. Por lo tanto, un trigger es encendido por una modificación de los datos, pero puede también causar otra modificación de los datos, de tal modo encendiendo otro trigger. Cuando un trigger contiene el insert, ponga al día, y/o suprima la lógica, el trigger se dice ser un trigger jerarquizado. La mayoría de los DBMS, sin embargo, pone un límite en el número de los triggers jerarquizados que se pueden ejecutar dentro de un solo acontecimiento de la despedida. Si esto no fue hecha, podría ser absolutamente posible que los triggers se dispararán de una forma desencadena hasta lo infinito hasta que todos los datos fueron removidos de una base de datos entera. Si la integridad de referencia está combinada con triggers, entonces los updates en cascada y/o deletes puede ocurrir. Si uno suprima o actualice resultados en una serie de actualizaciones adicionales o suprime esa necesidad en ser propagado para otras tablas, entonces los triggers de update o delete para la segunda tabla también serán activados. Esta combinación de triggers múltiples y de contraints de integridad referencial es afable de fijar un efecto de conexión en cascada en el movimiento, que puede dar lugar a cambios múltiples de los datos. DB2 V6 limita este efecto de conexión en cascada a 16 niveles para prevenir un ciclo infinito. Si existieran más de 16 niveles de jerarquización, se aborta la transacción. La capacidad de jerarquizar triggers proporciona un método eficiente para poner integridad automática a los datos en ejecución. Debido a que los triggers no pueden ser desviados, generalmente proporcionan una solución elegante a la aplicación haciendo cumplir de las reglas de negocio. Tenga cuidado, sin embargo, para asegurarse de que el nivel máximo de triggers anidados no sea alcanzado. El fracaso de prestar atención a este consejo puede causar un ambiente donde ciertos tipos de actualizaciones no pueden ocurrir. Limitaciones de los Triggers Hay límites para que puedan ejecutarse los triggers. En DB2 V6, usted no puede definir triggers encendido: ♦ Una tabla del catálogo de sistema ♦ La tabla de plan ♦ La tabla de declaración ♦ La tabla de función DSN. ♦ Una vista ♦ Alias ♦ Sinónimo Uso de Triggers para Implementar la Integridad Referencial Una de las aplicaciones primarias para los triggers debe utilizar la integridad de referencia (RI). Aunque DB2 utiliza una forma muy robusta de RI declarativo, ningún DBMS actual utiliza completamente todos los constraints de referencia posibles. Los triggers se pueden cifrar, en lugar de RI declarativo, para utilizar todas las reglas de RI de la tabla 1. Por supuesto, cuando usted utiliza triggers, hace necesario el código de procedimientos para cada 19 regla, para cada constraint, mientras que los constraints declarativos de RI se cifran en el DDL que se utiliza para crear las tablas relacionales. Tabla 1. Reglas de Integridad Referencial DELETE RESTRICT DELETE CASCADE DELETE NEUTRALIZE UPDATE RESTRICT UPDATE CASCADE UPDATE NEUTRALIZE INSERT RESTRICT FK UPDATE RESTRICTION PENDANT DELETE Si cualquier filas existen en la tabla dependiente, entonces el registro de la llave primaria en la tabla del padre no puede ser borrada. Si un registro de la tabla padre de la llave primaria es borrado, entonces, todos los registros de la tabla dependiente son borrados. Si se borra un registro de la llave primaria de la tabla padre, todos los registros dependientes serán definidos como Null. Si un registro existe en la tabla dependiente, la columna de la llave primaria en la tabla padre no puede ser modificado. Si un registro existe en la tabla dependiente, la columna de la llave primaria en la tabla padre es modificado entonces todos los valores de las llaves foráneas son modificados con el mismo valor. Si cualquier filas existen en la tabla dependiente, entonces la fila primaria de la llave en la tabla del padre es suprimida, y toda llave foránea aprecia en las filas dependientes está actualizado para NULL igualmente. Un valor foráneo de la llave puede no ser introducido en la tabla dependiente a menos que un valor primario de la llave ya exista en la tabla del padre. Una llave foránea puede no estar actualizada para un valor que ya no existe como un valor primario de la llave en la tabla del padre. Cuando el último valor foráneo de la llave en la tabla dependiente es suprimido la fila primaria de la llave en la tabla del padre es también suprimida. Para utilizar triggers para utilizar reglas de RI, es a veces necesario saber los valores afectados por la acción que encendió el trigger. Por ejemplo, considere el caso donde se enciende un trigger porque una fila fue suprimida. La fila, y todos sus valores, se ha suprimido ya porque se ejecuta el trigger después de que ocurra su acción de la despedida. Pero si es esto el caso, cómo podemos comprobar si las filas referenciadas conectadas existen con esos valores? Los triggers se pueden cifrar, en lugar de RI declarativo, para utilizar todas las reglas de RI en tabla 1. Por supuesto, cuando usted utiliza triggers, hace necesario el código procesal de la escritura para cada regla para cada cconstraint, mientras que los constraints declarativos de RI se cifran en el DDL que se utiliza para crear los tablas referenciales. La solución se proporciona en la forma de dos pseudónimos especializados disponibles solamente dentro de triggers: NUEVO y VIEJO. Cada trigger puede tener una NUEVA vista de la tabla y una VIEJA vista de la tabla disponible. De nuevo, estas visiones son accesibles solamente de triggers. Proporcionan el acceso a los datos modificados viendo la información en el registro de la transacción. El registro de la transacción es un expediente de toda la actividad de la modificación de los datos, mantenido automáticamente por el DBMS. 20 Figure 2. Before and After Views of Table Activity Cuando ocurre un insert, el vector NUEVO contiene las filas que acaban de ser insertadas en el vector al cual se asocia el trigger. Cuando ocurre una CANCELACIÓN, la VIEJA tabla contiene las filas que acaban de ser suprimidas de la tabla a la cual se asocia el trigger. Una declaración de la ACTUALIZACIÓN funciona lógicamente como una CANCELACIÓN seguida por un insert. Por lo tanto, después de una ACTUALIZACIÓN, la tabla NUEVA contiene los nuevos valores para las filas que acaban de ser modificadas en la tabla a la cual se asocia el trigger; la tabla VIEJA contiene los viejos valores para las filas actualizadas. Por lo tanto, el trigger puede utilizar estas NUEVAS y VIEJAS opiniones especializadas de la tabla para preguntar los datos afectados. Recuerde, también, que la modificación de los datos del SQL puede ocurrir un instante de tiempo. Una declaración de la CANCELACIÓN o de la ACTUALIZACIÓN puede afectar filas múltiples. Esto debe considerarse al cifrar la lógica real del trigger. Además, los nombres del pseudónimo, VIEJO y NUEVO, pueden ser cambiados si están deseados (por ejemplo, a INSERTADO y a SUPRIMIDO, los nombres utilizado por el servidor de SQL). Granularidad en los Triggers Debido a que el SQL es un lenguaje el fija el nivel cualquier declaración del SQL puede afectar filas múltiples de datos. Por ejemplo, una declaración de la CANCELACIÓN puede causar realmente cero, una, o mucha fila que se quitará. Los triggers necesitan tomar esto en cuenta. Por lo tanto, hay dos niveles de granularidad que un trigger puede tener: nivel de la declaración o nivel de la fila. Un trigger del nivel de la declaración se ejecuta una vez sobre la despedida, sin importar el número real de las filas insertadas, suprimidas, o modificadas. Un trigger del nivel de la fila, una vez que esté encendido, se ejecuta una vez para cada fila que se inserte, se suprima, o modifique. Diversos requisitos del negocio conducirán qué tipo de granularidad del trigger debe ser elegido. Ejemplo de Trigger Es una actualización trigger, codificada en la tabla EMP. Este trigger implementa una comprobación simple para asegurar que los aumentos están menos de 50%. Cuando el sueldo nuevo excede 50 % del 21 anterior sueldo, un error es levantado. CREATE TRIGGER SALARY_UPDATE BEFORE UPDATE OF SALARY ON EMP FOR EACH ROW MODE DB2SQL WHEN (NEW.SALARY > (OLD.SALARY * 1.5)) BEGIN ATOMIC SIGNAL SQLSTATE '75001' ('Raise exceeds 50%'); END; El trigger se ejecuta una vez para cada fila. Si son modificadas filas múltiples por una sola actualización, el trigger se ejecutará en múltiples ocasiones, una vez para cada fila modificada. También, el trigger será ejecutado ANTES DE QUE ocurra la modificación real. Finalmente, tome el aviso especial cómo es NUEVO y VIEJO se utilizan para controlar valores antes y después la actualización. TABLESPACE Un tablespace es un espacio para almacenar tablas. Cuando se crea una tabla, usuario puede decidir que unos objetos, tales como indices y datos de objeto grande (LOB, Large OBject), se separan desde otros datos de la tabla. Un tablespace tambien puede ser distribuido en diferentes dispositivos fisicos de almacenamiento. Un table space puede ser un espacio manejado por sistema (SMS, System Managed Space), o un espacio manejado por base de datos (DMS, Database Managed Space). Para un SMS tablespace, cada contenedor* es un directorio en el espacio de archivo del sistema operativo, y el administrador de archivo del sistema operativo controla el espacio de almacenar. Para un DMS tablespace, cada contenedor es un archivo de tamano fijo o un dispositivo fisico, como un disco duro, y el administrador de la base de datos controla el espacio de almacenar. Los tres tipos de table space son: ♦ Regular Tablespace ♦ Long Tablespace ♦ Temporary Tablespace Las tablas que contienen datos de usuario se almacenan en regular tablespace. El tablespace de usuario se llama USERSPACE1 por default. Los indices y las tablas de catalog de sistema tambien se alamcenan en regular table. El tablespace de catalogo de sistema se llama SYSCATSPACE por default. Las tablas que tienen datos de campo largo o datos de objeto grande, tales como objetos de multimedia, se almacenan en long tablespace. 22 Se utiliza temporary tablespace para almacenar datos requeritos durante las operaciones de SQL. El temporary tablespace se llama TEMPSPACE1 por default. Lista de Tipos de Dato en DB2 UDB DB2 ademas de suporta tipo de dato definido por usuario, tambien suporta una gran cantidad de tipos de dato, como se muestra en la siguiente figura: ♦ DATALINK, contiene una referencia logica a un archivo almacenado fuera de la base de datos. El tipos de enlace que DB2 suporta es de URL (Uniform Resource Locator) que suporta HTTP, FILE, UNC, y DFS. ♦ DATE, se un valor de 3 partes; anno, mes, y dia. El rango de anno es de 0001 a 9999, de 1 a 12 para el rango de mes, y de 1 a X, donde X depende de el mes para el rango de dia. Es un dato de 4 bytes. Cada byte consiste de 2 digitos de decimal. Los primeros 2 bytes representan el anno; el tercer byte representa el mes, y el ultimo byte representa el dia. ♦ TIME, se un valor de 3 partes; hora, minuto, y segundo. Sennala a un tiempo bajo el formato de 24 horas. El rango de hora es de 0 a 24, de 0 a 59 para minuto y segundo. Es un dato de 3 bytes. Cada byte consiste de 2 digitos de decimal. El primer byte representa la hora, el segundo representa el minuto, y el ultimo representa el segundo. ♦ TIMESTAMP, es un valor de 7 partes; anno, mes, dia, hora, minuto, segundo, y microsegundo. Sennala a una fecha y hora en forma como DATE y TIME, excepto que el tiempo incluye microsegundo. Es un dato de 10 bytes de 2 digitos de decimal. Los primeros 4 bytes representan la fecha, los siguientes 3 bytes representan el tiempo, y los ultimos 3 bytes representan el microsegundo. ♦ CHAR, tiene la longitud fija. Su longitud maxima es de 254 bytes. ♦ VARCHAR, tiene la longitud variable. Su longitud maxima es de 4000 bytes. ♦ LONG VARCHAR, tiene la longitud variable. Su longitud maxima es de 32700 bytes. ♦ SMALLINT (Small Integer), almacena un numero de 5 digitos con un rango de −32768 a +32767. ♦ INTEGER, almacena un numero de 10 digitos con un rango de −2147483648 a +2147483647. ♦ BIGINT (Big Integer), almacena un numero de 19 digitos con un rango de −9223372036854775808 a +9223372036854775807. ♦ REAL, almacena un numero de 32 bit con un rango de −3.402E+38 a −1.175E−37, o un rango de 1.175E−37 a 3.402E+38, y por supuesto el zero. ♦ DOUBLE o FLOAT, almacena un numero de 64 bit con un rango de −1.79769E+308 a −2.225E−307, o un rango de 2.225E−307 a 1.79769E+308, y por supuesto el zero. ♦ DECIMAL o NUMERIC, tiene un rango maximo de −10**31+1 a 10**31−1. ♦ GRAPHIC, tiene su longitud fija con un rango de 1 a 127 caracteres de doble−byte. ♦ VARGRAPHIC, tiene su longitud variable hasta 2000 caracteres de doble−byte como maxima. ♦ LONG VARGRAPHI, tiene su longitud variable hasta 16350 caracteres de doble−byte como maxima. ♦ DBCLOB (Double−Byte Character Large Object), tiene su longitud variable hasta 1073741823 caracteres de doble−byte como maxima. ♦ CLOB (Character Large Object), tiene su longitud variable hasta 214743647 caracteres de doble−byte como maxima. ♦ BLOB (Binary Large Object), tiene su longitud variable hasta 214743647 caracteres de doble−byte como maxima. Create, Grant y Revoke en DB2 ♦ Creacion de un tablespace: Create Tablespace espacio 23 Managed By Database Using (`directorio'); Donde espacio es el nombre del tablespace, y; directorio es el directorio donde el tablespace se almacena. Por ejemplo: Create Tablespace recuso_humano Maganged By Database Using(`e:\tbsp_rh', `f:\tbsp_rh', `g:\tbsp_rh'); ♦ Creacion de una tabla: Create Table tabla ( nombre tipo restriccion, Primary Key(llave) ) In espacio; Donde tabla es el nombre de la tabla; nombre es el nombre del campo; tipo es el tipo de datos que almacena el campo; restriccion es la restriccion para el campo; llave es el nombre del campo que es la llave primaria, y; espacio es el nombre del tablespace donde la tabla se almacena. Por ejemplo: Create Table empleado ( cedula Varchar(15) Not Null, nombre Varchar(30) Not Null, puesto Char(10) Check(puesto In(`Vendedor', `Cajero', `Encargado')), fecha_ing Date, salario Decimal(7, 2) Check(salario >= 0), Primary Key(cedula), Constraint anno_sala Check(Year(fecha_ing) > 1985 Or salario > 40000), ) In recuso_humano; ♦ Creacion de un usuario: Create User Mapping For nombre Server servidor 24 Options (Remote_AuthID `identificacion' Remote_Password `contrasenna'); Donde nombre es el nombre autorizado por el sistema; servidor es el nombre del servidor donde la base de datos esta; identificacion es el ID de usuario en cada base de datos, y; contrasenna es la contrasenna en cada base de datos. Por ejemplo: Create User Mapping For jose Server svr1 Options (Remote_AuthID `encargado' Remote_Password `pase'); ♦ Permiso de conexion: Grant Connect On Database To User identificacion; Donde identificacion es el ID de usuario. Por ejemplo: Grant Connect On Database To User jose; ♦ Permiso de privilegio: Grant privilegio On tabla To User identificacion; Donde privilegio es el privilegio que se permite al usuario; tabla es el nombre de la tabla, y; identificacion es el ID de usuario. Por ejemplo: Grant Select, Insert, Update, Delete On empleado To User jose; ♦ Revocacion de conexion: Revoke Connect On Database From User identificacion; Donde identificacion es el ID de usuario. Por ejemplo: Revoke Connect On Database From User jose; ♦ Revocacion de privilegio: Revoke privilegio On tabla From User identificacion; Donde privilegio es el privilegio que se revoca del usuario; tabla es el nombre de la tabla, y; identificacion es el ID de usuario. Por ejemplo: Revoke Delete On empleado From User jose; ANEXOS 25 ♦ EN CUANTO A TRIGGERS Triggers se define como un conjunto de acciones que se ejecutan, o se disparan, como por ejemplo eliminar, insertar o actualizar una tabla. Cuando este tipo de operación en SQL se ejecuta, consideramos que el TRIGGER está activado. Los triggers pueden usarse en conjunto con restricciones referenciales o restricciones de control para dar fuerza a las reglas de integridad de los datos. También pueden usarse TRIGGERS para actualizar otras tablas, automáticamente pueden generarse valores, actualizar, insertar filas, e invocar funciones que realicen tareas de control. Los TRIGGERS son un mecanismo muy utilizado para enfatizar las reglas de integridad definidas por DBA ( por ejemplo el sueldo no puede aumentarse más de un 10%). Usar TRIGGERS ubica a la lógica para enfatizar las reglas de negociación de datos en una base de datos. Esta lógica utilizada en todas las tablas implicará un fácil mantenimiento posterior, y que no sea necesario cambiar los programas de aplicación cuando se cambie la lógica de la misma. Los TRIGGERS son opcionales y se definen mediante la instrucción CREATE TRIGGER . Hay varios criterios que se deben de tener en cuenta al crear un TRIGGER, que se utilizará para determinar cuando un TRIGGER debe activarse. ♦ En una tabla se define la tabla que llamaremos objeto para la cual el TRIGGES se utilizará. ♦ El evento que se ejecutará se lo hace en SQL y esta modificará la tabla. Las operaciones pueden ser: borrar, insertar o actualizar. ♦ El Triggers activation time define cuando el trigger debe ser activado. 26 En la declaración del trigger deberá incluir cuales serán las filas que afectará. Cuales de la tabla están siendo borradas, insertadas o actualizadas. El Trigger granularity define si las acciones que ejecute se realizarán una vez para la declaración, o una vez para cada una de las filas para las cuales se definió. La acción del Trigger consiste en una condición de búsqueda opcional y un conjunto de declaraciones en SQL que se ejecutarán cada vez que el Trigger se active. Las declaraciones de SQL solo se ejecutarán si la condición de búsqueda es verdadera. Cuando el tiempo en que el Trigger debe activarse es anterior al evento mismo, la acción de activarlo debe incluir las declaraciones de selección de las variables y las señales de condición de SQL. Cuando el tiempo en que se debe activar el Trigger es posterior al mismo evento, el activarlo puede incluir declaraciones de selección, borrado, actualización, insertar o señales de condición del SQL. El activar un Trigger puede referirse a un conjunto de valores que serán afectados en ciertas filas de la tabla. Esto es posible a través del uso de variables. Estas variables usan el nombre de las columnas de la tabla y con un indicador que marca si se refiere a un viejo valor ( antes de modificar) o un nuevo valor ( después de modificar) . El nuevo valor puede cambiarse utilizando el comando SET transition variable antes de actualizar o modificar. Otra forma de referenciarse a valores en un grupo de filas es utilizando tablas transitorias que operan en forma similar a las variables. Varios Trigger pueden especificarse para una combinación de tablas, eventos o tiempos en que deben activarse. El orden en que los Triggers se ejecutarán será el mismo en el que fueron creados. Por lo tanto, el Trigger recientemente creado será el último en activarse. ♦ CASE Un CASE ayuda para el caso en el que tenga que cambiar valores en una entrada o salida. Supongamos que tiene una tabla con los tamaños de las remeras (S, M, L) y quiere que se vean como Small, Medium, Large en la salida. Ud. puede hacerlo usando el CASE para cambiar el valor de salida. También puede usar el CASE si quisiera convertir valores (como SMALL) en S para un insert. 27 SELECT LASTNAME, SALARY, CASE WHEN SALARY <= 20000 THEN 'Poor' WHEN SALARY <= 25000 THEN 'Fair' WHEN SALARY <= 30000 THEN 'Average' WHEN SALARY <= 35000 THEN 'Good' WHEN SALARY <= 40000 THEN 'Excellent' ELSE 'Outstanding' END AS COMPENSATION_LEVEL FROM EMPLOYEE ORDER BY SALARY ♦ TIPOS DE DATOS −interger, longitud maxima 11 digitos, −smallint, longitud maxima 5 digitos, −bigint, longitud maxima 19 digitos, −bouble, −real, −decimal, −character (char), longitud fija de 1−254byte −varchar, longitud variable de 1−4000byte −long varchar, longitud variable de 1−32700byte −blob, cadena de binario de 1byte − 2gb −clob, cadena de caracter de 1byte − 2gb −dbclob, cadena de grafico de 1byte − 1gb −graphic, longitud fija de 1−127byte −vargraphic, longitud variable de 1−2000byte 28 −long vargraphic, longitud variable de 1−16350byte −date, −time, −timestamp, ♦ CREATE USER −Ejemplo− CREATE USER MAPPING FOR nombre_de_usuario SERVER servidor OPTIONS ( REMOTE_AUTHID 'id_de_usuario', REMOTE_PASSWORD 'contrasena' ) GRANT CONNECT ON DATABASE TO USER usuario GRANT SELECT, INSERT ON tabla TO USER usuario1, USER usuario2 REVOKE CONNECT ON DATABASE FROM usuario REVOKE SELECT ON tabla FROM usuario ♦ CREATE TABLE −Ejemplo− CREATE TABLE empleado ( id SMALLINT NOT NULL, nombre VARCHAR(9), dept SMALLINT CHECK(dept BETWEEN 10 AND 100), fecha_ing DATE, salario DECIMAL(7,2), comicion DECIMAL(7,2), PRIMARY KEY(id), CONSTRAINT ano_salario CHECK(YEAR(fecha_ing)>1986 OR salario>50000) 29 ) IN recurso_humano ♦ CREATE TABLE para almacenar foto y voz −Ejemplo− CREATE DISTINCT TYPE imagen AS BLOB(10M) CREATE DISTINCT TYPE sonido AS BLOB(1G) CREATE TABLE persona ( nombre CHAR(30) NOT NULL, voz sonido, foto imagen ) ♦ FICHA TECNICA DB2 Manejo de Objetos−datos grandes de hasta 2GB Definición de tipos de datos y funciones por parte del usuario Chequeo de consistencia de datos Chequeo de integridad referencial Triggers / ANSI Definición − SQL recursivo Join externo Soporte Multimedia: texto/imágenes/video/audio Escalabilidad Parallel Query Two−phase commit Backup / recovery on line y off line Monitor grafico de performance Visual explain, monitor grafico de estrategias de busqueda. Data replication 30 Visual Age for Basic Net Data Lotus Approach Dominio Go Web Servers NOTAS 1. Logretain: Indica que archivos de log sera retenidos para rollforward recovery y crash recovery o no. Esto archivos de log se conocen como active logs, y contienen los datos de transaccion en el momento. 2. Userexit: Indica que si los usuarios pueden accesar los archivos de log mientras la base de datos esta abierta o no. 3. Offline: Que no hay otra aplicacion puede usar la base de datos mientras la operacion de respaldo o la de recuperacion esta en proceso. 4. Online: Que otras aplicaciones pueden conectar a la base de datos mientras la operacion de respaldo o la de recuperacion esta en proceso. 5. Soporte OLAP: Para realizar analisis multidimensional y procesamiento analitico en linea, con funciones de ROLLUP, CUBE y GROUPING SETS. Sopota STARS JOINS. 6. Data Warehousing: DB2 provee la infraestructura necesaria para soportar el proceso de toma de decisiones en cualquier tamaño y tipo de organización. Resuleve la problemática a nivel departamental (Data Marts) y aque un unico producto provee la capacidad para acceder a datos en Oracle, Sybase, Informix, Microsoft SQL Server, VSAM, IMS y toda la familai DB2. 7. Data Minig: Posibilita el analisis orientado al descubrimiento de informacion escondida en los datos, con modelizacion predictiva, segmentacion de la base de datos, analisis de vinculos o deteccion de desviaciones. 8. Capacidad: se refiere al numero de usuarios y aplicaciones accedidas a la base de datos, la cual esta en gran parte determinada por la capacidad de memoria, agentes, locks, entradas−salidas y administración del almacenamiento. 9. Escalabilidad: Habilidad que posee la base de datos de expandirse y continuar exhibiendo las mismas características operacionales y tiempos de respuesta. 10. Productos DB2 disponibles actualmente: DB2 Universal Database 5.0 (Personal Edition, Workgroup, Enterprise) Y db2 Common Server 2.0 y DB2 Rarallel Edition 1.0 (versiones previas a UDB) DB2 para OS/400. La diferncia entre el Common Server y DB2 UDB es que este agrupa las funciones del DB2 Common Server con el DB2 Parallel, y puede funcionar en entornos SMP, MPP y sistemas en cluster. CONCLUSIONES BIBLIOGRAFIA 31 URL http://www.transarc.ibm.com http://www.altavista.com http://www.mamma.com http://www.gseukdb2.org.uk/ http://www.soltel.com.uy/db2home.html http://www−4.ibm.com/software/data/db2/udb/winos2unix/support/ 2 >8 caracteres para el nombre de usuario (ID) El tamaño del nombre de usuario que apoyó DB2 se ha aumentado de 8 carácteres a 30 carácteres. Esto le da flexibilidad mayor al asignarle IDs al usuario. OLE nativo el apoyo de DB2 DB2 es ahora ambos un OLE el proveedor de DB y un OLE DB el consumidor. Este da apoyo a clientes con OLE y las aplicaciones DB−basado en la habilidad de extraer o consultar los datos de DB2 de la interface de OLE nativa. Además, usted puede cargar los datos en DB2 que usa OLE DB con funciones de tabla. Microsoft® la integración de Visual Studio® DB2 proporciona una colección de herramientas y los wizard para simplificar la construcción y desplagamiento de aplicaciones para DB2 para Microsoft Windows que usa SQL incluido dentro del Microsoft® C++® Integrated Visual el Ambiente de Desarrollo 32