Antología - Administración de BD (1)

Anuncio
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
Descargar