Conceptos básicos de Oracle
pzafraTesis5 de Septiembre de 2013
6.835 Palabras (28 Páginas)341 Visitas
TEMA 1: Conceptos básicos de Oracle
NOTA: Todas las pruebas de este estudio se harán bajo el usuario SCOTT y usando el programa
de Oracle SQL*Plus como interfaz. Éste se inicia tecleando en una ventana MS-DOS:
sqlplusw.exe. Previamente se habrá concedido a este usuario los roles SELECT_CATALOG_ROLE y
PLUSTRACE para que pueda ver el diccionario de datos como usuario DBA mediante el comando:
GRANT select_catalog_role,plustrace TO SCOTT;
Introducción a la arquitectura de Oracle.-
Una primera y sencilla aproximación a la arquitectura general utilizada por el RDBMS ORACLE para el manejo
de base de datos (independientemente de la configuración single, multi-thread, parallel- utilizada) es la
mostrada en la siguiente figura.
Esta arquitectura puede ser divida en dos porciones lógicas:
- estructura de procesos y memoria
- estructura para el manejo de los datos
Estructura de procesos y memoria.-
Independientemente de la arquitectura computacional, o de su configuración, cada base de datos dentro del
RDBMS ORACLE es asociada a una determinada instancia, y de igual forma una instancia puede abrir y utilizar
sólo una base datos ORACLE en cualquier momento de su ejecución. Es posible poseer múltiples instancias
ejecutándose concurrentemente dentro de una misma máquina, cada una accediendo su propio espacio físico de
datos (su base de datos ORACLE). En el sistema de operación, la variable de entorno ORACLE_SID permite
identificar el nombre de la instancia ORACLE a la cual se conectarán, por defecto, las aplicaciones de usuario.
Cada vez que el RDBMS ORACLE es inicializado, tanto el System Global Area (SGA) como los procesos
demonios son levantados. El SGA junto con los procesos demonios es lo que se demonina como una instancia
ORACLE.
La memoria en Oracle.-
El System Global Area es un conjunto de estructuras de memoria compartida que contienen datos e
información de control para una determinada instancia ORACLE. El SGA se mantiene en la memoria virtual del
computador en el que reside la instancia ORACLE. Si dentro de la instancia existe la posibilidad de que más de un
usuario se encuentren conectados simultáneamente, los datos dentro del SGA de la instancia son compartidos
entre todos los usuarios. Es por esto que algunas veces al SGA también se le suele denominar Shared Global
Area. La estructura interna de la SGA de un RDBMS shared server puede observarse en esta figura:
Veamos que es lo que hace cada componente:
Buffer Cache (o Database Buffer Cache) : Su función es mantener bloques de datos leídos directamente
de los archivos de datos. Cuando se procesa una consulta, el servidor busca los bloques de datos requeridos
en esta estructura. Si el bloque no se encuentra en esta estructura, el proceso servidor lee el bloque de la
memoria secundaria y coloca una copia en esta estructura. De esta forma, otras peticiones que requieran de
este bloque de datos no requerirán de acceso a memoria secundaria (lecturas físicas).
El Buffer Cache está organizado en dos listas: la lista de bloques sucios (dirty buffers) y la lista de los más
recientemente usados (= L.R.U. last recent used ). La lista de sucios almacena los bloques sucios, que
contienen datos que han sido modificados pero que no han sido escrito todavía a disco. La lista LRU mantiene
los buffers libres (no modificados y disponibles), los reservados (pinned buffers) que son lo que actualmente
son accedidos y los bloques sucios que todavía no han sido escritos a disco. El número de bloques manejados
por el Buffer Cache puede ser configurado para mejorar el rendimiento, así como el tamaño del bloque de
datos. En cualquier caso el tamaño de bloque de datos utilizado debe ser el mismo que el que se ha
configurado para la instancia como tamaño de bloque de datos utilizado por el RDBMS. No obstante se
pueden crear cachés adicionales con tamaños de bloque diferentes (2Kb, 4K, 8Kb, 16Kb ó 32Kb) para que
sean usados con tablespaces con un tamaño de bloque diferente. Los parámetros para estas subcachés son
del tipo DB_nK_CACHE_SIZE, siendo n uno de los cinco valores indicados antes.
Redo Log Buffer: Es un buffer circular que mantiene todos los cambios que han sido realizados sobre la
base de datos por operaciones INSERT, UPDATE, DELETE, CREATE, ALTER y DROP. Las entradas de este
buffer contienen toda la información necesaria para reconstruir los cambios realizados a la base de datos por
medio de calquier sentencia del DDL o del DML (el bloque que ha sido cambiado, la posición de cambio y el
nuevo valor). El uso del Redo Buffer es estrictamente secuencial, en tal sentido pueden entrelazarse cambios
en los bloques de datos producidos por transacciones diferentes. El tamaño de este Buffer también puede ser
configurado para mejorar el rendimiento de la instancia y de las aplicaciones que sobre ellas se ejecutan.
Shared Pool: Esta estructura se utiliza durante el procesamiento de comandos. Su tamaño también es
configurable. Contiene dos zonas específicas:
Library Cache, almacena la siguiente información relacionada con una instrucción de SQL:
- Texto de la instrucción.
- Árbol de parseo, es decir la versión compilada de la instrucción.
- Plan de Ejecución, es decir la secuencia de pasos a ser realizados para ejecutar la instrucción a bajo
nivel de acuerdo con los resultados producidos por el optimizador de consultas.
Basándose en esta información, si una consulta es ejecutada nuevamente, y su información permanece
todavía en el Library Cache, no será necesario compilar de nuevo la instrucción. En tal sentido este
componente de la arquitectura permite mejorar el rendimiento de las aplicaciones que se ejecutan
periódicamente.
Data Dictionary Cache, también conocido como Dictionary Cache o Row Cache, almacena la
información de uso más reciente sobre el diccionario de datos. Esta información incluye definición de
columnas, usuarios, passwords y privilegios. Durante la fase de compilación, esta información es
necesaria para resolver los nombres de los objetos utilizados en un comando SQL y para validar los
privilegios de acceso.
Request Queue y Response Queue: Estas estructuras constituyen los elementos básicos para el manejo
de conexiones de usuarios al manejador. Por cada instancia de ORACLE existirá una Request Queue y varias
Response Queues si está configurada en el modo servidor compartido (en caso contrario simplemente no
existirán). Cuando un proceso usuario desea establecer conexión con el manejador, la solicitud de conexión
será encolada en la Request Queue. Los procesos servidores tomarán las solicitudes de conexión, efectuarán
las acciones necesarias para que la base de datos complete la solicitud y colocarán la petición en la Response
Queue asociada al proceso que atendió la solicitud.
Los procesos en Oracle.-
Los procesos de ORACLE realizan funciones para los usuarios del manejador. En general se puede establecer
una partición en los procesos de ORACLE:
- Procesos Servidores (o Shadow Proceses), los cuales ejecutan funciones de interacción con el servidor de
datos basándose en las peticiones de los usuarios.
- Procesos Demonio (o Background Proceses), quienes realizan funciones para el RDBMS como un todo.
- Procesos de Red, encargados de proveer la interconexión entre procesos de usuario y el RDBMS o entre
RDBMS que establecen un sistema de bases de datos distribuidas.
Procesos Servidores y el Program Global Area (PGA)
Los procesos servidores (Snnn) se comunican con los diferentes procesos de usuario e interactúan con
ORACLE para satisfacer las peticiones. Por ejemplo, cuando un proceso de usuario solicita datos que no se
encuentran en el SGA (en alguno de los buffer caches, dependiendo del tipo de operación y de la fase de su
procesamiento), el proceso servidor que atiende la petición será el encargado de leer los bloques de datos y
almacenarlos en el SGA (recuerde que el SGA en un área de memoria compartida).
Puede existir una correspondencia de uno a uno entre procesos de usuario y procesos servidor (por ejemplo
en la configuración de RDBMS dedicado); aunque un proceso servidor puede conectarse a múltiples procesos de
usuario (como en la configuración de RDBMS multi-threaded). Las conexiones admitidas dependerán en todo
momento de la configuración de opciones del RDBMS realizadas durante la instalación del mismo.
El PGA constituye una región de memoria asociada a cada proceso servidor, la cual contiene datos e
información de control para cada una de las sesiones que los usuarios mantienen con el RDBMS ORACLE a través
de éste proceso servidor. Por lo tanto el PGA no es un área de memoria compartida. Una región de memoria para
almacenar un PGA es solicitada cuando un proceso usuario establece una sesión de trabajo con el manejador de
datos. El tipo de información que se almacena en el PGA depende de las opciones instaladas para el servidor
ORACLE. Por ejemplo, cuando se utiliza una configuración de servidor dedicado, el PGA contiene los siguientes
componentes:
- Sort Area,
...