Conceptos básicos de Oracle
Enviado por pzafra • 5 de Septiembre de 2013 • Tesis • 6.835 Palabras (28 Páginas) • 325 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
...