ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Instituto tecnológico superior de zongolica ANTOLOGÍA DE ADMINISTRACIÓN DE BASE DE DATOS M.S.C. Martín Contreras de la Cruz SEMESTRE FEB – JUL 2014 ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS PROPÓSITO DEL CURSO Con la evolución de la tecnología, se han alcanzado cantidades inimaginables para los sistemas de almacenamiento secundario. Si bien es cierto que la idea original de la administración de bases de datos se orientó en la construcción de las estructuras ideales y algoritmos eficientes para el almacenamiento y recuperación de los datos, actualmente esos objetivos se ven rebasados pues es necesario que, lejos de restringir a los usuarios y aplicaciones en la forma que han de almacenar la información, se pretende que no haya un patrón o estructura específica para el almacenamiento de la información. La información debe almacenarse en formatos cada vez más libres y heterogéneos, mientras que la recuperación de la misma debe seguir siendo igual de eficiente. Esta asignatura aporta al perfil del Ingeniero en Sistemas Computacionales la capacidad para administrar sistemas de bases de datos observando las normas internacionales de manejo y seguridad de la información, utilizando para ello herramientas y metodologías especializadas en el manejo de grandes volúmenes de información, con el propósito de integrar soluciones computacionales con diferentes tecnologías, plataformas y dispositivos, basadas en sistemas de bases de datos, observándose siempre en el desempeño de sus actividades profesionales considerando los aspectos legales, éticos, sociales y de desarrollo sustentable. El propósito del presente curso es el de complementar los conocimientos adquiridos en las dos materias antecesoras (Fundamentos de Base de Datos y Taller de base de datos), con la aplicación de diferentes aspectos de otras materias, tales como: Redes de Computadoras Fundamentos de Ingeniería del Software Sistemas Operativos Taller de sistemas operativos ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Se aportan competencias a las asignaturas de Gestión de Proyectos de Software y Programación Web, que se cursarán posteriormente y se complementa con las competencias que se desarrollan en la materia de ingeniería de Software. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS CONTENIDO UNIDAD 1. Perspectiva práctica de la administración de base de datos .............................. 10 Administrador de base de datos (DBA) ...................................................................... 12 1.1. 1.1.1. Funciones de un DBA ................................................................................................ 15 1.1.2. Relación del DBA con otras áreas de sistemas..................................................... 17 1.2. Análisis de los manejadores de base datos ................................................................... 18 1.3. Consideraciones para elegir un buen DBMS ................................................................. 20 Nuevas tecnologías y aplicaciones de los sistemas de base de datos ................. 21 1.4. UNIDAD 2. Arquitectura del gestor .............................................................................................. 26 2.1. Características del DBMS ................................................................................................. 28 2.1.1 Estructura de memoria y procesos de la instancia ............................................... 30 2.1.2 Estructuras físicas de la base de datos .................................................................. 31 2.1.3 Requerimientos para instalación .............................................................................. 34 2.1.4 Instalación del software de BD en modo transaccional ........................................ 34 2.1.5 Variables de ambiente y archivos importantes para instalación ......................... 36 2.1.6 Procedimiento general de instalación ..................................................................... 36 2.1.7 Procedimiento para configuración de un DBMS .................................................... 37 2.1.8 Comandos generales de alta y baja de un DBMS ................................................ 42 UNIDAD 3. Configuración y administración del espacio en disco .......................................... 50 3.1. Estructuras lógicas de almacenamiento ......................................................................... 52 3.1.1 Definición de espacio de almacenamiento ............................................................. 54 3.1.2 Definición y creación del espacio asignado para cada base de datos .............. 55 3.1.3 Bitácoras ...................................................................................................................... 56 3.1.4 Particiones ................................................................................................................... 58 3.1.5 Espacios privados ...................................................................................................... 60 3.1.6 Espacios para objetos................................................................................................ 61 3.2. Segmentos........................................................................................................................... 62 3.3. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Memoria compartida .......................................................................................................... 63 3.4. Instancias múltiples ............................................................................................................ 63 UNIDAD 4. Operación y mantenibilidad...................................................................................... 65 Bitácoras del trabajo de un DBMS ............................................................................... 67 4.1. 4.1.1 Funciones específicas de las bitácoras .................................................................. 72 4.1.2 Recuperación (rollback) ............................................................................................. 74 4.1.3 Permanencia (commit) ............................................................................................... 75 Definición de los modos de operación de un DBMS..................................................... 76 4.2. Modos de operación de un SGBD .......................................................................................... 76 Comandos de activación de los modos de operación .............................................. 79 4.3. 4.4. Manejo de índices .............................................................................................................. 83 4.4.2 Reorganización de índices ........................................................................................ 84 Reorganización y reconstrucción de índices ................................................................... 84 Reorganización de un índice ................................................................................................ 87 4.4.3 Reconstrucción de índices ........................................................................................ 88 Reconstrucción de un índice ................................................................................................ 88 UNIDAD 5. Seguridad .................................................................................................................... 90 5.1. Respaldo y recuperación................................................................................................... 92 5.1.1 Espejeo (mirroring) ..................................................................................................... 92 5.1.2 Replica (replication).................................................................................................. 108 5.1.3 Métodos de respaldo de un DBMS ........................................................................ 110 5.1.4 Comandos para recuperación ................................................................................ 112 5.2. Migración de la base de datos........................................................................................ 127 5.3. Monitoreo y auditoria de la base de datos.................................................................... 129 5.3.1 Monitoreo ................................................................................................................... 129 5.3.2 Auditoria ..................................................................................................................... 138 5.4. Herramientas de software y hardware para monitoreo y administración automática 145 ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS RED CONCEPTUAL DEL CURSO Administrador de base de datos (DBA) Analisis de los manejadores de base datos Perspectiva práctica de la administración de bases de datos Consideraciones para elegir un buen DBMS Nuevas tecnologias y aplicaciones de los sistemas de base de datos Arquitectura del gestor Caracteristicas del DBMS Estructuras lógicas de almacenamiento Segmentos Configuración y administración del espacio en disco Memoria compartida Administración de base de datos Instancias multiples Bitácoras de trabajo del DBMS Definición de los modos de operación de un DBMS. (alta, baja, recovery) Operación y mantenibilidad Comandos de activación de los modos de operación Manejo de indices Respaldo y recuperación Migración de la base de datos Seguridad Monitoreo y auditoría de la base de datos Herramientas de software y hardware para monitoreo y administración automática ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS COMPETENCIAS A ALCANZAR EN EL CURSO Al término del curso el participante: Tendrá la capacidad de seleccionar SGBD para la implementación y administración de sistemas de bases de datos, aplicando esquemas de seguridad, rendimiento y alta disponibilidad en distintas plataformas, optimizando los recursos económicos y la infraestructura tecnológica disponible en las organizaciones 1. Competencias instrumentales Capacidades cognitivas, la capacidad de comprender y manipular ideas y pensamientos. Capacidades metodológicas para manipular el ambiente: ser capaz de organizar el tiempo y las estrategias para el aprendizaje, tomar decisiones o resolver problemas. Destrezas tecnológicas relacionadas con el uso de computadora, destrezas computacionales; así como de búsqueda y manejo de información. Capacidad de análisis y síntesis. Capacidad de organizar y planificar. Comunicación oral y escrita en su propia lengua y una segunda lengua. Habilidad para buscar y analizar información proveniente de fuentes diversas. Solución de problemas. Toma de decisiones. 2. Competencias interpersonales Capacidad crítica y autocrítica Trabajo en equipo Habilidades interpersonales Capacidad de trabajar en equipo interdisciplinario Capacidad de comunicarse con profesionales de otras áreas, individual y grupalmente. Apreciación de la diversidad y multiculturalidad Habilidad para trabajar en un ambiente laboral Compromiso ético 3. Competencias sistémicas Capacidad de aplicar los conocimientos en la práctica Habilidades de investigación Capacidad de aprender Capacidad de adaptarse a nuevas situaciones ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Capacidad de generar nuevas ideas (creatividad) Liderazgo Habilidad para trabajar en forma autónoma Capacidad para diseñar y gestionar proyectos Iniciativa y espíritu emprendedor Compromiso con la calidad Logro de objetivos Capacidad de colaboración en proyectos sustentables. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS UNIDAD 1. Perspectiva práctica de la administración de base de datos RED CONCEPTUAL DE LA UNIDAD Funciones de un DBA Administrador de base de datos (DBA) Relación del DBA con otras áreas de Sistemas Analisis de los manejadores de base datos Perspectiva práctica de la administración de bases de datos Consideraciones para elegir un buen DBMS Nuevas tecnologias y aplicaciones de los sistemas de base de datos ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Competencia General de la Unidad: Participar en proyectos de desarrollo de software utilizando sistemas de bases de datos. Reconocer los alcances y las actividades que deben realizarse como parte del trabajo del ABD Actividades de aprendizaje - Entrevistar a personas que cubren la función de ABD en empresas de la región Realizar un manual de actividades para el ABD en una empresa ficticia, propuesta por el docente Investigar las herramientas de administración más recientes. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Perspectiva práctica de la administración de base de datos Un administrador de bases de datos (o DBA) tiene la responsabilidad de mantener y operar las bases de datos que conforman el sistema de información de una compañía 1.1. Administrador de base de datos (DBA) ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Debido a la importancia de los datos que están a su cargo, el administrador de bases de datos debe ser experto en TI (tecnología de la información), teniendo particular conocimiento de DBMS (sistemas de administración de bases de datos) y el lenguaje de consulta SQL. También debe tener conocimiento de varios tipos de lenguaje de programación para poder automatizar ciertas tareas. Una de sus tareas es la de asegurar la integridad del sistema de información de la compañía. Además, es necesario que posea un buen entendimiento de DBMS para optimizar las consultas, ajustar la configuración de DBMS o para sincronizar en forma precisa las herramientas de control del acceso a las bases de datos. Es posible que el administrador de bases de datos tenga que brindar asistencia técnica a usuarios de las aplicaciones cliente o equipos de desarrollo para solucionar problemas, dar consejos o ayudar a resolver consultas complicadas. Al trabajar con el jefe de seguridad, el administrador de bases de datos debe crear copias de seguridad, planes y procedimientos de restauración para preservar los datos de los cuales es responsable. Además de estas habilidades técnicas, el administrador de bases de datos debe poseer un buen entendimiento de las aplicaciones de la compañía y estar dispuesto a atender las necesidades de los usuarios cuando desarrolla o edita una base de datos. En el mejor de los casos, debe tener experiencia en diseño de sistemas de información y modelos UML (Lenguaje unificado de modelos). ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS El salario de un administrador de bases de datos puede variar entre 32.000 y 55.000 euros anuales, en función de la importancia y la complejidad del sistema de información y de las responsabilidades que deberá asumir. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 1.1.1. Funciones de un DBA ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 1.1.2. Relación del DBA con otras áreas de sistemas En sistemas muy complejos cliente/servidor y de tres capas, la base de datos es sólo uno de los elementos que determinan la experiencia de los usuarios en línea y los programas desatendidos. El rendimiento es una de las mayores motivaciones de los DBA para coordinarse con los especialistas de otras áreas del sistema fuera de las líneas burocráticas tradicionales. Uno de los deberes menos respetados por el administrador de base de datos es el desarrollo y soporte a pruebas, mientras que algunos otros encargados lo consideran como la responsabilidad más importante de un DBA. Las actividades de soporte incluyen la colecta de datos de producción para llevar a cabo pruebas con ellos; consultar a los programadores respecto al desempeño; y hacer cambios a los diseños de tablas de manera que se puedan proporcionar nuevos tipos de almacenamientos para las funciones de los programas ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 1.2. Análisis de los manejadores de base datos El sistema manejador de bases de datos es la porción más importante del software de un sistema de base de datos. Un DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de alguna tarea específica. Existen muchos sistemas de gestión o manejadores de base de datos, existen muchos como: MySQL PosgreSQL Microsoft SQL Server Oracle Microsoft Access Microsoft Visual Fox Pro Firebird mSQL (mini SQL) IBM DB2 IBM Informix SQLite Sybase ASE Paradox dBase Pero existen algunas ventajas y desventajas que los hace diferentes para la gestión de la base de datos. Estas diferencias son importantes para las grandes organizaciones y empresas pequeñas elegir el de mayor beneficio, confiabilidad y seguridad en la administración de los datos. Analizaremos las ventajas y desventajas de Microsoft SQL Server, Oracle DB y MySQL Server, por ser los más usados y los más comunes. MySQL server a diferencia de Microsoft SQL server es un servidor multi-hilo popular de base de datos de código abierto, confiable, compacto, poderoso y multiplataforma, podemos hacer las bases de datos a código abierto, una gran ventaja es que se puede utilizar gratis y su código fuente esta siempre disponible. Las principales ventajas de MySQL Server son: Software gratuito. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS La velocidad y robustez. Multiproceso, es decir que puede usar varias CPU si éstas están disponibles. Multiplataforma, es decir que puede trabajar en distintos Sistemas Operativos. Sistema de contraseñas y privilegios muy flexibles y seguros. Microsoft SQL server constituye la alternativa de Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle, Sybase ASE, PostgreSQL, Interbase, Firebird o MySQL Las principales ventajas de SQL Server son: Soporte de transacciones. Escalabilidad, estabilidad y seguridad. Soporta procedimientos almacenados. Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en el servidor y las terminales o clientes de la red sólo acceden a la información. Además permite administrar información de otros servidores de datos. Una desventaja de SQL Server es que es costoso. Oracle es un sistema desarrollado por Oracle Corporation. Se considera a Oracle como uno de los sistemas de bases de datos más completos. Las principales ventajas son: Soporte de transacciones. Estabilidad. Escalabilidad. Soporte multiplataforma. Una desventaja de este son las políticas de seguridad en el suministro de parches de actualización ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 1.3. Consideraciones para elegir un buen DBMS Debido a que en el mercado mundial existen muchos manejadores de bases de datos es importante tomar en cuenta algunas consideraciones de importancia para elegir cual es el que más conviene a nuestros intereses. Disponibilidad de soporte de este gestor de bases de datos Es factible que encuentre personal capacitado fácilmente para resolver problemas en mi gestor de bases de datos, por ejemplo veamos la capacidad de personas que usan Oracle, SQL Server, PosgreSQL, MySQL, etc., las entidades tienen que ser gestionadas por un Administrador de bases de datos, de igual manera debe considerarse si es posible determinar el costo de un especialista en dicho gestor de base de datos o si el gestor nos brinda soporte en línea o vía remota. Si las aplicaciones que van a consumir esos datos son de misión crítica y se requiere alta disponibilidad y soluciones rápidas, no es recomendable usar un DBMS poco conocido en el mercado y mucho menos que sea nuevo como los gestores non-SQL ya que nadie los conoce y si mi gestor de base de datos sufre una caída, quien, cuándo y cuánto va a costar repararlo ya que a pesar de poseer una muy buena política de backups, puede que el mismo servidor se dañe (hardware) y si no consigo alguien que lo ponga en línea lo más rápido posible estaré en problemas pues la empresa va a tener una larga caída que se representara en dinero y falta de productividad. Carga de transacciones que va a soportar esa base de datos Si voy a necesitar una alta carga de transacciones (mayores a 200 usuarios conectados al mismo tiempo) es necesario que se vaya pensando en algo robusto y bien probado en el mercado servidores como cualquier versión express (SQL Servr, DB2, etc.) no es aceptable, si lo que se desea es algo libre pues PostgreSQL es la respuesta . Sistema operativo planeado para implementar Está comprobado que SGBD diseñados en opensource (Código abierto) corren mucho más rápido en entornos operativos basados en UNIX que sobre Windows, así que aquí debería de tenerse en cuenta el sistema operativo, si no se ha tomado la decisión entonces elegir el sistema operativo del servidor dependiendo del SGBD, en foros como los de PosgreSQL, por ejemplo, la gente que ha realizado pruebas de este SGBD indican que se tiene un 25% de optimización corriendo sobre LINUX que sobre Windows. Si no se tiene un sistema operativo en el servidor sería recomendable elegirlo en base al SGBD y esto también tendría consideraciones como la operatividad y ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS la capacidad de administración de un servidor en tal o cual SO y los gastos que implicarían su mantenimiento. En caso de un aplicativo WEB, ¿Cuáles son las consideraciones? No hay muchas consideraciones que tomar en cuanto al aplicativo ya que si esta hecho sobre PHP, IIS en sus últimas versiones implementa un soporte que es algunas veces superior al que implementa Apache, pero lo óptimo sería que la aplicación se pudiera adecuar a cualquier SGBD tal cual lo hace algunos CMS que pueden instalarse en varios SGBD. Siempre y por siempre seria la disponibilidad y la carga de trabajo que va a tener el servidor de datos y si es posible la capacidad de alta disponibilidad, aquí entrarían a tratar también términos como Cloud, Private cloud etc. 1.4. Nuevas tecnologías y aplicaciones de los sistemas de base de datos Los sistemas orientados a los datos se caracterizan porque los datos no son de una aplicación sino de una Organización entera que los va a utilizar; se integran las aplicaciones, se diferencian las estructuras lógicas y físicas. El concepto de relación cobra importancia. Originalmente las aplicaciones cubrían necesidades muy específicas de procesamiento, se centraban en una tarea específica. Las bases de datos evitan las inconsistencias que se producían por la utilización de los mismos datos lógicos desde distintos archivos a través de procesos independientes. El mundo real considera interrelaciones entre datos y restricciones semánticas que deben estar presentes en una base de datos. No solo debe almacenar entidades y atributos, sino que también debe almacenar interrelaciones entre datos. La redundancia de datos debe ser controlada, pero si se admite cierta redundancia física por motivos de eficiencia. Pretenden servir a toda la organización. La independencia de los tratamientos sobre los datos y estos mismos, ha tenido una enorme influencia en la arquitectura de los SGBD. La definición y descripción del conjunto de datos contenido en la base debe ser única e integrada con los mismos datos. La actualización y recuperación de las bases de datos debe realizarse mediante procesos incluidos en SGBD, de modo que se mantenga la integridad, seguridad y confidencialidad de la base. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Las limitaciones de los sistemas orientados a archivos puramente secuenciales no los privaron de ser herramientas eficaces para producir pagos, facturas y otros informes una o dos veces al mes. Sin embargo, para ejecutar muchas tareas rutinarias en los negocios se necesita el acceso directo a los datos -La capacidad de tener acceso y procesar directamente un registro dado sin ordenar primero el archivo o leer los registros en secuencia. Los archivos de acceso directo permiten la recuperación de los registros aleatoriamente, a diferencia de los de acceso secuencial. Sin embargo, los archivos de acceso directo solamente proporcionaron una solución parcial. Para lograr una solución más completa a estos problemas fue necesario introducir los sistemas de gestión de bases de datos. Los usuarios cada vez necesitamos más recursos en tecnología, es por eso que surgen las evoluciones de sistemas, y por ende de las bases de datos, es impresionante ver como la información se procesa en microsegundos, mientras se realizan transacciones al mismo tiempo en la misma base de datos en lugares y estados diferentes, la importancia de la información es lo que ha llevado a que las empresas y otras instituciones inviertan para la seguridad de sus datos, el futuro de la tecnología es incierto debido a que algunas proyecciones de tecnología estimadas hace 5 años y proyectadas hasta los próximos 10 años ya son una realidad, la tecnología avanza a pasos agigantados es por eso que no debemos quedarnos atrás y apostar a las nuevas tecnologías que sin duda harán más fácil la vida de las personas que tratamos con la administración y seguridad de la información. Tanto en uno como en otro papel, la tecnología de bases de datos se ve sometida a numerosos cambios tanto desde el punto de vista empresarial como tecnológico. Las nuevas aplicaciones están llevando hasta el límite a los sistemas de bases de datos disponibles, al incorporar documentos multimedia. Imágenes, series temporales, datos activos, grandes cantidades de información (no olvidemos que los datos se expanden hasta llenar el espacio disponible), etc. Por otro lado la mejora espectacular en el número de instrucciones de máquina ejecutables en un segundo, coste de procesador, coste de la unidad de memoria secundaria y de memoria principal, numero de bits transmitidos por unidad de coste y por segundo, obligan a los SGBD a evolucionar para aprovechar estos avances en el hardware y las comunicaciones. En este sentido la explosión de Internet, el World Wide Web, y las “autopistas de la información” (information highWay), cuya utilización crece a un ritmo vertiginoso, están imponiendo un nuevo escenario para el desarrollo de los sistemas de información. Los sistemas de bases de datos, como elemento clave de los sistemas de información. Deben jugar un papel fundamental en esta explosión de información, si no quieren "ser arrollados en /as autopistas de la información”, como advertía David De Witt. En el VLDB de 1995.Las bases de datos terminarán siendo como el teléfono: fáciles de usar (en cuanto interfaces, rendimiento, etc.), conectado con cualquier otra cosa alrededor del mundo, con estándares reconocidos en todas partes, consistentes y fiables y con ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS mayores funcionalidades. Las nuevas tecnologías de bases de datos permitirán hacer realidad aplicaciones hoy en día inimaginables tanto por el volumen de datos que manejarán (serán auténticasVLDB2) como por las facilidades para su explotación. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS RESUMEN Este campo es uno de los más importantes de las tecnologías de la información, y aunque es verdad que se ha recortado los fondos para investigación básica en informática, la parte correspondiente a bases de datos ha aumentado o se ha consolidado a pesar de estos recortes. E incluso se ha imprimido un carácter más precompetitivo y comercial a la investigación, lo que puede favorecer su implantación en las empresas. No hay que olvidar que la tecnología no es un fin en sí mismo, sino que debe ser un medio para conseguir un fin. Por lo que tiene que ser evaluada en términos de su habilidad para satisfacer las necesidades de los usuarios. En esta unidad se abarcan los aspectos a considerar para seleccionar software de base de datos, las funciones del administrador de la base de datos y las nuevas tecnologías y aplicaciones existentes; instalando, utilizando y realizando comparativas entre los gestores se pueden comprender las capacidades y similitudes entre la amplia gama de DBMS. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS EVALUACIÓN 1. 2. 3. 4. 5. 6. 7. ¿Qué es un SGBD o DBMS? Menciona el nombre de 3 sistemas de DBMS ¿Qué es un DBA? Describe 3 funciones de un administrador de base de datos Describe cual es la relación existente entre el DBA y otras áreas ¿Cuál es el futuro de las base de datos? Para los siguientes casos, define la base de datos que recomendarías y menciona por lo menos 2 razones a. La tortillería “Don Braulio” necesita llevar el control de compras de materia prima y ventas diarias, en ella laboran 2 personas: una encargada de la producción y otra de la venta. b. Un municipio localizado en el centro de Veracruz cuya población sobrepasa los 50 000 habitantes, requiere llevar el control de ingresos y egresos; el inconveniente para modernizar la gestión del dinero es la poca confianza que tienen las autoridades en las TICs, por lo cual es presupuesto es limitado. c. La empresa refresquera transnacional “La favorita” necesita modernizar el área de comedor de la instalación ubicada en las altas montañas de la sierra madre oriental, desea que mediante la huella digital sea registrada la elección y entrega del platillo, y al finalizar del día expedir un reporte de comidas. Evitando dar doble ración a un empleado. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS UNIDAD 2. Arquitectura del gestor RED CONCEPTUAL DE LA UNIDAD Estructura de memoria y procesos de la instancia Estructuras físicas de la base de datos Requerimientos para instalación Instalación del software de BD en modo tradicional Arquitectura del gestor Caracteristicas del gestor de base datos Variables de ambiente y archivos importantes para la instalación Procedimiento general de instalación Procedimiento para configuración de un DBMS Comandos generales de alta y baja del DBMS ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Competencia General de la Unidad: Instalar SGBD en entornos corporativos ficticios Elegir SGBD para sistemas corporativos ficticios Actividades de aprendizaje - Instalar tres SGBD en distintas plataformas de tipo servidor Realizar un análisis costo-beneficio de tres SGBD para un SBD ficticio propuesto por el docente Realizar una mesa de discusión con las experiencias de los estudiantes, a fin de compartir los conocimientos adquiridos Identificar y enlistar las variables principales (de software y hardware) que pueden dar lugar a problemas en la instalación de un SGBD. Elaborar reporte de las prácticas e integrarlos al portafolio de evidencias. Realizar y publicar en internet manuales de instalación para tres SGBD, propuestos por el docente. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Arquitectura del gestor Los sistemas de administración de bases de datos son usados para: • Permitir a los usuarios acceder y manipular la base de datos proveyendo métodos para construir sistemas de procesamiento de datos para aplicaciones que requieran acceso a los datos. • Proveer a los administradores las herramientas que les permitan ejecutar tareas de mantenimiento y administración de los datos. 2.1. Características del DBMS Los sistemas de administración de bases de datos son usados para: Permitir a los usuarios acceder y manipular la base de datos proveyendo métodos para construir sistemas de procesamiento de datos para aplicaciones que requieran acceso a los datos. Proveer a los administradores las herramientas que les permitan ejecutar tareas de mantenimiento y administración de los datos. Algunas de sus características son: - Control de la redundancia de datos Este consiste en lograr una mínima cantidad de espacio de almacenamiento para almacenar los datos evitando la duplicación de la información. De esta manera se logran ahorros en el tiempo de procesamiento de la información, se ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS tendrán menos inconsistencias, menores costos operativos y hará el mantenimiento más fácil. - Compartimiento de datos Una de las principales características de las bases de datos, es que los datos pueden ser compartidos entre muchos usuarios simultáneamente, proveyendo, de esta manera, máxima eficiencia. - Mantenimiento de la integridad La integridad de los datos es la que garantiza la precisión o exactitud de la información contenida en una base de datos. Los datos interrelacionados deben siempre representar información correcta a los usuarios. - Soporte para control de transacciones y recuperación de fallas. Se conoce como transacción toda operación que se haga sobre la base de datos. Las transacciones deben por lo tanto ser controladas de manera que no alteren la integridad de la base de datos. La recuperación de fallas tiene que ver con la capacidad de un sistema DBMS de recuperar la información que se haya perdido durante una falla en el software o en el hardware. - Independencia de los datos. En las aplicaciones basadas en archivos, el programa de aplicación debe conocer tanto la organización de los datos como las técnicas que el permiten acceder a los datos. En los sistemas DBMS los programas de aplicación no necesitan conocer la organización de los datos en el disco duro. Este totalmente independiente de ello. - Seguridad La disponibilidad de los datos puede ser restringida a ciertos usuarios. Según los privilegios que posea cada usuario de la base de datos, podrá acceder a mayor información que otros. - Velocidad Los sistemas DBMS modernos poseen altas velocidades de respuesta y proceso. - Independencia del hardware La mayoría de los sistemas DBMS están disponibles para ser instalados en múltiples plataformas de hardware. Los sistemas de bases de datos relacionales RDBMS (Relational Database Management System, por sus siglas en Inglés) tales como Oracle, MySQL, SQL Server, PostgreSQL, Informix, entre otros, le permiten ejecutar las tareas que se mencionan a continuación, de una forma entendible y razonablemente sencilla: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Le Le Le Le Le Le permiten ingresar datos al sistema. permiten almacenar los datos. permiten recuperar los datos y trabajar con ellos. proveen herramientas para capturar, editar y manipular datos. permiten aplicar seguridad. permiten crear reportes e informes con los datos. 2.1.1 Estructura de memoria y procesos de la instancia La memoria se puede estructurar en las siguientes partes: Área Global del sistema (SGA), la cual se comparte entre todos los servidores y los procesos en segundo plano. Áreas globales de programas (PGA), que es privada para cada servidor y proceso en segundo planos; a cada proceso se asigna un PGA. Área de Ordenaciones (Sort Areas). Memoria Virtual Área de código de software. Instancia de una Base de Datos Cada instancia está asociada a una base de datos. Cuando se inicia una base de datos en un servidor (independientemente del tipo de computadora), se le asigna un área de memoria (SGA) y lanza uno o más procesos. A la combinación del SGA y de los procesos es lo que se llama instancia. La memoria y los procesos de una instancia ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS gestionan los datos de la base de datos asociada de forma eficiente y sirven a uno o varios usuarios. Cuando se inicia una instancia El DBMS monta la base de datos, es decir, asocia dicha instancia a su base de datos correspondiente. En un misma computadora pueden ejecutarse varias instancias simultáneamente, accediendo cada una a su propia base de datos física. Únicamente el administrador de la base de datos puede iniciar una instancia y abrir una base de datos. Si una base de datos está abierta, entonces el administrador puede cerrarla y, cuando esto ocurre, los usuarios no pueden acceder a la información que contiene. 2.1.2 Estructuras físicas de la base de datos En una base de datos almacenamos información relevante para nuestro negocio u organización y desde el punto de vista físico, la base de datos está conformada por dos tipos de archivos: Archivos de datos: contiene los datos de la base de datos internamente, está compuesto por páginas enumeradas secuencialmente que representa la unidad mínima de almacenamiento. Cada página tiene un tamaño de 8kb de información. Existen diferentes tipos de páginas, a tener en cuenta: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Páginas de datos: es el tipo principal de páginas y son las que almacenan los registros de datos. Páginas de espacio libre (PFS Page Free Space): almacenan información sobre la ubicación y el tamaño del espacio libre. Paginas GAM and SGAM: utilizadas para ubicar extensiones. Páginas de Mapa de Ubicaciones de índices (IAM – Index Allocation Map): contiene información sobre el almacenamiento de páginas de una tabla o índice en particular. Páginas Índices: Utilizada para almacenar registros de índices. Archivo de Registro de Transacciones: El propósito principal del registro de transacciones es la recuperación de datos a un momento en el tiempo o complementar una restauración de copia de respaldo completa (full backup). El registro de transacciones no contiene páginas, sino entradas con todos los cambios realizados en la base de datos, como son las modificaciones de datos, modificaciones de la base de datos y eventos de copia de seguridad y restauración. El acceso a datos es secuencial, ya que el registro de transacciones se actualiza en el mismo orden cronológico en el que se hacen las modificaciones. Este archivo no puede ser leído por herramientas de usuario de SQL aunque existen herramientas de terceros que leen este archivo para recuperar los cambios efectuados. Dependiendo de la versión el registro de transacciones se utiliza para otros propósitos como por ejemplo bases de datos espejo (mirror) y transporte remoto de transacciones (log shipping). ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Para muchos de los administradores de bases de datos, la imagen anterior representa la parte lógica y la parte física, donde: Data File: Los datafiles son los archivos físicos en los que se almacenan los objetos que forman parte de un tablespace. Un datafile pertenece solamente a un tablespace y a una instancia de base de datos. Un tablespace puede estar formado por uno o varios datafiles. Cuando se crea un datafile, se debe indicar su nombre, su ubicación o directorio, el tamaño que va a tener y el tablespace al que va a pertenecer. Además, al crearlos, ocupan ya ese espacio aunque se encuentran totalmente vacíos, es decir, Oracle reserva el espacio para poder ir llenándolo poco a poco con posterioridad. Por supuesto, si no hay sitio suficiente para crear un archivo físico del tamaño indicado, se producirá un error y no se creará dicho archivo. Cuando se van creando objetos en un tablespace, éstos físicamente se van almacenando en los datafiles asignados a dicho tablespace, es decir, cuando creamos una tabla y vamos insertando datos en ella, estos datos realmente se reparten por los archivos físicos o datafiles que forman parte del tablespace. No se puede controlar en qué archivo físico se almacenan los datos de un tablespace. Si un tablespace está formado por 2 datafiles y tenemos una tabla en ese tablespace, a medida que vamos insertando filas éstas se almacenarán en cualquiera de los dos datafiles indistintamente, es decir, unas pueden estar en un datafile y otras en otro. El espacio total disponible en un tablespace es lógicamente la suma de los tamaños que ocupan los archivos físicos o datafiles que lo forman. Como hemos indicado estos datafiles, al crearlos, están totalmente vacíos, simplemente es un espacio reservado y formateado por Oracle para su uso. A medida que se van creando objetos en ellos como tablas, índices, etc. y se van insertando registros en estas tablas, los datafiles se van llenando o, lo que es lo mismo, el tablespace se va llenando. Tienen las siguientes características: Un archivo sólo puede estar asociado con una base de datos. Los archivos de datos tienen atributos que permiten reservar automáticamente para ellos extensiones cuando se acaba el espacio. Uno o más archivos de datos forman una unidad lógica de almacenamiento llamada tablespace Os Block: Conocidos como Disk Block, estos mapean a los data blocks. A la hora de crear una nueva base de datos se debe indicar cuántos bloques de sistema operativo formarán un bloque de datos. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 2.1.3 Requerimientos para instalación Antes de instalar cualquier SGBD es necesario conocer los requerimientos de hardware y software, el posible software a desinstalar previamente, verificar el registro de Windows y el entorno del sistema, así como otras características de configuración especializadas como pueden ser la reconfiguración de los servicios TCP/IP y la modificación de los tipos archivos HTML para los diversos navegadores. Se presenta a continuación una serie de requerimientos mínimos de hardware y software para instalar Oracle 11g Express y MySQL estándar versión 5.1. en Windows Seven y Ubuntu 10. Requerimiento Oracle MySQL RAM 512 MB 512 MB Memoria virtual1 1024 MB 1024 MB 1.5 GB 1 GB 4 GB Sin limite Espacio disco duro Tamaño máximo de la base de datos Sistema Operativo: Windows Server, Windows Seven, Linux, Unix Arquitectura del Sistema 32/64-bit Protocolo de red TCP/IP Protocolo de red TCP/IP con SSL 1 La regla general para determinar el tamaño de la memoria virtual depende del tamaño de memoria RAM instalada. Si su sistema tiene menos de 4 GB de RAM por lo general el espacio de intercambio debe ser de al menos dos veces este tamaño. Si usted tiene más de 8 GB de memoria RAM instalada puede considerar usar el mismo tamaño como espacio de intercambio. Cuanta más memoria RAM tenga instalada, es menos probable usar el espacio de intercambio, a menos que tenga un proceso inadecuado. 2.1.4 Instalación del software de BD en modo transaccional ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Debido al constante crecimiento de datos que generan las empresas hoy en día, se ha vuelto muy necesaria la búsqueda de nuevas plataformas para almacenar y analizar la información, ambientes que consuman menos recursos, que sean más escalables y que provean una alta disponibilidad. La solución consiste en el procesamiento paralelo de los datos de una base de datos. Una base de datos en modo transaccional significa que la BD será capaz de que las operaciones de inserción y actualización se hagan dentro de una transacción, es un componente que procesa información descomponiéndola de forma unitaria en operaciones indivisibles, llamadas transacciones, esto quiere decir que todas las operaciones se realizan o no, si sucede algún error en la operación se omite todo el proceso de modificación de la base de datos, si no sucede ningún error se hacen toda la operación con éxito. Una transacción es un conjunto de líneas de un programa que llevan insert o update o delete. Todo aquél software que tiene un log de transacciones (que es la "bitácora" que permite hacer operaciones de commit o rollback), propiamente es un software de BD; aquél que no lo tiene (v.g. D-Base), propiamente no lo es. Todo software de base de datos es transaccional; si el software de la BD no es "transaccional", en realidad NO es un "software" de BD; en todo caso, es un software que emula el funcionamiento de un verdadero software de BD. Cada transacción debe finalizar de forma correcta o incorrecta como una unidad completa. No puede acabar en un estado intermedio. Se usan los siguientes métodos: Begin TRans para iniciar la transacción CommitTrans para efectuar los cambios con éxito RollbackTrans para deshacer los cambios Y depende que base de datos uses para efectuar las operaciones pero, es la misma teoría para cualquier BD. Una vez que se sabe la forma de ingresar comandos, es el momento de acceder a una base de datos. Suponga que en su hogar posee varias mascotas y desea registrar distintos tipos de información sobre ellas. Puede hacerlo si crea tablas para almacenar sus datos e introduce en ellas la información deseada. Entonces, podrá responder una variedad de preguntas acerca de sus mascotas recuperando datos desde las tablas. Los pasos serían: • • • • • Crear una base de datos Crear una tabla Introducir datos en la tabla Recuperar datos desde la tabla de varias maneras Emplear múltiples tablas ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 2.1.5 Variables de ambiente y archivos importantes para instalación Para instalar MySQL como primer instancia el archivo primordial es el que se descarga de la Web de MySQL. El proceso para instalar MySQL desde un archivo ZIP es el siguiente: 1. 2. 3. 4. 5. Extraer el contenido del archivo dentro del directorio de instalación deseado. Crear un archivo de opciones. Elegir un tipo de servidor MySQL Iniciar el servidor MySQL. Establecer la seguridad de las cuentas de usuario por defecto. 2.1.6 Procedimiento general de instalación Oracle Express Edition 11g Release 2 Oracle Database XE es una gran base de datos para: Desarrolladores que trabajan en PHP, Java, .NET, XML, y Open Source applications DBAs que necesitan desarollar libremente Vendedores de Software y hardware que necesitan distribuir sin cargos Instituciones educativas y estudiantes que cursan materias relacionados con base de datos Oracle es líder en bases de datos. Con Oracle XE, es posible desarrollar y desplegar aplicaciones potentes, actualizar sin costo y generar complejas migraciones. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Oracle Express Edition se instala en una máquina con cualquier número de procesadores, solo puede contener una base de datos y direccionar un máximo de 4GB de datos y un máximo de 1GB RAM. Oracle Database XE, usa una interface basada en browser (Navegador) para: Administrar la base de datos Crear tablas, vistas, y otros objetos de base de datos Importar, exportar, y ver tablas de datos Ejecutar consultas y scripts SQL Generar reportes Oracle Database XE incluye Oracle Application Express release 2.1, un ambiente de desarrollo gráfico para crear aplicaciones Web con base de datos. Oracle Database XE es una versión reducida de Oracle con las mismas características y potencialidad de Oracle Database. Es necesario destacar que no soporta todos los tipos de datos de Oracle Database XE. Oracle Database XE incluye las siguientes utilidades: Línea de comandos SQL (SQL*Plus), para ejecutar sentencias SQL y comandos PL/SQL y ejecutar scripts SQL*Loader, para insertar datos en la base de datos Utilidades para importar, exportar y volcar la base de datos 2.1.7 Procedimiento para configuración de un DBMS Requerimientos del sistema para Oracle Database XE Server y Oracle Database XE Client. Requerimiento Valor Arquitectura del sistema Intel x86 (desde Windows 2000 hasta seven) o Linux x86 (Debian, Mandriva, Novell, Red Hat y Ubuntu ) Protocolo de red TCP/IP Espacio en disco Servidor : 1.6 gigabytes mínimo Cliente: 75 megabytes ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Requerimiento Valor RAM 256 megabytes mínimo, 512 megabytes recomendado Estos puertos son usados por defecto por Oracle Database XE o o o 1521: Oracle database listener 2030: Oracle Services para Microsoft Transaction Server 8080: Puerto para Oracle XML DB y la interface gráfica de usuario Oracle Database XE. Instalación de Oracle Database XE en Windows Doble clic sobre el icono o el archivo setup.exe en ambos casos con privilegios de administrador. Pulse sobre el botón de siguiente “Next” para iniciar la instalación. Acepte los términos de acuerdo de licencia ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Verifique los requerimientos de espacio y si los cumple pulse aceptar. Considere un Giga más para almacenamiento. Introduzca el password para el usuario SYSTEM. Después de terminar la instalación deberá iniciar la base de datos con este usuario. A continuación Oracle Database XE nos informa sobre los puertos que utilizara. Pulse Instalar. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS El tiempo de instalación de Oracle Database XE depende de su equipo (procesador y memoria). Al terminar el proceso de instalación pulse el botón Terminar. Al pulsar el botón Terminar nos direccionara a la página de acceso de la base de datos (http://127.0.0.1:8080/apex). Recuerde iniciar por primera vez con el usuario SYSTEM y su password. Pulse el icono Sessions e introduzca la siguiente información ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Para futuros accesos usted puede pulsar botón de inicio, todos los programas, base de datos 10g Express Edition o el icono en su escritorio denominado Base de Datos Ahora vamos a crear un usuario Conteste el siguiente formulario ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 2.1.8 Comandos generales de alta y baja de un DBMS Una tabla es un sistema de elementos de datos (atributo - valores) que se organizan que usando un modelo vertical - columnas (que son identificados por su nombre)- y horizontal filas. Una tabla tiene un número específico de columnas, pero puede tener cualquier número de filas. Cada fila es identificada por los valores que aparecen en un subconjunto particular de la columna que se ha identificado por una llave primaria. Una tabla de una base de datos es similar en apariencia a una hoja de cálculo, en cuanto a que los datos se almacenan en filas y columnas. Como consecuencia, normalmente es bastante fácil importar una hoja de cálculo en una tabla de una base de datos. La principal diferencia entre almacenar los datos en una hoja de cálculo y hacerlo en una base de datos es la forma de organizarse los datos. (CREATE TABLE) Creación de tablas La creación de las tablas en el proceso de programación en Oracle juega un papel muy importante. En el momento de crear las tablas se definen características a dos niveles: Tabla y Columna, como se muestra a continuación: A nivel de tabla: Refieren a una o a varias columnas, donde cada columna se define individualmente. Nombre: Nombre de la tabla puede ser de 1 a 30 caracteres. La tabla tiene como propietario al usuario que las crea. Por ejemplo EQUIPO. Hay que tener en cuenta también ciertas restricciones con los nombres de las tablas: longitud máxima de 30 caracteres, no puede haber nombres de tabla duplicados, deben comenzar con un ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS carácter alfabético, permitir caracteres alfanuméricos y el guión bajo '_', y Oracle no distingue entre mayúsculas y minúsculas. Propietario: La tabla tiene como propietario al usuario que las crea En nuestro caso somos el usuario ALUMNO. Otro usuario que desee usar nuestras tablas debe tener autorización para ello y hacer referencia a la tabla como ALUMNO.EQUIPO(propietario.tabla) Cantidad de Columnas: Una tabla puede tener un máximo de 254 columnas. A nivel de Columna el nombre de la columna puede tener un máximo de 30 caracteres. En Oracle podemos implementar diversos tipos de tablas. A continuación se presenta una recopilación no exhaustiva de ellas. Tipo Tabla Descripción Regular (heap) Son el mecanismo de almacenamiento de los datos en una base de datos Oracle. Contienen un conjunto fijo de columnas. Las columnas de una tabla describen los atributos de la entidad que se representa con la tabla. Cada columna tiene un nombre y características específicas: tipo de dato y longitud, restricciones, etc. Clustered Un clúster proporciona un método opcional de almacenar datos de tabla. Un clúster está compuesto de un grupo de tablas que comparten los mismos bloques de datos. Las tablas son agrupadas mediante columnas comunes. Index Aquí una tabla es almacenada en la estructura de un índice. Esto impone orden físico a las filas por si mismas. A diferencia de un heap, donde los datos son almacenados en donde caben, en una tabla IOT (Tabla Organizada por Índices) los datos son almacenados en el orden de la clave primaria. Particionadas Es un esquema de organización de los datos con el cual podemos dividirla en múltiples objetos de almacenamientos llamados particiones de datos o rangos, dependiendo los valores puede ser dividido en uno o más columnas de la tabla. Cada particiones de datos es almacenado separadamente. Estos objetos almacenados ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Tipo Tabla Descripción pueden estar en diferentes tablespaces, en el mismo o en una combinación de ambos. Temporales Son tablas cuyos datos permanecerán en el sistema sólo durante el tiempo que dure la transacción o sesión involucrada. No obstante, al igual que para las tablas permanentes, la definición de las tablas temporales se almacena en las tablas del sistema. La sintaxis del comando que permite crear una tabla es la siguiente Del examen de la sintaxis de la sentencia Create Table se pueden concluir que necesitamos conocer los distintos tipos de columna y las distintas restricciones que se pueden imponer al contenido de las columnas. Existen varios tipos de datos en SQL. De esta manera, cada columna puede albergar una información de naturaleza distinta. Los tipos de datos más comunes y sus características en Oracle Express (10 Y 11g) se resumen en la siguiente tabla. Las versiones de Oracle comercial soportan una gama mucho más amplia de tipos de datos. Tipo de Dato Descripción BLOB Contiene datos binarios con un tamaño máximo de 4 gigabytes. Los datos binarios nos van a permitir guardar en la base de datos archivos, imágenes, sonidos, etc. Casi siempre es preferible guardar la ruta del archivo en la base de datos en lugar del propio archivo en modo binario, pero existen ciertas circunstancias en las que no nos queda otra solución. BINARY_DOUBLE Precisión doble BINARY_FLOAT Precisión simple ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Un tipo de datos CLOB de Oracle contiene datos de caracteres basados en el juego de caracteres predeterminados del servidor. Su tamaño máximo es de 4 gigabytes. Se asigna a cadena. CLOB Use la siguiente expresión para una consulta de un campo CLOB SELECT DBMS_LOB.substr(campo, DBMS_LOB.getlength(campo),1) FROM tablaprueba; CHAR Almacena datos de tipo carácter alfanumérico de longitud fija, con un tamaño máximo de 2000. caracteres DATE Almacena fechas desde el 1-Ene-4712 AC hasta el 31Dic-4712 DC. NUMBER(dig [, dec]) Datos numéricos de n dígitos, de los cuales dec son decimales. El tamaño máximo es de 38 dígitos. NVARCHAR2 Almacena un valor alfanumérico de longitud variable en caracteres Unicode con las mismas restricciones de varchar. TIMESTAMP Fecha y hora (incluidos los segundos), con un tamaño que abarca desde 7 a 11 bytes. VARCHAR2(tamaño) Guarda datos de tipo carácter alfanumérico de longitud variable, con un tamaño máximo de 4,000 caracteres. Ejemplo: Considere la siguiente tabla de datos correspondientes a los campeones de Fórmula 1 (1950 - 2012) y sus escuderías. Y su traducción a sentencias Oracle. Año Campeón Escudería 2012 - - 2011 Sebastian Vettel Red Bull Racing 2010 Sebastian Vettel Red Bull Racing ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Año Campeón Escudería 2009 Jenson Button Brawn GP 2008 Lewis Hamilton McLaren 2007 Kimi Raikkonen Ferrari 2006 Fernando Alonso Renault 2005 Fernando Alonso Renault 2004 Michael Schumacher Ferrari 2003 Michael Schumacher Ferrari 2002 Michael Schumacher Ferrari 2001 Michael Schumacher Ferrari 2000 Michael Schumacher Ferrari CREATE TABLE f1 ( year INTEGER PRIMARY KEY, campeon CHAR(30), escuderia CHAR(20) ); Ejemplo: Estados, capitales, densidad de población y superficie de la República Mexicana CREATE TABLE estados ( idEstado INTEGER PRIMARY KEY, nombreEstado CHAR(25) NOT NULL, capital CHAR(25) NOT NULL, densidad INTEGER NOT NULL, poblacion INTEGER NOT NULL ); Tablas Temporales ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Oracle permite la creación de tablas temporales para mantener datos propios y exclusivos a una sesión Oracle determinada. Estos datos permanecerán en el sistema sólo durante el tiempo que dure la transacción o sesión involucrada. No obstante, al igual que para las tablas permanentes, la definición de las tablas temporales se almacena en las tablas del sistema. Sus ventajas son varias, la información contenida en ella esta solo disponible para la sesión actual, cualquier inserción, borrado, actualización solo se refleja en la sesión activa. Muchas funcionalidades de cualquier tabla normal se mantienen en ella, como triggers a nivel tabla, vistas, índices, exportar e importar (claro solo la definición de la tabla). No es posible declarar llaves foráneas en una tabla temporal. (DROP) Eliminación Cuando una tabla ya no es útil y no vamos a volver a necesitarla debe ser borrada. Esta operación se puede realizar con el comando DROP TABLE. DROP TABLE nombre_tabla [CASCADE CONSTRAINTS][PURGE] Se borra la tabla de la base de datos, borrando toda la información contenida en la tabla, es decir, todas las filas. También se borrará toda la información que sobre la tabla existiera en el diccionario. Si alguna columna de la tabla a borrar sirve como clave ajena de alguna tabla detalle, impide la eliminación de la tabla, ya que existe una restricción que requiere de la existencia de la tabla maestra. Esto se puede arreglar colocando la sentencia CASCADE CONSTRAINTS. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Esto produce que las restricciones de la tabla detalle se borren antes de borrar la tabla maestra.PURGE evita que los objetos borrados se vayan a la papelera La siguiente sentencia produce la eliminación de la tabla BORRAME. (ALTER) Modificación Oracle permite modificar las restricciones definidas para una tabla. Esto puede llevar a “inconsistencia” de los datos ya introducidos en la base de datos. Por ello, Oracle tiene definidos mecanismos para modificación de los datos ya existentes. Esta operación se puede realizar con el comando ALTER TABLE. ALTER TABLE [esquema.]tabla clausula_constraint [,…] [ENABLE clausula_activa | DISABLE clausula_disable] [{ENABLE|DISABLE} TABLE LOCK] [{ENABLE|DISABLE} ALL TRIGGERS]; Hay que tener en cuenta varios puntos: No es posible disminuir el tamaño de la calumna, si esta contiene datos En modificaciones, todos los datos tanto nuevos como viejos deben de ser compatibles o la tabla debe de estar vacia. La opcion ADD NOT NULL solo sera posible si la tabla esta vacia La opcion MODIFI NOT NULL solo se podra modificazr siempre y cuando no se tenga un valor nulo o este vacia la calumna en cuestion. Considere el ejemplo Propietario - Automóvil, bajo el criterio de hacienda del Gobierno del Estado de Veracruz, México. Modificaremos el ejemplo para añadir el atributo color. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Es factible modificar una tabla añadiendo o eliminando restricciones, en este caso para el ejemplo anterior el comando a utilizar será ALTER TABLE tabla {ADD | DROP} CONSTRAINT restricción; ALTER TABLE automovil DROP CONSTRAINT FK_Propietario; ALTER TABLE automovil ADD CONSTRAINT FK_Propietario FOREIGN KEY (idPropietario) REFERENCES propietario (idPropietario) ON DELETE CASCADE; ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS UNIDAD 3. Configuración y administración del espacio en disco RED CONCEPTUAL DE LA UNIDAD Estructuras logicas de almacenamiento Segmentos Configuración y administración del espacio en disco Memoria compartida Instancias múltiples ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Competencia General de la Unidad: Planear, diseñar e implementar la organización del espacio en disco. Definir las fases de las instancias de un SGBD. Crear espacios de almacenamientos dinámicos Actividades de aprendizaje - Investigar los conceptos relacionados con la lógica de almacenamiento. Definir cuáles son las instancias de un SGBD y su aplicación. Reconocer la importancia de particionar los discos. Comparar partición de disco y sistema de archivos. Crear particiones utilizando diferentes plataformas. Planear y definir la estructura lógica de la base de datos de acuerdo a los recursos disponibles –memoria y disco. Analizar la relación entre el cambio de fase del arranque y baja de instancia. Implementar el esquema de base de datos de una empresa ficticia, propuesta por el docente, en un manejador de libre elección Crear espacios de trabajo para tres usuarios de niveles distintos, con restricciones de almacenamiento acordes a cada perfil de usuario. Realizar proyecto integrador. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Configuración y administración del espacio en disco Para la gestión del almacenamiento de una base de datos existen 4 conceptos bien definidos que deben ser conocidos para poder comprender la forma en la que se almacenan los datos. Vamos a ver la diferencia entre bloque, extensión, segmento y espacio de tablas. 3.1. Estructuras lógicas de almacenamiento Bloques: Se tratan de la unidad más pequeña. Generalmente debe múltiple del tamaño de bloque del sistema operativo, ya que es la unidad mínima que va a pedir Oracle al sistema operativo. Si no fuera múltiple del bloque del sistema se añadiría un trabajo extra ya que el sistema debería obtener más datos de los estrictamente necesarios. Se especifica mediante DB_BLOCK_SIZE Extensiones: Se forma con uno o más bloques. Cuando se aumenta tamaño de un objeto se usa una extensión para incrementar el espacio. Segmentos: Grupo de extensiones que forman un objeto de la base de datos, como por ejemplo una tabla o un índice. Espacio de tablas: Formado por uno o más datafiles, cada datafile solo puede pertenecer a un determinado tablespace En general, el almacenamiento de los objetos de la base de datos (tablas e índices fundamentalmente) no se realiza sobre el archivo o archivos físicos de la base de datos, sino que se hace a través de estructuras lógicas de almacenamiento que tienen por debajo a esos archivos físicos, y que independizan por tanto las sentencias de creación de objetos de las estructuras físicas de almacenamiento. Esto es útil porque permite que a esos "espacios de objetos " les sean asociados nuevos dispositivos físicos (es decir, más espacio en disco) de forma dinámica cuando la base de datos crece de tamaño más de lo previsto. Posibilita además otra serie de operaciones como las siguientes: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Asignar cuotas específicas de espacio a usuarios de la base de datos. Controlar la disponibilidad de los datos de la base de datos, poniendo fuera de uso alguno de esos espacios de tablas individualmente. Realizar copias de seguridad o recuperaciones parciales de la base de datos. Reservar espacio para almacenamiento de datos de forma cooperativa entre distintos dispositivos. El administrador de la base de datos puede crear o borrar nuevos espacios lógicos de objetos, añadir o eliminar ficheros físicos de soporte, utilizados como espacio temporal de trabajo, definir parámetros de almacenamiento para objetos destinados a ese espacio de datos, todos los gestores relacionales que venimos introduciendo como ejemplos siguen esta filosofía. En el caso de Oracle, sobre los ficheros físicos de datos (datafiles) se definen los tablespaces. Por lo tanto, una base de datos Oracle se compone lógicamente de tablespaces, y físicamente de datafiles. Su creación es sencilla, con la sentencia GREAT'', TABLESPACE: CREATE TABLESPACE usuarios DATAFILE `datal.ora' SIZE 50M También es sencillo ampliar el espacio destinado a un tablespace utilizando el comando ALTER TABLESPACE: ALTER TABLESPACE usuarios ADD DATAFILE 'data2.ora' SIZE 25M Para hacer más grande una base de datos, las opciones disponibles son tres: Cada base de datos contiene un tablespace llamado SYSTEM que es creado automáticamente al crear la base de datos. Contiene las tablas del diccionario de datos ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS para la base de datos en cuestión. Es recomendable no cargar datos de usuario en SYSTEM, para dejarlos como espacio de objetos del sistema. Si además los datos de usuario están en tablespaces sitos en otros dispositivos, el rendimiento mejorará porque las tablas del diccionario de datos se acceden frecuentemente y por lo tanto son un cuello de botella potencial desde el punto de vista del acceso a disco. A la hora de estimar el espacio necesario para cl tablespace sys-nsm hay que tener en cuenta que las unidades de programación PL-SQL (entorno de programación SQL proporcionado por Oracle) almacenadas en la base de datos (procedimientos, paquetes, disparos y funciones) almacenan sus datos en SYSTEM. De acuerdo con lo comentado anteriormente, tablas e índices se ubicarán en el tablespace indicado en el momento de su creación con la correspondiente sentencia CREATE. Si no se dice nada, se situarán en el tablespace por defecto asociado al usuario creador 3.1.1 Definición de espacio de almacenamiento Las bases de datos suelen ser creadas para almacenar grandes cantidades de datos de forma permanente. Por lo general, los datos almacenados en éstas suelen ser consultados y actualizados constantemente. La mayoría de las bases de datos se almacenan en las llamadas memorias secundarias, especialmente discos duros, aunque, en principio, pueden emplearse también discos ópticos, memorias flash, etc. Las razones por las cuales las bases de datos se almacenan en memorias secundarias son: En cuanto al respaldo de las bases de datos (ver backup), suelen emplearse tanto discos duros, como cintas magnéticas, discos ópticos o similares. Las técnicas empleadas para almacenar bases de datos son sumamente importantes para la velocidad de acceso y recuperación de datos. Las técnicas dependen del tipo de almacenamiento, el uso que se le da o se le dará a la base de datos, la estructura de la misma, el SGBD empleado, etc. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Esta dependencia no significa necesariamente que haya que cambiar la estructura de la base de datos si se cambian las técnicas empleadas. Las técnicas de almacenamiento son independientes de la base de datos, pero, de todas maneras, las mejores técnicas muchas veces pueden determinarse viendo la estructura de la base de datos, entre otras características. Los encargados de elegir estas técnicas son los diseñadores y administradores de bases de datos, y dependen también de las capacidades del SGBD. En general, el SGBD ofrece diferentes opciones y técnicas para organizar los datos. La idea es que los encargados de la base de datos encuentren las técnicas idóneas, o sea, aquellas que permitan la mayor velocidad posible de acceso a los datos. Una mala decisión en esta área puede resultar en una menor velocidad de acceso a la base de datos, o en un uso excesivo del espacio de almacenamiento, o incluso, puede aumentar la velocidad de consulta de una base de datos, pero disminuir la velocidad de actualización de la misma. 3.1.2 Definición y creación del espacio asignado para cada base de datos Las bases de datos se almacenan en ficheros o archivos. Existen diferentes formas de organizaciones primarias de archivos que determinan la forma en que los registros de un archivo se colocan físicamente en el disco y, por lo tanto, cómo se accede a éstos. Las distintas formas de organizaciones primarias de archivos son: Existe una segunda forma de acceder a los datos llamada organización secundaria o estructura de acceso auxiliar. Estas permiten que los accesos a los registros de un archivo basado en campos alternativos, sean más eficientes que los que han sido utilizados para la organización primaria de archivos. El DBMS asigna espacio de almacenamiento a las bases de datos cuando los usuarios introducen create database o alter database. El primero de los comandos puede especificar uno o más dispositivos de base de datos, junto con la cantidad de espacio en cada uno de ellos que será asignado a la nueva base de datos. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Si se utiliza la palabra clave default o se omite completamente la cláusula on , el DBMS pone la base de datos en uno o más de los dispositivos predeterminados de base de datos especificados en master.sysdevices Para especificar un tamaño (en este ejemplo, 4MB) para una base de datos que se va a almacenar en una ubicación predeterminada, utilice on default = size de esta forma: create database newpubs on default = 4 Para situar la base de datos en dispositivos específicos, dé el nombre del dispositivo o dispositivos en que desea almacenarla. Como la sintaxis indica, puede solicitar que se almacene en más de un dispositivo de base de datos, con una cantidad de espacio diferente en cada uno. Todos los dispositivos mencionados en create database deben estar enumerados en sysdevices . En otras palabras, deben haberse inicializado con disk init . La instrucción siguiente crea la base de datos newdb y asigna 3MB en mydata y 2MB en newdata . Como en el ejemplo anterior, la base de datos y el diario de transacciones no se separan: create database newdb on mydata = 3, newdata = 2 Warning! A menos que cree una base de datos pequeña o que no sea crucial, sitúe siempre el diario en un dispositivo de base de datos aparte. Si la cantidad de espacio solicitada a un dispositivo específico de base de datos no está disponible, el DBMS crea la base de datos con tanto espacio como sea posible en cada dispositivo y muestra un mensaje informando el espacio asignado en cada uno. (Esto no se considera un error.) Si hay menos espacio del mínimo necesario para una base de datos en el dispositivo especificado (o en el predeterminado, si no se especifica un nombre), el comando create database falla. 3.1.3 Bitácoras La estructura más ampliamente usada para grabar las modificaciones de la base de datos es la Bitácora. Cada registro de la bitácora escribe una única escritura de base de datos y tiene lo siguiente: 1. Nombre de la transacción: Nombre de la transacción que realizó la operación de escritura. 2. Nombre del dato: El nombre único del dato escrito. 3. Valor antiguo: El valor del dato antes de la escritura. 4. Valor nuevo: El valor que tendrá el dato después de la escritura. Existen otros registros de bitácora especiales para grabar sucesos importantes durante el proceso de transacción, tales como: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS < T1, inicio > < T1, x, v1, v2 > < T1, commit > Es fundamental que siempre se cree un registro en la bitácora cuando se realice una escritura antes de que se modifique la base de datos. También tenemos la posibilidad de deshacer una modificación que ya se ha escrito en la base de datos, esto se realizará usando el campo del valor antiguo de los registros de la bitácora. Los registros de la bitácora deben residir en memoria estable como resultado el volumen de datos en la bitácora puede ser exageradamente grande. Ejemplo de una bitácora de instrucciones CREATE TABLE [dbo].[Bitacora] ( [BitacoraID] [int] IDENTITY (1, 1) NOT NULL , [EventType] [char] (14) NOT NULL , [Status] [int] NOT NULL , [EventInfo] [varchar] (1000) NOT NULL , [Usuario] [varchar] (20) NOT NULL , [Fecha] [smalldatetime] NOT NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[Bitacora] WITH NOCHECK ADD CONSTRAINT [DF_Bitacora_Usuario] DEFAULT (suser_sname()) FOR [Usuario], CONSTRAINT [DF_Bitacora_Fecha] DEFAULT (getdate()) FOR [Fecha] Y, por otro lado, el trigger en la tabla lo definiría de la siguiente manera: /* Trigger de Monitoreo */ CREATE TRIGGER trig_tablabitacora ON TABLA FOR DELETE, INSERT, UPDATE AS BEGIN DECLARE @NUMERO INT INSERT INTO Bitacora (EventType,Status,EventInfo) exec sp_executesql N’DBCC INPUTBUFFER( @i )’, N’@i int’, @i=@@spid END Enseguida plantearé un ejemplo de una bitácora desarrollada para la siguiente base de datos de MySQL, llamada proyecto, que tiene las tablas carrera, departamento y maestros. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 3.1.4 Particiones Una partición es una división de una base de datos lógica o sus elementos constituyentes en partes independientes. La partición de bases de datos se hace normalmente por razones de mantenimiento, rendimiento o manejo. Una aplicación popular y favorable es en un Sistema de Administración de Base de Datos Distribuida. Cada partición puede ser extendida hasta múltiples nodos, y los usuarios en el nodo pueden hacer transacciones locales en la partición. Esto aumenta el rendimiento en sitios que tienen transacciones regularmente involucrando ciertas vistas de datos, y manteniendo la disponibilidad y la seguridad. Esta partición puede hacerse creando bases de datos más pequeñas separadas (cada una con sus propias tablas, índices, y registros de transacciones) o dividiendo elementos seleccionados, por ejemplo, solo una tabla. Partición horizontal consiste en poner diferentes filas en diferentes tablas. Por ejemplo, clientes con códigos postales menores que 50000 están almacenados en la tabla ClientesEste, mientras que los clientes con códigos postales mayores o iguales a 50000 están almacenados en la tabla ClientesOeste. Las dos tablas de partición son entonces ClientesEste y ClientesOeste, mientras que una vista con una unión podría ser creada con las dos tablas para poder dar una vista completa de todos los clientes. Partición vertical consiste en crear miles de tablas con miles de columnas y crear tablas para poner las columnas restantes. Se puede particionar una tabla de 5 maneras diferentes: Por rango: para construir nuestras particiones especificamos rangos de valores. Por ejemplo, podríamos segmentar los datos en 12 particiones: una para los contratos de 1950 a 1960, otra para los años 60, los 70, 80, 90, la década del 2000 y la década actual ALTER TABLE contratos PARTITION BY RANGE(YEAR(fechaInicio)) ( PARTITION partDecada50 VALUES LESS THAN (1960), PARTITION partDecada60 VALUES LESS THAN (1970), PARTITION partDecada70 VALUES LESS THAN (1980), PARTITION partDecada80 VALUES LESS THAN (1990), PARTITION partDecada90 VALUES LESS THAN (2000), PARTITION partDecada00 VALUES LESS THAN (2010), PARTITION partDecada10 VALUES LESS THAN MAXVALUE ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS ); Por listas: para construir nuestras particiones especificamos listas de valores concretos. ALTER TABLE contratos PARTITION BY LIST(YEAR(fechaInicio)) ( PARTITION partDecada50 VALUES IN (1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959), PARTITION partDecada60 VALUES IN (1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969), PARTITION partDecada70 VALUES IN (1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979), PARTITION partDecada80 VALUES IN (1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989), PARTITION partDecada90 VALUES IN (1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999), PARTITION partDecada00 VALUES IN (2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009), PARTITION partDecada10 VALUES IN (2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019) ); Por hash: MySQL se encarga de distribuir las tuplas automáticamente usando una operación de módulo. Sólo hay que pasarle una columna o expresión que resulte en un entero (el hash) y el número de particiones que queramos crear. ALTER TABLE contratos PARTITION BY HASH(YEAR(fechaInicio)) PARTITIONS 7; Por clave: similar a la partición por hash, pero en este caso no necesitamos pasarle un entero; MySQL utilizará su propia función de hash para generarlo. Si no se indica ninguna columna a partir de la que generar el hash, se utiliza la clave primaria por defecto. ALTER TABLE contratos PARTITION BY KEY() PARTITIONS 7; Compuesta: podemos combinar los distintos métodos de particionado y crear particiones de particiones Por último, un pequeño ejemplo de cómo afectaría el particionado a una consulta sencilla como obtener el número total de tuplas que cumplen una condición. Estas son las estadísticas de la consulta sin particionado (ni índices) ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS EXPLAIN SELECT COUNT(*) FROM contratos WHERE fechaInicio BETWEEN '1950-01-01' AND '1955-12-31' select_type table type key rows Extra SIMPLE contratos ALL 239796 Using where Y este el resultado de añadir las particiones (nótese la palabra clave PARTITIONS para que nos muestre también la información relativa a las particiones) EXPLAIN PARTITIONS SELECT COUNT(*) FROM contratos WHERE fechaInicio BETWEEN '1950-01-01' AND '1955-12-31' select_type table partitions type key rows Extra SIMPLE contratos partDecada50 ALL 8640 Using where El número de tuplas que MySQL tiene que comprobar se ve disminuido en 2 órdenes de magnitud. 3.1.5 Espacios privados Un «espacio privado» permite que los administradores y redactores gestionen el conjunto de datos del sitio. Algunas bases de datos tienen estos espacios privados llamados comúnmente paneles de control, que son formularios que aparecen al abrir la base de datos. Los paneles de control sirven de "puerta principal" o "recibidor" de una base de datos en el sentido de que dirigen a las personas hacia determinadas tareas, como introducir o buscar datos. Sirven también para mantener alejados a los usuarios de las tablas que contienen los datos en tiempo real. Cuando reciba una base de datos, debe adentrarse más allá del panel de control para averiguar cómo están estructurados los datos, pero merece la pena echar un vistazo inicial al panel de control. Le puede ofrecer algún indicio sobre las tareas que el diseñador de la base de datos consideró que realizarían los usuarios habitualmente con los datos. Puede hacer clic en los vínculos del panel de control para ver qué objetos, como formularios e informes, abren. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 3.1.6 Espacios para objetos Los DBMS se basan en archivos para almacenar datos, y estos archivos, o conjuntos de datos, residen en medios de almacenamiento, o dispositivos. Una buena parte del trabajo del DBA implicará la planificación para el almacenamiento real de la base de datos. Algunas tecnologías de almacenamiento son más adecuadas que otras. Sin embargo, la naturaleza mecánica de la unidad de disco los hace más vulnerables al fracaso de los componentes de otro equipo. Además, las formas en que las unidades de disco son utilizados por las bases de datos pueden hacer que la gestión del almacenamiento impredecibles, como la barra lateral "Modern DBMS de uso de disco“ Puede usarse RAID para mejorar la seguridad de los datos. Para aplicaciones de misión crítica la integridad de los datos puede ser más importante que la disponibilidad de datos. Si el soporte es poco fiable y un fallo de las causas de corrupción de datos, los datos perdidos puede ser más de un problema que el tiempo de inactividad. Es imperativo, por tanto, que las soluciones de almacenamiento de base de datos para protegerlos a toda costa. La recuperación de datos desde medios de almacenamiento lleva mucho más tiempo en completarse que la recuperación de datos desde la memoria caché o la memoria. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS El rendimiento de la base de datos depende de la entrada y salida a disco. La cantidad de datos almacenados es mayor que nunca antes, y los datos se almacenados por más tiempo. Algunos DBMS permiten al tamaño de los archivos temporales de expandirse y contraerse de forma automática. Dependiendo del tipo y la naturaleza de las operaciones de base de datos en proceso, esta fluctuación puede provocar picos de uso del disco El crecimiento de la capacidad de almacenamiento aumenta aún más la complejidad de la gestión de datos y bases de datos. Muchas organizaciones están implementando nuevas tecnologías de almacenamiento, tales como almacenamiento en red (NAS) y redes de área de almacenamiento (SAN), para ayudar a controlar la cantidad cada vez mayor de almacenamiento necesario para los usos modernos. La gestión del almacenamiento en el entorno dinámico de hoy es una tarea difícil DBA. Hay muchos problemas de almacenamiento que deben ser resueltos antes de que un DBA pueda crear una base de datos. Uno de los temas más importantes es la cantidad de espacio para permitir la base de datos. El cálculo espacial debe tener en cuenta no sólo tablas, índices, sino también, y dependiendo del DBMS, el registro de transacciones. Cada una de estas entidades probablemente requerirá un archivo separado o conjunto de datos, para el almacenamiento persistente. El DBA debe separar en diferentes discos a los archivos para: 3.2. Segmentos Un segmento contiene un tipo específico de objetos de la base de datos, como por ejemplo una tabla. Un segmento está compuesto de extensiones que definen el tamaño disponible para el segmento. A medida que se llenan las extensiones se van añadiendo nuevas extensiones, es aquel espacio reservado por la base de datos, dentro de un datafile, para ser utilizado por un solo objeto. Así una tabla (o cualquier otro objeto) está dentro de su segmento, y nunca podrá salir de él, ya que si la tabla crece, el segmento también crece con ella. Físicamente todo objeto en base de datos no es más que un segmento dentro de un datafile. Se puede decir que, un segmento es a un objeto de base de datos, lo que un ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS datafile a un tablespace; el segmento es la representación física del objeto en base de datos (el objeto es solo una definición lógica). Los segmentos son los equivalentes físicos de los objetos que almacenan datos. El uso efectivo de los segmentos requiere que el DBA conozca los objetos, que utiliza una aplicación, cómo los datos son introducidos en esos objetos y el modo en que serán recuperados. Un segmento está constituido por secciones llamadas extensiones, que son conjuntos contiguos de bloques. Una vez que una extensión existente en un segmento no puede almacenar más datos, el segmento obtendrá del espacio de tabla otra extensión. Este proceso de extensión continuará hasta que no quede más espacio disponible en los ficheros del espacio de tablas, o hasta que se alcance un número máximo de extensiones por segmento. Existen 5 tipos de segmento: •De datos. •De índices. •De rollback. •Temporales. •De bootstrap. 3.3. Memoria compartida La memoria compartida contiene todos los datos intervenidos, como: Grupo de memorias intermedias Tabla de bloqueos Memoria intermedia del registro, que contiene las entradas del registro que esperan a ser volcadas en el almacenamiento estable Planes de consulta en caché, que se pueden reutilizar si se envía de nuevo la misma consulta La exclusión mutua se puede implementar por medio de funciones del sistema operativo llamadas semáforos. Implementaciones alternativas, con menos sobrecargas, utilizan instrucciones atómicas especiales soportadas por el hardware de la computadora; un tipo de instrucción atómica comprueba una posición de la memoria y la establece a uno automáticamente. Los mecanismos de exclusión mutua también se utilizan para implementar pestillos. 3.4. Instancias múltiples ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Se llama instancia múltiple al hecho de poder ejecutar un programa más de una vez al mismo tiempo. Hay programas que no admiten más que una sola instancia, es decir que si ya se está ejecutando, por más que lo cliquees de nuevo en el icono o en el menú no aparecerá un nuevo ejemplar del programa. Con las bases de datos se complica un poco porque si un usuario modifica un registro que otro usuario tiene también abierto, la modificación que se haga en una instancia debe reflejarse de inmediato (actualizarse) en cualquier otra instancia abierta de la misma base de datos. Sin embargo, en las bases de datos se puede seleccionar la opción en el diseño de la BD, y se reflejarán de inmediato las modificaciones en todas las instancias abiertas En programación, una instancia se produce con la creación de un objeto perteneciente a una clase (se dice que se instancia la clase). El objeto que se crea tiene los atributos, propiedades y métodos de la clase a la que pertenece. Los objetos y sus características se usan en la construcción de programas, ya sea como contenedores de datos o como partes funcionales del programa. Los objetos también puede ser ocurrencia de las clases. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS UNIDAD 4. Operación y mantenibilidad RED CONCEPTUAL DE LA UNIDAD Funciones especificas de las bitacoras Bitacoras del trabajo del DBMS Recuperación (rollback) Definición de los modos de operación de un DBMS (alta, baja, recovery) Permanencia (commit) Comandos de activación de los modos de operación Tipos de indices Manejo de indices Reorganización de indices Operación y mantenibilidad Reconstrucción de indices ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Competencia General de la Unidad: Crear y mantener bitácoras de operación para el diagnóstico del rendimiento del DBMS Crear y mantener índices especializados Actividades de aprendizaje - - Crear bitácoras para el sistema ficticio de la tercera unidad, utilizado herramientas propias del DBMS. Crear datos aleatorios para la BD del sistema ficticio y realizar el proceso de carga batch. Crear diferentes índices y medir el rendimiento a la base de datos para cada uno de ellos, usando técnicas de estimación del tiempo de respuesta al cliente. Discutir con el grupo sobre la implicación de la creación de los índices adicionales y la relación con el costo de almacenamiento y rendimiento. Realizar proyecto integrador. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Operación y mantenibilidad Tratas acerca de cómo se hacen las bitácoras, que función tienen y porque son tan importantes, además es necesario conocer porque son importante a la hora de realizar cambios o conocer un poco más del sistema de base de datos que se está manejando. 4.1. Bitácoras del trabajo de un DBMS Una bitácora (log) es una herramienta (archivos o registros) que permite registrar, analizar, detectar y notificar eventos que sucedan en cualquier sistema de información utilizado en las organizaciones. Es la estructura más ampliamente usada para grabar las los acciones que se llevan en la base de datos. Nos ayuda a recuperar la información ante algunos incidentes de seguridad, detección de comportamiento inusual, información para resolver problemas, evidencia legal, es de gran ayuda en las tareas de cómputo forense. Permite guardar las transacciones realizadas sobre una base de datos en específico, de tal manera que estas transacciones puedan ser auditadas y analizadas posteriormente . Pueden obtenerse datos específicos de la transacción como: 1. Operación que se realizó. 2. Usuario de BD. 3. Fecha. 4. Máquina. 5. Programa. 6. Tipo de conexión. 7. Estado. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Algunas de las ventajas son: No se requiere hacer cambios en los sistemas de producción o de desarrollo para una simple instalación de la implementación de la bitácora. A través de la parametrización se generan las pantallas de consulta y reportes sin necesidad de programar. Acceso a la bitácora a través de una aplicación Web. Control de Acceso a la información de la bitácora a través de Roles. Se puede implementar en los sistemas de información que utilicen las principales bases de datos: Oracle, SQL Server, Informix, Sybase. Permite hacer el seguimiento de todos los cambios que ha tenido un registro. En la bitácora podemos encontrar distintos tipos de mensajes que se pueden clasificar en: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Enseguida plantearé un ejemplo de una bitácora desarrollada para la siguiente base de datos de MySQL, llamada proyecto, que tiene las tablas carrera, departamento y maestros. CREATE DATABASE proyecto; USE proyecto CREATE TABLE IF NOT EXISTS ‘carrera’ (‘clave_carrera’ int(11) NOT NULL, ‘nom_carrera’ varchar(20) NOT NULL, ‘num_depto’ int(11) NOT NULL, PRIMARY KEY (‘clave_carrera’), KEY ‘num_depto’ (‘num_depto’) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS ‘departamento’ ( ‘num_departamento’ int(11) NOT NULL,’nombre_dept’ varchar(20) NOT NULL, ‘jefe_num_tarjet’ int(11) NOT NULL, PRIMARY KEY (‘num_departamento’), KEY ‘jefe_num_tarjet’ (‘jefe_num_tarjet’) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS ‘maestros’ (‘num_tarjeta’ int(11) NOT NULL DEFAULT ’0′,’nombre’ varchar(50) DEFAULT NULL, PRIMARY KEY (‘num_tarjeta’)) ENGINE=InnoDB DEFAULT CHARSET=latin1; La estructura de la tabla bitácora sería la siguiente: CREATE TABLE IF NOT EXISTS ‘bitacora’ (‘id’ int(11) NOT NULL AUTO_INCREMENT, ‘operacion’ varchar(10) DEFAULT NULL, ‘usuario’ varchar(40) DEFAULT NULL, ‘host’ varchar(30) NOT NULL, ‘modificado’ datetime DEFAULT NULL, ‘tabla’ varchar(40) NOT NULL, PRIMARY KEY (‘id’) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; La bitácora debe registrar todos los movimientos (insertar, eliminar y modificar) que se realicen en las tablas de la base de datos. Para lograr lo anterior es necesario crear un trigger para que se ejecute después de la operación de insertar, otro para después de eliminar y el último para después de modificar para cada una de las 3 tablas de la base de datos. Los nueve triggers necesarios para que funcione la bitácora son los siguientes: DROP TRIGGER IF EXISTS ‘bit_carr_ins’; DELIMITER // CREATE TRIGGER ‘bitacora’ AFTER INSERT ON ‘carrera’ FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS SUBSTRING(USER(),1,(instr(user(),’@')-1)), “INSERTAR”, NOW(), “CARRERA”) // DROP TRIGGER IF EXISTS ‘bit_carr_upd’; CREATE TRIGGER ‘bit_carr_upd’ AFTER UPDATE ON ‘carrera’ FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ACTUALIZAR”, NOW(), “CARRERA”) // DROP TRIGGER IF EXISTS ‘bit_carr_del’; CREATE TRIGGER ‘bit_carr_del’ AFTER DELETE ON ‘carrera’ FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ELIMINAR”, NOW(), “CARRERA”) // DROP TRIGGER IF EXISTS ‘bit_depto_ins’; CREATE TRIGGER ‘bit_depto_ins’ AFTER INSERT ON ‘departamento’ FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “INSERTAR”, NOW(), “DEPARTAMENTO”) // DROP TRIGGER IF EXISTS ‘bit_depto_upd’; CREATE TRIGGER ‘bit_depto_upd’ AFTER UPDATE ON ‘departamento’ FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ACTUALIZAR”, NOW(), “DEPARTAMENTO”) // DROP TRIGGER IF EXISTS ‘bit_depto_del’; CREATE TRIGGER ‘bit_depto_del’ AFTER DELETE ON ‘departamento’ FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ELIMINAR”, NOW(), “DEPARTAMENTO”) // ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS DROP TRIGGER IF EXISTS ‘bit_mae_ins’; CREATE TRIGGER ‘bit_mae_ins’ AFTER INSERT ON ‘maestros’ FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “INSERTAR”, NOW(), “MAESTROS”) // DROP TRIGGER IF EXISTS ‘bit_mae_upd’; CREATE TRIGGER ‘bit_mae_upd’ AFTER UPDATE ON ‘maestros’ FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ACTUALIZAR”, NOW(), “MAESTROS”) // DROP TRIGGER IF EXISTS ‘bit_mae_del’; CREATE TRIGGER ‘bit_mae_del’ AFTER DELETE ON ‘maestros’ FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ELIMINAR”, NOW(), “MAESTROS”) // El resultado que se espera de la bitácora se muestra en la siguiente imagen. Espero que puedan implementar sus propias bitácoras en todas implementen de ahora en adelante. las bases de datos que ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 4.1.1 Funciones específicas de las bitácoras La estructura más ampliamente usada para grabar las modificaciones de la base de datos es la Bitácora. Cada registro de la bitácora escribe una única escritura de base de datos y tiene lo siguiente: Nombre de la Transacción Valor antiguo Valor Nuevo Es fundamental que siempre se cree un registro en la bitácora cuando se realice una escritura antes de que se modifique la base de datos. También tenemos la posibilidad de deshacer una modificación que ya se ha escrito en la base de datos, esto se realizará usando el campo del valor antiguo de los registros de la bitácora. Los registros de la bitácora deben residir en memoria estable como resultado el volumen de datos en la bitácora puede ser exageradamente grande. Las operaciones COMMIT y ROLLBACK establecen lo que se le conoce como punto de sincronización lo cual representa el límite entre dos transacciones consecutivas, o el final de una unidad lógica de trabajo, y por tanto al punto en el cual la base de datos esta (o debería estar) en un estado de consistencia. Las únicas operaciones que establecen un punto de sincronización son COMMIT, ROLLBACK y el inicio de un programa. Cuando se establece un punto de sincronización: Se comprometen o anulan todas las modificaciones realizadas por el programa desde el punto de sincronización anterior. Se pierde todo posible posicionamiento en la base de datos. Se liberan todos los registros bloqueados. Es importante advertir que COMMIT y ROLLBACK terminan las transacción, no el programa. Ejemplo SQLSERVER 2008 Para acceder al modo consola de SQL SERVER, se debe abrir una ventana de comando y ejecutar el comando SQLCMD con los siguientes parámetros -E: para indicar que es autenticación Windows -S: para indicar el nombre del servidor A continuación se muestra un ejemplo de conexión ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Creamos una tabla de trabajo El siguiente ejemplo muestra como Rollback afecta una transacción ROLLBACK WORK Esta instrucción funciona de forma idéntica a ROLLBACK TRANSACTION, con la diferencia de que ROLLBACK TRANSACTION acepta nombres de transacción definidos por el usuario.Se especifique o no la palabra clave opcional WORK, esta sintaxis de ROLLBACK es compatible con ISO. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Al anidar transacciones, ROLLBACK WORK siempre revierte las transacciones hasta la instrucción BEGIN TRANSACTION más externa y disminuye la función del sistema @@TRANCOUNT a permisos Los permisos ROLLBACK WORK corresponden, de forma predeterminada, a cualquier usuario válido. COMMIT Marca el final de una transacción correcta, implícita o explícita Ejemplo 4.1.2 Recuperación (rollback) En tecnologías de base de datos, un rollback es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas. Son cruciales para la recuperación de crashes de un servidor de base de datos; realizando rollback (devuelto) cualquier transacción que estuviera activa en el tiempo del crash, la base de datos es restaurada a un estado consistente. En SQL, ROLLBACK es un comando que causa que todos los cambios de datos desde la última sentencia BEGIN WORK, o START TRANSACTION sean descartados por el sistema de gestión de base de datos relacional (RDBMS), para que el estado de los datos sea "rolled back"(devuelto) a la forma en que estaba antes de que aquellos cambios tuvieran lugar. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Una sentencia ROLLBACK también publicará cualquier savepoint existente que pudiera estar en uso. En muchos dialectos de SQL, ROLLBACKs son específicos de la conexión. Esto significa que si se hicieron dos conexiones a la misma base de datos, un ROLLBACK hecho sobre una conexión no afectará a cualesquiera otras conexiones. Esto es vital para el buen funcionamiento de la Concurrencia. La funcionalidad de rollback está normalmente implementada con un Log de transacciones, pero puede también estar implementada mediante control de concurrencia multiversión. En el proceso de “Rollback”, SQL Server comienza a hacer un rollback de todas las transacciones que no fueron confirmadas además de las que fueron rechazadas, dejando de esta manera la base de datos en un estado consistente. Este proceso de recuperación en algunos casos puede tardar mucho tiempo debido a la gran cantidad de información que tienen que replicar desde el log de transacciones. Es por eso que la frecuencia con la que se hacen los checkpoints dentro de la base de datos es crucial para el tiempo que tardara el servidor en ejecutar el proceso de recuperación. Adicionalmente cabe mencionar que en algunas pocas ocasiones el terminar el servicio de SQL Server de manera inesperada puede causar corrupciones de datos, y esto sí es grave debido a que en algunos casos puede ser recuperable la información, pero siempre con un riesgo de perder algo de data, y en otros no es posible arreglar la base de datos, entonces lo único que queda en estas situaciones es la restauración de backups y es ahí donde si se tiene una buena estrategia de backups se puede llegar a recuperar absolutamente toda la información hasta el momento del desastre. 4.1.3 Permanencia (commit) En el lenguaje SQL se denomina COMMIT a aplicar_cambios y ROLLBACK a cancelar_cambios. Las transacciones suelen verse implementadas en sistemas de bases de datos y, más recientemente, se han visto incorporadas a como gestiona un sistema operativo la interacción con un sistema de archivos (como varias características de las bases de datos, debido a que son muy similares arquitectónicamente). Una sentencia COMMIT en SQL finaliza una transacción de base de datos dentro de un sistema gestor de base de datos relacional (RDBMS) y pone visibles todos los cambios a otros usuarios. El formato general es emitir una sentencia BEGIN WORK, una o más sentencias SQL, y entonces la sentencia COMMIT. Alternativamente, una sentencia ROLLBACK se puede emitir, la cual deshace todo el trabajo realizado desde que se emitió BEGIN WORK. Una sentencia COMMIT publicará cualquiera de los savepoints(puntos de recuperación) existentes que puedan estar en uso. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS En términos de transacciones, lo opuesto de commit para descartar los cambios "en tentativa" de una transacción, es un rollback. 4.2. Definición de los modos de operación de un DBMS Modos de operación de un SGBD Rollback: En tecnologías de base de datos, un rollback es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas. Commit: En el contexto de la Ciencia de la computación y la gestión de datos, commit (acción de comprometer) se refiere a la idea de consignar un conjunto de cambios "tentativos, o no permanentes". Un uso popular es al final de una transacción de base de datos. Recovery: El Modo de Recuperación, también conocido como Modelo de Recuperación ó Modo de Registro, es una opción de configuración de base de datos que indica cómo se gestiona el uso del LOG de Transacciones de SQL Server para dicha base de datos (esta opción se configura para cada base de datos de forma independiente). Como realizar estas operaciones en MySQL 1) Creamos una tabla mysql> CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB; Query OK, 0 rows affected (0.10 sec) mysql> INSERT INTO innotest VALUES(1); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO innotest VALUES(2); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO innotest VALUES(3); Query OK, 1 row affected (0.04 sec) mysql> SELECT * FROM innotest; ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS +-------+ | campo | +-------+ | 1 | | 2 | | 3 | +-------+ 3 rows in set (0.00 sec) 2) Ahora realizamos una transacción mysql> BEGIN; Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO innotest VALUES(4); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM innotest; +-------+ | campo | +-------+ | 1 | | 2 | | 3 | | 4 | +-------+ 4 rows in set (0.00 sec) Si aplicamos el Rollback los cambios no tendran efecto: mysql> ROLLBACK; Query OK, 0 rows affected (0.06 sec) mysql> SELECT * FROM innotest; +-------+ | campo | +-------+ | 1 | | 2 | | 3 | +-------+ 3 rows in set (0.00 sec) ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 3) Si hacemos una operación commit por lo contrario, los cambios se realizaran: mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO innotest VALUES(4); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.02 sec) mysql> SELECT * FROM innotest; +-------+ | campo | +-------+ | 1 | | 2 | | 3 | | 4 | +-------+ 4 rows in set (0.00 sec) Como hacer el recovery: Backup: mysqldump –host IP_DEL_SERVER –user USUARIO –opt DATABASE -p >BACKUP_NAME(La opción –opt optimiza el proceso de backup y es recomenado su uso) Restore: mysql –host IP_DEL_SERVER -u USUARIO -p DATABASE < BACKUP_NAME Como realizar las operaciones en Oracle 1) Para realizar un rollback en Oracle se hace lo siguiente: ij> autocommit off; ij> INSERT INTO menu VALUES ('dessert', 'rhubarb pie', 4); 1 row inserted/updated/deleted ij> SELECT * from menu; COURSE |ITEM |PRICE ----------------------------------------------entree |lamb chop |14 dessert |creme brulee |7 appetizer |baby greens |7 dessert |rhubarb pie |4 4 rows selected ij> rollback; ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS ij> SELECT * FROM menu; COURSE |ITEM |PRICE ----------------------------------------------entree |lamb chop |14 dessert |creme brulee |7 appetizer |baby greens |7 3 rows selected 2) Para hacer un commit: ij> DROP TABLE menu; 0 rows inserted/updated/deleted ij> CREATE TABLE menu (course CHAR(10), item CHAR(20), price INT); 0 rowsinserted/updated/deleted ij> INSERT INTO menu VALUES ('entree', 'lamb chop', 14), ('dessert', 'creme brulee', 6),('appetizer', 'baby greens', 7); 3 rows inserted/updated/deleted ij> commit; 3) Para hacer un recovery RMAN> run { set until time to_date('04-Aug-2004 00:00:00', 'DD-MON-YYYY HH24:MI:SS'); restore database; recover database; } 4.3. Comandos de activación de los modos de operación 0 MySQL server puede operar en distintos modos SQL, y puede aplicar estos modos de forma distinta a diferentes clientes. Esto permite que cada aplicación ajuste el modo de operación del servidor a sus propios requerimientos. 0 Los modos definen qué sintaxis SQL debe soportar MySQL y que clase de chequeos de validación de datos debe realizar. Esto hace más fácil de usar MySQL en distintos entornos y usar MySQL junto con otros servidores de bases de datos. Los valores de los modos sql_mode más importantes probablemente son los siguientes: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 0 ANSI Cambia el comportamiento y la sintaxis para cumplir mejor el SQL. 0 STRICT_TRANS_TABLES Si un valor no puede insertarse tal y como se da en una tabla transaccional, se aborta el comando. 0 TRADITIONAL Hace que MySQL se comporte como un sistema de bases de datos SQL ``tradicional''. Una simple descripción de este modo es `` da un error en lugar de una alerta'' cuando se inserta un valor incorrecto en la columna. Nota:INSERT/UPDATE aborta así que se detecta un error. Puede que no sea lo que quiera si está usando un motor de almacenamiento no transaccional, ya que los cambios en los datos anteriores al error no se deshacen, resultando en una actualización “parcial''. 0 ALLOW_INVALID_DATES No hace un chequeo total de los datos en modo estricto. Chequea sólo que los meses se encuentran en el rango de 1 a 12 y que los días están en el rango de 1 a 31. 0 ANSI_QUOTES Trata '"' como un identificador delimitador de carácter (como '`' ) y no como un delimitador de cadenas de caracteres. Puede usar '`' para delimitar identificadores en modo ANSI. Con ANSI_QUOTES activado, puede usar doble delimitadores para delimitar una cadena de caracteres literales, ya que se interpreta como un identificador. 0 ERROR_FOR_DIVISION_BY_ZERO Produce un error en modo estricto (de otra forma una advertencia) cuando encuentra una división por cero (oMOD(X,0)) durante un INSERT o UPDATE, o en cualquier expresión (por ejemplo, en una lista de select o cláusulaWHERE ) que implica datos de tablas y una divisón por cero. 0 HIGH_NOT_PRECEDENCE comportamiento de mayor-precedencia 0 IGNORE_SPACE Permite nombres entre el nombre de función y el carácter '(' . Esto fuerza que todos los nombres de función se traten como palabras reservadas. Como resultado, si quiere acceder a cualquier base de datos, tabla, o nombre de columna que sea una palabra reservada, debe delimitarla. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 0 NO_AUTO_CREATE_USER Previene que GRANT cree automáticamente nuevos usuarios si de otra forma se haría, a no ser que se especifique un usuario. 0 NO_AUTO_VALUE_ON_ZERO NO_AUTO_VALUE_ON_ZERO afecta el tratamiento de las columnas AUTO_INCREMENT . Normalmente, genera el siguiente número de secuencia para la columna insertando NULL o 0 en ella. NO_AUTO_VALUE_ON_ZERO suprime este comportamiento para 0 de forma que sólo NULL genera el siguiente número de secuencia. 0 NO_BACKSLASH_ESCAPES Desactiva el uso del carácter de barra invertida ('\') como carácter de escape en cadenas de caracteres. Con este modo activado, la barra invertida se convierte en un carácter ordinario como cualquier otro. 0 NO_DIR_IN_CREATE Cuando crea una tabla, ignora todas las directivas INDEX DIRECTORY y DATA DIRECTORY. Esta opción es útil en servidores de replicación esclavos. 0 NO_ENGINE_SUBSTITUTION Evita la substitución automática de motor de almacenamiento cuando el motor deseado no está disponible o compilado. 0 NO_FIELD_OPTIONS No muestra opciones específicas para columnas de MySQL en la salida de SHOW CREATE TABLE. Este modo se usa con mysqldump en modo de portabilidad 0 NO_KEY_OPTIONS No muestra opciones específicas para índices de MySQL en la salida de SHOW CREATE TABLE. Este modo se usa con mysqldump en modo de portabilidad. 0 NO_TABLE_OPTIONS No muestra opciones específicas para tablas (tales como ENGINE) en la salida de SHOW CREATE TABLE. Este modo se usa con mysqldump en modo de portabilidad. 0 NO_UNSIGNED_SUBTRACTION ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS En operaciones de resta, no marca el resultado como UNSIGNED si uno de los operandos no tiene signo. Note que esto hace que UNSIGNED BIGINT no sea 100% usable en todos los contextos. 0 NO_ZERO_DATE En modo estricto, no permite '0000-00-00' como fecha válida. Puede insertar fechas 0 con la opción IGNORE . Cuando no está en modo estricto, la fecha se acepta pero se genera una advertencia. 0 NO_ZERO_IN_DATE En modo estricto, no acepta fechas la parte del mes o día es 0. Se usa con la opción IGNORE , inserta una fecha'0000-00-00' para cualquiera de estas fechas. Cuando no está en modo estricto, la fecha se acepta pero se genera una advertencia. 0 ONLY_FULL_GROUP_BY No permite consultas que en la parte del GROUP BY se refieran a una columna que no se seleccione. 0 PIPES_AS_CONCAT Trata || como un concatenador de columnas de caracteres (lo mismo que CONCAT()) en lugar de como sinónimo de OR. 0 REAL_AS_FLOAT Trata REAL como un sinónimo de FLOAT en lugar de sinónimo de DOUBLE. 0 STRICT_ALL_TABLES Activa el modo estricto para todos los motores de almacenamiento. Rechaza los datos inválidos. Detalles adicionales a continuación. 0 STRICT_TRANS_TABLES Habilita el modo estricto para motores de almacenamiento transaccionales, y cuando sea posible también para los no transaccionales. Detalles adicionales a continuación. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 4.4. Manejo de índices Índices es una estructura de base de datos que ayudan a mejorar la velocidad de operaciones de acceso a los datos de una tabla. 4.4.1 Tipos de índices Dentro de las bases de datos podemos crear 2 tipos diferentes de índices, los cuales son: 1 2 Tipo de índice único: Este es definido cuando se crea una columna o grupo de columnas en una tabla cuando se aplica un constraint primary key o unique y es creado automáticamente por el DBMS. Tipo de índice no único: Este es definido por el usuario y por lo común es usado en restricciones foreign key. Algunas recomendaciones de uso de índices son: Los índices proporcionan ganancias de alto rendimiento cuando se aplica a las columnas a menudo usadas en la cláusula WHERE. Crear varios índices con las columnas más utilizadas o proyectadas. Se pueden crear índices agrupando 2 o más columnas. Tener muchos índices disminuirá ejecuciones de comandos como INSERT/DELETE/UPDATE. Eliminar índices duplicados sobre la misma columna. Agregar un índice a aquellas columnas que no tengan un bajo contenido de dominio (pocos distintos valores). No todas las columnas pueden recibir un índice dependiendo del tipo de dato que manejan. No se recomienda en columnas de tipo: text, long, byte. Existen varios tipos de implementación de índices con el que DBMS implementa realmente el manejo del índice: 1. Índice de mapa de bits: es un tipo especial de índice que almacena la mayor parte de sus datos como matrices de bits (bitmaps) y da respuesta a mayoría de las consultas mediante la realización de operaciones lógicas bit a bit en estos mapas de bits. Los índices más utilizados, tales como BTree, son más eficientes si los valores de índice que no se repitan o se repiten un número más reducido de veces. 2. Índice denso: en las bases de datos es un archivo de pares de claves y apuntadores para cada registro en el archivo de datos. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 3. Índice disperso: en bases de datos es un archivo de pares de claves y apuntadores para cada bloque en el archivo de datos. 4. Índice de clave inversa: invierte el valor de la clave antes de entrar en el índice. Por ejemplo, el valor se convierte en 24538 83542 en el índice. Invertir el valor de la clave es particularmente útil para los datos de indexación tales como números de secuencia. 4.4.2 Reorganización de índices Reorganización y reconstrucción de índices Un factor clave para conseguir una E/S de disco mínima para todas las consultas de bases de datos es asegurarse de que se creen y se mantengan buenos índices. Una vez creados los índices, se debe procurar mantenerlos para asegurarse que sigan trabajando en forma óptima. A medida que se agregan, modifican o borran datos se produce fragmentación. Esta fragmentación puede ser buena o mala para el rendimiento del sistema, dependiendo de las necesidades del trabajo de la base de datos. Fragmentación de los índices La fragmentación es consecuencia de los procesos de modificación de los datos (instrucciones INSERT, UPDATE y DELETE) efectuados en la tabla y en los índices definidos en la tabla. Como dichas modificaciones no suelen estar distribuidas de forma equilibrada entre las filas de la tabla y los índices, el llenado de cada página puede variar con el paso del tiempo. Para las consultas que recorren parcial o totalmente los índices de una tabla, este tipo de fragmentación puede producir lecturas de páginas adicionales. Esto impide el recorrido paralelo de los datos. Existen dos tipos de fragmentación: Interna: Fragmentación dentro de páginas individuales de datos e índices con espacios libres que generan la necesidad de más operaciones de E/S y más memoria para su lectura. Este hecho disminuye el rendimiento en ambientes ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS de lectura, pero en algunos casos puede beneficiar las inserciones, que no requieren una división de páginas con tanta frecuencia. Externa: Cuando el orden lógico de las páginas no es correcto, porque las páginas no son contiguas. El acceso a los datos es mucho más lento por la necesidad de búsqueda de los datos. La fragmentación de índices se puede reparar reorganizando un índice o reconstruyéndolo. Para los índices fraccionados que fueron construidos en una estructura partida se puede usar cualquiera de estos métodos o bien en un índice completo o bien en un único fragmento del índice. Detección de fragmentación El primer paso para decidir qué método de desfragmentación se va a utilizar consiste en analizar el índice para determinar el nivel de fragmentación. Si se usa la función del sistema sys.dm_db_index_physical_stats, se puede detectar la fragmentación en un índice, tabla o vista. La siguiente sentencia permite conocer el grado de fragmentación de los indices de la base de datos thubanhomologada. SELECT DISTINCT a.index_id 'ID Indice', sys.TABLES.name 'Tabla', b.name 'Indice', avg_fragmentation_in_percent '% Fragmentación', fragment_count 'Cantidad de fragments', avg_fragment_size_in_pages 'Promedio de fragmentos por página' FROM sys.dm_db_index_physical_stats ( DB_ID(N'thuban-homologada'), OBJECT_ID(N'dbo.*'), ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS NULL, NULL, NULL) AS a JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id, sys.TABLES WHERE sys.TABLES.object_id= b.object_id ORDER BY avg_fragmentation_in_percent DESC La grilla de resultados emitida por la anterior sentencia incluye las siguientes columnas: Columna Id Índice Tabla Índice % Fragmentación Cantidad de fragmentos Promedio de páginas por fragmentos Descripción El número de índice dentro de la tabla. Nombre de la tabla a la que corresponde el índice. Nombre del índice. El porcentaje de fragmentación lógica (páginas del índice fuera de orden). La cantidad de fragmentos (páginas físicas consecutivas) en el índice. Promedio de número de páginas en un fragment del índice. Una vez que se toma conciencia del nivel de fragmentación, se debe utilizar la tabla a continuación para determinar el mejor método para su corrección. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS % Fragmentación > 5% and < = 30% > 30% Sentencia correctiva ALTER INDEX REORGANIZE ALTER INDEX REBUILD WITH (ONLINE = ON)* La reconstrucción del índice puede ejecutarse tanto en línea como fuera de línea. La reorganización de los índices debe ejecutarse siempre en línea. Para adquirir una disponibilidad similar a la de la opción de reorganización, los índices deben ser reconstruidos en línea. Estos valores proveen una estricta guía para determinar el punto en el que se debe cambiar de ALTER INDEX REORGANIZE a ALTER INDEX REBUILD. Los niveles muy bajos de fragmentación (menores que el 5 porciento) no deben ser corregidos por ninguno de estos comandos porque el beneficio de la remoción de una cantidad tan pequeña de fragmentación es casi siempre superado ampliamente por el costo de reorganización o reconstrucción de índices. Reorganización de un índice Para reorganizar uno o más índices se debe usar la sentencia ALTER INDEX con la cláusula REORGANIZE. Por ejemplo: ALTER INDEX PK_LOGS ON THUBAN_LOGS REORGANIZE El proceso de reorganización de indices se realiza siempre en línea y el consumo de recursos es bajo por lo que no mantiene bloqueos por mucho tiempo. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 4.4.3 Reconstrucción de índices Reconstrucción de un índice La reconstrucción de un índice lo descarta y genera uno nuevo. Esto provoca la eliminación de la fragmentación, el reclamo de lugar en el disco a través de la compactación de páginas por la configuración de fill factor y el reordenamiento de filas de índices en páginas continuas (asignación de nuevas páginas). Esto puede mejorar la ejecución del disco a través de la reducción del número de páginas requerido para obtener la información solicitada. Los siguientes métodos pueden utilizarse para reconstruir índices agrupados y no agrupados: ALTER INDEX con la cláusula REBUILD. CREATE INDEX con la cláusula DROP_EXISTING. Por ejemplo: ALTER INDEX PK_LOGS ON THUBAN_LOGS REBUILD Dado que las tablas de índice organizadas se almacenan principalmente en un índice B-tree, puede encontrarse con la fragmentación como consecuencia de cambios incrementales. Sin embargo, puede utilizar la instrucción TA.BLE ... MO.VE ALTER para reconstruir el índice y reducir la fragmentación. La siguiente declaración reconstruye el admin_docindex tabla organizada por índices: ALTER TABL.E admin_docindex MOVE; Puede reconstruir las tablas de índice organizadas en línea usando la palabra clave ONLINE. El segmento de datos de desbordamiento, si está presente, se actualiza cuando se especifica la palabra clave OVERFLOW. Por ejemplo, para reconstruir la ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS tabla de admin_docindex pero no el segmento de datos de desbordamiento, realizar un movimiento en línea de la siguiente manera: ALTER TABLE admin_docindex MOVE ONLINE; Para reconstruir la tabla admin_docindex junto con su segmento de datos de desbordamiento de realizar la operación de movimiento como se muestra en la siguiente declaración. Esta declaración también ilustra mover la tabla y segmento de datos de desbordamiento de nuevos espacios de tabla. ALTER TABLE admin_docindex MOVE TABLESPACE admin_tbs2 OVERFLOW TABL.ESPACE admin_tbs3; En esta última afirmación, se crea una tabla organizada por índices con una columna LOB (CLOB). Más tarde, la mesa se mueve con el índice LOB y segmento de datos se reconstruye y se trasladó a un nuevo espacio de tablas. CREATE admin_iot_lob TABLE (número c1 (6) clave primaria, admin_lob CLOB) ORGANIZATION INDEX L.OB (admin_lob) STORE AS (TABLESPACE admin_tbs2); . . . ALTER TABLE admin_iot_lob MOVER LOB (admin_lob) TIENDA AS (TABLESPACE admin_tbs3); ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS UNIDAD 5. Seguridad RED CONCEPTUAL DE LA UNIDAD Espejeo (mirroring) Replica (replication) Recuperación y respaldo Métodos de respaldo de un DBMS Migración de la base de datos Comandos de recuperación Seguridad Monitoreo Monitoreo y auditoria de las base de datos Auditoria Herramientas de software y hardware para monitoreo y administración automatica ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Competencia General de la Unidad: Crear y recuperar respaldos del SBD Conocer las herramientas y funciones para el manejo de seguridad en un SGBD. Implementar mecanismos de seguridad y disponibilidad de las base de datos. Establecer estrategias para crear métodos de respaldo y recuperación de datos. Actividades de aprendizaje - Realizar un espejeo en un SGBD. Investigar los tópicos que se abordaran en la unidad. Realizar ejercicio de activación de espejeo de datos en un SGBD. Realizar práctica de réplica de datos. Analizar e identificar cuáles son los beneficios de las réplicas de datos. Realizar reporte de las prácticas que se realicen. Utilizar herramientas para el monitoreo y auditoría de las bases de datos. Realizar proyecto integrador. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Seguridad Este tema nos indica la seguridad y el respaldo que se debe de hacer cuando usamos bases de datos. Ya que es de primordial necesidad el uso de dispositivos y herramientas para el respaldo y seguridad de las bases de datos. 5.1. Respaldo y recuperación 5.1.1 Espejeo (mirroring) 5.1.1.1 Beneficios del espejeo de Datos en un DBMS. Las operaciones de backup y restore son actividades crítica y de orden crucial para cualquier organización, pues por motivos varios una base de datos puede llegar a fallar, los sistemas operativos, el hardware, crackers y hasta los mismos empleados pueden dañar la información. Es por eso que es importante definir políticas de backup en una organización o por lomenos calendarizar la realización de copias de seguridad para estar preparado ante cualquier eventualidad. Dependiendo del gestor que se utilice y el tamaño de la base de datos, este puede ser una tarea fácil o relativamente compleja La creación de reflejo de la base de datos es una solución de software usada principalmente para aumentar la disponibilidad de una base de datos. La creación de reflejo se implementa en cada una de las bases de datos y sólo funciona con las que utilizan el modelo de recuperación completa. Los modelos de recuperación simple y de recuperación optimizado para cargas masivas de registros no admiten la creación de reflejo de la base de datos. Por lo tanto, todas las operaciones masivas se registran siempre por completo. La creación de reflejo de una base de datos funciona con cualquier nivel de compatibilidad con bases de datos. La creación de reflejos de la base de datos mantiene dos copias de una sola base de datos que deben residir en diferentes instancias del GBD Generalmente, estas instancias de servidor residen en equipos de diferentes ubicaciones. Una instancia de servidor sirve la base de datos a los clientes (el servidor principal). La otra instancia actúa como un servidor en estado de espera activa o semiactiva (el servidor reflejado), en función de la configuración y del estado de la sesión de creación de reflejo. Cuando una sesión de creación de reflejo de la base de datos está sincronizada, la creación de reflejo de la base de ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS datos proporciona un servidor en espera activa que admite la conmutación por error rápida sin que se produzca ninguna pérdida de datos derivada de las transacciones confirmadas. Cuando la sesión no está sincronizada, el servidor reflejado suele estar disponible como servidor en espera activa (con posible pérdida de datos). Ventajas de la creación de reflejo de la base de datos. La creación de reflejo de la base de datos es una estrategia sencilla que ofrece las siguientes ventajas: Aumenta la protección de los datos. La creación de reflejo de la base de datos proporciona una redundancia completa o casi completa de los datos, en función de si el modo de funcionamiento es el de alta seguridad o el de alto rendimiento. Para obtener más información, vea "Modos de funcionamiento", más adelante en este tema. Un asociado de creación de reflejo de la base de datos que se ejecute en SQL Server 2008 Enterprise o en versiones posteriores intentará resolver automáticamente cierto tipo de errores que impiden la lectura de una página de datos. El socio que no puede leer una página, solicita una copia nueva al otro socio. Si la solicitud se realiza correctamente, la copia sustituirá a la página que no se puede leer, de forma que se resuelve el error en la mayoría de los casos. Incrementa la disponibilidad de una base de datos. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Si se produce un desastre en el modo de alta seguridad con conmutación automática por error, la conmutación por error pone en línea rápidamente la copia en espera de la base de datos, sin pérdida de datos. En los demás modos operativos, el administrador de bases de datos tiene la alternativa del servicio forzado (con una posible pérdida de datos) para la copia en espera de la base de datos. Mejora la disponibilidad de la base de datos de producción durante las actualizaciones. Para minimizar el tiempo de inactividad para una base de datos reflejada, puede actualizar secuencialmente las instancias que participan en una sesión de creación de reflejo de la base de datos. Esto incurrirá en el tiempo de inactividad de sólo una conmutación por error única. Este formulario de actualización se conoce como actualización gradual. Los dos servidores, principal y reflejado, se comunican y colaboran como asociados en una sesión de creación de reflejo de la base de datos. Los dos asociados tienen roles complementarios en la sesión: el rol principal y el rol reflejado. En cada momento, un asociado realiza el rol principal y el otro realiza el rol reflejado. Cada asociado se describe como poseedor de su rol actual. El asociado que posee el rol principal se denomina servidor principal y su copia de la base de datos es la base de datos principal actual. El asociado que posee el rol reflejado se denomina servidor reflejado y su copia de la base de datos es la base de datos reflejada actual. Cuando se implementa la creación de reflejo de la base de datos en un entorno de producción, la base de datos principal es la base de datos de producción. La creación de reflejo de la base de datos implica rehacer cada operación de inserción, actualización y eliminación que se produce desde la base de datos principal a la base de datos reflejada tan pronto como sea posible. Para rehacer estas operaciones, se envía cada secuencia de entradas del registro de transacciones activo al servidor reflejado, que las aplica a la base de datos reflejada, en secuencia, lo más rápido posible. A diferencia de la replicación, que trabaja en el nivel lógico, la creación de reflejo de la base de datos trabaja en el nivel de registro físico. El servidor principal comprime la secuencia de entradas del registro de transacciones antes de enviarla al servidor reflejado. Esta compresión del registro se produce en todas las sesiones de creación de reflejo. Modos de funcionamiento Una sesión de creación de reflejo de la base de datos se ejecuta en modo sincrónico o asincrónico. Con el funcionamiento asincrónico, las transacciones se confirman sin esperar a que el servidor reflejado escriba el registro en el disco, lo que maximiza el rendimiento. Con el funcionamiento sincrónico, una transacción se confirma en ambos asociados, pero a costa de aumentar la latencia de las transacciones. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Existen dos modos de funcionamiento de la creación de reflejo. Uno de ellos, el modo de alta seguridad, admite el funcionamiento sincrónico. En el modo de alta seguridad, cuando se inicia una sesión, el servidor reflejado sincroniza la base de datos reflejada con la base de datos principal lo más rápido posible. Una vez sincronizadas las bases de datos, una transacción se confirma en ambos asociados, pero a costa de aumentar la latencia de las transacciones. El segundo modo de funcionamiento, el modo de alto rendimiento, se ejecuta de manera asincrónica. El servidor reflejado intenta hacer frente a las entradas de registro enviadas por el servidor principal. La base de datos reflejada podría retrasarse ligeramente en relación con la base de datos principal. No obstante, lo habitual es que dicha diferencia sea pequeña. Sin embargo, la diferencia puede ser considerable si el servidor principal soporta una gran carga de trabajo o el sistema del servidor reflejado se encuentra sobrecargado. En el modo de alto rendimiento, en cuanto el servidor principal envía una entrada de registro al servidor reflejado, el servidor principal envía una confirmación al cliente. No espera a una confirmación del servidor reflejado. Esto significa que las transacciones se confirman sin esperar a que el servidor reflejado escriba el registro en el disco. Este funcionamiento asincrónico permite que el servidor principal se ejecute con la mínima latencia de transacciones, pero a riesgo de una pérdida potencial de datos. Todas las sesiones de creación de reflejo de la base de datos sólo admiten un servidor principal y un servidor reflejado. Esta configuración se muestra en la ilustración siguiente. El modo de alta seguridad con conmutación automática por error requiere una tercera instancia de servidor denominada testigo. A diferencia de los dos asociados, el testigo no sirve a la base de datos. El testigo admite la conmutación automática por error al comprobar que el servidor principal se encuentre activo y en funcionamiento. El servidor reflejado inicia la conmutación automática por error sólo si éste y el testigo permanecen mutuamente conectados después de haberse desconectado del servidor principal. En la siguiente ilustración se muestra una configuración que incluye un testigo. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Seguridad de las transacciones y modos de funcionamiento Que el modo operativo sea asincrónico o sincrónico depende de la configuración de seguridad de las transacciones. 5.1.1.2 Activación de espejeo en un DBMS. Asegúrese de que las versiones de MySQL instalado en el maestro y en el esclavo son compatibles , debe usar la versión más reciente de MySQL en maestro y servidor. Por favor no reporte bugs hasta que ha verificado que el problema está presente en la última versión de MySQL. Prepare una cuenta en el maestro que pueda usar el esclavo para conectar. Este cuenta debe tener el privilegio REPLICATIONSLAVE . Si la cuenta se usa sólo para replicación (lo que se recomienda), no necesita dar ningún privilegio adicional. (Para información sobre preparar cuentas de usuarios y privilegios. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Suponga que su dominio es mydomain.com y que quiere crear una cuenta con un nombre de usuario de repl que puedan usar los esclavos para acceder al maestro desde cualquier equipo en su dominio usando una contraseña de slavepass. Para crear la cuenta, use el comando GRANT: mysql> GRANT REPLICATION SLAVE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass'; Si quiere usar los comandos LOAD TABLE FROM MASTER o LOAD DATA FROM MASTER desde el servidor esclavo, necesita dar a esta cuenta privilegios adicionales: De a la cuenta el privilegio global SUPER y RELOAD . Otorgue el privilegio SELECT para todas las tablas que quiere cargar. Cualquier tabla maestra desde la que la cuenta no puede hacer un SELECT se ignoran por LOAD DATA FROM MASTER. Si usa sólo tablas MyISAM , vuelque todas las tablas y bloquee los comandos de escritura ejecutando un comandoFLUSH TABLES WITH READ LOCK : mysql> FLUSH TABLES WITH READ LOCK; Deje el cliente en ejecución desde el que lanza el comando FLUSH TABLES para que pueda leer los efectos del bloqueo. (Si sale del cliente, el bloqueo se libera.) Luego tome una muestra de los datos de su servidor maestro. La forma más fácil de crear una muestra es usar un programa de archivo para crear una copia de seguridad binaria de las bases de datos en su directorio de datos del maestro. Por ejemplo. usetar en Unix, o PowerArchiver, WinRAR, WinZip, o cualquier software similar en Windos. Para usar tar para crear un archivo que incluya todas las bases de datos, cambie la localización en el directorio de datos del maestro, luego ejecute el comando: shell> tar -cvf /tmp/mysql-snapshot.tar . Si quiere que el archivo sólo incluya una base de datos llamada this_db, use este comando: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS shell> tar -cvf /tmp/mysql-snapshot.tar ./this_db Luego copie el archivo en el directorio /tmp del servidor esclavo. En esa máquina, cambie la localización al directorio de datos del esclavo, y desempaquete el fichero usando este comando: shell> tar -xvf /tmp/mysql-snapshot.tar Puede no querer replicar la base de datos mysql si el servidor esclavo tiene un conjunto distinto de cuentas de usuario a la existente en el maestro. En tal caso, debe excluirla del archivo. Tampoco necesita incluir ningún fichero de log en el archivo, o los ficheros master.info o relay-log.info files. Mientras el bloqueo de FLUSH TABLES WITH READ LOCK está en efecto, lee el valor del nombre y el desplazamiento del log binario actual en el maestro: mysql> SHOW MASTER STATUS; +---------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------+----------+--------------+------------------+ | mysql-bin.003 | 73 | test | manual,mysql | +---------------+----------+--------------+------------------+ La columna File muestra el nombre del log, mientras que Position muestra el desplazamiento. En este ejemplo, el valor del log binario es mysql-bin.003 y el desplazamiento es 73. Guarde los valores. Los necesitará más tarde cuando inicialice el servidor. Estos representan las coordenadas de la replicación en que el esclavo debe comenzar a procesar nuevas actualizaciones del maestro. Una vez que tiene los datos y ha guardado el nombre y desplazamiento del log, puede reanudar la actividad de escritura en el maestro: mysql> UNLOCK TABLES; ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Si está usando tablas InnoDB , debería usar la herramienta InnoDB Hot Backup. Realiza una copia consistente sin bloquear el servidor maestro, y guarda el nombre y desplazamiento del log que se corresponden a la copia para usarlo posteriormente en el esclavo. InnoDB Hot Backup es una herramienta no libre (comercial) que no está incluída en la distribución de MySQL estándar. Sin la herramienta Hot Backup , la forma más rápida de hacer una copia binaria de los datos de las tablasInnoDB es parar el maestro y copiar los ficheros de datos InnoDB, ficheros de log, y ficheros de definición de tablas (ficheros .frm). Para guardar los nombres de ficheros actual y desplazamientos, debe ejecutar el siguiente comando antes de parar el servidor: mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS; Luego guarde el nombre del log y el desplazamiento desde la salida de SHOW MASTER STATUS como se mostró antes. Tras guardar el nombre del log y el desplazamiento, pare el servidor sin bloquear las tablas para asegurarse que el servidor para con el conjunto de datos correspondiente al fichero de log correspondiente y desplazamiento: shell>mysqladmin -u rootshutdown Una alternativa que funciona para tablas MyISAMyInnoDB es realizar un volcado SQL del maestro en lugar de una copia binaria como se describe en la discusión precedente. Para ello, puede usar mysqldump --master-data en su maestro y cargar posteriormente el fichero de volcado SQL en el esclavo. Sin embargo, esto es más lento que hacer una copia binaria. Si el maestro se ha ejecutado previamente sin habilitar --log-bin , el nombre del log y las posiciones mostradas por SHOW MASTER STATUS o mysqldump --master-data están vacíos. En ese caso, los valores que necesita usar posteriormente cuando especifica el fichero de log del esclavo y la posición son una cadena vacía ('') y 4. Asegúrese que la sección [mysqld] del fichero my.cnf en el maestro incluye una opción log-bin . Esta sección debe también tener la opción server-id=master_id , donde master_id debe ser un entero positivo de 1 a 2^32 - 1. Porejemplo: [mysqld] ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS log-bin=mysql-bin server-id=1 Si estas opciones no están presentes, añádalas y reinicie el servidor. Pare el servidor que se vaya a usar como esclavo y añada lo siguiente a su fichero my.cnf : [mysqld] server-id=slave_id El valor slave_id , como el valor master_id , debe ser un entero positivo de 1 a 2^32 - 1. Además, es muy importante que el ID del esclavo sea diferente del ID del maestro. Por ejemplo: [mysqld] server-id=2 Si está preparando varios esclavos, cada uno debe tener un valor de server-id único que difiera del maestro y de cada uno de los otros esclavos. Piense en los valores de serveridcomo algo similar a las direcciones IP: estos IDs identifican unívocamente cada instancia de servidor en la comunidad de replicación. Si no especifica un server-id, se usa 1 si no ha definido un master-host, de otro modo se usa 2. Tenga en cuenta que en caso de omisión de server-id, un maestro rechaza conexiones de todos los esclavos, y un esclavo rechaza conectar a un maestro. Por lo tanto, omitir el server-id es bueno sólo para copias de seguridad con un log binario. Si ha hecho una copia de seguridad binara de los datos del maestro, cópielo en el directorio de datos del esclavo antes de arrancar el esclavo. Asegúrese que los privilegios en los ficheros y directorios son correctos. El usuario que ejecuta el servidor MySQL debe ser capaz de leer y escribir los ficheros, como en el maestro. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Si hizo una copia de seguridad usando mysqldump, arranque primero el esclavo (consulte el siguiente paso). Arranque el esclavo. Si ha estado replicando préviamente, arranque el esclavo con la opción -skip-slave-start para que no intente conectar inmediatamente al maestro. También puede arrancar el esclavo con la opción --log-warnings (activada por defecto en MySQL 5.0), para obtener más mensajes en el log de errores acerca de problemas (por ejemplo, problemas de red o conexiones). En MySQL 5.0, las conexiones abortadas no se loguean en el log de errores a no ser que el valor sea mayor que 1. Si hace una copia de seguridad de los datos del maestro usando mysqldump, cargue el fichero de volcado en el esclavo: shell>mysql -u root -p <dump_file.sql Ejecute los siguientes comandos en el esclavo, reemplazando los valores de opciones con los valores relevantes para su sistema: mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position; La siguiente tabla muestra la longitud máxima para las opciones de cadenas de caracteres: MASTER_HOST MASTER_USER MASTER_PASSWORD MASTER_LOG_FILE 60 16 32 255 ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Arranque el flujo esclavo: mysql> START SLAVE; Una vez realizado este procedimiento, el esclavo debe conectar con el maestro y atapar cualquier actualización que haya ocurrido desde que se obtuvieron los datos. Si ha olvidado asignar un valor para server-id en el maestro, los esclavos no son capaces de conectar. Si olvida asignar un valor para server-id en el esclavo, obtiene el siguiente error en el log de errores: Warning: You should set server-id to a non-0 value if master_host is set; we will force server id to 2, but this MySQL server will not act as a slave. También encuentra mensajes de error en el log de errores del esclavo si no es capaz de replicar por ninguna otra razón. Una vez que un esclavo está replicando, puede encontrar en su directorio de datos un fichero llamadomaster.info y otro llamado relay-log.info. El esclavo usa estos dos ficheros para saber hasta que punto ha procesado el log binario del maestro. No borre o edite estos ficheros, a no ser que realmente sepa lo que hace y entienda las implicaciones. Incluso en tal caso, es mejor que use el comando CHANGE MASTER TO. Nota: El contenido de master.info subedita algunas de las opciones especificadas en línea de comandos o en my.cnf Una vez que tiene una copia de los datos, puede usarlo para actualizar otros esclavos siguiendo las porciones del procedimiento descrito. No necesita otra muestra de los datos del maestro; puede usar la misma para todos los esclavos. Nota: para la mayor durabilidad y consistencia posible en una inicialización de replicación usando InnoDB con transacciones debe ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS usar innodb_flush_logs_at_trx_commit=1, sync-binlog=1, y innodb_safe_binlog en su fichero my.cnf del maestro. 5.1.1.3 Creación de espacios de disco con espejo. Discos espejo Espejeado de disco significa que se conectan dos unidades de disco al mismo controlador de disco. Las dos unidades se mantienen idénticas cuando el servidor escribe en una unidad (la primaria), posteriormente se escribe en (la secundaria). Si durante la operación falla, la unidad primaria, en su lugar se utiliza la secundaria. Si la secundaria falla, no importa. En ambos casos los usuarios experimentan una breve pausa mientras el servidor se asegura que la unidad esta muerta, y luego se regresa al servicio normal. Como sucede con todas las cosas buenas, hay una desventaja. Para contar con este nivel de confiabilidad, se necesita un segundo disco duro, lo que duplica el costo del almacenamiento de datos. Pero en lo que concierne a su organización, tal vez valga la pena el costo relativamente pequeño de una unidad de disco, para evitar lo que de otra manera seria un desastre. Una de las desventajas de los discos espejos es la perdida de rendimiento. Dado que un controlador maneja dos unidades primarias para escribir los datos en la unidad secundaria. Esto provoca que las escrituras en disco se tarden el doble. En un servidor con carga ligera esto quizás no sea tan malo desde el punto de vista del usuario, ya que el caché de disco del servidor hace que el acceso a disco perezca extremadamente rápido. Sin embargo, la sobrecarga puede llegar a ser significativa en un sistema con carga pesada. Otra de las desventajas del espejeado es que el controlador de disco duro o los cables de conexión llegan a fallar. Los datos se pueden leer desde la unidad o matriz duplicada sin que se produzcan interrupciones. Es una alternativa costosa para los grandes sistemas, ya que las unidades se deben añadir en pares para aumentar la capacidad de almacenamiento, para los disco espejos. Los discos espejos también llamado "duplicación" (creación de discos en espejo). Se basa en la utilización de discos adicionales sobre los que se realiza una copia en todo momento de los datos que se están modificando. El cual ofrece una excelente disponibilidad de los datos mediante la redundancia total de los mismos. Administración del espacio libre en un disco. Es necesario saber qué bloques están libres. Las opciones son parecidas a las que se pueden usar ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS para administrar espacio en memoria..Mapa de bits. Un bit por bloque. Es eficiente si se puede mantener el mapa entero en memoria. Disco de 1 GB, con bloques de 512 KB requiere un mapa de 256 KB. Usado en los MACS. Lista ligada. En un bloque reservado (fijo) del disco se registran las direcciones de los bloques desocupados. La última dirección apunta no a un bloque libre, sino a otro bloque con más direcciones de bloques libres... En MS-DOS se usa la misma FAT para administrar el espacio libre. Cachés de disco Ya que el disco es tan lento comparado con la memoria (unas 10000 veces) resulta rentable usar un caché para mantener en memoria física parte de la información que hay en el disco, de manera que, si en el futuro se requiere un bloque que ya está en memoria, se ahorra el acceso al disco. Igual que en el caso de memoria virtual, hay que tratar de adivinar qué bloques se van a acceder en el futuro cercano, para mantener esos bloques en el caché. Pero al contrario de lo que ocurre con memoria virtual, no se requiere ningún apoyo especial del hardware para implementar LRU.Ya que todos los accesos a disco pasan por las manos del sistema operativo. Paradójicamente, LRU no es necesariamente la mejor alternativa tratándose de bloques de disco. ¿Qué pasa, por ejemplo, en el caso del acceso secuencial a un archivo? Por otra parte, algunos de los bloques contienen información crítica respecto del sistema de archivos (por ejemplo, un bloque que contiene información del directorio raíz o de un i-node o de los bloques libres). Si este bloque es modificado y puesto al final de la cola LRU, puede pasar un buen tiempo antes de que llegue a ser el menos recientemente usado, y sea escrito en el disco para ser reemplazado. Si el sistema se cae antes que eso, esa información crítica se perderá, y el sistema de archivos quedará en un estado inconsistente. Se puede modificar un poco LRU, considerando dos factores: Â Qué tan probable es que el bloque se necesite de nuevo. Bloques de directorios se suelen usar bastante. El último bloque de un archivo que se está escribiendo, también es probable que se vuelva a necesitar. Â Qué tan esencial es el bloque para la consistencia del sistema de archivos. Básicamente todos los bloques, excepto los de datos, que han sido modificados. Estos deben grabarse en disco lo más rápidamente posible. Planificación de disco Un disco, mirado desde más bajo nivel, no es simplemente una secuencia de bloques. Están compuestos de platos, cada uno de los cuales contiene una serie de pistas o tracks concéntricos. A su vez, las pistas se dividen en sectores. Las pistas exteriores, que son más grandes, pueden contener más sectores que las interiores. (En un CD, en realidad hay una espiral de sectores.) Existe un brazo mecánico con un cabezal lector/escritor para cada plato. El brazo mueve todos los cabezales juntos. Un cilindro se conforma por las pistas que los cabezales pueden leer cuando el brazo está en una posición determinada. Los bloques lógicos (secuenciales) que ve el sistema de archivos deben traducirse a un trío (cilindro, plato, sector). El tiempo requerido para leer un sector depende de: 1. El tiempo de búsqueda (seek time), es decir, el tiempo requerido para mover el brazo al cilindro apropiado. 2. El retardo rotacional, o sea, el tiempo que hay que esperar hasta que el sector requerido pase por debajo del cabezal. 3. El tiempo de transferencia de los datos. El primero es el que predomina, de manera que conviene reducirlo para aumentar la eficiencia ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS del sistema. El sistema de archivo puede ayudar (por ejemplo, con asignación contigua). Obviamente, bloques en el mismo cilindro deben considerarse contiguos. Pero hay otra cosa que se puede hacer, considerando que en un sistema con muchos procesos la cola de solicitudes pendientes de un dispositivo suele no estar vacía: atenderlas en un orden que reduzca los movimientos del brazo. Algoritmos de planificación de disco Fifo. Es simple, pero no estamos haciendo nada por la eficiencia. Es malo si las solicitudes se alternan entre cilindros exteriores e interiores. Por ejemplo, si, mientras se lee el cilindro 11 llegan solicitudes para los cilindros 1, 36, 16, 34, 9, 12, y se atienden en ese orden, el brazo recorrerá 111 cilindros. SSTF (shortest seek-time first). Se trata de atender primero las solicitudes más cercanas a la posición actual del brazo. La atención sería en el orden 11, 12, 9, 16, 1, 34,36, para un total de 61 cilindros de desplazamiento. El problema es que, cuando hay muchas solicitudes, es posible que sólo se atiendan las cercanas al centro. Puede haber inanición para los procesos que solicitan cilindros de los extremos. Algoritmo del ascensor Para evitar inanición, se mantiene la dirección de movimiento del brazo hasta que no queden solicitudes pendientes en esa dirección. Es lo mismo que hacen los ascensores. En el ejemplo, suponiendo que el brazo iba hacia las direcciones altas, las solicitudes se atenderían en el orden 11, 12, 16,34,36,9,1, lo que da un total de 60 cilindros de recorrido del brazo. O sea, en este caso en particular es un poco mejor que SSTF, pero en general es peor. Una propiedad interesante es que para cualquier conjunto de solicitudes, el movimiento del brazo está acotado: 2 veces el ancho del disco. Un pequeño problema es que las solicitudes en los extremos tienen, en promedio, un tiempo de espera mayor. Esto se puede resolver si las solicitudes siempre se atienden en un solo sentido. En el otro sentido, el cabezal se devuelve, pero sin atender solicitudes a su paso. También podríamos pensar en un algoritmo óptimo, pero su complejidad no justifica usarlo. Si la carga es muy poca (la cola nunca tiene más de una solicitud pendiente) todos los algoritmos tienen el mismo rendimiento. Para cargas pesadas, se usa el del ascensor. Discos RAM Gracias a la estructuración en capas, podemos usar el mismo sistema de archivos en cualquier dispositivo de bloques con un driver adecuado, que implemente la interfaz para el software independiente del dispositivo. Por ejemplo, en los primeros computadores personales, que tenían sólo una disquetera como medio de almacenamiento, era habitual crear un disco RAM, es decir reservar un trozo de la memoria para usarlo como un disco virtual, para almacenar archivos. Un driver de disco RAM es extremadamente simple. Dado un tamaño de bloque B, leer o escribir el bloque i es simplemente accesar B bytes a partir de la posición B*i del área reservada para el disco. Bloques dañados Los discos, en cuanto dispositivo mecánico, son propensos a fallas. A veces la falla es transitoria: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS el controlador no puede leer un sector debido a que se interpuso una partícula de polvo entre el cabezal y la superficie del disco. El controlador siempre reintenta varias veces una operación que fracasa por si la falla es transitoria; muchas veces se resuelve, sin que el driver siquiera se entere. En los casos en que el sector está permanentemente dañado, el error se informa al driver, y el driver informa al sistema de archivos, quien registra el bloque como dañado, para no volver a usarlo. ¿Cómo se pueden registrar los bloques dañados? Igual hay bloques críticos: en todo sistema de archivo, debe haber al menos un bloque en una dirección fija. Si ese bloque se daña, el disco entero se hace inusable. Algunos controladores inteligentes reservan de antemano algunas pistas, que no son visibles para el driver. Cuando se daña un sector, el propio controlador lo reemplaza por uno de los reservados. (en forma transparente, si la operación era de escritura, pero no tan transparente si era de lectura). Muchos discos vienen con sectores dañados ya marcados desde la fábrica. Pero ¿dónde se guarda la información de los bloques malos? Así, si el bloque 5 se daña, entonces el controlador usa, digamos, el 999 cada vez que el driver le solicita el 5. Pero ¿que pasaría entonces con los algoritmos de scheduling de disco? Un esquema que a veces se usa para no perjudicarlos, es que el controlador reserva bloques esparcidos en el disco, y cuando se daña un sector, trata de sustituirlo por uno de los de reserva que se encuentre en el mismo cilindro, o por lo menos cerca. Arreglos de discos Se puede decir que los discos son la componente menos confiable de un computador, la componente más complicada de sustituir, y la que frena el mejoramiento de la velocidad de procesamiento con los avances tecnológicos. En efecto, la velocidad de los procesadores se duplica más o menos cada 2 años, y la capacidad de los chips de memoria crece a un ritmo parecido. No obstante, el ancho de banda (velocidad de transferencia) del I/O ha variado muy poco. A este ritmo, en 7 años más los procesadores van a ser 10 veces más rápidos, pero en general las aplicaciones correrán menos de 5 veces más rápido, por las limitaciones de I/O. Una solución posible: en lugar de uno solo disco grande, usar muchos discos chicos y baratos, en paralelo, para mejorar el ancho de banda. Para garantizar paralelismo, se hace disk striping o división en franjas. Cada bloque lógico se compone de varios sectores físicos, cada uno en un disco distinto. Así, cada acceso a un bloque lógico se divide en accesos simultáneos a los discos. En 1991 la situación era la siguiente: _ IBM 3380: 7500 MB, 18 U$/MB, 30000 horas de MTTF (mean time to failure) _ Conner CP3100: 100 MB, 10 U$/MB, 30000 horas de MTTF El IBM 3380 tiene bastante más ancho de banda que un CP3100, pero si juntamos 75 de estos últimos tenemos la misma capacidad total, con menor costo, menor consumo de electricidad, y potencialmente 12 veces más ancho de banda. El gran problema es la confiabilidad: si antes teníamos 30000 horas de funcionamiento sin fallas, ahora tendríamos 400 (30000/75) horas, o sea, sólo dos semanas. O sea, la tolerancia a fallas es crucial, y para obtenerla se usa redundancia, en una configuración conocida como RAID (Redundant Array of Inexpensive Disks), y que se puede implementar en varios niveles. RAID 1: Se usan discos espejos, o sea, la información de cada disco se mantiene siempre duplicada en otro idéntico. O sea, MTTF aumenta notoriamente, pero duplicando el costo. RAID 2: Se reduce la redundancia usando técnicas de detección y corrección de errores (códigos de Hamming). Por ejemplo, si un bloque se reparte entre 10 discos y suponemos que no va a haber más de una falla simultáneamente, entonces no necesitamos duplicar el bloque entero para reconstituirlo en caso de falla, puesto que ante una falla sólo se perderá un 10% de la información. El problema es que si no sabemos qué 10% se perdió, de todas maneras se necesita bastante redundancia (20 a 40%). RAID 3: El punto es que, gracias a que cada controlador usa sumas de chequeo (y suponiendo que además podemos saber cuándo un controlador falla) sí podemos saber qué trozo de la información está errónea. Y sabiendo eso, basta con usar sólo un disco adicional para guardar información de paridad con la cual es posible reconstituir la información original. Hay otros niveles (RAID 4 y 5). Ahora (1996) la situación es: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 1. IBM 3390: un disco de 102 GB, 3.9 MB/s, 22.8 ms de latencia. 2. IBM RAMDAC 2: 64 discos, 180 GB en total, 12.6 MB/s, 4.2 ms de latencia. La ganancia en ancho de banda es menor que la teórica, entre otras cosas porque la tolerancia a fallas impone un overhead Ver figura 44. Por otra parte, con un RAID de 100 discos para datos y otros 10 para paridad, el MTDL (mean time to data loss) es de 90 años, comparado con 3 años de los discos estándares Ejemplos de Creación de espacios de disco con espejo. Necesitaras el programa R-Drive Image 1 Ejecuta el programa R-Drive Image desde la ubicación en la que esté instalado. 2 Haz clic en el botón "Crear imagen", que se localiza en la sección superior de la ventana principal del programa. 3 Selecciona la unidad que quieres configurar como espejo de la lista de unidades disponibles y presiona el botón "Siguiente". 4 Selecciona un destino para el espejo nuevo en la ventaja de navegación y haz clic en el botón "Siguiente". Éste puede colocarse en cualquier medio, como un CD, DVD u otro disco duro, dependiendo del tamaño que elijas para hacerlo. 5 Presiona nuevamente el botón "Siguiente" de la página "Modo de imagen" y deja marcadas las opciones por defecto. Estas opciones son para usuarios avanzados que quieren crear espejos especializados en arreglos RAID o servidores NAS. 6 Si lo deseas, introduce una contraseña para el espejo nuevo y haz clic en el botón "Siguiente". 7 Presiona el botón "Iniciar" para comenzar a crear el espejo del disco duro. Este proceso tomará desde minutos a varias horas dependiendo de la velocidad y cantidad de información del disco duro que se esté configurando. Una ventana de diálogo aparecerá para informarte cuando el proceso haya sido completado exitosamente. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 5.1.2 Replica (replication) Replicación La replicación es el proceso de copiar y mantener actualizados los datos en varios nodos de bases de datos ya sean estos persistentes o no. Éste usa un concepto donde existe un nodo amo o maestro (master) y otros sirvientes o esclavos (slaves). La replicación de discos y particiones es la respuesta a una parte importante de esas dos acciones de mantenimiento. La replicación es el proceso mediante el cual se genera una copia exacta de parte del sistema. Esa parte puede ser desde un archivo hasta una carpeta, una partición, un disco o incluso varios discos. Beneficios de la réplica de Datos en un DBMS Beneficios La replicación se usa mucho en sistema de acceso a datos por varios motivos: Rendimiento: Normalmente y dependiendo del caso, hay mas lectura que escritura en una base de datos, por lo que tener varios nodos solo procesando la lectura puede traer un gran beneficio de rendimiento en una base de datos muy consultada. Prueba de fallas: Un esclavo estando casi sincrónicamente actualizado puede ser útil en caso de que el nodo maestro caiga, este puede reemplazarlo y así no detener el servicio. Fiabilidad: Muchas veces se puede tener una replicación para tener la seguridad de que los datos están siendo copiados a otro nodo, en caso de sufrir un desperfecto en el maestro. Generación de bloqueos: aunque esta es mas precisa, también se puede usar para procesos que necesiten leer datos, generando bloqueos, al hacerlo sobre un esclavo esto no interviene en el funcionamiento de todo el sistema, es muy usado para por ejemplo, hacer copias de seguridad, o extraer grandes cantidades de datos para generar estadísticas. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Replicación en árbol En muchos casos, los esclavos también pueden tener sus propios esclavos, por lo que se puede generar árboles de replicación, bajando la carga al maestro y dando la posibilidad de diseñar mejores modelos contra caídas de servicios. Ventajas e inconvenientes de la replicación de datos en red En el proceso de replicación de datos en red, la réplica se realiza, dentro de la red, entre las matrices de almacenamiento y los servidores. Los flujos E/S se dividen en un dispositivo en línea o en una red de Canal de Fibra (CF). El mecanismo divisor analiza la dirección de destino de la E/S de escritura introducida, y, si forma parte de un volumen de replicación, envía una copia de la E/S al punto destino del proceso de redundancia. Sin embargo, como cualquier otra tecnología, la replicación de datos en red lleva aparejada aspectos tanto positivos como negativos. El sistema de replicación en red aúna los beneficios de la replicación en matrices y de la replicación en hosts. Al no depender de servidores o matrices para realizar la replicación, puede ejecutarse a través de un elevado número de plataformas de servidores y matrices de almacenamiento, lo que hace de esta tecnología la opción ideal para entornos de gran heterogeneidad. Además, la mayor parte de los productos de replicación en red ofrecen funciones de virtualización de sistemas de almacenamiento como complemento o como parte del paquete principal. Las soluciones de replicación en red que se encuentran disponibles en la actualidad consisten en dispositivos en línea o bien en sistemas de mallas de conexión. En el caso de los dispositivos en línea, todas las E/S tienen que pasar por la unidad de replicación. Estos dispositivos finalizan las E/S introducidas y crean nuevas E/S que se envían a los principales puntos de destino del almacenamiento, y, en el caso de las E/S de escritura, también a puntos de destino de almacenamiento replicados. La solución en línea ha sido duramente criticada por los problemas de rendimiento y escalabilidad que presenta. El dispositivo en línea más utilizado es SAN Volume Controller (SVC), desarrollado por IBM Corp. La gran escalabilidad de su arquitectura y los elevados niveles de caché que ofrece no sólo han permitido que SVC supere estas limitaciones ligadas al rendimiento y la escalabilidad, sino que, además, y gracias a la sencillez del enfoque en línea, por contraposición a la mayor complejidad que revisten las soluciones de mallas de conexión, han logrado que se ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS convierta en uno de los productos estrella del mercado de la replicación en red y de la virtualización. En los productos de replicación por red, la escisión y el envío de las E/S se realiza en el seno de una red de Canal de Fibra. Gracias a las ventajas que le confieren el sistema de conmutación de Canal de Fibra y su mecanismo de separación de los datos y la ruta de control, se configura como la opción de mayores prestaciones y escalabilidad. La mayor parte de los productos de replicación por red se ejecutan a través de conmutadores inteligentes diseñados por Brocade Communications Systems Inc. y Cisco Systems Inc. Aunque tanto Brocade como Cisco ofrecen gestores de traspaso de datos (DMM, Data Mobility Manager) para la replicación de los centros de datos locales, otros proveedores como EMC Corp. y FalconStor Software Inc. proporcionan productos de replicación por red más avanzados, que funcionan a través de los conmutadores inteligentes de Brocade y Cisco. El RecoverPoint de EMC es un buen ejemplo de ello. Este producto ofrece una protección de datos continua (PDC) y asíncrona con integración de aplicaciones que se sitúa al mismo nivel que los productos de PDC a través de hosts equiparables. Sin embargo, y a pesar de sus evidentes virtudes, las soluciones de replicación por red han conocido una adopción muy escasa. El sistema Storage Virtualization Manager (SVM) desarrollado por LSI Corp.'s StoreAge franquea la barrera que separa a los dispositivos en línea de los productos de conexión en red, cuyo funcionamiento depende de costosos conmutadores inteligentes. Cuando se combinan el SVM de IBM y el Data Path Module (módulo de ruta de datos) de LSI, ambos se conectan a los conmutadores de Canal de Fibra existentes para ejecutar envíos a través del conmutador. Esta combinación suprime la necesidad de conmutadores inteligentes, a la par que aúna la sencillez de SVC y las ventajas en términos de rendimiento y escalabilidad de la arquitectura de división de rutas. Hewelett-PackaDR (HP) Co. se está introduciendo en este mercado, y actualmente comercializa el producto de LSI bajo la denominación SAN Virtualization Services Platform, (SVSP) de su línea StorageWorks, para completar su oferta de sistemas de replicación en hosts y matrices con una solución de replicación en red y virtualización. 5.1.3 Métodos de respaldo de un DBMS ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 5.1.4 Comandos para recuperación 5.1.4 Comandos para recuperación. 5.1.4.1 Ventajas y Desventajas de cada método Servicios de Respaldo y Recuperación para Bases de Datos (BD) Vamos a comenzar esta lectura con algunas preguntas que a medida que avance la lectura, serán respondidas: 1. ¿Por qué debemos respaldar una BD? ¿Es posible recuperar información? ¿Cuál es la importancia de este tipo de servicios? 2. ¿Como funcionan? 3. ¿Son soportadas por los principales Sistemas de BD? ¿Cuál es el caso de PostgreSQL? ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Es de suma importancia tener algún sistema de respaldo/recuperación de datos, pues esto permite: 1. Tener sistemas con cierto nivel de seguridad y estabilidad ante posibles fallos. 2. Poder volver a un punto seguro en el estado de la BD, debido a cambios peligrosos. Su funcionamiento está basado en estados. En cada momento la BD se encuentra en un estado definido. Cuando realizamos operaciones de modificación, es decir: 1. INSERT 2. UPDATE 3. DELETE Cambiamos su estado, llevándolo a uno nuevo. Nota No se considera SELECT, pues no provoca cambios. Recordemos que es una operación de selección. Al momento de realizar un respaldo, se guarda el estado en que se encuentra la BD al momento de realizar dicha operación de respaldo. Al momento de realizar la operación de recuperación, puede ser de varias formas, ya sea a través de las operaciones (en orden) que han dejado la BD en el estado actual u otras formas. La gran mayoría de Motores de BD cuentan con funciones de este tipo SQL Dump¶ ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS pg_dump¶ Esta función genera un archivo de texto con comandos SQL que, cuando son reintroducidos (bajo cierto contexto ) al servidor, se deja a la BD en el mismo estado en el que se encontraba al momento de ejecutar este comando. Nota Esto ocurre siempre y cuando la BD esté vacía, es decir, en el mismo estado inicial. pg_dump guarda los comandos introducidos hasta el punto de control. El ejemplo 1 permitirá aclarar dudas. su sintaxis es: pg_dump dbname > archivo_salida y se usa desde la linea de comandos. Para realizar la restauración se utiliza: psql dbname < archivo_entrada Donde archivo_entrada corresponde al archivo_salida de la instrucción pg_dump. Ejemplo 1¶ Supongamos que tenemos una BD llamada lecture31 y dentro de ella una única tabla llamada Numbers con atributosNumber Y Name, con datos: 1 One 2 Two 3 Three Es decir: CREATE DATABASE lecture31; ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS conectándose: \c lecture31 CREATE TABLE Numbers(Number INTEGER, Name VARCHAR(20)); INSERT INTO Numbers VALUES (1, 'One' ); INSERT INTO Numbers VALUES (2, 'Two' ); INSERT INTO Numbers VALUES (3, 'Three' ); A través de un select: number | name -------+------1 | One 2 | Two 3 | Three Para realizar el respaldo, se utiliza pg_dump: pg_dump lecture31 > resp.sql Un posible problema a la hora de ejecutar pg_dump es: pg_dump lecture31 > resp.sql (bash: permission denied) Para evitar esto, es necesario considerar que el usuario de la BD debe tener permisos de escritura en la carpeta donde se alojará el archivo. Nota Para los usuarios locales, basta con hacer “cd” en la linea de comandos (como usuario postgres), para acceder a la carpeta de postgres. Si desea realizar pruebas desde el servidor dedicado, puede crear BDs desde su sesión y alojar los archivos de respaldo en su capeta home. Nota Es posible cambiar los permisos de lectura y escritura de las carpetas, dar accesos a usuarios que no son dueños de las BD. No se profundiza esto, pues escapa a los alcances de este curso. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Supongamos que se comete un error, se borra información de seguridad nacional, digamos la tupla “1, One”. Utilizando el archivo de respaldo es posible volver al estado anterior: psql lecture31 < resp.sql Nota Nótese que dentro de la salida del comando aparece: ERROR: relation “numbers” already exists Revisando la tabla a través de: \c lecture31 SELECT * FROM Numbers; La salida es: number | name -------+------2 | Two 3 | Three 1 | One 2 | Two 3 | Three Lo cual, claramente, no corresponde a la información inicial. Antes de restaurar, es necesario recrear el contexto que tenía la BD. Específicamente usuarios que poseían ciertos objetos o permisos. Si esto no calza con la BD, original, es posible que la restauración no se realice correctamente. En este caso el contexto inicial corresponde a una BD vacía, dentro de la cual se crea una tabla y se agregan algunos datos Se invita al lector a borrar la tabla y realizar la restauración. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Es necesario aclarar que se necesita una BD existente para hacer la restauración. Si ésta no existe, por ejemplo utilizar lecture32 en lugar de 31, el siguiente error aparecerá: psql: FATAL: database "lecture32" does not exist Pero ¿Qué ocurre si utilizamos el atributo number como PK?, es decir modificar sólo la linea (y seguir el resto de los pasos de la misma forma): CREATE TABLE Numbers(Number INTEGER, Name VARCHAR(20), PRIMARY KEY (Number)); Al momento de borrar la tupla, digamos (3, ‘Three’), e intentar restaurar, dentro de la salida del comando aparece: ERROR: relation "numbers" already exists ERROR: duplicate key violates unique constraint "numbers_pkey" CONTEXT: COPY numbers, line 1: "1 One" ERROR: multiple primary keys for table "numbers" are not allowed ¿Qué ocurre si se elimina la primera tupla antes de restaurar? Ejemplo 2¶ Este ejemplo es muy similar al anterior, sólo que, en lugar de trabajar con atributos INTEGER, se trabajará con atributo serial es decir: \c lecture31 DROP TABLE Numbers; CREATE TABLE Numbers2(Number SERIAL, Name VARCHAR(20)); INSERT INTO Numbers2 (name) VALUES ('One' ); INSERT INTO Numbers2 (name) VALUES ('Two' ); INSERT INTO Numbers2 (name) VALUES ('Three' ); Es decir que si se hace un select, se podrá ver: number | name -------+------1 | One ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 2 3 | Two | Three Para poder realizar el respaldo, utilizando pg_dump: pg_dump lecture31 > resp2.sql Digamos que se agrega la tupla (4, ‘Four’) y borra la tupla (3, ‘Three’). Después de realizar el respaldo: number | name -------+------1 | One 2 | Two 4 | Four Posteriormente se realiza la restauración: psql lecture31 < resp.sql Nota Nótese que en la salida, es posible ver: setval 3 Revisando la tabla a través de: \c lecture31 SELECT * FROM Numbers2; La salida es: number | name -------+------1 | One 2 | Two 4 | Four 1 | One 2 | Two ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 3 | Three Lo cual es un problema, pues se trabaja con valores seriales. De hecho si en este estado se agrega la tupla (4, Four) y se revisan los contenidos de la tabla, la salida es: number | name -------+------1 | One 2 | Two 4 | Four 1 | One 2 | Two 3 | Three 4 | Four Esto ocurre debido a que el contador serial vuelve a 3. Ejercicio propuesto¶ Se deja en manos del lector ver que ocurre en caso de trabajar con atributo serial PK, es decir: CREATE TABLE Numbers2(Number SERIAL, Name VARCHAR(20), PRIMARY KEY (number)); y luego seguir los mismos pasos, es decir agregar las tuplas (1, ‘One’), (2, ‘Two’) y (3, ‘Three’). Luego realizar un respaldo, acceder a la BD, eliminar la última tupla, agregar (4, ‘Four’), realizar la restauración, intentar agregar más tuplas (conectándose a la BD primero) y los que desee hacer el lector. A modo de pista, si al agregar una tupla, aparece: ERROR: duplicate key value violates unique constraint "numbers2_pkey" Siga intentando, verá que es posible agregar más tuplas. Fíjese en el valor de la llave primaria. ¿Cuántas veces tuvo que intentar? ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS ¿Qué ocurre si en lugar de eliminar la última tupla, se elimina la primera? pg_dumpall¶ Un pequeño inconveniente con pg_dump es que sólo puede hacer respaldos de una BD a la vez. Además no respalda información acerca de roles de usuario e información por el estilo Para realizar un respaldo de la BD y el cluster de datos, existe el comando pg_dumpall. su sintaxis es: pg_dumpall > archivo_salida y para realizar la restauración (utilizar el comando unix) psql -f archivo_entrada postgres Que trabaja emitiendo las consultas y comandos para recrear roles, tablespaces y Bases de Datos vacíos. Posteriormente se invoca pg_dump por cada BD para corroborar consistencia interna. Advertencia Es posible que el servidor dedicado no le permita restaurar, si se utiliza con el usuario postgres. Por favor, utilice este comando sólo de manera local. Pruebe utilizando su propio usuario. Respaldo a nivel de archivos¶ Otra forma de realizar respaldos es a través del manejo directo de archivos, en lugar de las sentencias utilizadas. No obstante, existen 2 restricciones que hacen que este método sea menos práctico que utilizar pg_dump: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 1. El servidor debe ser apagado para poder obtener un respaldo utilizable. 2. Cada vez que se realice un respaldo, el servidor debe estar apagado, para que los cambios se guarden en su totalidad. Advertencia La mayor parte de las veces, se necesita acceso root, para poder realizar este tipo de operación, pues es necesario configurar archivos de configuración de postgres. Es de suma importancia que se realicen de forma correcta, pues ante algún fallo es posible destruir la base de datos de forma completa. Por lo tanto, no se abordará de forma extensa este apartado. No obstante es posible obtener información en internet. Rsync¶ Rsync corresponde a un programa que sincroniza dos directorios a través de distintos sistemas de archivos, incluso si están en distinto computadores, físicamente hablando. A través del uso de SSH o Secure SHell por sus siglas en inglés, se pueden realizar transferencias seguras y basadas en llaves de autenticación. La principal ventaja de utilizar rsync a diferencia de otros comandos similares, como scp, es que si el archivo que se encuentra en la fuente, es el mismo que, el que se encuentra en el objetivo, no hay transmisión de datos; si el archivo que se encuentra en el objetivo difiere del que se encuentra en la fuente, sólo aquellas partes que difieren son transmitidas, en lugar de transmitir todo, por lo que el downtime de la BD, es decir, el tiempo que debe permanecer apagada, es mucho menor. 5.1.4.2 Aplicación de cada método ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Recuperación Física La utilización de una copia de backup de ficheros de datos siempre necesita de una recuperación física. También es así cuando un fichero de datos se pone offline sin un checkpoint. Oracle detecta que se necesita una recuperación física cuando el contador de checkpoints de la cabecera del fichero de datos no coincide con el correspondiente contador de checkpoints del fichero de control. Entonces se hace necesario el comando recover. La recuperación comienza en el SCN menor de los ficheros de datos en recuperación, aplicando los registros de redo log a partir de él, y parando en el SCN de final mayor de todos los ficheros de datos. Existen tres opciones para realizar una recuperacion física. La primera es una recuperación de BD donde se restaura la BD entera. La segunda es una recuperación de tablespace donde, mientras una parte de la BD está abierta, se puede recuperar un tablespace determinado. Esto significa que serán recuperados todos los ficheros de datos asociados al tablespace. El tercer tipo es la recuperación de un fichero de datos específico mientras el resto de la BD está abierta. Requisitos para Utilizar Recuperación Física La primera condición que se ha de poner para poder recuperar físicamente una BD es que ésta se esté utilizando en modo ARCHIVELOG. De otro modo, una recuperación completa puede que no sea posible. Si trabajamos con la BD en modo NOARCHIVELOG, y se hace una copia semanal de los ficheros de la BD, se debería estar preparado para perder, en el peor de los casos, el trabajo de la última semana si sucede un fallo. Ya que los ficheros de redo log contendrían un agujero y no se podia avanzar la BD hasta el intante anterior al fallo. En este caso el único medio para reconstruir la BD es hacerlo desde un export completo, recreando el esquema de la BD e importando todos los datos. Recuperación de la BD La BD debe estar montada pero no abierta. El comando de recuperación es el siguiente: RECOVER [AUTOMATIC] [FROM 'localizacion'] [BD] [UNTIL CANCEL] [UNTIL TIME fecha] [UNTIL CHANGE entero] [USING BACKUP CONTROLFILE] Las opciones entre corchetes son opcionales: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS AUTOMATIC hace que la recuperación se haga automáticamente sin preguntar al DBA por el nombre de los ficheros redo log. También se puede utilizar para este cometido el comando set autorecovery on/off. Los ficheros redo log deben estar en la localización fijada en LOG_ARCHIVE_DEST y el formato del nombre de los ficheros debe ser el fijado en LOG_ARCHIVE_FORMAT. FROM se utiliza para determinar el lugar donde están los ficheros redo log, si es distinto del fijado en LOG_ARCHIVE_DEST. UNTIL sirve para indicar que se desea realizar una recuperación incompleta, lo que implica perder datos. Solo se dará cuando se han perdido redo log archivados o el fichero de control. Cuando se ha realizado una recuperación incompleta la BD debe ser abierta con el comando alter database open resetlogs, lo que produce que los redo log no aplicados no se apliquen nunca y se inicialice la secuencia de redo log en el fichero de control. Existen tres opciones para parar la recuperación: o UNTIL CANCEL permite recuperar un redo log cada vez, parando cuando se teclea CANCEL. o UNTIL TIME permite recuperar hasta un instante dado dentro de un fichero de redo log o UNTIL CHANGE permite recuperar hasta un SCN dado. o USING BACKUP CONTROLFILE utiliza una copia de seguridad del fichero de control para gobernar la recuperación. Recuperación de un tablespace La BD debe estar abierta, pero con el tablespace a recuperar offline. El comando de recuperación es el siguiente: RECOVER [AUTOMATIC] [FROM 'localizacion'] TABLESPACE nombre_tablespace [, nombre_tablespace] Recuperación de un Fichero de Datos La BD debe estar abierta o cerrada, dependiendo del fichero a recuperar. Si el fichero a recuperar es de un tablespace de usuario la BD puede estar abierta, pero con el fichero a recuperar offline. Si el fichero es del tablespace SYSTEM la BD debe estar cerrada, ya que no puede estar abierta con los ficheros del SYSTEM offline. El comando de recuperación es el siguiente: RECOVER [AUTOMATIC] [FROM 'localizacion'] DATAFILE nombre_fichero [, nombre_fichero] Creando un Fichero de Control ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Si el fichero de control ha resultado dañado y se ha perdido se puede utilizar una copia de seguridad del mismo o crear uno nuevo. El comando de creación de un nuevo fichero de control es CREATE CONTROLFILE. Este comando se puede ejecutar sólo con la BD en estado nomount. La ejecución del comando produce un nuevo fichero de control y el montaje automático de la BD. Un comando interesante que ayuda a mantener los ficheros de control a salvo es el siguiente: SVRMGR> alter database backup controlfile to trace; que produce un script que puede ser utilizado para generar un nuevo fichero de control y recuperar la BD, en caso necesario. El fichero de traza generado es el siguiente: Dump file /opt/app/oracle/admin/demo/udump/demo_ora_515.trc Oracle7 Server Release 7.3.2.3.0 - Production Release With the distributed, replication and Spatial Data options PL/SQL Release 2.3.2.3.0 - Production ORACLE_HOME = /opt/app/oracle/product/7.3.2 System name: SunOS Node name: cartan Release: 5.5 Version: Generic Machine: sun4m Instance name: demo Redo thread mounted by this instance: 1 Oracle process number: 7 Unix process pid: 515, image: oracledemo Fri May 15 11:41:19 1998 Fri May 15 11:41:19 1998 *** SESSION ID:(6.2035) 1998.05.15.11.41.19.000 # The following commands will create a new control file and use it # to open the database. # No data other than log history will be lost. Additional logs may # be required for media recovery of offline data files. Use this # only if the current version of all online logs are available. STARTUP NOMOUNT ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS CREATE CONTROLFILE REUSE DATABASE "DEMO" NORESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 2 MAXDATAFILES 30 MAXINSTANCES 1 MAXLOGHISTORY 100 LOGFILE GROUP 1 '/export/home/oradata/demo/redodemo01.log' SIZE 2M, GROUP 2 '/export/home/oradata/demo/redodemo02.log' SIZE 2M, GROUP 3 '/export/home/oradata/demo/redodemo03.log' SIZE 2M DATAFILE '/export/home/oradata/demo/system01.dbf', '/export/home/oradata/demo/rbs01.dbf', '/export/home/oradata/demo/rbs02.dbf', '/export/home/oradata/demo/rbs03.dbf', '/export/home/oradata/demo/temp01.dbf', '/export/home/oradata/demo/tools01.dbf', '/export/home/oradata/demo/users01.dbf' ; # Recovery is required if any of the datafiles are restored backups, # or if the last shutdown was not normal or immediate. RECOVER DATABASE # Database can now be opened normally. ALTER DATABASE OPEN; 3.4 Recuperación Lógica Oracle dispone de la herramienta import para restaurar los datos de una BD a partir de los ficheros resultados de un export. Import lee los datos de los ficheros de exportación y ejecuta las sentencias que almacenan creando las tablas y llenándolas de datos. Parámetros del Import Parámetro Defecto Descripción USERID indefinido el username/password del usuario que efectua el import. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS BUFFER dependiente del SO El tamaño en bytes del buffer utilizado. FILE expdat.dmp el nombre del fichero de exportación a importar. SHOW No indica si se muestran los contenidos del fichero de exportación, sin importar ningún dato. IGNORE Yes indica si ignorar los errores producidos al importar un objeto que ya existe en la BD. GRANTS Yes indica si se importan también los derechos. INDEXES Yes indica si se importan también los índices. ROWS Yes indica si se importan también las filas de las tablas. FULL No indica si se importan el fichero entero. FROMUSER Indefinido una lista de los usuarios cuyos objetos se han exportado. TOUSER Indefinido una lista de los usuarios a cuyo nombre se importan los objetos. TABLES indefinido la lista de tablas a importar. RECORDLENGTH dependiente del SO la longitud en bytes del registro del fichero. INCTYPE indefinido el tipo de import incremental (SYSTEM o RESTORE). COMMIT No indica si se efectua un commit después de importar cada fila. Por defecto, import efectua un commit después de cargar cada tabla. PARFILE indefinido el fichero de parámetros. Para importar un export incremental se puede efectuar la siguiente secuencia de pasos: 1. Utilizar la copia más reciente del import para restaurar las definiciones del sistema: 2. $ imp userid=sys/passwd inctype=system full=Y file=export_filename 3. Poner los segmentos de rollback online. 4. Importar el fichero de exportación completa más reciente: 5. $ imp userid=sys/passwd inctype=restore full=Y file=filename 6. Importar los ficheros de exportación en modo acumulación desde la exportación completa más reciente, en orden cronológico: ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 7. $ imp userid=sys/passwd inctype=restore full=Y file=filename 8. Importar los ficheros de exportación en modo incremental desde la exportación completa o acumulativa más reciente, en orden cronológico: 9. $ imp userid=sys/passwd inctype=restore full=Y file=filename 5.2. Migración de la base de datos Migración de datos Hablamos de migración de datos cuando nos referimos al traspaso de información entre bases de datos. Si tenemos una aplicación sobre una base de datos como por ejemplo Access y posteriormente "crecemos" de manera que nos hace falta un sistema gestor de bases de datos potente, lo más seguro es que nos decantemos por Oracle, DB2, Informix, SQLServer o similares. En este caso, los datos, que estarán en formato "access" deberán pasar a formato "sqlserver" o formato para "oracle". La migración de los datos consiste en convertir los datos desde un sistema de base de datos a otro. Esta migración conlleva la creación de tablas o modificación de las existentes, cambios en algunos tipos de datos que existen en una base de datos pero no en otras, etc. Especialmente delicados son los campos fecha, los numéricos (enteros, reales, etc), los de tipo "memo" o campos de extensión superior a 256 caracteres, campos para imágenes, etc, ya que cada SGBD los trata o los "espera" de manera diferente. Actualmente la mayoría de SGBD incluye herramientas de ayuda a la migración más o menos "fiables". No obstante, ni que decir tiene que el proceso de migración de datos es lo suficientemente delicado como para realizarlo en un entorno de pruebas, contemplando toda la casuística posible en cuanto a tipos de datos a manejar, tablas involucradas y sus relaciones, etc. Sólo en el momento en el que estemos seguros de que la migración se ha realizado con éxito, sin problemas de interpretación de datos ni pérdida de ellos, podemos pasar a un entorno de producción. Teniendo en cuenta que una migración mal realizada podría dar por terminada una estructura de información completa. Recomendaciones para migrar de Access a MySQL Si nuestra base de datos anterior estaba construida en Access lo tenemos bastante fácil, gracias a que MySQL dispone de un driver ODBC para sistemas Windows, que nos permite conectar Access con el propio MySQL y pasar información fácilmente. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Este tema está relatado en el artículo Exportar datos de MySQL a Access, aunque hay que indicar que si deseamos hacer una exportación desde Access en local a MySQL en remoto puede haber problemas porque no todos los alojadores permiten las conexiones en remoto con la base de datos. Si no tenemos disponible una conexión en remoto con nuestro servidor de bases de datos vamos a tener que cambiar la estrategia un poco. La idea en este último caso es instalar MySQL en local y realizar la migración desde Access en local a MySQL en local y luego podríamos hacer un backup de la base de datos local y subirla a remoto, tal y como se ha relatado antes. Recomendaciones para migrar desde SQL Server a MySQL La verdad es que no he tenido este caso nunca, pero hay que decir que Access también nos puede ayudar en este caso. Access permite seleccionar una base de datos SQL Server y trabajar desde la propia interfaz de Access. La idea es que Access también permite trabajar con MySQL y posiblemente haciendo un puente entre estos dos sistemas gestores podemos exportar datos de SQL Server a MySQL. Lo que es seguro que utilizando el propio Access de puente podríamos realizar el trabajo. Primero exportando de SQL Server a Acess y luego desde Access a MySQL. Otras bases de datos u otras técnicas Si la base de datos origen dispone de un driver ODBC no habrá (en teoría) problema para conectarla con Access, de manera similar a como se conecta con MySQL. Entonces podríamos utilizar Access para exportar los datos, porque desde allí se podrían acceder a los dos sistemas gestores de bases de datos. Si no tenemos Access, o la base de datos original no tiene driver ODBC, o bien no nos funciona correctamente el proceso y no sabemos cómo arreglarlo, otra posibilidad es exportar los datos a ficheros de texto, separados por comas o algo parecido. Muchas bases de datos tienen herramientas para exportar los datos de las tablas a ficheros de texto, los cuales se pueden luego introducir en nuestro sistema gestor destino (MySQL) con la ayuda de alguna herramienta como PhpMyAdmin. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Para ello, en la página de propiedades de la tabla encontraremos una opción para hacer el backup de la tabla y para introducir ficheros de texto dentro de una tabla (Insert textfiles into table en inglés). 5.3. Monitoreo y auditoria de la base de datos 5.3.1 Monitoreo Monitoreo de espacio libre en discos Como DBA una de las responsabilidades es supervisar el espacio en disco. Siempre hay que asegurarse de que se tiene suficiente para sus bases de datos, copias de seguridad de bases de datos y cualquier otro tipo de archivos que va a almacenar en el servidor. Si no controla su espacio en disco y se asegura de que tienes espacio suficiente, con el tiempo uno de sus procesos críticos de bases de datos o componentes va a fracasar porque no se puede asignar el espacio en disco que necesita. Dentro de SQL Server hay un procedimiento no documentado que nos puede ayudar a cumplir este cometido. El procedimiento es XP_FIXEDDRIVES, no lleva parámetros ni nada y nos regresa todos los discos a los que tiene acceso SQL Server y su espacio disponible en Megabytes. Es muy sencillo utilizarlo, solo basta con ejecutar el comando xp_fixeddrives de vez en cuando desde el Analizador de consultas para revisar la cantidad de espacio libre, aunque este método consume demasiado tiempo para los administradores de bases de datos. Un método mejor sería automatizar la ejecución de este comando periódicamente para revisar la cantidad de espacio libre. Algunas tareas de DBA donde la información de espacio libre puede ser útil: - La primera que se alerte al DBA cuando el espacio libre cae por debajo de un umbral específico en cualquier unidad de SQL Server. - La segunda sería la de realizar un seguimiento de la historia el espacio libre para la gestión de la capacidad de espacio en disco. La forma de construir un proceso para alertar a la DEA, cuando cualquiera de las unidades de disco de SQL Server cae por debajo de un umbral predeterminado. Para obtener la información xp_fixeddrives en una tabla temporal que se utiliza el siguiente T-SQL. create table #FreeSpace( ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Drive char(1), MB_Free int) insert into #FreeSpace exec xp_fixeddrives A continuación, por cada unidad se recupera la información de espacio libre a partir de esta tabla temporal y se compara con un umbral que se ha fijado para cada unidad. Si la cantidad de espacio libre cae por debajo del valor umbral determinado para la unidad, enviar alerta al DBA mediante xp_sendmail. Aquí está una muestra de un código que hace precisamente eso. declare @MB_Free int create table #FreeSpace( Drive char(1), MB_Free int) insert into #FreeSpace exec xp_fixeddrives select @MB_Free = MB_Free from #FreeSpace where Drive = 'C' -- Free Space on C drive Less than Threshold if @MB_Free < 1024 exec master.dbo.xp_sendmail @recipients ='[email protected]', @subject ='SERVER X - Fresh Space Issue on C Drive', @message = 'Free space on C Drive has dropped below 1 gig' Esta alerta de espacio libre bajo permite tiempo al DBA para resolver el problema de espacio libre antes de que sea crítico, y provoque procesos fallidos. Tenga en cuenta que el código anterior tiene un umbral diferente de espacio libre para cada unidad. Otro uso de xp_fixeddrives podría ser la de controlar el uso de espacio en disco a través del tiempo. Para recopilar la información de espacio libre a intervalos regulares, por ejemplo, semanal y lo almacena en una tabla de base de datos. Mediante la recopilación de información de espacio libre en el tiempo y almacenarlo en una tabla del servidor SQL permanente que será capaz de producir un cuadro de tendencias que muestra el espacio en disco extra de consumo. Al comparar la cantidad de espacio libre entre dos puntos sobre el gráfico que será capaz de determinar el espacio de disco consumido entre esos intervalos. El monitoreo del espacio disponible en disco y las tasas de crecimiento son un par de cosas que un DBA debe realizar. Sin vigilancia se corre el riesgo de quedarse sin espacio y causando graves problemas para su aplicación. Monitoreando el log de transacciones Monitorear el log regularmente puede ayudarnos a resolver varios problemas dentro de nuestros sistemas, ya que este puede indicarnos si existen demasiadas transacciones realizadas por una sola aplicación, que podría resultar en un mal diseño o simplemente la necesidad de planear mejor los recursos de log en nuestro servidor de base de datos. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Es muy importante tener en cuenta que si el log de transacciones llegara a saturarse, SQL Server no podrá realizar más cambios dentro de nuestra base de datos. La manera de monitorear un log de transacciones, puede llevarse a cabo de 2 maneras, una de ellas es mediante un comando desde el analizador de consultas y la otra utilizando los contadores de SQL Server desde el sistema operativo. Desde el analizador de consultas ejecutar el comando DBCC SQLPERF(LOGSPACE). Utilizando los contadores de SQL Server que se describen a continuación. Contador Descripción Log Bytes Flushed/sec Número total de bytes del log de transacciones vaciados Log Flushes/sec Log Flush Waits/sec Número de vaciados del log de transacciones Número de confirmaciones (commit) en espera al momento de vaciar el log de transacciones. Percent Log Used Log File(s) Size(KB) Porcentaje del log de transacciones usado. Tamaño total del log de transacciones de la base de datos Log Cache Hit Ratio Lecturas realizadas a través de la caché del administrador de registro. Situaciones en las que se produce mucha actividad en el log de transacciones Algunas de las situaciones por la que podría presentarse mucha actividades en el log de transacciones y saturarlo son: Cargar información en una tabla que tiene indices. SQL Server almacena en el log todos los inserts y cambios en los índices. Cuando se carga en tablas que no tienen indices SQL Server solo reserva extents para el log. Transacciones que realizan muchas modificaciones (INSERT, UPDATE,DELETE) a una tabla en una sola transacción. Esto generalmente occurre cuando la sentencia WHERE es muy general, causando que muchos registros sean modificados. Expandiendo el log de transacciones ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Expandir un log de transacciones debe de realizarse solamente si en verdad es requerido por la aplicación y no solo por el echo de asignar más espacio, ya que para ello existen los respaldos del log de transacciones en donde se vacia el espacio ocupado del log. Para asignar espacio de log a una base de datos pues realizarse mediante el SQL Server Enterprise Manager o la sentencia ALTER DATABASE, en esta caso hablaremos solamente de la sentencia ALTER DATABASE Ejemplo: Agregar dos archivos de log a una base de datos El ejemplo siguiente agrega dos archivos de log de 5 MB a una base de datos. USE master GO ALTER DATABASE Test1 ADD LOG FILE ( NAME = test1log2, FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test2log.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB), ( NAME = test1log3, FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test3log.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) GO 5.3.1.4 Monitoreo de Memoria compartida PGA DE ORACLE (ÁREA GLOBAL DE PROGRAMA) Un PGA es una región de memoria que contiene datos e información de control para un proceso de servidor. Es la memoria no compartida creada por la base de datos Oracle cuando un proceso de servidor se ha iniciado. El acceso a la PGA es exclusivo para el proceso del servidor. Hay un PGA para cada proceso de servidor. Procesos en segundo ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS plano también se asignan sus propios PGA. La memoria total utilizada por todos los PGAs individuales se conoce como el ejemplo total de memoria PGA, y la recogida de PGAs individuales se refiere como el ejemplo total de la PGA, o simplemente instancia de la PGA. Puede utilizar los parámetros de inicialización de base de datos para definir el tamaño de la instancia de la PGA, no PGA individuales. El PGA puede ser crítico para el rendimiento, especialmente si la aplicación está haciendo un gran número de clases. Operaciones de ordenación se produce si utiliza ORDER BY y GROUP BY comandos en las sentencias SQL. SGA de oracle (Sistema de Área Global) Es un conjunto de áreas de memoria compartida que se dedican a un Oráculo "instancia" (un ejemplo es los programas de bases de datos y la memoria RAM). Sirve para facilitar la transferencia de información entre usuarios y también almacena la información estructural de la BD más frecuentemente requerida. En los sistemas de bases de datos desarrollados por la Corporación Oracle , el área global del sistema (SGA) forma parte de la memoria RAM compartida por todos los procesos que pertenecen a una sola base de datos Oracle ejemplo. El SGA contiene toda la información necesaria para la operación de la instancia. La SGA se divide en varias partes: Buffers de BD, Database Buffer Cache Es el caché que almacena los bloques de datos leidos de los segmentos de datos de la BD, tales como tablas, índices y clusters. Los bloques modificados se llamas bloques sucios. El tamaño de buffer caché se fija por el parámetro DB_BLOCK_BUFFERS del fichero init.ora. o o o o o o Plan de ejecución de la sentencia SQL. Texto de la sentencia. Lista de objetos referenciados. Comprobar si la sentencia se encuentra en el área compartida. Comprobar si los objetos referenciados son los mismos. Comprobar si el usuario tiene acceso a los objetos referenciados. Como el tamaño del buffer suele ser pequeño para almacenar todos los bloques de datos leidos, su gestión se hace mediante el algoritmo LRU. 2. Buffer Redo Log Los registros Redo describen los cámbios realizados en la BD y son escritos en los ficheros redo log para que puedan ser utilizados en las operaciones de recuperación hacia adelante, roll-forward, durante las recuperaciones de la BD. Pero antes de ser escritos en los ficheros redo log son escritos en un caché de la SGA llamado redo log buffer. El servidor escribe periódicamente los registros ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS redo log en los ficheros redo log. El tamaño del buffer redo log se fija por el parámetro LOG_BUFFER. 3. Área de SQL Compartido, Shared SQL Pool En esta zona se encuentran las sentencias SQL que han sido analizadas. El analisis sintáctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas. Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. Si es así, no la analiza y pasa directamente a ejecutar la que mantinene en memoria. De esta manera se premia la uniformidad en la programación de las aplicaciones. La igualdad se entiende que es lexicografica, espacios en blanco y variables incluidas. El contenido de la zona de SQL compartido es: Los pasos de procesamiento de cada petición de análisis de una sentencia SQL son: Si no, la sentencia es nueva, se analiza y los datos de análisis se almacenan en la zona de SQL compartida. También se almacena en la zona de SQL compartido el caché del diccionario. La información sobre los objetos de la BD se encuentra almacenada en las tablas del diccionario. Cuando esta información se necesita, se leen las tablas del diccionario y su información se guarda en el caché del diccionario de la SGA. Este caché también se administra mediante el algoritmo LRU. El tamaño del caché está gestionado internamente por el servidor, pero es parte del shared pool, cuyo manaño viene determinado por el parámetro SHARED_POOL_SIZE. 5.3.1.5 Monitoreo de Base de Datos DB Audit Expert es un Auditor Multiplataforma y solución de Monitoreo Proactivo para Bases de Datos - Oracle, SQL Server, Sybase, MySQL y DB2 Vivimos en una economía de información; las empresas están hoy en día dependientes de las tecnologías de bases de datos que hacen funcionar su negocio. Con datos activos de misión critica son almacenados en bases de datos de SQL, entre otras y es cuando surgen las preguntas: “Quien esta teniendo acceso a nuestra base de datos, quien y cuando se hacen los cambios?” la mayor parte de la información financiera de una organización también se almacena y se mantiene en las bases de datos, el DBA trabaja para compañías públicas en donde se requiere que proporcione un rastro de intervención exacto, auditorias inmutable de todos los accesos de bases de datos y cambios en permisos de seguridad. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Componentes de DB Audit Expert Empresarial Deposito Central – usado para almacenar todos los resultados de auditorias desde servidores de Audit Tables – eventos de sistema y cambios en datos son datos remotos y opcionalmente capturados dentro del deposito de tablas de Audit Trail almacenandose audita rastros conteniendo registros en la base de datos local. Audit trail tables contiene expedientes de desde Sistemas Operativos y auditoria de actividades en la base de datos. archivos log de aplicaciones reenviadas desde syslogs remotos y logs de eventos. Centro de Alertas – usado para Management Console – despliega las tablas del deposito y define el analizar periódicamente la colección horario y configuración de auditorias de cada auditoria variable para de datos auditados en el audit trails llenar las tablas del deposito. y en las bases de datos, generando alertas y reportes programados. Auditor de Modulos de Desempeño – usado para coleccionar y analizar el desempeño de los datos que no son disponibles Report Viewer – usando una estación de trabajo en red o un servidor por el administrador de desempeño de red para el proposito de correr reportes auditados ad hoc. de Windows. Este proporciona mas de 40 reportes de análisis de eficiencia del desempeño de consultas y ambientes completos de SQL Server. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS DB Tools es una suite con más de 20 diferentes aplicaciones, ejecutadas desde una única consola, compartiendo características comunes y diseño de interface. Los módulos están completamente equipados y una gran cantidad de herramientas estan diseñadas para cumplir las más altas exigencias de los administradores y DBA's. Use DB Tools para monitorear, ajustar, manipular, configurar, auditar, comparar y probar rendimientos antes-despues en sus bases de datos Oracle; para ajustar su esquema de SQL y aplicaciones; para manipular y archivar datos, comparar y copiar bases de datos, cargar y exportar archivos con múltiples extensiones, incluyendo ZIP, LOBs y Excel; e incluso desarrollar en PL/SQL o Java. 5.3.1.6 Monitoreo de modos de operación. Consejo técnico: Monitoreo Con el modo de funcionamiento continuo Escrito por Bill Bach, Presidente de Goldstar Software Inc. Varios Consejos técnicos y libros blancos se han escrito en los últimos años acerca de la modalidad de operaciones continua (ContOps) en la base de datos para garantizar copias de seguridad adecuadas para su entorno de base de datos. Sin embargo, poco se ha dicho acerca de la supervisión de su sistema mientras está en el modo de ContOps, por ello hemos creado este Consejo Técnico para ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS proporcionar algunos consejos simples sobre lo que debe tener en cuenta para hacer su proceso de copia de seguridad lo más fluida posible. ¿Cuál es el modo de funcionamiento continuo? Modo de funcionamiento continuo es un modo especial en la base de datos generalizado, disponible desde el lanzamiento de Btrieve 6 hace más de 15 años, que le permite realizar una copia de seguridad instantánea de su entorno, en cualquier momento del día o de la noche, sin que todos los usuarios de la base de datos. En pocas palabras, Modo ContOps colas hasta el disco escribe a un archivo físico independiente con extensión ^ ^ ^, llamado un "archivo delta", mientras se toma una copia de seguridad de sus archivos. Por segregación de las escrituras por un período de tiempo, usted puede obtener una copia de seguridad que incluye el estado de la base de datos de un solo momento en el tiempo. Si usted nunca ha probado una copia de seguridad en línea, o está de otra manera no están familiarizados con el modo ContOps, entonces es posible que desee echar un vistazo a algunos de estos enlaces antes de continuar con este Consejo Técnico: http://ww1.pervasive.com/library/docs/psql/950/advops/advops-09-5.html http://www.goldstarsoftware.com/papers/ValidBackups.pdf ¿Qué debo preocuparse con el modo Operaciones continua? Como un modo de base de datos especial que "hace cola" el disco escribe a la base de datos mientras está activo, usted debe ser consciente de que ContOps le añade una cierta cantidad de sobrecarga en el entorno de cada inserción de registro, actualizar o borrar. Como tal, usted necesita tener cuidado de las siguientes situaciones: • quedando sin espacio en disco • Actualizaciones de masas o purgas ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS • Server se bloquea al En Modo Continuo Operaciones • No salir del modo de funcionamiento continuo 5.3.1.7 Monitoreo de espacios espejeados. 5.3.2 Auditoria ¿Qué es la Auditoría de BD? Es el proceso que permite medir, asegurar, demostrar, monitorear y registrar los accesos a la información almacenada en las bases de datos incluyendo la capacidad de determinar: – Quién accede a los datos. – Cuándo se accedió a los datos. – Desde qué tipo de dispositivo/aplicación. – Desde que ubicación en la Red. – Cuál fue la sentencia SQL ejecutada. – Cuál fue el efecto del acceso a la base de datos. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Es uno de los procesos fundamentales para apoyar la responsabilidad delegada a IT por la organización frente a las regulaciones y su entorno de negocios o actividad. Objetivos Generales de la Auditoría de BD Disponer de mecanismos que permitan tener trazas de auditoría completas y automáticas relacionadas con el acceso a las bases de datos incluyendo la capacidad de generar alertas con el objetivo de: – Mitigar los riesgos asociados con el manejo inadecuado de los datos. – Apoyar el cumplimiento regulatorio. – Satisfacer los requerimientos de los auditores. – Evitar acciones criminales. – Evitar multas por incumplimiento. La importancia de la auditoría del entorno de bases de datos radica en que es el punto de partida para poder realizar la auditoría de las aplicaciones que utiliza esta tecnología. La Auditoría de BD es importante porque: – Toda la información financiera de la organización reside en bases de datos y deben existir controles relacionados con el acceso a las mismas. – Se debe poder demostrar la integridad de la información almacenada en las bases de datos. – Las organizaciones deben mitigar los riesgos asociados a la pérdida de datos y a la fuga de información. – La información confidencial de los clientes, son responsabilidad de las organizaciones. – Los datos convertidos en información a través de bases de datos y procesos de negocios representan el negocio. – Las organizaciones deben tomar medidas mucho más allá de asegurar sus datos. Deben monitorearse perfectamente a fin de conocer quién o qué les hizo exactamente qué, cuándo y cómo. Mediante la auditoría de bases de datos se evaluará: – Definición de estructuras físicas y lógicas de las bases de datos. – Control de carga y mantenimiento de las bases de datos. – Integridad de los datos y protección de accesos. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS – Estándares para análisis y programación en el uso de bases de datos. – Procedimientos de respaldo y de recuperación de datos. Aspectos Claves • No se debe comprometer el desempeño de las bases de datos – Soportar diferentes esquemas de auditoría. – Se debe tomar en cuenta el tamaño de las bases de datos a auditar y los posibles SLA establecidos. • Segregación de funciones – El sistema de auditoría de base de datos no puede ser administrado por los DBA del área de IT. • Proveer valor a la operación del negocio – Información para auditoría y seguridad. – Información para apoyar la toma de decisiones de la organización. – Información para mejorar el desempeño de la organización. • Auditoría completa y extensiva – Cubrir gran cantidad de manejadores de bases de datos. – Estandarizar los reportes y reglas de auditoría. 5.3.2 Auditoría 5.3.2.1 Habilitación y deshabilitar el modo de auditoría Configuración y habilitación del servicio de auditoría (tareas) Después de que los archivos de configuración hayan sido configurados para la ubicación, debe configurar el espacio en disco para los archivos de auditoría. También tendrá que configurar otros atributos del servicio de auditoría y, a continuación, habilitar el servicio. Esta sección también contiene los procedimientos para actualizar el servicio de auditoría cuando cambia los valores de configuración. Cuando se instala una zona no global, puede seleccionar auditar la zona exactamente como se audita la zona global. Como alternativa, para auditar la zona no global por separado, puede modificar los archivos de configuración de auditoría en la zona no global. Para personalizar los ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS archivos de configuración de auditoría, consulte Configuración de archivos de auditoría (mapa de tareas). Cómo crear particiones para los archivos de auditoría El procedimiento siguiente muestra cómo crear particiones para los archivos de auditoría, así como los sistemas de archivos y directorios correspondientes. Omita los pasos según sea necesario, según tenga una partición vacía o ya haya montado un sistema de archivos vacío. 1.Asuma el rol de administrador principal o conviértase en superusuario. El rol de administrador principal incluye el perfil de administrador principal. Para crear el rol y asignarlo a un usuario, consulte el Capítulo 2, Trabajo con Solaris Management Console (tareas) de Guía de administración del sistema: administración básica. 2.Determine la cantidad de espacio en disco que sea necesaria. Asigne por lo menos 200 Mbytes de espacio en disco por host. Sin embargo, la cantidad de auditoría que necesita es la que dicta los requisitos de espacio en disco. Por lo tanto, los requisitos de espacio en disco pueden ser mucho mayores que esta figura. Recuerde incluir una partición local de un directorio de último recurso. 3.Cree particiones de auditoría dedicadas, según sea necesario. Este paso se realiza más fácilmente durante la instalación del servidor. También puede crear las particiones en discos que aún no se hayan montado en el servidor. Para obtener instrucciones completas sobre cómo crear las particiones, consulte el Capítulo 11, Administering Disks (Tasks) de System Administration Guide: Devices and File Systems. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Activar auditoría de una base de datos 1. Objetivos Se pretende mediante un sencillo ejemplo práctico para ver cómo se puede auditar las conexiónes a una base de datos ORACLE o auditar los intentos de modificación a las tablas de un usuario. Teniendo en cuenta que el parámetro que habilita la posibilidad de auditar la base de datos ORACLE en el init.ora es audit_trail que el comando sql que activa la auditoría sobre algo es AUDIT ( para desactivar NOAUDIT ) y que la tabla para mirar ( usuario sys ) el seguimiento de auditoría es dba_audit_trail vamos a realizar este sencillo ejemplo. 2. Activar la auditoria de intento de conexiones fallidas para todos los usuarios. Miramos que actualmente no está activada la auditoria en la base de datos. SQL> select name , value from v$parameter where name like 'audit_trail'; audit_trail NONE Activamos la auditoría de la base de datos SQL> alter system set audit_trail = DB scope = spfile; Reiniciamos la base de datos ( shutdown immediate, startup ) y comprobamos que la auditoría se ha activado. SQL> select name , value from v$parameter where name like 'audit_trail'; audit_trail DB Activamos la auditoría para ver la conexión y desconexión de los usuarios a la base de datos, se hace con la siguiente sentencia SQL> audit connect; 3. Visualizar las tablas de auditoría para comprobar que se insertan datos cuando intentamos conectarnos sin lograrlo. En el apartado anterior hemos activado la auditoría para ver como se conectan los usuarios a la base de datos, vamos a realizar varias pruebas y mostrar dónde se puede comprobar que los usuarios se han conectado a la base de datos. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Nos conectamos con varios usuarios a la base de datos ( en nuestro caso con system y el usuario user9 que está creado ) SQL> connect user9/user9; SQL> connect system/system; Tras habernos conectado a la base de datos miramos la tabla dba_audit_trail para ver que datos contiene. SQL> select username , action_name , priv_used , returncode from dba_audit_trail ; "SYSTEM" "LOGON" 1017 "SYSTEM" "LOGON" 1017 "USER9" "LOGON" 1017 "USER9" "LOGON" "CREATE SESSION" 0 "USER9" "LOGON" 1017 "USER9" "LOGON" 1017 Observarmos que en esta tabla se registran los intentos de conexión de los usuarios, por lo tanto podemos saber quien se ha conectado a la base de datos 4. Activar la auditoria sobre la modificación de tablas del usuario Scott. Ahora vamos a activar la auditoría sobre la modificación de las tablas sobre el usuario Scott, de esta forma cualquier modificación realizada en una tabla que pertenezca a este usuario será registrada en las tablas y podremos ver quien ha realizado esa modifiación. SQL>audit insert,update on scott . bonus by access; SQL>audit insert,update on scott . emp by access; SQL>audit insert,update on scott .dept by access; SQL>audit insert,update on scott . salgrade by access; En este caso estamos auditando cada una de las tablas que pertenencen al usuario scott ( bonus, emp, dept, salgrade ) en caso de que alguien inserte algo en ellas o realice alguna actualización. ( si queremos auditar el borrado o la lectura de alguna fila, solo hay que añadir los permisos de select y delete detrás del comando audit).Al ponerlo by access se guardará un registro en la tabla de auditoría por cada intento de insert o update ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS que se realice sobre cada una de las tablas nombradas. ( exite también el registro by session, en el cual se registra por sesión única el intento de insert o update sobre las tablas ). Miramos la tabla user_obj_audit_opts ( con el usuario scott ) SQL>select * from user_obj_audit_opts; "BONUS" "TABLE" "-/-" "-/-" "-/-" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "-/-" "-/-" "DEPT" "TABLE" "-/-" "-/-" "-/-" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "-/-" "-/-" "EMP" "TABLE" "-/-" "-/-" "-/-" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "-/-" "-/-" "SALGRADE" "TABLE" "-/-" "-/-" "-/-" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "A/A" "-/-" "-/-" "-/-" "-/-" "-/-" Y observamos que es lo que estamos auditando del usuario scott, en este caso se vería que eta activada para cada una de las tablas la auditoría para update e insert. (A/A) --> activado / por acceso La prueba que se puede realizar es conectarse con otro usuario que tenga permisos de insert y update sobre estas tablas y realizar una serie de inserciones y actualizaciones en esas tablas. En este caso suponemos que un usuario, user9 que tiene permisos de inserción y actualización sobre las tablas del usuario scott ha realizado una serie de inserciones y actualizaciones sobre estas tablas. La forma de ver si las ha realizado o no ( teniendo activada la auditoría es la siguiente ). SQL>select * from sys . dba_audit_trail where ( action_name = 'INSERT' ) or ( action_name = 'UPDATE' ) ; "ERIN-0S2WXM4BDG\Erin" "USER9" "ERIN-0S2WXM4BDG" 19/04/2006 15:38:56 "SCOTT" "BONUS" 2 "INSERT" 267 2 47 0 "ERIN-0S2WXM4BDG\Erin" "USER9" "ERIN-0S2WXM4BDG" 19/04/2006 15:39:09 "SCOTT" "BONUS" 2 "INSERT" 267 3 50 0 "ERIN-0S2WXM4BDG\Erin" "USER9" "ERIN-0S2WXM4BDG" 19/04/2006 15:39:19 "SCOTT" "BONUS" 6 "UPDATE" 267 4 55 0 Observamos que se han registrado los intentos de inserción y de modificación sobre la tabla BONUS. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 5.3.2.2 CONSULTA DE LAS TABLAS VISTAS CON LA INFORMACION DE LA AUDITORIA Dependiendo del tipo de auditoría que queramos consultar utilizaremos una u otra consulta SQL. Para el caso de la auditoría de inicio de sesión utilizaremos la siguiente consulta SQL: select OS_Username Usuario_SO, Username Usuario_Oracle, Terminal ID_Terminal, DECODE (Returncode, '0', 'Conectado', '1005', 'Fallo - Null', 1017, 'Fallo', Returncode) Tipo_Suceso, TO_CHAR(Timestamp, 'DD-MM-YY HH24:MI:SS') Hora_Inicio_Sesion, TO_CHAR(Logoff_Time, 'DD-MM-YY HH24:MI:SS') Hora_Fin_Sesion from DBA_AUDIT_SESSION; Para el caso de la auditoría de acción utilizaremos la siguiente consulta SQL: select OS_Username Usuario_SO, Username Usuario_Oracle, Terminal ID_Terminal, Owner Propietario_Objeto, Obj_Name Nombre_Objeto, Action_Name Accion, DECODE (Returncode, '0', 'Realizado', 'Returncode') Tipo_Suceso, TO_CHAR (Timestamp, 'DD-MM-YY HH24:MI:SS') Hora from DBA_AUDIT_OBJECT; 5.4. Herramientas de software y hardware para monitoreo y administración automática 5.4.- HERRAMIENTAS DE SOFTWARE Y HARDWARE PARA MONITOREO Y ADMINISTRACION AUTOMATICA Herramientas de Microsoft SQL Server Estas herramientas son el Profiler y el Performance monitor. *Permiten ver los procesos en ejecucion del servidor *Ayudan a ver como esta el rendimiento del sistema PROFILER ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS -Permite crear trace para dar seguimiento a las ejecuciones y consultas que se ejecutan en el servidor -Podemos tener acceso en la dirección Start > Program Files > Microsoft SQL Server > Profiler. -Se pueden filtar traces especificando el nombre de la aplicacion a la que se le quiere dar seguimiento. PERFORMANCE MONITOR -Con esta herramienta se visualiza como se esta comportando el disco duro -A demas de como la base de datos utiliza la memoria y el procesador del servidor los cuales deberían mantenerse por debajo de un 20% Herramientas de MySql MySQL-Proxy es una herramienta para monitorear y optimizar consultas y búsquedas. 1.- Hacer un Log de todas las consultas que recibe el Servidor 2.- Denegar consultas peligrosas que puedan dañar nuestra base de datos 3.- Generar Alias de comandos comunes por ejemplo SLE se podría convertir en SELECT 4.- Balancear la carga entre varios servidores de MySQL en un esquema de Master/Slave 5.- Dar prioridad a ciertas consultas para acelerar la respuesta del servidor Applications Manager Supervisión del rendimiento, Alarmas y paneles de control de Oracle con Oracle Reports La capacidad de gestión de bases de datos Oracle ayuda a los administradores de bases a detectar, diagnosticar, supervisar y resolver problemas de rendimiento de Oracle y Oracle 24x7. La herramienta de seguimiento del servidor de base de datos es un software de supervisión que ofrece parámetros de rendimiento y le ayuda a visualizar la disponibilidad de del servidor de base de datos de Oracle. Los administradores de base de datos pueden registrarse en el cliente web y visualizar el estado y los parámetros de rendimiento de Oracle. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Applications Manager proporciona también informes que ayudan a analizar el uso del servidor de base de datos, la disponibilidad de bases de datos Oracle. ::Supervisión de Oracle Monitor de Archivos de Datos Oracle Seguimiento de tablas Monitor de Sesiones de Oracle Seguimiento de las consultas de la base de datos Capacidad de monitoreo de Oracle: Tiempo de respuesta Estado SGA Actividad del usuario Comportamiento de los archivos de datos Estado Detalles de sesión Tabla de uso de espacio Sesión en Espera Tabla de detalles del Espacio Obtención del Buffer Tabla del Estado del Espacio Lecturas de disco Rendimiento SGA Segmento de Rollback Detalles SGA Consultas, Cerraduras y más Monitor personalizado de la base de datos de Oracle Además, Applications Manager también proporciona la capacidad de controlar cualquier consulta SQL de una base de datos de Oracle mediante el seguimiento de consultas Base de datos . Con esto, un DBA puede controlar los parámetros de rendimiento adicional, supervisar las bases de datos personalizadas e incluso supervisar y exponer las cifras de negocios a la línea de directores de empresa. "Todo va bien con Applications Manager. Se trata de una interfaz sencilla que proporciona una gran visibilidad de los servidores y las aplicaciones que se están realizando. Los E-mails y notificaciones de alarmas están demostrando ser extremadamente útiles". Mark.P.Friel seagate ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS Nota: El monitoreo del desempeño de los Servidores de Aplicaciones Oracle también esta disponible en Applications Manager. Capacidades de Gestión de Oracle Gestión de la disponibilidad y el rendimiento de Oracle. Monitores de las estadísticas de rendimiento, tales como la actividad del usuario, el estado, espacio, el rendimiento de SGA, detalles de las sesiones, alarmas etc. pueden ser configuradas para estos parámetros. Con base en los thresholds ya configurados, las notificaciones y las alarmas son generadas. Las acciones se ejecutan automáticamente en función de las configuraciones. Gráficos de rendimiento y los informes están disponibles al instante. Los informes pueden ser agrupados y se visualizan en base a la disponibilidad y el tiempo de conexión. ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS BIBLIOGRAFIA Unidad 1 1. Título Diseño y administración de bases de datos. Albert Abelló Gamazo, Emma Rico. Univ. Politèc. de Catalunya, 2006 2. Bases de Datos, Diseño, Implementación y Administración. Carlos Coronel, Steven Morris, Peter Rob. Ed. Cengage Learning Editores, 2011 3. Introducción a los sistemas de bases de datos. C. J. Date, Sergio Luis María Ruiz Faudón. Pearson Educación, 2001 4. Administración de base de datos. Recuperado de: http://www.estructurayprogramacion.com/materias/administracion-de-base-dedatos/ Unidad 2. 1. Administración de base de datos. Recuperado de: http://www.estructurayprogramacion.com/materias/administracion-de-base-dedatos/ Unidad 3. 1. Administración de base de datos. Recuperado de: http://www.estructurayprogramacion.com/materias/administracion-de-base-dedatos/ Unidad 4. 1. 4 OPERACIÓN Y MANTENIBILIDAD, por LUIS JOSÉ MUÑIZ RASCADO. Recuperado de http://share.pdfonline.com/635a3edc46694d489c6e15340a0972a3/_4_oper_mante nibilidad.htm 2. Crear una bitácora en MySQL por MTRO. GUSTAVO REYES HERNÁNDEZ – JUN/09/2010. Recuperado de: http://tavoberry.com/blog/crear-una-bitacora-enmysql/ 3. Instituto Tecnológico de Veracruz. Recuperado de: http://www.prograweb.com.mx/admonBD/0303RollBackCommit.html ANTOLOGIA: ADMINISTRACIÓN DE BASE DE DATOS 4. Exposición Unidad 4 Temas: 4.3 Comandos de activación de los modos de operación. INSTITUTO TECNOLÓGICO SUPERIOR DE EL MANTE. Recuperado de: http://sdrv.ms/10ajzci 5. SCB-1001 ADMON DE BASE DE DATOS, Lic. Oscar López Yarzagaray. Instituto Tecnológico Superior de Calkiní en el Estado de Campeche. Recuperado de: http://www.itescam.edu.mx/principal/webalumnos/sylabus/asignatura.php?clave_a sig=SCB-1001&carrera=ISIC-2010-224&id_d=136 6. Administración de base de datos. Recuperado de: http://www.estructurayprogramacion.com/materias/administracion-de-base-dedatos/ UNIDAD 5. Seguridad 1. UNIDAD 5. Instituto Tecnologico de Minatitlan. Cecilio Antonio Hernandez. Recuperado de: http://prezi.com/x9_bmsgm2oi6/unidad-5-seguridad/ 2. SCB-1001 ADMON DE BASE DE DATOS, Lic. Oscar López Yarzagaray. Instituto Tecnológico Superior de Calkiní en el Estado de Campeche. Recuperado de: http://www.itescam.edu.mx/principal/webalumnos/sylabus/asignatura.php?clave_a sig=SCB-1001&carrera=ISIC-2010-224&id_d=136