Download - 1 Bases de Datos e Instancias
-
7/22/2019 1 Bases de Datos e Instancias
1/83
1 Bases de Datos e Instancias
Estos son dos conceptos fundamentales para entender la arquitectura de Oracle.
En trminos sencillos, una instancia de BD es un conjunto de procesos del servidor Oracle quetiene su propio rea global de memoria y una base de datos asociada a ellos.
1.1 Base de Datos
Una Base de Datos Oracle es un conjunto de datos almacenado y accesible segn el formato de
tablas relacionales. Una tabla relacional tiene un nombre y unas columnas, su definicin. Los
datos estn almacenados en las filas. Las tablas pueden estar relacionadas con otras.
Una Base de Datos Oracle est almacenada fsicamente en ficheros, y la correspondencia entre
los ficheros y las tablas es posible gracias a las estructuras internas de la BD, que permiten que
diferentes tipos de datos estn almacenados fsicamente separados. Est divisin lgica se
hace gracias a los espacios de tablas, tablespaces.
1.1.1 Los Espacios de Tablas, Tablespaces
Un espacio de tablas es una divisin lgica de la BD. Cada BD tiene al menos uno (SYSTEM). Un
espacio de tablas puede pertenecer slo a una BD. Los espacios de tablas se utilizan para
mantener juntos los datos de usuarios o de aplicaciones para facilitar su mantenimiento o
mejorar las prestaciones del sistema.
De esta manera, cuando se crea una tabla se debe indicar el espacio de tablas al que se
destina. Por defecto se depositan en el espacio de tablas SYSTEM, que se crea por defecto.
Este espacio de tablas es el que contiene el diccionario de datos, por lo que conviene
reservarlo para el uso del servidor, y asignar las tablas de usuario a otro.
Lo razonable y aconsejable es que cada aplicacin tenga su propio espacio de tablas.
Hay varias razones que justifican este modo de organizacin de las tablas en espacios de
tablas:
Un espacio de tablas puede quedarse offline debido a un fallo de disco, permitiendo que elSGBD contine funcionando con el resto.
-
7/22/2019 1 Bases de Datos e Instancias
2/83
Los espacios de tablas pueden estar montados sobre dispositivos pticos si son de slo lectura.
Permiten distribuir a nivel lgico/fsico los distintos objetos de las aplicaciones.
Son una unidad lgica de almacenamiento, pueden usarse para aislar completamente los datos
de diferentes aplicaciones.
Oracle permite realizar operaciones de backup/recovery a nivel de espacio de tabla mientras la
BD sigue funcionando.
Cuando se crean se les asigna un espacio en disco que Oracle reserva inmediatamente, se
utilice o no. Si este espacin inicial se ha quedado pequeo Oracle puede gestionar el
crecimiento dinmico de los ficheros sobre los que se asientan los espacios de tablas. Esto
elimina la posibilidad de error en las aplicaciones por fallos de dimensionamiento inicial. Los
parmetros de crecimiento del tamao de los espacios de tablas se especifican en la creacin
de los mismos.
Se pueden ver los espacios de tablas definidos en nuestra BD con el comando SQL siguiente:
SQL> select * from user_tablespaces;
Dentro de cada espacio de tabla se pueden almacenar objetos de distinta naturaleza: tablas,
ndices, etc. Pero no se pueden mezclar si ms. Necesitamos una manera de separarlos, y eso
son los segmentos.
Se pueden almacenar ms de un segmento por espacio de tabla. Un segmento est contenido
en su totalidad en un espacio de tabla. Un segmento est constituido por un conjunto de
extensiones, que no son ms que grupos de bloques de disco ORACLE contiguos. Cuando se
borra un segmento, el espacio es devuelto al espacio de tabla.
Todos los datos de la BD estn almacenados en segmentos. Y existen 5 tipos de segmentos:
de datos: almacenan las tablas.
de ndices: permiten un acceso rpido a los datos dependiendo de la cantidad de los mismos
(rboles B). Las consultas que slo referencian a columnas indexadas se resuelven en el ndice.
Establecen un control de unicidad (los ndices son automticos cuando se definen claves
primarias). Cada ndice ocupa un segmento independiente del segmento de datos y deberan
estar en un espacio de tablas distinto al de los datos, para mejorar el rendimiento.
de rollback: son objetos internos de la BD que permiten efectuar la restauracin de las
transacciones no validadas asegurando la consistencia en lectura. La estructura de los registros
de rollback es :
-
7/22/2019 1 Bases de Datos e Instancias
3/83
Identificador de la transaccin.
Direccin del bloque donde est la tabla.
Nmero de fila.
Nmero de columna.Valor del dato antiguo (antes de ser modificado).
Son tan importantes que una BD no puede arrancar si no puede acceder al menos a un
segmento de rollback. Si la BD tiene mltiples espacios de tablas, deben existir al menos dos
segmentos de rollback y cada segmento de rollback debe tener al menos dos extensiones,
reutilizables de manera cclica. Esto segmentos son un objeto compartido de la BD, aunque se
puede asinar un segmento de rollback particular a una transaccin dada.
temporales: son creados por Oracle para un uso temporal cuando debe realizar unaordenacin que no le cabe en memoria, y en las operaciones: create index, order by, group by,
distinct, union, intersect, minus. Son eliminados cuando la sentencia finaliza.
de bootstrap: Se crea en SYSTEM y contiene definiciones del diccionario para sus tablas, que se
cargan al abrir la BD. No requiere ninguna accin por parte del DBA. No cambia de tamao.
La tabla que guarda la informacin de los segmentos de usuario es user_segments, y se puede
visualizar la informacin sobre los segmentos con la sentencia SQL siguiente:
SQL> select * from user_segments;
1.1.2 Ficheros
Cada espacio de tablas se compone de uno o ms ficheros en disco. Un fichero puede
pertenecer slo a un espacio de tablas. Los ficheros reciben un tamao fijo en el momento de
su creacin, y cuando se necesita ms espacio se deben aadir ms ficheros a espacio de
tablas.
Dividir los objetos de la BD entre mltiples espacios de tablas permiten que los objetos sean
almacenados fsicamente en discos separados, dependiendo de donde estn los ficheros sobre
los que se asientan.
1.2 Instancias
-
7/22/2019 1 Bases de Datos e Instancias
4/83
Para permitir el acceso a los datos, Oracle utiliza un conjunto de procesos que son compartidos
por todos los usuarios. Adems, existen estructuras de memoria que son utilizadas para
almacenar los datos ms recientemente solicitados a la BD.
Una instancia de BD es el conjunto de estructuras de memoria y de procesos que acceden a losficheros de datos.
Los parmetros que determinan el tamao y composicin de una instancia estn almacenados
en un fichero llamado init.ora. Este fichero es leido durante el arranque de la BD y puede ser
modificado por el DBA. Cualquier modificacin de este fichero no tiene efecto hasta la
siguiente vez que se arranque la BD.
Las estructuras de la BD Oracle pueden ser divididas en tres clases:
aquellas que son internas a la BD,
aquellas que son internas a las reas de memoria (incluidas la memoria compartida y
procesos),
aquellas que son externas a la BD.
1.3 Estructuras Internas de la BD
Tablas y Columnas
Los datos son almacenados en la BD utilizando tablas. Cada tabla est compuesta por un
nmero determinado de columnas.
Las tablas propiedad del usuario SYS son llamadas tablas del diccionario de datos. Proveen el
catlogo del sistema que permite que la BD se gestione a s misma.
Las tablas se pueden relacionar entre ellas a travs de las columnas que las componen. La BD
se puede utilizar para asegurar el cumplimiento de esas relaciones a travs de la integridad
referencial, que se concreta en las restricciones de tablas.
Restricciones de Tablas
-
7/22/2019 1 Bases de Datos e Instancias
5/83
Una tabla puede tener asociadas restricciones que deben cumplir todas las filas. Entre las
restricciones que se pueden fijar algunas reciben nombres especiales.: clave primaria, clave
ajena.
La clave primaria de una tabla est compuesta por las columnas que hacen a cada fila de latabla una fila distinta.
La clave ajena se utiliza para especificar las relaciones entre tablas. De modo que un conjunto
de columnas declaradas como clave ajena de una tabla deben tener valores tomados de la
clave primaria de otra tabla.
Usuarios
Una cuenta de usuario no es una estructura fsica de la BD, pero est relacionada con los
objetos de la BD: los usuarios poseen los objetos de la BD. Existen dos usuarios especiales: SYS
y SYSTEM. El usuarios SYS posee las tablas del diccionario de datos; que almacenan
informacin sobre el resto de las estructuras de la BD. El usuario SYSTEM posee las vistas que
permiten acceder a las tablas del diccionario, para el uso del resto de los usuarios de la BD.
Todo objeto creado en la BD se crea por un usuario, en un espacio de tablas y en un fichero de
datos determinado. Toda cuenta de la BD puede estr unida a una cuenta del S.O., lo quepermite a los usuarios acceder a la cuenta de la BD sin dar la clave de acceso.
Cada usuario puede acceder a los objetos que posea o a aquellos sobre los que tenga derecho
de acceso.
Esquemas
El conjunto de objetos de un usuario es conocido como esquema.
ndices
Un ndice es una estructura de la BD utilizada para agilizar el acceso a una fila de una tabla.
Cada fila tiene un identificador de fila, ROWID, que determina el fichero, bloque y fila dentro
del bloque donde est almacenada la fila.
-
7/22/2019 1 Bases de Datos e Instancias
6/83
Cada entrada del ndice consite en un valor clave y una ROWID. Cada una de estas entradas se
almacena en un rbol B+.
Los ndices se crean automticamente cuando se define una restriccin UNIQUE o PRIMARY
KEY.
Clusters
Las tablas que son accedidas juntas frecuentemente pueden ser almacenadas juntas. Para ello
se crea un cluster. De este modo se minimiza el nmero de E/S.
Las columnas que relacionan las tablas de un cluster se llaman clave del cluster.
Vistas
Conceptualmente, una vista puede considerarse como una mscara que se extiende sobre una
o ms tablas, de modo que cada columna de la vista se corresponde con una o ms columnas
de las tablas subyacentes. Cuando se consulta una vista, esta traspasa la consulta a las tablas
sobre las que se asienta. Las vistas no se pueden indexar.
Las vistas no generan almacenamiento de datos, y sus definiciones se almacenan en el
diccionario de datos.
Secuencias
Las definiciones de secuencias se almacenan en el diccionario de datos. Son mecanismos para
obtener listas de nmeros secuenciales.
Procedimientos y Funciones
Un procedimiento es un bloque de cdigo PL/SQL, que se almacena en el diccionario de datos
y que es llamado por las aplicaciones. Se pueden utilizar para implementar seguridad, no
dando acceso directamente a determinadas tablas sino es a travs de procedimientos que
acceden a esas tablas. Cuando se ejecuta un procedimiento se ejecuta con los privilegios del
propietario del procedimiento. La diferencia entre un procedimiento y una funcin es que staltima puede devolver valores.
-
7/22/2019 1 Bases de Datos e Instancias
7/83
Paquetes, Packages
Se utilizan para agrupar procedimientos y funciones. Los elementos dentro de los paquetespueden ser pblicos o privados. Los pblicos pueden ser llamados por los usuarios, los
privados estn ocultos a los usuarios y son llamados por otros procedimientos.
Disparadores, Triggers
Son procedimientos que son ejecutados cuando se procude un determinado evento en la BD.
Se pueden utilizar para mejorar y reforzar la integridad y la seguridad de la BD.
Sinnimos
Para identificar completamente un objeto dentro de una BD se necesita especificar el nombre
de la mquina, el nombre del servidor, el nombre del propietario y el nombre del objeto. Para
hacer transparente todo esto al usuario se pueden utilizar los sinnimos. stos apuntarn a los
objetos y si el objeto cambia de lugar o propietario, slo habr que modificar el sinnimo.
Existen sinnimos pblicos y privados. Los pblicos son conocidos por todos los usuarios de
una BD. Los privados son locales a un usuario.
Privilegios y Roles
Para que un objeto pueda ser accedido por un usuario debe de tener otorgado ese privilegio.
Ejemplos de privilegios son INSERT, SELECT, UPDATE, EXECUTE, etc.
Los roles son grupos de privilegios que pueden ser utilizados para facilitar la gestin de losprivilegios. Los privilegios se pueden otorgar a un rol, y los roles pueden ser otorgados a
mltiples usuarios.
Segmentos, Extensiones y Bloques
Los segmentos son los equivalentes fsicos de los objetos que almacenan datos. El uso efectivo
de los segmentos requiere que el DBA conozca los objetos que utiliza una aplicacin, cmo los
datos son introducidos en esos objetos y el modo en que sern recuperados.
-
7/22/2019 1 Bases de Datos e Instancias
8/83
Como los segmentos son entidades fsicas, deben estar asignados a espacios de tablas en la BD
y estarn localizados en uno de los ficheros de datos del espacio de tablas. Un segmento est
constituido por secciones llamadas extensiones, que son conjuntos contiguos de bloques
Oracle. Una vez que una extensin existente en un segmento no puede almacenar ms datos,el segmento obtendr del espacio de tabla otra extensin. Este proceso de extensin
continuar hasta que no quede ms espacio disponible en los ficheros del espacio de tablas, o
hasta que se alcance un nmero mximo de extensines por segmento.
Segmento de Rollback
Para mantener la consistencia en lectura y permitir deshacer las transacciones, Oracle debe
tener un mecanismo para reconstruir la imgen previa a una transaccin incompleta. Oracle
utiliza los segmentos de rollback para esto.
Los segmentos de rollback pueden crecer tanto como sea necesario para soportar las
transacciones.
1.4 Estructuras de Memoria Internas
Oracle mantiene dos estructuras principales de memoria: el rea Global de Programa, Program
Global Area, PGA; y el rea Global del Sistema, System Global Area o tambin Shared Global
Area, SGA.
El PGA es la zona de memoria de cada proceso Oracle. No est compartida y contiene datos e
informacin de control de un nico proceso.
El SGA es la zona de memoria en la que la BD Oracle guarda informacin sobre su estado. Esta
estructura de memoria est disponible para todos los procesos, por eso se dice que est
compartida.
1.4.1 rea Global del Sistema, SGA
Sirve para facilitar la transferencia de informacin entre usuarios y tambin almacena la
informacin estructural de la BD ms frecuentemente requerida.
-
7/22/2019 1 Bases de Datos e Instancias
9/83
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 tamao
de buffer cach se fija por el parmetro DB_BLOCK_BUFFERS del fichero init.ora.
Como el tamao del buffer suele ser pequeo para almacenar todos los bloques de datos
leidos, su gestin se hace mediante el algoritmo LRU.
Buffer Redo Log
Los registros Redo describen los cmbios realizados en la BD y son escritos en los ficheros redo
log para que puedan ser utilizados en las operaciones de recuperacin 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
peridicamente los registros redo log en los ficheros redo log.
El tamao del buffer redo log se fija por el parmetro LOG_BUFFER.
rea de SQL Compartido, Shared SQL Pool
En esta zona se encuentran las sentencias SQL que han sido analizadas. El analisis sintctico 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 programacin 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:
Plan de ejecucin de la sentencia SQL.
Texto de la sentencia.
Lista de objetos referenciados.
Los pasos de procesamiento de cada peticin de anlisis de una sentencia SQL son:
-
7/22/2019 1 Bases de Datos e Instancias
10/83
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.
Si no, la sentencia es nueva, se analiza y los datos de anlisis se almacenan en la zona de SQLcompartida.
Tambin se almacena en la zona de SQL compartido el cach del diccionario. La informacin
sobre los objetos de la BD se encuentra almacenada en las tablas del diccionario. Cuando esta
informacin se necesita, se leen las tablas del diccionario y su informacin se guarda en el
cach del diccionario de la SGA.
Este cach tambin se administra mediante el algoritmo LRU. El tamao del cach estgestionado internamente por el servidor, pero es parte del shared pool, cuyo manao viene
determinado por el parmetro SHARED_POOL_SIZE.
1.4.2 rea Global de Programa
El Program Global Area es un rea de memoria utilizada por un proceso Oracle. Esta zona de
memoria no se puede compartir.
1.5 Estructuras de Proceso
El servidor se vale de una serie de procesos que son el enlace entre las estructuras fsicas y de
memoria. A continuacin se describen cada proceso y el papel que juega en la gestin de laBD.
Todo esto se puede ver en la siguiente figura.
Arquitectura Oracle
System Monitor, SMON
El SMON es el supervisor del sistema y se encarga de todas las recuperaciones que sean
necesarias durante el arranque. Esto puede ser necesario si la BD se par inesperadamente por
fallo fsico, lgico u otras causas. Este proceso realiza la recuperacin de la instancia de BD a
partir de los ficheros redo log. Adems lmpia los segmentos temporales no utilizados y
compacta los huecos libres contiguos en los ficheros de datos. Este proceso se despiertaregularmente para comprobar si debe intervenir.
-
7/22/2019 1 Bases de Datos e Instancias
11/83
Process Monitor, PMON
Este proceso restaura las transacciones no validadas de los procesos de usuario que abortan,liberando los bloqueos y los recursos de la SGA. Asume la identidad del usuario que ha fallado,
liberando todos los recursos de la BD que estuviera utilizando, y anula la transaccin
cancelada. Este proceso se despierta regularmente para comprobar si su intervencin es
necesaria.
Database Writer, DBWR
El proceso DBWR es el responsable de gestionar el contenido de los buffers de datos y delcach del diccionario. l lee los bloques de los ficheros de datos y los almacena en la SGA.
Luego escribe en los ficheros de datos los bloques cuyo contenido ha variado. La escritura de
los bloques a disco es diferida buscando mejorar la eficiencia de la E/S.
Es el nico proceso que puede escribir en la BD. Esto asegura la integridad. Se encarga de
escribir los bloques de datos modificados por las transacciones, tomando la informacin del
buffer de la BD cuando se valida una transaccin. Cada validacin no se lleva a la BD fsica de
manera inmediata sino que los bloques de la BD modificados se vuelcan a los ficheros de datos
periodicamente o cuando sucede algn checkpoint o punto de sincronizain: grabacin
diferida:
Los bloques del buffer de la BD (bloques del segmento de rollback y bloques de datos) menos
recientemente utilizados son volcados en el disco continuamente para dejar sitio a los nuevos
bloques.
El bloque del segmento de rollback se escribe SIEMPRE antes que el correspondiente bloque
de datos.
Mltiples transacciones pueden solapar los cambios en un slo bloque antes de escribirlo en el
disco.
Mientras, para que se mantenga la integridad y coherencia de la BD, todas las operaciones se
guardan en los ficheros de redo log. El proceso de escritura es asncrono y puede realizar
grabaciones multibloque para aumentar la velocidad.
Log Writer, LGWR
El proceso LGWR es el encargado de escribir los registros redo log en los ficheros redo log. Losregistros redo log siempre contienen el estado ms reciente de la BD, ya que puede que el
-
7/22/2019 1 Bases de Datos e Instancias
12/83
DBWR deba esperar para escribir los bloques modificados desde el buffer de datos a los
ficheros de datos.
Conviene tener en cuenta que el LGWR es el nico proceso que escribe en los ficheros de redo
log y el nico que lee directamente los buffers de redo log durante el funcionamiento normalde la BD.
Coloca la informacin de los redo log buffers en los ficheros de redo log. Los redo log buffers
almacenan una copia de las transacciones que se llevan a cabo en la BD. Esto se produce:
a cada validacin de transaccin, y antes de que se comunique al proceso que todo ha ido
bien,
cuando se llena el grupo de buffers de redo log
cuando el DBWR escribe buffers de datos modificados en disco.
As, aunque los ficheros de DB no se actualicen en ese instante con los buffers de BD, la
operacin queda guardada y se puede reproducir. Oracle no tiene que consumir sus recursos
escribiendo el resultado de las modificaciones de los datos en los archivos de datos de manera
inmediata. Esto se hace porque los registros de redo log casi siempre tendrn un tamao
menor que los bloques afectados por las modificaciones de una transaccin, y por lo tanto el
tiempo que emplea en guardarlos es menor que el que empleara en almacenar los bloques
sucios resultado de una transaccin; que ya sern trasladados a los ficheros por el DBWR. El
LGWR es un proceso nico, para asegurar la integridad. Es asncrono. Adems permite las
grabaciones multibloque.
Checkpoint, CKPT
Este proceso escribe en los ficheros de control los checkpoints. Estos puntos de sincronizacin
son referencias al estado coherente de todos los ficheros de la BD en un instante determinado,
en un punto de sincronizacin. Esto significa que los bloques sucios de la BD se vuelcan a los
ficheros de BD, asegurndose de que todos los bloques de datos modificados desde el ltimo
checkpoint se escriben realmente en los ficheros de datos y no slo en los ficheros redo log; y
que los ficheros de redo log tambin almacenan los registros de redo log hasta este instante.
La secuencia de puntos de control se almacena en los ficheros de datos, redo log y control. Los
checkpoints se produce cuando:
un espacio de tabla se pone inactivo, offline,
se llena el fichero de redo log activo,
se para la BD,
-
7/22/2019 1 Bases de Datos e Instancias
13/83
el nmero de bloques escritos en el redo log desde el ltimo checkpoint alcanza el lmite
definido en el parmetro LOG_CHECKPOINT_INTERVAL,
cuando transcurra el nmero de segundos indicado por el parmetro
LOG_CHECKPOINT_TIMEOUT desde el ltimo checkpoint.
Est activo si el parmetro CHECKPOINT_PROCESS tiene un valor verdadero.
Archiver, ARCH
El proceso archivador tiene que ver con los ficheros redo log. Por defecto, estos ficheros se
reutilizan de manera cclica de modo que se van perdiendo los registros redo log que tienen
una cierta antiguedad. Cuando la BD se ejecuta en modo ARCHIVELOG, antes de reutilizar un
fichero redo log realiza una copia del mismo. De esta manera se mantiene una copia de todos
los registros redo log por si fueran necesarios para una recuperacin. Este es el trabajo delproceso archivador.
Recoverer, RECO
El proceso de recuperacin est asociado al servidor distribuido. En un servidor distribuido los
datos se encuentran repartidos en varias localizaciones fsicas, y estas se han de mantener
sincronizadas. Cuando una transaccin distribuida se lleva a cabo puede que problemas en la
red de comunicacin haga que una de las localizaciones no aplique las modificaciones debidas.
Esta transaccin dudosa debe ser resuelta de algn modo, y esa es la tarea del proceso
recuperador. Est activo si el parmetro DISTRIBUTED_TRANSACTIONS tiene un valor distinto
de 0.
Lock, LCK
El proceso de bloqueo est asociado al servidor en paralelo.
1.6 Estructuras Externas
Por estructuras externas se entienden los ficheros que utiliza el servidor de BD, de los cuales
ya se han ido contanto algunos aspectos, y otros se han ido intuyendo. Estos ficheros guardan
informacin tanto de los datos almacenados en la BD como la necesaria para gobernar la
propia BD.
Ficheros de la BD
-
7/22/2019 1 Bases de Datos e Instancias
14/83
En estos ficheros reside la informacin de la BD. Solo son modificados por el DBWR. A ellos se
vuelcan los bloques sucios de la SGA cuando se hace una validacin o cuando sucede un
checkpoint. Las validaciones de las transacciones no producen un volcado inmediato, sino lo
que se conoce por un commit diferido. Toda actualizacin se guarda en los ficheros de redo
log, y se lleva a la BD fsica cuando tenemos una buena cantidad de bloques que justifiquen
una operacin de E/S. Almacenan los segmentos (datos, ndices, rollback) de la BD. Estndivididos en bloques (Bloque Oracle = c * Bloque SO), cada uno de los cuales se corresponde
con un buffer del buffer cache de la SGA. En el bloque de cabecera no se guardan datos de
usuario, sino la marca de tiempo del ltimo checkpoint realizado sobre el fichero.
Ficheros redo log
En ellos se graba toda operacin que se efectue en la BD y sirven de salvaguarda de la misma.
Tiene que haber por lo menos 2, uno de ellos debe estar activo, online, y se escribe en ellos deforma cclica. Existe la posibilidad de almacenar los distintos ficheros de redo log en el tiempo
mediante el modo ARCHIVER. As, se puede guardar toda la evolucin de la BD desde un punto
dado del tiempo.
Una opcin es la utilizacin de archivos redo log multiplexados:
Permite al LGWR escribir simultaneamente la misma informacin en mltiples archivos redo
log.
Se utiliza para protegerse contra fallos en el disco.
Da una alta disponibilidad a los archivos redo log activos u online.
Esto se hace definiendo el nmero de grupos y de miembros de archivos redo log que van a
funcionar en paralelo:
grupos: funcionan como ficheros redo log normales, uno de ellos est activo y el resto espera
su turno.
Su nombre lleva incorporado una numeracin.
Deben contener todos el mismo nmero de miembros.
miembros: cada escritura de un registro redo log se lleva a cabo en todos los miembros del
grupo activo en ese momento. Los miembros deben:
tener el mismo tamao y el mismo nmero de secuencia.
deben tener nombres similares y estar en diferentes discos para proteger contra fallos de una
manera efectiva.
Cuando se produce algn fallo en los ficheros de redo log o en el proceso LGWR:
-
7/22/2019 1 Bases de Datos e Instancias
15/83
Si la escritura en un fichero redo log falla pero el LGWR puede escribir al menos en uno de los
miembros del grupo, lo hace , ignorando el fichero inaccesible y registrando un fallo en un
fichero de traza o alerta.
Si el siguiente grupo no ha sido archivado (modo ARCHIVELOG) antes del cambio de grupo quelo pone activo, ORACLE espera hasta que se produzca el archivado.
Si fallan todos los miembros de un grupo mientras el LGWR trata de escribir, la instancia se
para y necesita recupecin al arrancar.
Se pueden visualizar los nombres y estado de los ficheros de redo log:
SVRMGR> select group#, status, substr(member,1,60) from v$logfile;Tambin se pueden visualizar estadsticas de los ficheros redo log:
SVRMGR> select group#, sequence#, bytes, members, archived,
2 status, first_change#, first_time from v$logfile;
Ficheros de control
Mantienen la informacin fsica de todos los ficheros que forman la BD, camino incluido; as
como el estado actual de la BD. Son utilizados para mantener la consistencia interna y guiar las
operaciones de recuperacin. Son imprescindibles para que la BD se pueda arrancar.
Contienen:
Infomacin de arranque y parada de la BD.
Nombres de los archivos de la BD y redo log.
Informacin sobre los checkpoints.
Fecha de creacin y nombre de la BD.
Estado online y offline de los archivos.
Debe haber mltiples copias en distintos discos, mnimo dos, para progerlos de los fallos de
disco. La lista de los ficheros de control se encuentra en el parmetro CONTROL_FILES, que
debe modificarse con la BD parada.
Se puede componer una sentencia SQL que nos muestre todos los ficheros asociados a una BD.Esta es:
-
7/22/2019 1 Bases de Datos e Instancias
16/83
SQL> select 'control' tipo, substr(name,1,70) nombre from v$controlfile
2 union all3 select 'datos' tipo, substr(name,1,70) nombre from v$datafile
4 union all
5 select 'redo log' tipo, substr(name,1,70) nombre from v$logfile
6 /
Hasta aqu los tipos de ficheros que se suelen considerar fundamentales en la arquitectura del
SGBD Oracle. Pero existen otros ficheros, que aunque no forman parte de la arquitectura
Oracle resultan importantes en el uso del SGBD.
El Fichero INIT.ORA
Como parte de la distribucin software, Oracle provee de un fichero de parmetros de
inicializacin llamado init.ora. Este fichero contiene los parmetros del sistema Oracle y debe
ser utilizado por el DBA para configurar el SGDB y adecuarlo a una determinada explotacin.
Oracle lee este fichero durante el proceso de arranque para determinar el tamao de la SGA y
encontrar los ficheros de control, entre otros menesteres.
Como el fichero init.ora es fundamental para el arranque de la BD, debera ser copiado
frecuentemente para protegerlo de posibles prdidas.
Ficheros de Traza
Orace crea ficheros de texto llamados de traza para ayudar en la diagnosis de problemas y en
el ajuste del SGBD. Cada proceso del servidor escribe en un fichero de traza asociado cuandoes necesario. Los procesos de usuarios tambin pueden tener asociados ficheros de traza. La
situacin de estos ficheros de traza del sistema se especifica por el parmetro
BACKGROUND_DUMP_DEST, y los de usuario por USER_DUMP_DEST. Oracle crea ficheros de
traza automticamente cuando ocurre algn error.
Un parmetro muy frecuentemente utilizado por los desarrolladores Oracle es el SQL_TRACE,
que cuando est puesto a TRUE produce que toda sentencia SQL ejecutada genere informacin
en los ficheros de traza. Este parmetro se puede variar con el siguiente comando:
-
7/22/2019 1 Bases de Datos e Instancias
17/83
SQL> alter session set SQL_TRACE=TRUE;
Session Altered.
El directorio donde se depositan los ficheros de traza debe de examinarse con regularidad paracontrolar el tamao de los fichero alli depositados.
2 Ciclo de Ejecucin
Para ilustrar el funcionamiento del servidor Oracle vamos a ver el ciclo de ejecucin de una
sentencia de lectura y otra de actualizacin.
2.1 Ciclo de Lectura
Las sentencias de lectura siguen el siguiente ciclo:
El proceso cliente pasa la sentencia SQL (SELECT) al proceso servidor por medio de la SGA.
Los procesos del servidor buscan en la zona de SQL compartido una versin ejecutable de la
sentencia. Si la encuentran no tienen que procesarla.
Se procesa la sentencia SQL y su versin ejecutable se coloca en la zona de SQL compartido.
El proceso del servidor intenta leer los bloques de datos de la SGA. Si no estn, se han de leer
del fichero de datos. Si los bloques estn en la SGA pero han sido modificados por otro usuario
y esa modificacin no ha sido validada an, el proceso de servidor debe reconstruir la imagen
de la fila a partir de los segmentos de rollback, para conseguir consistencia en lectura.
El proceso servidor pasa los datos solicitados al proceso cliente.
2.2 Ciclo de Actualizacin
Las sentencias de actualizacin siguen el siguiente ciclo:
El proceso cliente pasa la sentencia SQL (UPDATE) al proceso servidor por medio de la SGA.
Los procesos del servidor buscan en la zona de SQL compartido una versin ejecutable de la
sentencia. Si la encuentran no tienen que procesarla.
Se procesa la sentencia SQL y su versin ejecutable se coloca en la zona de SQL compartido.
El proceso del servidor intenta leer los bloques de datos de la SGA. Si no estn, se han de leerdel fichero de datos.
-
7/22/2019 1 Bases de Datos e Instancias
18/83
Se registra el valor antiguo de los datos en un segmento de rollback y se crea un registro redo
log.
Se crea una copia de la transaccin en un registro redo log.
Se ejecuta la sentencia SQL modificando los datos, y se crea un registro redo log que as lo
refleja.
El proceso usuario valida la transaccin (COMMIT), registrandose en un registro redo log.
El LGWR escribe los buffers del redo log en el disco.
El servidor indica al cliente que la operacin ha sido completada de manera satisfactoria.
Se registra la terminacin de la transaccin en un registro redo log.
Se libera la informacin del rollback, pues ya no va a necesitarse.
Si a partir del paso 6 el usuario cancela la transaccin (ROLLBACK), se puede utilizar la
informacin de rollback para restablecer el valor original.
Si sucede algo que impida que la transaccin validada por el usuario pueda llevarse a cabo, se
puede utilizar la informacin contenida en los registros redo log para rehacer la transaccin (a
partir del paso 6).
Como ocurre con todas las transacciones, en algn momento el DBWR escribe en el archivo de
datos la copia de los bloques de datos modificados que se encuentran en el buffer cache.
3 Configuracin
3.1 El Cdigo Oracle
Cuando el software Oracle se instala en un sistema, se crean subdirectorios y ficheros,
dependientes todos ellos del S.O. Por ejemplo, en el S.O. Unix, todo los subdirectorios Oracle
se encuentran colgando del directorio principal ORACLE_HOME. Todos estos subdirectorioscontienen ficheros ejecutables y scripts que son cruciales para el funcionamiento y la
administracin del SGBD, y es lo que se conoce por el cdigo Oracle. Entre ellos, una
herramienta nos va a ser fundamental en las tareas de adminstracin y puesta en marcha de la
BD: server manager, svrmgr. Con ella son convertiremos en DBA, y para ejecutarla deberemos
ser sus propietarios. La sentencia es la siguiente:
SVRMGR> connect internalConnected.
-
7/22/2019 1 Bases de Datos e Instancias
19/83
Todas las operaciones de administracin deben comenzar por conectarse a la BD.
3.2 Arranque y Parada de la BDDurante el arranque y parada de la BD se sucenden un conjunto de eventos que llevan a la BD
por diferentes estados.
Para que los usuarios puedan acceder a la BD el DBA necesita abrir la BD. El siguiente es un
ejemplo de apertura de una BD llamada test.
SVRMGR> startup open test
ORACLE instance started.
Total System Global Area 4512688 bytes.
Fixed Size 39732 bytes.
Variable Size 4055164 bytes.
Database Buffers 409600 bytes.
Redo Bufers 8192 bytes.
Database mounted.
Database opened.
cuando se ejecuta el comando startup open la BD pasa por tres estados (nomount, mount y
open) antes de estar disponible. El DBA puede arrancar la BD hasta uno de los estados con el
comando startup: startup nomount, startup mount. A continuacin vamos a describir cada uno
de los estados por los que pasa la BD en el proceso de arranque.
nomount
SVRMGR> startup open test
ORACLE instance started.
Total System Global Area 4512688 bytes.
Fixed Size 39732 bytes.
Variable Size 4055164 bytes.
-
7/22/2019 1 Bases de Datos e Instancias
20/83
Database Buffers 409600 bytes.
Redo Bufers 8192 bytes.
Oracle lee el fichero init.ora, localiza los ficheros de control, crea e inicializa la SGA, y
finalmente arranca todos los procesos Oracle. En este estado la instancia de BD est
arrancada. Se deber llevar la BD al estado nomount cuando se est creando la BD o cuando seest restaurando un fichero de control despus de haberlo perdido.
mount
SVRMGR> alter database mount;
Statement processed.
Oracle abre los ficheros de control para localizar los ficheros de datos y los redo log, pero no serealizan ninguna comprobacin en ellos en este momento. La instancia monta la BD y la
bloquea, verificando que ninguna otra instancia ha montado la misma BD.
Hay varias razones para querer tener la BD en el estado mount. En general, todas las
sentencias SQL del tipo alter database se deben ejecutar en esta etapa. Algunas de las
operaciones a realizar cuando la BD est montada son:
efectuar recuperaciones,
poner online/offline un fichero de datos,
recolocar los ficheros de datos y redo log,
crear un nuevo grupo o miembro redo log, o borrar un grupo o miembro redo log existente.
open
SVRMGR> alter database open;
Statement processed.
Durante esta etapa, la instancia abre la BD, bloquea los ficheros de datos, y abre todos los
ficheros redo log. Si la instancia abre la BD despus de una terminacin anormal, o despus de
una caida, se ejecutar automticamente el proceso de recuperacin utilizando los ficheros
redo log. Al final de esta etapa la BD est dispuesta para su uso normal.
Para parar la BD el comando base es shutdown como se puede ver en el siguiente ejemplo:
-
7/22/2019 1 Bases de Datos e Instancias
21/83
SVRMGR> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.Pero este comando se nos presenta con tres opciones: normal, immediate y abort.
shutdown normal
Se impide el acceso a la BD, espera a que todos los usuarios completen todas sus peticiones y
se desconecten del servidor. Purga todos los buffers de datos y cachs de redo log,
actualizando los ficheros de datos y de redo log, se eliminan los bloqueos de ficheros, se
completan las transacciones en marcha, se actualizan las cabeceras de ficheros, elimina los
threads, libera los bloqueos de la BD por parte de la instancia, y sincroniza los ficheros decontrol y de datos. En resumen, la opcin normal cierran la BD, desmonta la BD y para la
instancia con cuidado y es la opcin recomendada para parar la BD.
shutdown immediate
En ciertas ocasiones puede ser necesario parar la BD de modo inmediato. Si es as, las
sentencias en proceso son terminadas inmediatamente, cualquier transaccin no confirmada
(uncommitted) es vuelta atrs (rolled back) y la BD es parada. La nica desventaja de utilizar
esta opcin es que Oracle no espera a que los usuarios se desconecten. Sin embargo, la BD
ser consistenta y no se necesitar recuperacin en el siguiente arranque.
shutdown abort
En situaciones de emergencia, y cuando todo lo dems falla, se debe realizar una parada de
este tipo. Por ejemplo, cuando un proceso de la instancia muere y la BD no puede pararse de
modo normal o inmediato. Cuando se utiliza la opcin abort las sentencias SQL son terminadas
bruscamente, y las transacciones no confirmadas no son vueltas atrs. Parar la BD con la
opcin abort requiere recuperacin en la siguiente vez que arranque la BD y esta opcin debe
ser utilizada slo cuando no quede ms remedio.
3.3 Almacenamiento de Datos
Los datos se almacenan en estacios de tablas, y un espacio de tabla es la entidad lgica que se
corresponde con uno o ms ficheros fsicos. La principal razn de esta organizacin es el
aumento de la flexibilidad a la hora de realizar operaciones con la BD. En esta seccin vamos a
dar un repaso a las tareas de administracin relacionadas con los espacios de tablas y con los
ficheros.
-
7/22/2019 1 Bases de Datos e Instancias
22/83
3.3.1 Espacios de Tablas y Ficheros
Los espacios de tablas se utilizan para realizar tareas de gestin de espacio, controlar la
disponibilidad de los datos y ejecutar copias de seguridad y recuperaciones parciales.
Gestin de Espacio
El primer espacio de tablas es el SYSTEM. Este espacio de tablas debe estar disponible siempre
durante el funcionamiento normal de la BD porque contiene el diccionario de datos. Despus
de la creacin de la BD, se recomienda la creacin de otros espacios de tablas para que los
datos de los usuarios puedan ser separados de los del diccionario de datos. Incluso, si varias
apliaciones se van a ejecutar sobre la misma BD es recomendable que sus datos estn
separados. Para crear un espacio de tablas se puede utilizar el comando create tablespace:
SVRMGR> create tablespace nombre_tablespace
2> datafile 'nombre_fichero' size 50M online;
En el ejemplo anterior se ha creado un espacio de tablas de 50 Mb. de tamao. Cada espacio
de tabla tiene un conjunto de parmetros de almacenamiento que controla su crecimiento:
initial: tamao de la extensin inicial (10k).
next: tamao de la siguiente extensin a asignar (10k).
minextents: nmero de extensiones asignadas en el momento de la creacin del espacio de
tablas (1).
maxextents: nmero mximo de extensiones.
pctincrease: Porcentaje en el que crecer la siguiente extensin antes de que se asigne, en
relacin con la ltima extensin utilizada.
optimal: Tamao ptimo declarado para este espacio de tablas.pctused: porcentaje de utilizacin del bloque por debajo del cual Oracle considera que un
bloque puede ser utilizado para insertar filas nuevas en l.
Si el espacio de tablas necesita ms espacio despus de su creacin se puede puede alterar
para aadir uno o ms ficheros. Para ello se puede utilizar el comando alter tablespace:
SVRMGR> alter tablespace nombre_tablespace
2> add datafile 'nombre_fichero' size 30M;
-
7/22/2019 1 Bases de Datos e Instancias
23/83
Si se necesitara variar la localizacin de los ficheros asociados a un espacio de tablas se puede
hacer con los comandos alter tablespace (el espacio de tables debe estar offline) o alter
database (la BD debe estar montada pero no abierta). Antes de ejecutar los anteriores
comandos los ficheros asociados al espacio de tablas deben de haber sido movidos a su nueva
localizacin utilizando los comandos del SO oportunos.
Poniendo los tablespaces offline
Llevar a un espacio de tablas al estado offline significa que se impide el acceso a los datos que
almacena. El espacio de tablas SYSTEM nunca puede estar offline. Las razones para poner un
espacio de tablas offline pueden ser varias: un error de escritura en los ficheros que lo
soportan, el mover los ficheros de sitio, etc. Depus de realizar estas operaciones hay que
poner otra vez disponible el espacio de tablas, esto es on line
Los espacios de tablas se pueden poner offline de tres modos: normal, temporary e
immediate. Si no existe ningn error lo recomendable es poner el espacio de tablas offline
usando el modo normal. As, se colocar un checkpoint en el espacio de tablas antes de
ponerlo offline.
SVRMGR> alter tablespace nombre_tablespace offline normal;
Si alguno de los ficheros est corrupto, la opcin normal fallar y se necesitar el modo
temporary. La opcin immediate se utilizar slo cuando la BD est en modo ARCHIVELOG, ya
que no se produce checkpoint alguno.
Poniendo los ficheros offline
No es normal poner los ficheros offline/online. Si un determinado fichero de datos se
corrompe, se tendr que pone offline, repararlo y ponerlo online de nuevo. Esta operacinpuede suponer sustituirlo por su copia de seguridad, lo que implicar ejecutar el comando
recover datafile antes de poner el fichero online.
3.3.2 Segmentos, Extensiones y Bloques
Los datos en la BD son almacenados fsicamente en bloques Oracle: la mnima unidad de
espacio fsico, y es un mltiplo del bloque del SO (2 Kb usualmente). El tamao del bloque
Oracle se fija por el parmetro DB_BLOCK_SIZE del fichero init.ora. Un tamao grande de
-
7/22/2019 1 Bases de Datos e Instancias
24/83
bloque mejora la eficiencia del cache de E/S, pero el tamao de la SGA aumentar para
contener los mismos DB_BLOCK_BUFFERS, lo que significa un problema de memoria.
Una serie de bloques contiguos es una extensin, que es una unidad lgica de
almacenamiento. Una serie de extensiones es un segmento. Cuando un objeto es creado, sereserva una extensin en su segmento. Cuando el objeto crezca, necesitar ms espacio y se
reservarn ms extensiones.
Cada segmento tiene un conjunto de parmetros de almacenamiento que controla su
crecimiento:
initial: tamao de la extensin inicial (10k).
next: tamao de la siguiente extensin a asignar (10k).
minextents: nmero de extensiones asignadas en el momento de la creacin del segmento (1).
maxextents: nmero mximo de extensiones (99).
pctincrease: Porcentaje en el que crecer la siguiente extensin antes de que se asigne, en
relacin con la ltima extensin utilizada (50).
pctfree: porcentaje de espacio libre para actualizaciones de filas que se reserva dentro de cada
bloque asignado al segmento (10).
pctused: porcentaje de utilizacin del bloque por debajo del cual Oracle considera que unbloque puede ser utilizado para insertar filas nuevas en l.
tablespace: nombre del espacio de tablas donde se crear el segmento.
Cuando se disea una BD se ha de tener mucho cuidado a la hora de dimensionar la BD y
prever el crecimiento de las tablas. A continuacin se hacen algunas consideraciones sobre la
gestin del espacio para los diferentes segmentos.
Segmentos de Datos
El espacio del diccionario de datos se suele mantener ms o menos constante, aunque es
crtico que tenga suficiente espacio para crecer en el espacio de tablas SYSTEM. As, hay que
tener cuidado de colocar las tablas de usuario, los ndices, segmentos temporales y los
segmentos de rollback en otros espacios de tablas. Adems, es recomendable que el espacio
de tablas SYSTEM est al 50% o 75% de su espacio disponible. Finalmente, asegurarse que los
usuarios no tienen privilegios de escritura en el espacio de tablas SYSTEM.
Las tablas crecen proporcionalmente con el nmero de filas, ya que se puede suponer que lalongitud de las filas es constante.
-
7/22/2019 1 Bases de Datos e Instancias
25/83
Segmentos de ndice
Los ndices crecen en tamao en mayor proporcin que las tablas asociadas si los datos en latabla son modificados frecuentemente. La gestin del espacio es mejor si se mantienen los
ndices de tablas grandes en espacios de tablas separados.
Segmentos de Rollback
Los segmentos de rollback almacenan la imagen anterior a una modificacin de un bloque. La
informacin en el segmento de rollback se utiliza para asegurar la consistencia en lectura, el
rollback (el valor en el segmento de rollback se copia en el bloque de datos) y la recuperacin.
Es importante comprender cual es el contenido de un segmento de rollback. No almacenan el
bloque de datos modificado entero, slo la imagen previa de la fila o filas modificadas. La
informacin del segmento de roolback consiste en varias entradas llamadas undo. Por
ejemplo, si se inserta una fila en una tabla, el undo necesitar slo el rowid de la fila insertada,
ya que para volver atrs la insercion slo hay que realizar un delete. En las operacin de
actualizacin, se almacenar el valor antiguo de las columnas modificadas. El segmento de
rollback asegura que la informacin undo se guardan durante la vida de la transaccin.
Un segmento de rollback como cualquier otro segmento consiste en una serie de extensiones.
Sin embargo, la mayor diferencia entre un segmento de datos y otro rollback es que en este
ltimo las extensiones se utilizan de manera circular. As, habr que tener cuidado a la hora de
fijar el tamao del segmento de rollback para que la cabeza no pille a la cola.
Segmentos Temporales
Los segmentos temporales se crean cuando se efectuan las siguientes operaciones:
Create Index
Select con distinct, order by, union, intersect y minus.
uniones no indexadas.
Ciertas subconsultas correlacionadas.
-
7/22/2019 1 Bases de Datos e Instancias
26/83
Si las tablas a ordenar son pequeas la ordenacin se realiza en memoria principal, pero si la
tabla es grande se realiza en disco. El parmetro SORT_AREA_SIZE determina el lugar donde se
hace la ordenacin. Incrementndole se reduce la creacin de segmentos temporales.
3.4 Configuracin de la BD
Mientras se disea la BD hay que considerar la posible recuperacin de una caida, y las
prestaciones de la BD, relacionando todo esto con las necesidades de la implantacin y los
medios disponibles. La configuracin de la BD est relacionada con los ficheros de control, los
ficheros redo log activos y los archivados.
3.4.1 Gestionando los Ficheros de Control
Los ficheros de control contienen el esquema de la BD. Es uno de los ms importantes ficheros
e imprescindible para el uso normal de la BD. As que daremos alguna pista para su gestin.
El parmetro CONTROL_FILES del fichero init.ora contiene la lista de todos los ficheros de
control. Cuando se arranca la BS, Oracle lee el fichero init.ora para determinar cuntos ficheros
de control se usan en la BD y dnde estn. Durante la fase de montaje, se abren los ficheros de
control para leer el esquema de la BD. Aunque Oracle escribe en todos los ficheros de control,
slo lee el primero listado en el parmetro CONTROL_FILES.
Para protegerlos contra fallos de almacenamiento, se sugiere que al menos existan dos
ficheros de control, cada uno en un disco diferente, aunque es buena idea mantener ms
copias en diferentes discos. Esto es una poltica de espejado que protege frente a fallos en
disco. Si un disco falla y se pierden todos los ficheros en l, se puede seguir utilizando los
ficheros de control de otros discos. Esto supone una pequea sobrecarga al sistema, ya que
cada vez que se porduce un checkpoint o cambia el esquema de la BD, todos los ficheros de
control son actualizados.
Cuando se produce un fallo en algn disco y algn fichero de control se pierde hay que parar la
BD con la opcin abort, copiar el fichero de control que queda en otro disco, editar el fichero
init.ora para reflejar este cambio, y volver a levantar la BD.
Si un fallo ha producido la prdida de todas las copias de los ficheros de control habr que
recrearlos con el comando create controlfile. Si algunos de los parmetros MAXLOGFILES,
MAXLOGMEMBERS, MAXLOGHISTORY, MAXDATAFILES y MAXINSTANCES vara habr que
utilizar tambin el comando CREATE CONTROLFILE.
-
7/22/2019 1 Bases de Datos e Instancias
27/83
3.4.2 Gestionando los Ficheros Redo Log Activos
Oracle proporciona la posibilidad de espejar los ficheros redo log activos. Mecanismo conocido
como ficheros redo log multiplexados. Oracle necesita al menos dos grupos de fricheros redo
log, cada uno con un miembro como mnimo. Oracle efectua escrituras en paralelo a cadamiembro, pero si estn en el mismo disco, realmente la escritura se serializa.
Otro aspecto a tener en cuenta es el tamao de los ficheros redo log. Si son muy pequeos, el
LGWR deber cambiar de ficheros demasiado frecuentemente, lo que reduce su rendimiento.
Por otro lado, si los ficheros redo log son demasiado grandes, se necesitar mucho tiempo en
las recuperaciones, ya que se tendrn que recuperar muchas transacciones.
Otro aspecto muy importante es la eleccin del nmero correcto de grupos, ya que disponerde demasiados pocos grupos puede acarrear problemas cuando estmos en modos
ARCHIVELOG y tenemos una tasa de transacciones muy alta. Esto puede suponer que un grupo
que todava est archivando por el proceso ARCH se convierta en el grupo en el que el LGWR
necesite escribir, lo que producira que la BD se parara, ya que el LGWR tienen que esperar a
que el grupo est disponible, una vez que su contenido ha sido archivado. Para la mayora de
las implantaciones, tener entre 2 y 10 grupos puede ser suficiente. El nmero de grupos no
puede exceder de MAXLOGFILES, ni el nmero de miembros puede ser mayor que
MAXLOGMEMBERS.
4 Creacin de una BD Ejemplo
A continuacin se muestran los scripts de creacin de una BD llamada demo. Este conjunto de
scripts es:
crdbdemo.sql
Script de creacin de la BD llamada demo. Antes de ejecutarlo hay que asegurarse que los path
en l referenciados sean consecuentes con la implantacin. Adems la variable ORACLE_SID
debe ser puesta a demo
configdemo.ora
Script con los parmetros de configuracin bsicos. Estos parmetros no suelen cambiar. Este
fichero es incluido en initdemo_0.ira y en initdemo.ora.
initdemo_0.ora
Script con los parmetros de configuracin iniciales. Se utilizar slo en la fase de creacin de
la BD.
initdemo.ora
Script con los parmetros de configuracin.
-
7/22/2019 1 Bases de Datos e Instancias
28/83
crdbdemo.sql
REM *
REM * script de creacion para bd DEMO
REM * fichero: crdbdemo.sql
REM * localizacion: /opt/app/oracle/admin/demo
REM * ORACLE_HOME: /opt/app/oracle/product/7.3.2
REM *
set termout on
set echo on
spool crdbdemo.log
REM *
REM * creacion inicial de la BD
REM * Paso 1: crear la BD, con los ficheros de control
REM * especificados en el fichero initdemo.ora
REM * ORACLE_SID debe ser igual a demo
REM *
REM * arrancar la BD demo con el fichero initdemo.ora
REM *
connect internal
startup pfile=/opt/app/oracle/admin/demo/initdemo.ora nomount
REM *
REM * crear la BD demo
REM * Guia de configuracion del tablespace SYSTEM:
REM * ORACLE RDBMS 5Mb
-
7/22/2019 1 Bases de Datos e Instancias
29/83
REM * Espacio adicional del diccionario para aplicaciones 10-50Mb
REM * Guia de configuracion de los Redo Log:
REM * Utilizar 3+ ficheros redo log para disminuir las esperas.
REM * Utilizar 2Mb por redo y por conexion para reducir checkpoints.REM *
create database "demo"
maxinstances 1
maxlogfiles 16
character set "WE8DEC"
datafile
'/export/home/oradata/demo/system01.dbf' size 20M reuse
logfile
'/export/home/oradata/demo/redodemo01.log' size 2M reuse,
'/export/home/oradata/demo/redodemo02.log' size 2M reuse,
'/export/home/oradata/demo/redodemo03.log' size 2M reuse;
disconnect
REM *
REM * la BD debera estar arrancada en este momento.
REM *
connect internal
REM *
REM * Paso 2: crear el diccionario
REM * el fichero catalog.sql viene con la instalacion del software Oracle.
REM *
@/opt/app/oracle/product/7.3.2/rdbms/admin/catalog.sql
-
7/22/2019 1 Bases de Datos e Instancias
30/83
REM *
REM * Paso 3: crear un segundo segmenteo rollback (r0) en SYSTEM.
REM *
connect internal
create rollback segment r0 tablespace system
storage (initial 16k next 16k minextents 2 maxextents 20);
REM *
REM * Paso 4: Alterar el nuevo segmento de rollback para hacerlo disponible
REM * Utilizar ALTER ROLLBACK SEGMENT ONLINE para poner r0 online
REM * sin tirar la BD y volverla a arrancar.
REM *
alter rollback segment r0 online;
REM *
REM * crear nuevos tablespaces
REM *
REM * Paso 5: crear el tablespace RBS para los segmentos de rollback
REM * Guia de configuracion de los segmentos rollback:
REM * 1 segmento rollback por cada 4 acciones concurrentes.
REM * No mas de 50 segmentos rollback.
REM * Todos los segmentos rollback del mismo tamano.
REM * Entre 2 y 4 extensiones de igual tamano por segmento rollback.
REM *
create tablespace rbs datafile
-
7/22/2019 1 Bases de Datos e Instancias
31/83
'/export/home/oradata/demo/rbs01.dbf' size 8M reuse,
'/export/home/oradata/demo/rbs02.dbf' size 8M reuse,
'/export/home/oradata/demo/rbs03.dbf' size 8M reuse,
default storage (initial 128k
next 128k
pctincrease 0
minextents 2
maxextents 50
);
REM *
REM * Paso 6: crear el tablespace (TEMP) para segmentos temporales.
REM * Guia de configuracion del tablespace temporal:
REM * Initial y next extensiones = k * SORT_AREA_SIZE, k en {1,2,...}.
REM *
create tablespace temp datafile
'/export/home/oradata/demo/temp01.dbf' size 1M reuse
default storage (
initial 500k
next 500k
pctincrease 0
);
REM *
REM * Paso 7: crear el tablespace (TOOLS) para las herramientas de bd
REM *
create tablespace tools datafile
'/export/home/oradata/demo/tools01.dbf' size 15M;
-
7/22/2019 1 Bases de Datos e Instancias
32/83
REM *
REM * Paso 8: crear el tablespace para los usuarios.REM *
create tablespace users datafile
'/export/home/oradata/demo/users01.dbf' size 1M;
REM *
REM * Paso 9: crear segmentos rollback
REM * crear 2 segmentos rollback en el tablespace RBS
REM *
create rollback segment r01 tablespace rbs;
create rollback segment r02 tablespace rbs;
REM *
REM * Paso 10: desactivar el segundo segmento rollback en el
REM * tablespace SYSTEM.
REM * Utilizar ALTER ROLLBACK SEGMENT ONLINE para poner los
REM * segmentos rollback online sin tirar la BD y volverla a arrancar.
REM *
alter rollback segment r01 online;
alter rollback segment r02 online;
REM *
REM * Como ya hay 2 segmentos rollback creados y online,
REM * no necesitamos el segmento rollback en el tablespace SYSTEM.
REM *
-
7/22/2019 1 Bases de Datos e Instancias
33/83
alter rollback segment r0 offline;
drop rollback segment r0;
REM *
REM * Modificar los usuarios SYS y SYSTEM.
REM * designar tablespace temporal a TEMP
REM * designar tablespace por defecto para todos los usuarios TOOLS
REM *
alter user sys temporary tablespace temp;
alter user system default tablespace tools temporary tablespace temp;
REM *
REM * Paso 11: Para cada usuario DBA, ejecutar el script de
REM * creacion de sinonimos. No olvidar ejecutarlo para cada
REM * usuario DBA creado en el futuro.
REM *
connect system/manager
@/opt/app/oracle/product/7.3.2/rdbms/admin/catdbsyn.sql
spool off
configdemo.ora
https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0C
DUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2For
arq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA
&bvm=bv.59568121,d.eW0Instancia Oracle[editar]
https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&ved=0CDUQFjAF&url=http%3A%2F%2Fwww.infor.uva.es%2F~jvegas%2Fcursos%2Fbd%2Forarq%2Forarq.html&ei=8SnfUuvxO43gsATt04HQCA&usg=AFQjCNElwM55mV1mqvzm_1Do0uqOGMcNuA&bvm=bv.59568121,d.eW0 -
7/22/2019 1 Bases de Datos e Instancias
34/83
Cada vez que se arranca una base de datos se asigna en la memoria un rea Global del Sistema
(SGA), que emplean los usuarios para compartir informacin de la base, y algunos procesos
background de Oracle son inicializados. Estos procesos, junto con la memoria buffer,
constituyen la Instancia Oracle.
Los procesos de usuario y los procesos Oracle[editar]
Un proceso de usuario ejecuta el cdigo de un programa de aplicacin o una herramienta
Oracle, y se comunica con los procesos del servidor.
Los procesos del servidor son creados por Oracle para capturar los requerimientos de los
procesos de usuario.
Los procesos background realizan las operaciones de I/O y monitorean a los otros procesos; lo
realizan asincrnicamente para proveer mayor paralelismo y mejorar la performance.
Database Writer (DBWR)
Escribe los bloques modificados desde el DB buffer a los datafiles.
Log Writer (LGWR)
Escribe las entradas del redo log generadas en el redo log buffer al disco.
Checkpoint (CKPT)
Da una seal al DBWR de los checkpoints y actualiza todos los datafiles y control files para
indicar el ms reciente checkpoint.
System Monitor (SMON)
Realiza la recuperacin de la instancia cuando se realiza el startup. Limpia los segmentos
temporales y recupera transacciones muertas durante alguna falla. Agrupa extents libres que
tienen PCTINCREASE=1.
Process Monitor (PMON)
Realiza la recuperacin de los procesos cuando un proceso de usuario falla; limpia el cach y
libera recursos que el proceso usaba.
Archiver (ARCH)
Copia el redo log file online a un almacenamiento de archivo cuando est lleno.
Recoverer (RECO)
Resuelve transacciones distribuidas que quedaron pendientes durante una falla en una DB
distribuida.
Dispatcher (Dnnn)
Se presentan cuando es usada una configuracin de server multithread.
Lock (LCKn)
Es usado para el bloqueo inter-instancia en el Oracle Parallel Server.
-
7/22/2019 1 Bases de Datos e Instancias
35/83
Estructura lgica de la DB[editar]
Tablespaces[editar]
La DB est dividida en una o ms unidades lgicas de almacenamiento llamadas tablespaces,que a su vez pueden estar constituidos por uno o ms archivos del S.O., llamados datafiles.
Representan un nivel medio entre la DB y los datafiles. Por su parte, un datafile puede ser
asociado con slo una tablespace y una base de datos.
Data blocks[editar]
Un bloque de datos del Oracle Server es la menor unidad de almacenamiento usada por la
base de datos.
Extents[editar]
Un extent es un conjunto de bloques de datos contiguos.Segments[editar]
Un conjunto de uno o ms extents que contiene todos los datos para una estructura especfica
en un tablespace.
El segmento de datos es una coleccin de extents que mantiene todos los datos para una tabla
o cluster.
El segmento de ndices mantiene todos los datos para un ndice.
El segmento de rollback mantiene datos para rollback, consistencia de lecturas o recuperacin
El segmento temporario es una coleccin de extents que mantiene datos pertenecientes a
objetos temporales (consultas largas que necesitan guardar resultados intermedios).
Schemas Objects[editar]
Es la estructura lgica que refiere directamente a los datos de la DB.
Consideraciones[editar]
Especificaciones a nivel de segmento solapan las del tablespace (no MIN. EXTENT).
Un tamao de extensin mnima se aplica a todas las asignadas al tablespace.
Por omisin se emplean las especificaciones del tablespace.
Cuando no se tienen especificaciones para el tablespace se emplean las del Servidor ORACLE.
La modificacin de parmetros de almacenamiento se aplican a extensiones futuras.
Existen parmetros que se especifican a nivel de segmento no de tablespace.
Estructura fsica de la DB[editar]
Datafiles[editar]
Contienen todos los datos de la base de datos, como las tablas e ndices.
-
7/22/2019 1 Bases de Datos e Instancias
36/83
Redo Log files[editar]
Mantienen registros de todos los cambios hechos a la base de datos, con fines de
recuperacin.
Control files[editar]
Almacenan la estructura fsica y el estado de la base de datos.
Bloques de datos, Extensiones y Segmentos[editar]
Estas son las unidades de asignacin de espacio para una Base de Datos. Un Bloque de Datos
se corresponde con un nmero especfico de bytes relacionado con el espacio de datos fsico
en el disco.
Oracle requiere los datos en mltiplos del Bloque de Datos de Oracle. Cuando se crea la Base
de Datos Oracle se debe setear la medida del Bloque de Datos (parmetro db_block_size),procurando que sea un mltiplo de la medida del bloque del sistema operativo, dentro de un
lmite mximo para evitar I/O innecesarios.
La extensin (extent) que es un nmero especfico de Bloques de Datos contiguos asignados
para almacenar un tipo especfico de informacin.
Un segmento es un conjunto de extensiones que se han asignado a un tipo especfico de
estructura de datos. Por ejemplo cada tabla de datos es almacenada en su propio segmento de
datos, mientras que cada ndice de datos es almacenado en su propio segmento de ndice.
Cuando una extensin existente en un segmento esta llena, Oracle asigna otra extensin para
ese segmento.
Debido a que las extensiones son asignadas en la medida que son necesarias, las extensiones
de los segmentos pueden o no ser contiguas en el disco.
Un segmento y todas sus extensiones son almacenados en un Tablespace, dentro del cual un
segmento puede extenderse sobre los archivos de datos (tener extensiones con datos en ms
de un archivo). Cada extensin puede contener datos de un archivo solamente.
Formato del bloque de datos[editar]
El bloque est dividido en el overhead, los datos de fila, y el espacio libre entre ellos dos.
El overhead[editar]
El overhead est constituido por:
Cabecera (Header)
contiene informacin general del bloque tales como la direccin del bloque y el tipo de
segmento (datos, ndices o rollback).
Directorio de tablas (Table Directory)
contiene informacin acerca de aquellas tablas que tienen filas en este bloque.
-
7/22/2019 1 Bases de Datos e Instancias
37/83
Directorio de filas (Row Directory)
contiene informacin sobre las filas actuales en el bloque, incluyendo direcciones para cada
pedazo de fila en el rea de datos.
Datos de fila[editar]
Contiene los datos de tablas o ndices.
Espacio libre[editar]
Es asignado para insertar filas nuevas y actualizar aquellas que requieren espacio adicional. El
espacio libre debe albergar tambin los datos de la transaccin (transaction entry), que se
requiere en un bloque por cada INSERT, UPDATE, DELETE y SELECT...FOR UPDATE que acceden
a una o ms filas en el bloque.
PCTFREE, PCTUSED y Encadenamiento de filas[editar]
PCTFREE Y PCTUSED permiten controlar el espacio libre para inserciones y eliminaciones defilas en los bloques de un segmento.
Estos parmetros se especifican cuando se crea o altera una tabla o cluster; para el caso de los
ndices se puede especificar PCTFREE.
PCTFREE
Indica el porcentaje mnimo de un bloque de datos que se debe reservar como espacio libre.
PCTUSED
Indica cuando un bloque puede volver a emplearse para insertar nuevos datos de filas.
Un bloque est disponible para insercin mientras tenga libre el porcentaje que indica
PCTFREE. Cuando ste es menor, se marcar como no disponible para inserciones, hasta que el
porcentaje de uso caiga debajo del parmetro PCTUSED.
En dos casos, los datos de una tabla pueden ser demasiado largos para encajar en un bloque
de datos:
La fila es demasiado larga cuando se inserta por primera vez, en cuyo caso Oracle almacena los
datos para la fila en una cadena de bloques de datos (una o ms) reservadas para ese
segmento.
Una fila que originalmente encaja se actualiza de modo tal que la longitud global seincrementa y el espacio libre del bloque se encuentra lleno; en este caso Oracle mueve la fila
entera a un bloque de datos nuevo.
Asignacin y liberacin de espacio[editar]
Cuando el espacio existente en un segmento es usado completamente, Oracle asigna un nuevo
extent para el segmento.
Asignacin de extents[editar]
Cuando se crea una tabla, Oracle asigna al segmento de datos de la tabla un extent inicial
compuesto por un nmero especfico de bloques de datos.
-
7/22/2019 1 Bases de Datos e Instancias
38/83
Si los bloques de datos de un extent inicial del segmento se llenan, Oracle automticamente
asigna un extent incremental para ese segmento, que es un extent subsecuente del mismo
tamao de un tamao mayor que el extent asignado previamente en ese segmento. Para
propsitos de mantenimiento el bloque cabecera de cada segmento contiene un directorio de
los extents de ese segmento.
Algoritmo de asignacin de segmentos[editar]
Oracle busca en el espacio libre (del tablespace que contiene los segmentos) hasta el
encontrar el primer conjunto de bloques de datos contiguos, libre, de igual o mayor tamao
que el extent incremental:
Coincidencia exacta: se busca un conjunto que coincidan con el tamao del extent nuevo ms
un bloque adicional para reducir la fragmentacin interna.
Espacio contiguo mayor: si encuentra un grupo mayor en al menos 5 bloques que el
necesitado, divide el grupo de bloques en extents separados uno de los cuales es del tamao
que se requiere.
Reasignacin de espacio: si Oracle no encuentra un bloque de datos contiguo igual o mayor,
reordena los bloques libres de su correspondiente tablespace para formar conjuntos de
bloques de datos contiguos mayores. Luego aplica los pasos anteriores.
Autoextensin: Si un extent no puede ser asignado despus de una segunda bsqueda, Oracle
trata de redimensionar los archivos por autoextensin. Si no puede hacerlo retorna un error.
Una vez que Oracle encuentra y asigna el espacio libre necesario en el tablespace, asigna una
porcin del espacio libre que corresponde al tamao del extent incremental. Si hay
remanente, queda como espacio libre.
Oracle actualiza la cabecera del segmento y el diccionario de datos para mostrar que un extent
nuevo ha sido asignado y que el espacio asignado no est ms libre.
Liberacin de los extents[editar]
En general, los extents de un segmento no retornan al tablespace mientras no se eliminan los
objetos cuyos datos estn almacenados en el segmento (por medio de un DROP TABLE o DROP
CLUSTER).
Excepciones a esto:
Se puede truncar la tabla o cluster con la sentencia TRUNCATE...DROP STORAGE.
Peridicamente, Oracle puede desasignar uno o ms extents de un segmento de rollback si
tienen la opcin OPTIMAL especificada.
Un DBA puede desasignar extents no utilizados usando la instruccin SQL ALTER TABLE
nombre_tabla DEALLOCATE UNUSED.
Tablas Nonclustered[editar]
En tanto existan las tablas nonclustered o hasta que se las trunca, cualquier bloque de datos
asignado a su segmento de datos permanece asignado a la tabla. Despus de eliminarse una
tabla nonclustered, este espacio puede ser reclamado cuando otros extents requieran espaciolibre.
-
7/22/2019 1 Bases de Datos e Instancias
39/83
Tablas Clustered[editar]
Almacenan su informacin en los segmento de datos creados para el cluster. Si se elimina una
tabla en un cluster, el segmento de datos permanece para las otras tablas en el cluster y
ningn extent se desasigna.
Indices[editar]
Todos los extents asignados en un segmento ndice permanecen asignados en tanto y en
cuanto exista el ndice.
Segmentos Rollback[editar]
Oracle peridicamente chequea para ver si los segmentos de rollback de una base de datos
han crecido ms que su tamao ptimo. Si un segmento rollback es mayor que su ptimo,
Oracle automticamente desasigna uno o ms extents de su segmento de rollback.
Segmentos temporarios[editar]
Cuando se completa la ejecucin de una sentencia que requiere un segmento temporario,
Oracle automticamente lo elimina.
Segmentos[editar]
Un segmento es un conjunto de extents que contienen todos los datos para una estructura de
almacenamiento lgico especfica.
Segmentos de datos[editar]
Cada tabla o particin nonclustered y cada cluster en una base de datos Oracle tiene un
segmento de datos simple para mantener todos sus datos.
Los parmetros de almacenamiento determinan como sus extents de segmentos de datos son
asignados. Estos parmetros afectan la eficiencia de la recuperacin de datos y
almacenamiento para el segmento de datos asociado con el objeto.
Segmentos de ndices[editar]
Sirven para mantener los datos de los ndices. Se pueden especificar los parmetros de
almacenamiento para los extents del segmento de ndices y el tablespace en el que se crea el
segmento ndice.
Segmentos temporarios[editar]
Constituyen un rea de trabajo para las actividades de ordenamiento. Si dicha operacin
puede ser realizada en memoria este segmento no se crea. Las consultas que pueden requerir
de segmentos temporarios son:
CREATE INDEX
SELECT ... ORDER BY
SELECT DISTINCT
SELECT ... GROUP BY
-
7/22/2019 1 Bases de Datos e Instancias
40/83
SELECT...UNION
SELECT...INTERSECT
SELECT...MINUS
Joins indexados o con subconsultasSegmentos de rollback[editar]
Un segmento de rollback registra los valores viejos de los datos que fueron cambiados por
cada transaccin (cometida o no).
Contenido de los segmentos de rollback[editar]
Consiste de varias entradas de rollback, que incluyen informacin del bloque y los datos como
existan antes de la operacin en una transaccin.
Slo Oracle puede acceder a los segmentos de Rollback, ni los usuarios ni el DBA pueden
acceder a ellos.
Las entradas de rollback cambian los bloques de datos en los segmento de rollback y Oracle
registra todos los cambios de los bloques de datos, incluyendo las entradas de rollback en los
redo log (que son por lo menos dos).
Si hay una falla en el sistema, Oracle automticamente recupera la informacin del segmento,
incluyendo las entradas de rollback para transacciones interactivas.
Una vez que se completa la recuperacin, Oracle realiza los rollback de las transacciones que ni
fueron completadas ni vueltas a atrs en el momento de la falla.
Para cada segmento rollback, Oracle mantiene una tabla de transacciones:
Una lista de todas las transacciones que usan el segmento de rollback.
Las entradas de rollback por cada cambio realizado por estas transacciones.
Los segmentos de rollback registran los valores de los datos antes de los cambios para cada
transaccin, luego vincula cada nuevo cambio al cambio previo. Si se deben recuperar una
transaccin, Oracle aplica los cambios en cadena a los bloques de datos en el orden querestablezcan los datos a sus valores previos.
Transacciones y segmentos rollback[editar]
Cada vez que una transaccin de usuario comienza, se le asigna un segmento de rollback en
una de las siguientes dos maneras:
Oracle puede asignar una transaccin automticamente al prximo segmento de rollback
disponible. La asignacin de la transaccin ocurre cuando se edita la primera sentencia DML o
DDL en la transaccin. Nunca se asignan transacciones de solo lectura a un segmento rollback.
-
7/22/2019 1 Bases de Datos e Instancias
41/83
Una aplicacin puede asignar una transaccin a un segmento de rollback especfico. Al
comienzo de una transaccin, un desarrollador o usuario de aplicaciones puede especificar un
segmento rollback particular que Oracle debera usar cuando se ejecute la transaccin.
Cuando una transaccin se completa (commit), Oracle libera la informacin de rollback pero
no la destruye inmediatamente. La informacin permanece en el segmento de rollback paracrear vistas consistentes de lectura de los datos pertinentes para las queries que comenzaron
antes que la transaccin se completara exitosamente.
Oracle escribe los extents en los segmentos de rollback secuencialmente. Cuando el ltimo
extent del segmento rollback se llena, Oracle contina escribiendo datos de rollback
sobreescribiendo el primer extent en el segmento.
Una transaccin que se ejecute en un perodo de tiempo largo puede requerir un nuevo extent
para asignar un segmento de rollback.
Oracle siempre trata de reusar los extents ya asignados a una transaccin.
Si el prximo extent contiene datos de transacciones que estn activas todava entonces debe
asignar un extent nuevo. Esto se hace hasta que el nmero de extents para un segmento
alcanza el parmetro de almacenamiento MAXEXTENTS.
PCTINCREASE le indica a Oracle cuanto ha de crecer cada extent luego que fueren usados los
extents INITIAL y NEXT.
INITRANS, MAXTRANS especifica el nmero de entradas inicial y mximo que las transacciones
tendrn en el bloque. Estn relacionados con la concurrencia que se permite en el bloque.
http://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de
_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oracle
La Arquitectura de la Base de Datos Oracle
ABR 25
Publicado por GUNN3R
El Oracle Server consiste en dos entidades:
La Instancia: Es un conjunto de Procesos y Estructuras de Memoria.
La Base de Datos: Es un conjunto de Archivos en Disco.
Durante la creacin, se crea primero la instancia y despus la Base de Datos. Es decir, primero
se levanta la instancia y posteriormente se abre la Base de Datos.
Las estructuras lgicas (tablas, ndices, etc) no estn directamente conectadas con las
estructuras fsicas (archivos).
http://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oraclehttp://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oraclehttp://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oraclehttp://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oraclehttp://es.wikibooks.org/wiki/Manual_del_estudiante_de_Ingenier%C3%ADa_en_Sistemas_de_UTN/Bases_de_datos_avanzadas/Arquitectura_de_la_base_de_datos_Oracle -
7/22/2019 1 Bases de Datos e Instancias
42/83
La instancia consiste en un conjunto de procesos y estructuras de memoria que existen en la
RAM y en el CPU. Cuando se apaga la instancia, ambos procesos y estructuras de memoria
terminan de ejecutarse al mismo tiempo, mientras la Base de Datos prevalece en disco.
A pesar de que la instancia vive en memoria, puede ser detenida o iniciada. En cambio, la Basede Datos persiste indefinidamente hasta que se borren los archivos del disco.
Los procesos que hacen la instancia son llamados Background Process. Las estructuras de
memoria son implementadas en segmentos de memoria compartida provedas por el Sistema
Operativo. Esta rea de memoria compartida se conoce como SGA(System Global Area).
A los procesos de servidor tambin se les conoce como Foreground Process. A cada proceso de
servidor se le asocia con una PGA (Program Global Area).
Un PGA es una rea de memoria no compartida. Es decir un rea de memoria privada a la cual
solo puede accesar el proceso de servidor a la cual esta asociado.
Las sesiones consisten de un proceso de usuario que corre localmente en el ordenador del
usuario ligado a un proceso de servidor que corre localmente en el servidor.
Las estructuras fsicas que conforman a una base de datos se llaman:
Data Files
Control File
Redo Logs
La Base de Datos garantiza completa abstraccin entre las estructuras fsicas y las estructuras
lgicas. Es decir, no hay manera en que se pueda saber en que bit yace que informacin.
Los datos se guardan en los datafiles, es decir que estos ficheros son como un banco de
informacin que no tiene lmite en tamao. La abstraccin se refiere a que los archivos fsicos
podran moverse, cambiar de tamao, etc. Y los usuarios no se enteraran.
La relacin entre las estructuras fsicas y lgicas se mantiene y documenta en el Diccionario de
Datos, ya que este contiene los metadatos que describen a toda la Base de Datos.
-
7/22/2019 1 Bases de Datos e Instancias
43/83
El redo log es un archivo que contiene todos los change vectors. Un change vector es una
alteracin hecha por un comando DML.
Cuando una sesin efecta cambios en la informacin, la informacin en los data blocks
cambia y el vector change se escribe el el redo log.
Entonces, cuando se daa un datafile, Oracle extraer los vectores relevantes del redo log y los
aplicar en los bloques.
Los Control Files guardan informacin acerca de las estructuras de la Base de Datos.
Cuando una instancia abre alguna Base de Datos, primero abre el Control File. En el ControlFile se encuentra la informacin para que la instancia se pueda conectar a la Base de Datos y al
Diccionario de Datos.
Es imposible para cualquier proceso de usuario tener contacto con la Base de Datos, todos los
accesos deben ser mediados por los procesos del servidor.
En un ambiente de una sola instancia, una sola instancia abre la Base de Datos, mientras que
en un ambiente distribuido existen varias maneras de agrupar las instancias con las Bases deDatos.
Ejemplos de Sistemas Distribuidos:
Real Application Clustering
Streaming
Data Guard
Una instancia consiste en un bloque de memoria compartida conocida como SGA y un
conjunto de procesos BackGround.
Existen como mnimo 3 estructuras de memoria en el SGA:
Database Buffer Cache
Log Buffer
-
7/22/2019 1 Bases de Datos e Instancias
44/83
Shared Pool
Las sesiones de usuario tambin necesitan memoria en el servidor. Esta memoria privada se
conoce como PGA. Entonces as, cada sesin tendr su propio PGA.
El Database Buffer Cache, se encarga de ejecutar SQL. Cuando se hace una operacin DML, se
toman los data blocks que contienen la informacin solicitada y se copian al Database Buffer
Cache. Posteriormente, los cambios son aplicados a las copias de los data blocks que se
encuentran en el Database Buffer Cache.
Cuando se requiere consultar informacin, los datos tambin son procesados a travs del
cache. La sesin obtiene los data blocks que contienen la informacin de inters y los copia al
Database Buffer Cache; los registros relevantes son posteriormente transferidos al PGA de la
sesin para un procesamiento prximo.
Cabe decir que estos bloques se mantendrn en el buffer por cierto tiempo. Todos los
datafiles, estn formateados en data blocks, mientras el Database Buffer cache estar
formateado en memory buffers. Cada memory buffer se acoplar al tamao de de un data
block.
Un memory buffer que guarda un bloque en cache, cuya informacin es diferente al bloque en
disco, se conoce como dirty buffer. Un buffer estar limpio(es decir ser un clean buffer)
cuando se le ingrese un bloque por primera vez cuando los datos del buffer se copien a los
datafiles.
Un buffer se convertir en dirty buffer cuando el bloque que contiene es actualizado. Los
bloques deben ser copiados a los Data Files eventualmente, de esto se encarga el proceso
DBWR. Cuando esto ocurre, los buffers vuelven a ser clean buffers nuevamente.
El Log Buffer Cache es un rea para montar los vector changes antes de que se registren en el
redo log. Un vector change es cualquier cambio aplicado a la informac