3.1 Estructuras lógicas de almacenamiento
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.
Bloque: 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 en Tablas: Formado por uno o más datafiles, cada datafile solo puede pertenecer a un determinado tablespace
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.
Definición de espacio de almacenamiento:
Las razones por las cuales las bases de datos se almacenan en memorias secundarias son:
En general, las bases de datos son demasiado grandes para entrar en la memoria primaria.
La memoria secundaria suele ser más barata que la memoria primaria (aunque esta última tiene mayor velocidad).
La memoria secundaria es más útil para el almacenamiento de datos permanente, puesto que la memoria primaria es volátil.
3.1.2 - Definición y creación del espacio asignado para cada base de datos.
Una base de datos se divide en unidades lógicas denominadas TABLESPACES. Un tablespace no es un archivo físico en el disco, simplemente es el nombre que tiene un conjunto de propiedades de almacenamiento que se aplican a los objetos (tablas, secuencias…) que se van a crear en la base de datos
bajo el tablespace indicado (tablas, secuencias…). Un espacio de tablas puede pertenecer sólo a una BD.
Un objeto en la base de datos debe estar almacenado obligatoriamente dentro de un tablespace.
Cuando se crea una tabla se debe indicar el espacio de tablas (Tablespace) al que se destina. Por defecto
se depositan en el espacio de tablas SYSTEM.
Cuando se crea un nuevo Tablespace, la capacidad total del tablespace coincidirá con la suma de los
tamaños de los archivos de datos (datafiles) asociados.
Por ejemplo:
create tablespace app_data
datafile ‘/u03/oradata/ userdata01. dbf ’ size 100m,
datafile ‘/u03/oradata/ userdata02. dbf ’ size 250m;
En este caso se crea un tablespace app_data asociado a dos archivos con una capacidad total de 350M.
Si se quiere incrementar el tamaño de la base, se puede hacer incrementando el tamaño de un archivo de
datos (data files) de un Tablespace en particular.
Por ejemplo:
alter database datafile ‘/u03/oradata/ userdata02. dbf’ resize 200m;
Si no se tiene espacio libre en la partición del disco, entonces se puede agregar otro archivo de datos (data
files) sobre otra partición de disco para un Tablespace en particular.
Por ejemplo:
alter tablespace app_data add datafile ‘/u01/oradata/ userdata03. dbf’ size 200m;
3.1.3 - Bitácoras
Las bitácoras, son las estructuras de datos más ampliamente usada para grabar las modificaciones de la base de datos.
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 o número 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 tal como:
< 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, ya que esto nos da 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 y como resultado, el volumen de datos en la bitácora puede ser exageradamente grande.
Bitácora (Redo log files) en Oracle
Los archivos de redo log son las bitácoras que registran los cambios a la base de datos como resultado de transacciones o acciones internas del servidor Oracle.
Los archivos de redo log protegen la base de datos de la pérdida de integridad en casos de fallas causadas por suministro eléctrico, errores en discos duros, y otras causas.
Es recomendable que los archivos de redo log sean multiplexados para asegurar que la información almacenada en ellos no se pierda en caso de un fallo en disco.
Consiste en grupos de archivos de redo log y cada grupo está integrado por un archivo de redo log y sus copias multiplexadas. Se dice que cada copia idéntica es miembro de un grupo, y cada grupo es identificado por un número.
El proceso de escritura en logs (LGWR) escribe los registros de redo del buffer de redo log a todos los
miembros del grupo actual de redo logs, hasta que el archivo se llena o se solicita una operación de cambio
de archivo de log. Entonces, cambia el grupo activo y comienza a escribir en los archivos del siguiente
grupo.
Cuando Oracle se ejecuta en modo ARCHIVELOG el proceso en segundo plano llamado ARCH hace una
copia de cada archivo de redo log online una vez que el proceso LGWR termina de escribir en él, guarda
dicha copia en los archivos de reconstrucción fuera de línea (redo log offline) en disco
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 creación de particiones en una base de datos mejora el rendimiento y simplifica el mantenimiento. Al dividir una tabla grande en tablas individuales más pequeñas, las consultas que tengan acceso únicamente a una parte de los datos pueden ejecutarse con mayor rapidez, ya que deben recorrer menos datos. Las tareas de mantenimiento (por ejemplo, volver a generar los índices o hacer copias de seguridad de una tabla), pueden ejecutarse con mayor rapidez.
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.
Particiones horizontales
La creación de particiones horizontales divide una tabla en varias tablas. Así, cada tabla contiene el mismo
número de columnas, pero menos filas.
Por ejemplo, se podría crear una partición horizontal de una tabla
que contenga mil millones de filas en 12 tablas; cada una de las tablas más pequeñas representaría un mes de datos de un año específico. Las consultas que requieran datos de un mes específico sólo hacen referencia a la tabla apropiada.
La determinación del modo de crear particiones horizontales de las tablas depende de cómo se analicen los datos. Debería crear particiones de tablas de forma que las consultas hagan referencia al menor número posible de tablas. De lo contrario, un número excesivo de consultas UNION, utilizadas para mezclar las tablas de forma lógica en el momento de la consulta, podría afectar al rendimiento.
Particiones verticales
La creación de particiones verticales divide una tabla en varias tablas que contienen menos columnas. Los
dos tipos de particiones verticales son la normalización y la división de filas:
La normalización es el proceso estándar de bases de datos que consiste en quitar columnas
redundantes de una tabla y colocarlas en tablas secundarias vinculadas a la tabla principal
mediante relaciones de clave principal y clave externa.
La división de filas divide verticalmente la tabla original en tabla
s con menos columnas. Cada fila
lógica de una tabla dividida coincide con la misma fila lógica en las demás tablas, según se identifica en la columna UNIQUE KEY que es idéntica en todas las tablas con particiones.
Por ejemplo, al combinar la fila con el Id. 712 de cada tabla dividida se vuelve a crear la fila original.
Igual que las particiones horizontales, las particiones verticales permiten a las consultas recorrer menos datos. De ese modo se aumenta el rendimiento de las consultas.
Por ejemplo, una tabla que contenga siete
columnas de las cuales generalmente sólo se hace referencia a las cuatro primeras, puede beneficiarse de la división de las tres últimas columnas en una tabla independiente.
La creación de particiones verticales se debe considerar detenidamente, ya que analizar datos de varias
particiones requiere consultas que combinen las tablas. La partición vertical también puede afectar al rendimiento si las particiones son muy grandes.
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.
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.
3.2 - Segmentos
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.
Un segmento (segment) es aquel espacio reservado por la base de datos, dentro de un archivo de datos (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 (segmento, trozo, sección) dentro de un archivo de datos (datafile). Se puede decir que, un segmento es a un objeto de base de datos, lo que un datafile a un tablespace: el segmento es la representación física del objeto en base de datos (el objeto no es más que una definición lógica).
Existen cuatro tipos de segmentos (principalmente):
Segmentos de TABLE: aquellos que contienen tablas.
Segmentos de INDEX: aquellos que contienen índices.
Segmentos de ROLLBACK: aquellos se usan para almacenar información de la transacción activa.
Segmentos TEMPORALES: aquellos que se usan para realizar operaciones temporales que no
pueden realizarse en memoria, tales como ordenaciones o agrupaciones de conjuntos grandes de datos.
Calcular el tamaño de un segmento en Oracle
select segment_name , sum(bytes)/(1024*1024) SegmentSize from user_extents where segment_'TABLE' and segment_name = 'MYTABLE' TABLE = Tipo de segmento: "table," "index" o "clusterMYTABLE = nombre de la tabla
3.3. MEMORIA COMPARTIDA
Un servidor Oracle es un sistema que permite administrar bases de datos y que ofrece un medio de gestión de información abierto, completo e integrado. Un servidor Oracle está constituido de una instancia y una base de datos.
Instancia de Oracle: Una instancia de Oracle permite acceder a la base de datos Oracle y permite abrir únicamente una sola base de datos. La instancia de Oracle está compuesta de procesos en segundo plano que administran y aplican las relaciones entre las estructuras físicas y las estructuras de memoria.
Existen dos categorías:
Procesos en Segundo Plano Obligatorios: DBWN, PMON, CKPT, LGWR, SMON
Procesos en Segundo Plano Facultativos: ARCn, LMDn, RECO, CJQ0, LMON, Snnn, Dnnn, Pnnn, LCKn, QMNn
3.4. INSTANCIAS MÚLTIPLES
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.
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.
No hay comentarios.:
Publicar un comentario