jueves, 20 de marzo de 2014

Actividad #16 ¿Qué es una bitácora?


¿Qué es una bitácora?


Herramienta que permite registrar, analizar, detectar y notificar eventos que sucedan en cualquier sistema de información utilizado en las organizaciones. La estructura más ampliamente usada para grabar las modificaciones de la base de datos.
Una bitácora 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 son la Operación que se realizo, el Usuario de BD y Windows, Fecha, Maquina y Programa.

La importancia de las bitácoras es la de recuperar información ante 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.

TIPOS DE BITACORA
El sistema guarda diferentes tipos de registros en la bitácora,  dependiendo del evento ocurrido en la BD.
Por ejemplo:
Un “registro de actualización” describe una escritura única en la BD y tiene los campos:

  • ID_Transacción.
  • ID_elemento_datos.
  • Valor anterior.
  • Valor nuevo.

Otros registros indican eventos especiales como: inicio de transacción, éxito o fracaso de la misma. Una posible vista de la bitácora puede ser:

EJEMPLO EN MYSQL
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)), 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”)
//
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.

Actividad #15 Comparación de particiones y sistemas de archivos

¿Qué es un sistema de archivos?

Un sistema de archivos es la estructura subyacente que un equipo usa para organizar los datos de un disco duro. Si está instalando un disco duro nuevo, tiene que realizar las particiones y formatearlo empleando un sistema de archivos para poder comenzar a almacenar datos o programas. En Windows, las tres opciones del sistema de archivos que tiene para elegir son NTFS, FAT32 y la anterior y poco usada FAT (también conocida como FAT16).


Particiones

PARTICIONES 
Cuando hablamos de particiones estamos hablando de dividir un disco duro en varias partes, cada una de las cuales se comportará como si fuera un disco duro independiente de los demás. L os sistemas operativos no trabajan con unidades físicas directamente, sino con unidades lógicas que reciben el nombre de particiones. Por regla general al instalar un nuevo sistema operativo una sola partición ocupará toda la superficie del disco. Sin embargo, es muy interesante tener más de una partición para, por ejemplo, hacer una copia de seguridad de nuestros datos. Para ello, el sistema operativo simula un segundo disco aunque físicamente solo dispongamos de uno.

Las particiones pueden ser de dos tipos:
1.     Partición primaria. Es la partición desde la que puede arrancar el sistema operativo. Para que esto sea posible, esta partición debe estar marcada como partición activa.

2.     Partición extendida. Es la partición que no puede contener los archivos necesarios para arrancar el sistema y que puede ser subdividida en unidades lógicas. Este tipo de particiones sirven para guardar ficheros. En esta partición extendida se crean las unidades lógicas. 



Actividad #14 Partición de disco


¿Qué es una partición de disco?

Una partición es un espacio de uso que asignamos en un disco duro. En cada disco duro podremos hacer varias particiones, de tal modo que todas ellas son en cierto modo independientes entre sí y podemos trabajar de manera individual sobre cada una, es decir, los datos que introduzcamos en una de ellas no afectan al espacio de las otras, si borramos los datos de una las demás no sufren variaciones, etc.


Las particiones son un detalle importante a tener en cuenta en nuestros ordenadores, pues nos van a permitir por ejemplo:

  • Tener instalado el sistema operativo, drivers, programas, etc., en la primera partición.
  • Guardar archivos personales, música, películas, fotografías, etc., en la segunda partición.

Además de permitirnos tener organizada nuestra información, si llegado el caso tenemos que formatear el equipo (borrar y volver a instalar todo), solo borraríamos C y No perderíamos lo que se encuentre en D, que en este caso sería la segunda partición.

Importancia de las particiones

Son dos los motivos fundamentales por los que se han de realizar particiones en un disco o bien disponer físicamente de al menos dos de ellos.

En primer lugar, permitirá mantener los datos personales en un lugar independiente a donde se encuentra el sistema operativo. En caso de que éste no pueda arrancar, será mucho más fácil acceder a ellos. 

Por otro lado, el acceso a los datos es más rápido y las operaciones sobre los discos que efectúe el programa que se estén utilizando se realizarán de forma más eficaz.

Se pueden realizar las particiones durante la instalación del sistema operativo o bien con alguna herramienta de particionado.

¿Cómo se particiona un disco?

Dependiendo del sistema operativo en el que se este trabajando será el método seleccionado para la partición deseada, a continuación algunos ejemplos en distintos SO.


Ubuntu

Windows







martes, 11 de marzo de 2014

Actividad #12 y #13

La arquitectura del SGBD Oracle
Se basa en tres componentes básicos:
La instancia está compuesta por:

-Procesos que acceden a los ficheros  de la BD.
-Area de memoria compartida SGA (System Global Area) Es con la que se comunica el proceso de servidor del usuario cuando este accede a la BD.
-Area de memoria compartida por todos los usuarios
-No debe superar el 40% de la memoria del sistema.
-Utilidad: Almacena información de control y de datos entre el servidor y los clientes.
Vida: aparece cuando se arranca  la instancia (Oracle.exe) y se elimina cuando esta finaliza (shutdown).

La vista v$parameter muestra información sobre los parámetros de configuración del servidor, entre ellos las diferentes áreas de las que se compone el SGA







La instancia es la unión de los procesos y de las estructuras de memoria, los
Cuales se hallan en ejecución para el acceso de los usuarios a los datos a través
de diferentes aplicaciones como por ejemplo administración, desarrollo y otras aplicaciones de usuario final. La instancia está compuesta por:
Estructura de Memoria: se almacenan los ejecutables del software Oracle y todo el sistema necesario para el tratamiento del SGBD.
La filosofía de Oracle es la de albergar la máxima cantidad de información en
Memoria con el objeto de acelerar el tratamiento de los datos.
La estructura de Oracle en memoria se divide en:
·         SGA (System Global Área) Área global del sistema.
·         Caché de datos (Database Buffer Cache).
·         Caché de redo log (Redo Log Buffer Cache).
·         Área de memoria compartida (Shared Pool), compuesta por las áreas compartidas para sentencias SQL y de la caché de diccionario de datos (Dictionary Caché o Row Cache)
·         Información adicional sobre procesos, como bloqueos y colas de entrada/salida para determinadas configuraciones
·         PGA (Program Global Area).
·         Áreas privadas para sentencias SQL.
·         Áreas de ordenación de sentencias.
·         Área para ejecutables de Oracle.


Archivos de configuración (INIT.ORA): archivos de configuración donde se establecen todos los parámetros para que Oracle trabaje de una u otra forma.
Procesos Background:
serie de procesos encargados de mantener, manejar y controlar todo el SGBD. Existen unos procesos estándar, que Oracle activa siempre que ejecuta una instancia, y otros que dependerán de las configuraciones establecidas en el fichero de inicialización (INIT.ORA). Los procesos estándar que
Oracle siempre activa son:
•DBWR ( Database Writer ): encargado de escribir en los archivos de la base de datos todos los buffers de datos que han sido modificados en memoria por operaciones Update, Delete, o Insert.
•LGWR (Log Writer): encargado de escribir en los archivos históricos de la base de datos (Redo Log Files) la información contenida en los redo log buffers.
•SMON (System MONitor): encargado de tratar las recuperaciones en caso de fallo cuando se arranca el gestor.
•PMON (Process MONitor): trata las recuperaciones en caso de fallo en algún proceso de usuario.