Actualizado el 21 de Marzo del 2018 (Publicado el 28 de Septiembre del 2017)
1.043 visualizaciones desde el 28 de Septiembre del 2017
552,5 KB
44 paginas
Creado hace 19a (05/10/2005)
Departamento de Lenguajes y Ciencias de la
Computación Universidad de Málaga
Administración de
Bases de Datos
(Ingeniería Técnica en Informática de Gestión)
Conceptos sobre Administración
del SGBD Oracle
E.T.S.I. Informática
J. Galindo Gómez
El SGBD ORACLE
• Estructuras básicas:
Bibliografía: La mejor
sobre este tema es,
aunque está en inglés, el
Manual de Oracle de la
última versión.
– E. Física: Almacenamiento de datos.
– E. Lógica: Rep. de los datos y sus relaciones (esquema conceptual).
• Estructura Lógica de una BD Oracle:
– Objetos del esquema (schema objects): Definición de tablas, vistas, índices,
sinónimos, procedimientos almacenados...
– Espacios de Tablas (tablespaces): Es un área lógica de almacenamiento.
Informan cómo debe ser utilizado el espacio físico de la Bd.
•
• Describen el almacenamiento físico, gestionando el espacio físico que usa la BD.
• Cada BD tiene al menos un tablespace, aunque puede tener más para mejorar su
gestión (uno para usuarios, aplicaciones, rollback...).
• Cada tablespace pertenece sólo a una BD y se divide en 1 ó más ficheros de datos.
• Estructura Física de una BD Oracle: Tipos de Ficheros (datafiles):
– Datos: Existen uno o más ficheros que contienen los datos actuales.
– Ficheros del Registro de Rehacer (redo log): Registran los cambios efectuados, para
poder efectuar operaciones de recuperación (recovery).
– Ficheros de Control: Información general, como nombre de la BD, nombres de sus
ficheros, sus localizaciones, fecha de creación, histórico de backups...
– Ficheros para Rastrear (trace files) y para Registrar Alarmas (alert log): Se registran
las operaciones por las que han pasado determinados procesos y los eventos
importantes acaecidos a la BD.
2
1
Instancias de ORACLE (Oracle Instance)
•
Instancia o Servidor de BD: Conjunto de estructuras de memoria y
procesos que acceden a los archivos de una BD. Distintas instancias
pueden acceder a la misma BD.
– System Global Area (SGA): Es un área de memoria con la información
de la BD que pueden compartir los usuarios. Se crea cuando se empieza
a usar una BD concreta. Puede verse alguna información desde
SQL*PLUS, usando el comando SHOW SGA. Esta compuesta por:
• Caché de BD: Con los bloques de BD más recientemente accedidos,
para reducir los accesos a disco.
• Buffer del Registro de Rehacer, para el fichero de redo log.
• Memoria compartida: Para consultas SQL y otros procesos.
– Program Global Area (PGA): Buffer de memoria con información sobre
los procesos.
– Procesos de Usuario: Aplicaciones que ejecuta el usuario.
– Procesos de Oracle: Procesos del servidor (para atender a los
usuarios...) y procesos de segundo plano (background), para tareas de
registro, monitorización...
Iniciar/Finalizar ORACLE
•
Inicialización (Startup): Es necesaria
para que el SGBD pueda utilizarse.
Pasos:
– Crear una Instancia: Crear el SGA
y los procesos de background.
– Montar una BD: Asocia la instancia ya
creada a una BD concreta. Puede
asociarse la misma BD a varias instancias
(modo compartido o paralelo) o puede
exigirse que sea sólo en una instancia en
cada momento (modo exclusivo).
– Abrir la BD: Establece la BD como
disponible para sus operaciones.
• Finalización (Shutdown):
Es el proceso inverso:
– Cerrar la BD.
– Desmontar la BD.
– Borrar la Instancia Oracle.
Usuarios
...
. . .
Instancia
SGA PGA Proc.
...
Instancia
SGA PGA Proc.
Base de Datos
tablespace
. . .
tablespace
fichero
...
fichero
. . .
3
4
2
Páginas, Extensiones y Segmentos
• Página o Bloque de Datos (data blocks): Unidad
mínima de asignación de espacio en la Base de Datos.
– Es la menor unidad de E/S que puede utilizar la BD
(independientemente de que el tamaño de bloque del
S.O. sea menor).
• Extensión (extent): Conjunto de páginas contiguas,
con un tipo de información específico.
• Segmentos (segment): Conjunto de extensiones que almacenan un
determinado tipo de datos.
– Al crear una estructura de datos, Oracle le asigna un segmento con una
única extensión.
– Cuanco se llena esa extensión se le asignan otras extensiones a ese
segmento. Por eso, las extensiones no suelen ocupar espacios
consecutivos, como sería deseable.
– Un segmento completo se almacena en un tablespace, que puede
distribuir sus extensiones en distintos ficheros.
• Cada extensión se almacenará siempre en un único fichero.
5
Páginas o Bloques de Datos
• Tamaño de Página:
– Especificado por el DBA cuando crea la BD.
– Debe ser múltiplo del tamaño de bloque del S.O.
Common and Variable Header
Table Directory
Row Directory
Free Space
Row Data
• Formato de una Página:
– Overhead: Formado por 3 zonas:
• Common and Variable Header: Información general, como la dirección
de la página, el tipo de segmento al que pertenece (de datos, de índice,
de rollback...).
• Table Directory: Información sobre las tablas con filas en esta página.
• Row Directory: Información sobre las filas almacenadas en esta página.
– Al borrar una fila, su información en este directorio no es liberado.
Ese espacio se vuelve a usar al insertar una nueva fila en la página.
– Row Data: Zona con datos de tablas o índices. Una fila puede estar en varias páginas.
– Free Space: Espacio libre para insertar nuevas filas (INSERT) o nuevos valores
en las filas ya existentes (UPDATE), si requieren más espacio.
• Transaction entries: También se guarda aquí información sobre las transacciones
(INSERT, UPDATE y DELETE) sobre las filas de esta página. Se controla con dos
valores que no es recomendable modificar:
– INITRANS: Número inicial de entradas para las transacciones de esta página.
– MAXTRANS: Máximo número de transacciones concurrentes para esta página.
• Si el número de transacciones concurrentes supera INITRANS, Oracle guarda la
información dinámicamente hasta que se excede MAXTRANS o hasta que no haya
espacio libre en la página.
6
3
Páginas o Bloques de Datos (data blocks)
• Control del Espacio Libre para Inserción y Actualización de Filas:
Existen dos parámetros que se especifican cuando se crea o altera una tabla
o un índice:
– PCTFREE: Mínimo porcentaje de página que se reserva como espacio libre para
futuras actualizaciones de filas que ya existen en la página.
• Por defecto es el 10%.
• En una tabla relativamente estática un buen valor puede ser el 5%.
– PCTUSED: Después de que una página sea considerada llena en función del límite
especificado en el PCTFREE, Oracle no vuelve a introducir ninguna nueva fila en
la misma hasta que el porcentaje de página ocupada sea menor que PCTUSED.
Hasta entonces, el espacio libre sólo será dedicado a la actualización de las filas
ya existentes en la página.
• Por defecto deja el 40%, que indica que cuando esa página se llena no
volverá a estar libre para inserciones hasta que tenga menos del 40% de
ocupación (máximo 39%).
• En una tabla relativamente estática un buen valor puede ser el 75%.
– Por supuesto, PCTFREE + PCTUSED <= 100
– Espacio libre para inserciones: Tama_Página - Overhead - PCTFREE
• Cuando se produce un INSERT, Oracle mira la lista de páginas que están
disponibles (free list) y selecciona la primera que encuentra.
– Para actualizaciones (UPDATE) cualquier espacio libre puede ser utilizado.
Páginas o Bloques de Datos (data blocks)
• Reagrupación del Espacio Libre en una Página:
– El espacio libre aumenta por las instrucciones DELETE o UPDATE (si la
actualización establece valores que ocupan menos espacio).
– Todo ese espacio libre podrá usarlo una instrucción INSERT:
• Si la instrucción INSERT está en la misma transacción que la instrucción que
ha generado el espacio libre (y situado después, naturalmente).
• Si la instrucción INSERT está en otra transacción y la transacción que deja el
espacio libre ya efectuó su COMMIT. Posiblemente ambas transacciones sean
de distintos usuarios.
• Encadenamiento y Migración de Filas:
– Los datos de una fila pueden ser demasiado grandes para caber en una página:
• La fila es muy grande: Oracle almacena la fila en una cadena de páginas del
mismo segmento.
– Con datos grandes (como el tipo LONG) esta fragmentación es inevitable.
• Una fila es actualizada y sus nuevos valores no caben en su página
actual: Oracle traslada toda la fila a una nueva página, suponiendo que
caben en una nueva página.
– Oracle conserva la cabecera de la fila en su página inicial, apuntando a la nueva
dirección en la nueva página. Así, el identificador de fila (ROWID) no cambia.
– Esto hace que la eficiencia al tratar esta fila sea menor, ya que Oracle debe leer
más de una página para recuperar la información de esa fila.
7
8
4
Extensiones (extents)
• Un Segmento es un Conjunto de Extensiones.
– Si un segmento se llena, Oracle crea una nueva extensión para ese
segmento (incremental extent) del mismo tamaño o superior.
• Hay Dos Formas de Gestionar las Extensiones:
– Extensiones Gestionadas Localmente (LOCAL): Al crear un tablespace
se pueden especificar las siguientes opciones:
• AUTOALLOCATE: Son gestionadas por el sistema. Se especifica el
tamaño de la extensión inicial y el tamaño del resto es calculado por
Oracle, con un mínimo de 64KB.
• UNIFORM: El tamaño especificado es para todas las extensiones
(1MB por defecto).
– Extensiones Gestionadas por el Diccionario de Datos (DICTIONARY):
Utilizan como valores por defecto los valores almacenados en el
Diccionario de Datos de la Base de Datos. Esos valores por defecto
pueden modificarse en cualquier momento.
• Estos valores son INITIAL (tamaño del primero), NEXT (tamaño del
segundo) y PCTINCREASE (porcentaje de incremento en el tamaño
del siguiente respecto al anterior).
9
Extensiones (extents)
• Eliminar Extensiones: En general, las extensiones de un segmento no
son liberadas (deallocated) a no ser que borre el objeto almacenado en el
segmento (mediante una instrucción DROP TABLE o DROP CLUSTER).
– No obstante se producen algunas excepciones. Por
Comentarios de: Administración de Bases de Datos (0)
No hay comentarios