4.1 - Bitácoras de trabajo del DBMS
Una bitácora es una 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.
El sistema se mantiene al tanto de lo que hacen las transacciones mediante un archivo especial llamado bitácora del sistema de BD, también conocido como archivo de log, diario o registro histórico. La bitácora es un archivo en el que se almacena detalles sobre las operaciones –efectuadas como parte de las transacciones– que afectan a los valores de los elementos de información de la BD.
La bitácora se mantiene en disco, fuera del área de la BD donde se almacenan los datos. Por tanto, no le afecta ningún tipo de fallo en la BD. Precisamente para protegerlo contra posibles fallos de estos tipos se suele realizar periódicamente una copia de seguridad (en cinta, por ejemplo) del archivo de la bitácora.
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 se tiene 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.
4.1.1 Funciones
específicas de la bitácora y la ubicación de los archivos en disco de la misma
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.
El registro de transacciones permite las siguientes operaciones:
- Recuperación de transacciones individuales.
- Recuperación de todas las transacciones incompletas cuando se inicia el DBMS.
- Puesta al día de una base de datos, un archivo, un grupo de archivos o una página restaurados hasta el momento exacto del error.
- Permitir replicación transaccional.
- Permitir soluciones de servidor en espera.
Ubicación de la
bitácora en Oracle database 11g
Para conocer la ubicación de la bitácora también conocido
como archivos de log en Oracle es muy sencillo, solo se debe ejecutar el
siguiente comando:
Select * from v$logfile;
A continuación les
mostrara la ubicación de los archivos log como se muestra en la siguiente
imagen.
Recuerde que los Redo Log File son archivos utilizados para
salvaguardar las operaciones ejecutadas en una base de datos.
4.1.2 Como
funciona la Recuperación (rollback) y la Permanencia (commit) en la base de
datos
Rollback
Commit
En cualquier momento, un programa podría decidir que es
necesario hacer fallar la transacción, con lo que el sistema deberá revertir
todos los cambios hechos para las operaciones ya realizadas. En el lenguaje SQL
se denomina COMMIT a aplicar los
cambios y ROLLBACK a cancelar los cambios.
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.
4.2 Definición de cuáles son los modos de operación del DBMS. (Alta, Baja, Recovery, etc.)
Una base de datos de Oracle pasa por las
siguientes fases cuando se sale de un estado de cierre (shutdown state) a un
estado de base de datos abierta (open databas state):
1) Fase de no montaje: se
leen los parámetros del sistema, se inician las estructuras de memoria y los
procesos de segundo plano. La instancia se arranca pero SIN asociarla a la base
de datos. Normalmente se utiliza cuando se modifica o se necesita crear el
archivo de control.
2) Fase de montaje: se
asocia la instancia con la base de datos. Se usa el archivo de parámetros para
localizar los archivos de control, que contienen el nombre de los archivos de
datos y los registros rehacer. Los archivos de datos y los registros de rehacer
no están abiertos, así que no son accesibles por usuarios finales para tareas
normales. Se utiliza este modo para realizar algunas tareas de mantenimiento.
3) Fase apertura: se
abren los archivos de datos y los registros rehacer. La base de datos queda
disponible para las operaciones normales. Es necesario que existan registros
rehacer si no existen hay que usar el comando --> resetlogs, que crea unos
registros nuevos.
4.3
Comandos (opciones) utilizados para la activación de los diferentes modos de operación
del DBMS.
Una base de datos de
Oracle puede estar uno de los siguientes estados: STARTED, MOUNTED, OPEN o OPEN
MIGRATE. Valor contenido en el campo STATUS
de la vista V$INSTANCE.
Para comprobar lo
anterior ejecutaremos la siguiente consulta:
Select
* from V$INSTANCE;
Como podemos observar en la siguiente imagen, el estado de la base de
datos es OPEN
Habitualmente
para arrancar la base de datos totalmente utilizaremos directamente el comando:
--> startup
Hay
tres fases de arranque opcionalmente podemos usar startup más un comando.
Queda explicado a continuación
1) Fase de no montaje:
--> startup nomount ;
2) Fase de montaje. Existen
dos comandos:
--> startup mount ;
O
--> alter
database mount ;
3) Fase apertura.
Existen dos comandos:
--> startup open ;
o
--> alter
database open ;
Otras formas de abrir la base de datos:
a) Abrir la base de datos en modo de sólo lectura, para que no puedan realizarse ni inserciones, ni actualizaciones ni borrados:
alter database open read only ;
startup
restrict ;
c) Se puede cambiar el estado de la base de datos de modo que solo los usuarios sys y system puedan hacer consultas, sin que tengamos que detener la base de datos y posteriormente usar startup restrict. Hay que habilitar la opción quiesce en el Database Resource Manager:
alter system quiesce restrict ;
alter system unquiesce ;
-->
startup force ;
4.4. Manejo de índices
Los índices son "estructuras"
alternativa a la organización de los datos en una tabla. El propósito de los
índices es acelerar el acceso a los datos mediante operaciones físicas más
rápidas y efectivas.
4.4.1 Tipos de índices soportados
Algunos índices soportados por Oracle son:
B-Tree Index
Este es el tipo de índices normal de Oracle, estos
índices son los que más se utilizan, están organizados en una estructura de
árbol B y por lo general se utilizan para las llaves primarias de manera que se
pueda hacer una búsqueda por llave más rápido.
Index Organized
Tables
Este es un tipo de índice que nació con la versión 8 de
Oracle y se utiliza por lo general para aplicaciones Web debido a que por lo
general estas aplicaciones hacen búsquedas de un solo campo por medio de la
llave primaria.
Una IOT se define desde su creación, agregando ORGANIZATION INDEX al
final de la sentencia CREATE TABLE, y lo que hace es que los datos de la tabla
se van guardando dentro del índice, entonces cuando uno hace un SELECT los
datos salen ordenados.
Bitmap Index
Los índices de bitmap son muy recomendables en columnas
en las cuales los valores ser repiten y representan una división en categorías,
por ejemplo columnas como género, estado civil, etc. También son muy
recomendables cuando no cambian mucho, aunque sean muy variantes.
Bitmap Join Index
Este tipo de índice, es muy útil en tablas que están
relacionadas y hay muchas consultas que hacen Join de estas tablas, al igual
que el bitmap index normal, solo se recomienda cuando la cardinalidad de los valores
de la columna no es muy grande.
Aparte este tipo de índice, solamente se recomienda en
Data Warehose porque son muy rápidos haciendo joins y devuelven los resultados
en muy poco tiempo, por el contrario al hacer inserts y updates, tienen
consecuencias en el rendimiento.
Domain Index
Estos índices se utilizan para un dominio especializado,
se utiliza mucho con dominios de texto o imágenes, ya que en estos índices se
utilizan los indextype donde se puede especificar la implementación.
Cluster Index
Este índice consiste en unas tablas que comparten los
mismos bloques de datos, utilizan un valor llamado clúster key value que es el
valor de las columnas involucradas para una fila en específico. El clúster key
sirve para guardar juntas las filas que tengan el mismo valor y solo guarda una
vez cada valor distinto.
Hash Cluster Index
Este índice es muy parecido al anterior, pero se aplica
una función de hash al cluster key para poder encontrar las demás filas con el
mismo cluster key.
Partitioned tables
Cuando las tablas crecen mucho, acceder a ellas puede
significar un bajo rendimiento, por eso surge el concepto de tablas
particionadas que es dividir las tablas en partes independientes, se le puede
sacar backup independientemente, el rendimiento de las consultas puede aumentar
significativamente, y se pueden hacer transacciones paralelas en particiones
diferentes.Es común que las diferentes particiones, se coloquen en un
tablespace diferente para optimizar aun más el rendimiento.
Function Based Index
Este tipo de índice es muy sencillo pero muy útil y puede
llegar a mejorar los tiempos de respuesta increíblemente. Este índice no es más
que un índice B-Tree pero sobre una función, por ejemplo para las consultas
dadas para este proyecto se utiliza mucho la función upper entonces cree un
índice B-Tree sobre la función upper del campo nombre, entonces en índice están
los datos ya con la función upper aplicada.
Patitioned Index
Este es un índice para el cual se definen particiones,
exactamente igual que cuando se particiona una tabla, esto se hace con el
objetivo de mejorar el tiempo de acceso a los datos cuando el índice es
demasiado grande.
4.4.2 Como se realiza la Reorganización de índices
Para la creación de índices se realizan los
siguientes pasos:
Se instala el JDK de java para posteriormente
poder abrir SQL Developer.
Cuando ejecutemos el sql developer aparecerá
un recuadro donde nos pide que especifiquemos la ruta del JDK.
Una vez especificada la ruta le daremos en el
botón “OK” e iniciara sql developer y creamos una nueva conexión a la base de
datos llenando los campos que se nos piden.
Obtenemos o tecleamos nuestro código sql para
llenar la base de datos.
Ejecutamos los comandos (F5) para ejecutar
los querys.
Desconectamos la base de datos o actualizamos
para que se apliquen los cambios.
La iniciamos nuevamente
Buscamos entre las tablas a cual le queremos crear un índice y le damos clic derecho y seleccionamos la opción INDICE y seleccionamos la opción CREAR INDICE.
Llenamos los datos que se nos indican
principalmente EL NOMBRE DEL INDICE
seleccionamos porque atributo queremos crear o filtrar el índice.
Seleccionamos el orden en que se realizara ACENDENTE O DESENTENDE y crearemos el
índice como se muestra a continuación.
Reorganización de un
índice
La reorganización de índices se hace en forma
alfabéticamente y de forma ascendente como mostramos en la imagen de abajo
4.4.3 Como se ejecuta la Reconstrucción de índices
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 del 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
Para la reconstrucción seleccionaremos el índice a
reconstruir y lo seleccionamos.
Seleccionamos aplicar.
Y nos mostrara un mensaje como el siguiente en
caso que se haya realizado correctamente.
No hay comentarios:
Publicar un comentario