viernes, 24 de abril de 2015

Operación y mantenibilidad en Oracle database 11g

4.1 - Bitácoras de trabajo del DBMS


Una bitácora es una herramienta que permite registrar, analizar, detectar y notificar eventos que sucedan en cualquier sistema de información utilizado en las organizaciones. La estructura más ampliamente usada para grabar las modificaciones de la base de datos. 

El sistema se mantiene al tanto de lo que hacen las transacciones mediante un archivo especial llamado bitácora del sistema de BD, también conocido como archivo de log, diario o registro histórico. La bitácora es un archivo en el que se almacena detalles sobre las operaciones –efectuadas como parte de las transacciones– que afectan a los valores de los elementos de información de la BD. 

La bitácora se mantiene en disco, fuera del área de la BD donde se almacenan los datos. Por tanto, no le afecta ningún tipo de fallo en la BD. Precisamente para protegerlo contra posibles fallos de estos tipos se suele realizar periódicamente una copia de seguridad (en cinta, por ejemplo) del archivo de la bitácora. 

Es fundamental que siempre se cree un registro en la bitácora cuando se realice una escritura antes de que se modifique la base de datos. 

También se tiene la posibilidad de deshacer una modificación que ya se ha escrito en la base de datos, esto se realizará usando el campo del valor antiguo de los registros de la bitácora.

4.1.1 Funciones específicas de la bitácora y la ubicación de los archivos en disco de la misma


Las operaciones COMMIT y ROLLBACK establecen lo que se le conoce como punto de sincronización lo cual representa el límite entre dos transacciones consecutivas, o el final de una unidad lógica de trabajo, y por tanto al punto en el cual la base de datos esta (o debería estar) en un estado de consistencia. Las únicas operaciones que establecen un punto de sincronización son COMMIT, ROLLBACK y el inicio de un programa. 

El registro de transacciones permite las siguientes operaciones: 
  • Recuperación de transacciones individuales. 
  • Recuperación de todas las transacciones incompletas cuando se inicia el DBMS. 
  • Puesta al día de una base de datos, un archivo, un grupo de archivos o una página restaurados hasta el momento exacto del error. 
  • Permitir replicación transaccional. 
  • Permitir soluciones de servidor en espera.

Ubicación de la bitácora en Oracle database 11g

Para conocer la ubicación de la bitácora también conocido como archivos de log en Oracle es muy sencillo, solo se debe ejecutar el siguiente comando:

Select * from v$logfile;

A continuación les mostrara la ubicación de los archivos log como se muestra en la siguiente imagen.

Una vez conociendo la ubicación nos podemos dirigir hacia la carpeta descrita en la consulta que anteriormente hicimos como se muestra en la siguiente imagen. Como podemos observar se encuentran 3 archivos llamados REDO01, REDO02 Y REDO03, estos son los archivos log o bitácora en Oracle.

Recuerde que los Redo Log File son archivos utilizados para salvaguardar las operaciones ejecutadas en una base de datos.

 4.1.2 Como funciona la Recuperación (rollback) y la Permanencia (commit) en la base de datos


Rollback

En tecnologías de base de datos, un rollback es una operación que devuelve a la base de datos a algún estado previo. Los rollbacks son importantes para mantener la integridad de la base de datos, ya que causan que la base de datos puede ser restaurada a una copia limpia (integra), incluso después de que se han realizado operaciones erróneas. Son importantes para la recuperación de caídas (crashes) de un servidor de base de datos; realizando rollback(devuelto) a cualquier transacción que estuviera activa en el tiempo de la caída, por lo tanto la base de datos es restaurada a un estado consistente.


Commit

En cualquier momento, un programa podría decidir que es necesario hacer fallar la transacción, con lo que el sistema deberá revertir todos los cambios hechos para las operaciones ya realizadas. En el lenguaje SQL se denomina COMMIT a aplicar los cambios y ROLLBACK a cancelar los cambios.

Una sentencia COMMIT en SQL finaliza una transacción de base de datos dentro de un sistema gestor de base de datos relacional (RDBMS) y pone visibles todos los cambios a otros usuarios. El formato general es emitir una sentencia BEGIN WORK, una o más sentencias SQL, y entonces la sentencia COMMIT. Alternativamente, una sentencia ROLLBACK se puede emitir, la cual deshace todo el trabajo realizado desde que se emitió BEGIN WORK. Una sentencia COMMIT publicará cualquiera de los savepoints (puntos de recuperación) existentes que puedan estar en uso.

 4.2 Definición de cuáles son los modos de operación del DBMS. (Alta, Baja, Recovery, etc.)


Una base de datos de Oracle pasa por las siguientes fases cuando se sale de un estado de cierre (shutdown state) a un estado de base de datos abierta (open databas state):

1) Fase de no montaje: se leen los parámetros del sistema, se inician las estructuras de memoria y los procesos de segundo plano. La instancia se arranca pero SIN asociarla a la base de datos. Normalmente se utiliza cuando se modifica o se necesita crear el archivo de control.

2) Fase de montaje: se asocia la instancia con la base de datos. Se usa el archivo de parámetros para localizar los archivos de control, que contienen el nombre de los archivos de datos y los registros rehacer. Los archivos de datos y los registros de rehacer no están abiertos, así que no son accesibles por usuarios finales para tareas normales. Se utiliza este modo para realizar algunas tareas de mantenimiento.

3) Fase apertura: se abren los archivos de datos y los registros rehacer. La base de datos queda disponible para las operaciones normales. Es necesario que existan registros rehacer si no existen hay que usar el comando --> resetlogs, que crea unos registros nuevos.



4.3 Comandos (opciones) utilizados para la activación de los diferentes modos de operación del DBMS.


Una base de datos de Oracle puede estar uno de los siguientes estados: STARTED, MOUNTED, OPEN o OPEN MIGRATE. Valor contenido en el campo STATUS de la vista V$INSTANCE.

Para comprobar lo anterior ejecutaremos la siguiente consulta:

Select * from V$INSTANCE;

Como podemos observar en la siguiente imagen, el estado de la base de datos es OPEN


Habitualmente para arrancar la base de datos totalmente utilizaremos directamente el comando:

--> startup

Hay tres fases de arranque opcionalmente podemos usar startup más un comando. Queda explicado a continuación

1) Fase de no montaje:

--> startup nomount ;

2) Fase de montaje. Existen dos comandos:

--> startup mount ;

O

--> alter database mount ;

3) Fase apertura. Existen dos comandos:

--> startup open ;

o

--> alter database open ;



Otras formas de abrir la base de datos:


a) Abrir la base de datos en modo de sólo lectura, para que no puedan realizarse ni inserciones, ni actualizaciones ni borrados:

alter database open read only ;

b) Abrir la base de datos en modo restringido. Sólo los usuarios con los dos privilegios create session y restricted session pueden usarla. Es una forma útil de que sólo el DBA pueda usar la BD:

startup restrict ;

c) Se puede cambiar el estado de la base de datos de modo que solo los usuarios sys y system puedan hacer consultas, sin que tengamos que detener la base de datos y posteriormente usar startup restrict. Hay que habilitar la opción quiesce en el Database Resource Manager:

alter system quiesce restrict ;

alter system unquiesce ;

Forzar el reinicio. Cuando oracle no se ha detenido apropiadamente y sea imposible reiniciarlo. Se ejecuta un shutdown abort y a continuación un startup:

               --> startup force ;









4.4. Manejo de índices


Los índices son "estructuras" alternativa a la organización de los datos en una tabla. El propósito de los índices es acelerar el acceso a los datos mediante operaciones físicas más rápidas y efectivas.


4.4.1 Tipos de índices soportados


Algunos índices soportados por Oracle son:

B-Tree Index

Este es el tipo de índices normal de Oracle, estos índices son los que más se utilizan, están organizados en una estructura de árbol B y por lo general se utilizan para las llaves primarias de manera que se pueda hacer una búsqueda por llave más rápido.

Index Organized Tables

Este es un tipo de índice que nació con la versión 8 de Oracle y se utiliza por lo general para aplicaciones Web debido a que por lo general estas aplicaciones hacen búsquedas de un solo campo por medio de la llave primaria.

Una IOT se define desde su creación, agregando ORGANIZATION INDEX al final de la sentencia CREATE TABLE, y lo que hace es que los datos de la tabla se van guardando dentro del índice, entonces cuando uno hace un SELECT los datos salen ordenados.

Bitmap Index

Los índices de bitmap son muy recomendables en columnas en las cuales los valores ser repiten y representan una división en categorías, por ejemplo columnas como género, estado civil, etc. También son muy recomendables cuando no cambian mucho, aunque sean muy variantes.

Bitmap Join Index

Este tipo de índice, es muy útil en tablas que están relacionadas y hay muchas consultas que hacen Join de estas tablas, al igual que el bitmap index normal, solo se recomienda cuando la cardinalidad de los valores de la columna no es muy grande.
Aparte este tipo de índice, solamente se recomienda en Data Warehose porque son muy rápidos haciendo joins y devuelven los resultados en muy poco tiempo, por el contrario al hacer inserts y updates, tienen consecuencias en el rendimiento.

Domain Index

Estos índices se utilizan para un dominio especializado, se utiliza mucho con dominios de texto o imágenes, ya que en estos índices se utilizan los indextype donde se puede especificar la implementación.

Cluster Index

Este índice consiste en unas tablas que comparten los mismos bloques de datos, utilizan un valor llamado clúster key value que es el valor de las columnas involucradas para una fila en específico. El clúster key sirve para guardar juntas las filas que tengan el mismo valor y solo guarda una vez cada valor distinto.

Hash Cluster Index

Este índice es muy parecido al anterior, pero se aplica una función de hash al cluster key para poder encontrar las demás filas con el mismo cluster key.

Partitioned tables

Cuando las tablas crecen mucho, acceder a ellas puede significar un bajo rendimiento, por eso surge el concepto de tablas particionadas que es dividir las tablas en partes independientes, se le puede sacar backup independientemente, el rendimiento de las consultas puede aumentar significativamente, y se pueden hacer transacciones paralelas en particiones diferentes.Es común que las diferentes particiones, se coloquen en un tablespace diferente para optimizar aun más el rendimiento.

Function Based Index

Este tipo de índice es muy sencillo pero muy útil y puede llegar a mejorar los tiempos de respuesta increíblemente. Este índice no es más que un índice B-Tree pero sobre una función, por ejemplo para las consultas dadas para este proyecto se utiliza mucho la función upper entonces cree un índice B-Tree sobre la función upper del campo nombre, entonces en índice están los datos ya con la función upper aplicada.

Patitioned Index

Este es un índice para el cual se definen particiones, exactamente igual que cuando se particiona una tabla, esto se hace con el objetivo de mejorar el tiempo de acceso a los datos cuando el índice es demasiado grande.

4.4.2 Como se realiza la Reorganización de índices


Para la creación de índices se realizan los siguientes pasos:
Se instala el JDK de java para posteriormente poder abrir SQL Developer.

Cuando ejecutemos el sql developer aparecerá un recuadro donde nos pide que especifiquemos la ruta del JDK.


Una vez especificada la ruta le daremos en el botón “OK” e iniciara sql developer y creamos una nueva conexión a la base de datos llenando los campos que se nos piden. 




Obtenemos o tecleamos nuestro código sql para llenar la base de datos.


Ejecutamos los comandos (F5) para ejecutar los querys.
 
Desconectamos la base de datos o actualizamos para que se apliquen los cambios.
La iniciamos nuevamente


Buscamos entre las tablas a cual le queremos crear un índice y le damos clic derecho y seleccionamos la opción INDICE y seleccionamos la opción CREAR INDICE.



Llenamos los datos que se nos indican principalmente EL NOMBRE DEL INDICE seleccionamos porque atributo queremos crear o filtrar el índice.

Seleccionamos el orden en que se realizara ACENDENTE O DESENTENDE y crearemos el índice como se muestra a continuación.


Reorganización de un índice

La reorganización de índices se hace en forma alfabéticamente y de forma ascendente como mostramos en la imagen de abajo 







4.4.3 Como se ejecuta la Reconstrucción de índices


La reconstrucción de un índice lo descarta y genera uno nuevo. Esto provoca la eliminación de la fragmentación, el reclamo de lugar en el disco a través de la compactación de páginas por la configuración del factor y el reordenamiento de filas de índices en páginas continuas (asignación de nuevas páginas). Esto puede mejorar la ejecución del disco a través de la reducción del número de páginas requerido para obtener la información solicitada

Para la reconstrucción seleccionaremos el índice a reconstruir y lo seleccionamos.

Seleccionamos aplicar.






Y nos mostrara un mensaje como el siguiente en caso que se haya realizado correctamente.


jueves, 23 de abril de 2015

Manual Oracle database 11g

1.- Estructura lógica y física de Oracle database


Una BD Oracle tiene una estructura física y una estructura lógica que se mantienen separadamente. 
  • · La estructura física se corresponde a los ficheros del sistema operativo: de datos (datafiles), de redo log y de control (controlfiles). 
  • · La estructura lógica está formada por los tablespace y los objetos de un esquema de BD (tablas, vistas, índices,...). 

Una BD se divide en unidades de almacenamiento lógicas: tablespaces, segmentos, extensiones y bloques de datos. Una base de datos de Oracle contiene como mínimo un tablespace.

Tablespaces.- La DB está dividida en una o más unidades lógicas de almacenamiento llamadas tablespaces, que a su vez pueden estar constituidos por uno o más 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 sólo una tablespace y una base de datos.


Segmentos.- Un conjunto de uno o más extensiones que contienen todos los datos para una estructura específica en un tablespace. 

  • El segmento de datos es una colección de extensiones 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 recuperación 
  • El segmento temporario es una colección de extensiones que mantiene datos pertenecientes a objetos temporales (consultas largas que necesitan guardar resultados intermedios). 

Extensión.- Se forma con uno o más bloques. Cuando se aumenta tamaño de un objeto en la base de datos, se usa una extensión para incrementar el espacio. 

Bloque de datos.- Un bloque de datos del Oracle Server es la menor unidad de almacenamiento usada por la base de datos. 

Schemas Objects (Objetos del esquema).- Es la estructura lógica que refiere directamente a los datos de la DB.


1.2 Estructura física


La estructura física de la base de datos es el juego de archivos del sistema operativo en la base de datos. Una B.D. tiene uno o más ficheros de datos. Estos ficheros son de tamaño fijo y se establecen en el momento en que se crea la base de datos o en el momento en el que se crean tablespaces. La estructura física incluye los siguientes tipos de archivos: 

Datafiles (Archivos de datos).- Sirven para el almacenamiento físico de la base de datos y contienen todos los datos de la base de datos, como las tablas e índices. 

Redo Log files (Archivos de rehacer).- Mantienen registros de todos los cambios hechos a la base de datos, con fines de recuperación. El principal propósito de estos archivos es servir de respaldo de los datos en la memoria RAM. Este conjunto de archivos debe estar conformado por dos grupos como mínimo y se recomienda que cada grupo esté almacenado en discos separados. 

Control files (Archivos de control).- Almacenan la estructura física y el estado de la base de datos. En estos archivos se especifican cuáles datafiles conforman la base de datos para poder tener acceso a los datos o para poder recuperar la base de datos, ante una falla. 

Archived files (Archivos fuera de línea).- Son archivos opcionales donde se guarda información vieja de los archivos de rehacer (Redo log files), muy convenientes para los respaldos de la base de datos.



2.- Diferentes estructuras lógicas de almacenamiento y su relación con el SO


Tablas y Columnas

Ø  Los datos son almacenados en la BD utilizando tablas. Cada tabla está compuesta por un número determinado de columnas.
Ø  Las tablas propiedad del usuario SYS son llamadas tablas del diccionario de datos. Proveen el catálogo del sistema que permite que la BD se gestione a sí misma.
Ø  Las tablas se pueden relacionar entre ellas a través de las columnas que las componen. La BD se puede utilizar para asegurar el cumplimiento de esas relaciones a través de la integridad referencial, que se concreta en las restricciones de tablas.

Restricciones de Tablas
  • 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 la tabla 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 física 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 SYSposee las tablas del diccionario de datos; que almacenan información 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 estar unida a una cuenta del S.O., lo que permite 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.
  • Cada entrada del índice consiste en un valor clave y una ROWID. Cada una de estas entradas se almacena en un árbol B+.
  • Los índices se crean automáticamente cuando se define una restricción 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 número 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 máscara que se extiende sobre una o más tablas, de modo que cada columna de la vista se corresponde con una o más 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.
Procedimientos y funciones
  • Un procedimiento es un bloque de código 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 través 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 función es que ésta última puede devolver valores.

3.- Comandos utilizados para revisar la estructura lógica y física de la base de datos



3.1 Comandos para estructura lógica

Para revisar la estructura lógica de la base de datos en Oracle se puede realizar mediante algunos comandos que pueden ser ejecutados en SQL Plus o SQL Developer. Los comandos son los siguientes:

Consultar las tablespaces existentes:

Select * from V$TABLESPACE;


Consultar todos los segmentos de la base de datos (estoy incluye tablas, índices, y segmentos rollback entre otros):

select distinct SEGMENT_TYPE from DBA_SEGMENTS;


Consultar las extensiones que forman los segmentos:

select distinct * from DBA_EXTENTS;

Consultar los bloques libres: 

select distinct * from DBA_EXTENTS;









3.2 Comandos para estructura física

Para revisar la estructura física de la base de datos en Oracle se ejecutan los siguientes comandos: 

Todos los ficheros de datos (datafiles)  y su ubicación:

Select * from V$DATAFILE;

Ficheros temporales:

Select * from V$TEMPFILE;

Ubicación y número de ficheros de control:

Select value
from v$system_parameter
where name = ‘control_files’;

Muestra la ubicación de los log files:

Select * from v$logfile;   

______________________________________________________________________________

4.- Agregar más espacio a la base de datos



Si se desea agregar más espacio a una base de datos en Oracle, se puede hacer incrementando el tamaño de un archivo de datos (data files) de un Tablespace en particular. Incrementar el tamaño de un archivo de datos se puede realizar de forma gráfica o ejecutando algunos comandos. 

A continuación se mostrara como hacerlo en forma gráfica: El primer paso es dar click en Inicio > Oracle – OraDb11g_home1>Database Control – ABD.


Posteriormente nos abrirá el navegador y aparecerá un apartado donde introduciremos el usuario y la contraseña.


Una vez dentro de la página principal hacer clic en la pestaña ‘Servers’, en la siguiente página podemos ver en la parte izquierda el link ‘Tablespaces’, hacer clic sobre él.



En la página Tablespaces podemos ver todos los tablespaces que tiene nuestra base de datos, SYSAUX, SYSTEM, etc. 

Vamos a ampliar el tablespace USERS que tiene en estos momentos 5 MB, le voy a dar 5 MB más para que tenga 10 MB en total. Realmente lo que vamos a ampliar es el datafile asociado al Tablespace USERS. Haremos clic sobre el link del nombre del tablespace que queremos ampliar, en este caso el USERS. Seleccionamos “USER” y le damos en editar.

La página ‘View Tablespace: Users’ nos muestra el detalle de todos los atributos del tablespace, en la sección ‘Datafiles’ veremos el detalle de o los datafiles que componen nuestro tablespace, volvemos a seleccionar editar para modificar los valores.

En la sección de almacenamiento dice incremento y pondremos los KB, MB, GB, TB y le damos en continuar.

Haremos click en la opción aplicar para completar la acción en la parte de abajo. 

Veremos que los cambios se han aplicado correctamente.

Una forma más sencilla de incrementar el tamaño de un datafile en Oracle es en forma de comandos. Para hacer esto ejecutaremos el siguiente comando ya sea en SQL plus o SQL Developer. En este caso lo haremos en SQL Developer.



alter database datafile ‘/app/Administrador/oradata/ABD/USERS01.dbf’ rezize 10m;

Como se muestra en la figura 1.19 el datafile llamado “USERS01.dbf” ha sido modificado correctamente. Se ha aumentado su tamaño de 5 M a 10 M. 

__________________________________________________________

5.- Como funciona y donde se ubica la bitácora de la base de datos


Redo Log Files (Ficheros de Recuperación de datos). 

Al alcanzar un tamaño de 50 MB se crea otro archivo de redo lo el cual lleva una secuencia 1, 2,3……n.

¿Qué hacen los redo log files? 

Los Ficheros de redo log registran cambios a la base de datos como resultado de transacciones o acciones internas del servidor Oracle. 

¿Para qué sirven los redo log file? 

Protegen la base de datos de la pérdida de integridad en casos de fallos causados por suministro eléctrico, errores en discos duros. 

¿Cómo funcionan los redo log files? 

Trabajan de manera cíclica. Si un archivo redo log online se llena LGWR pasará al siguiente grupo de log en el cual se produce una operación de punto de control (check point), la información es almacenada en el archivo de control (control file).



Su ubicación de los Redo Log File  es la siguiente:

C:\oracle\Administrador\oradata\ABD

Con el comando

select * from v$logfile;   (muestra la ubicación de los log)
select * from v$log;         (indica cuantos log existen)

En esta imagen se muestran los archivos redo log files marcados con azul.

Recuerde que los Redo Log File son archivos utilizados para salvaguardar las operaciones ejecutadas en una base de datos.

__________________________________________________________________

6.- Como es administrada la memoria en la instancia de la base de datos, para usuarios y procesos propios del DBMS




Instancia de una Base de Datos en Oracle


Cada instancia Oracle está asociada a una base de datos. Cuando se inicia una base de datos en un servidor (independientemente del tipo de ordenador), se le asigna un área de memoria (SGA) y lanza uno o más procesos. A la combinación del SGA y de los procesos es lo que se llama instancia. La memoria y los procesos de una instancia gestionan los datos de la base de datos asociada de forma eficiente y sirven a uno o varios usuarios.


Cuando se inicia una instancia Oracle monta la base de datos, es decir, asocia dicha instancia a su base de datos correspondiente. En un mismo ordenador pueden ejecutarse varias instancias simultáneamente, accediendo cada una a su propia base de datos física.

Únicamente el administrador de la base de datos puede iniciar una instancia y abrir una base de datos. Si una base de datos está abierta, entonces el administrador puede cerrarla y, cuando esto ocurre, los usuarios no pueden acceder a la información que contiene.

Estructura de memoria de Oracle

Cuando se habla de la estructura de memoria, se tienen dos tipos:
  • SGA (Área Global del Sistema)
  • PGA (Program global area)


SGA: System Global Area o Shared Global Area.

Zona principal de la memoria de Oracle. Está dividida en varias subtareas  desempeñando cada una de estas una tarea totalmente distinta: la Shared Pool, la Database Buffer Cache (parámetro DB_BLOCK_BUFFERS) y el Redo Log Buffer.

Shared pool:
  • Library Cache: se encuentra a su vez dividida en varios apartados: zona compartida de sql, zona privada de sql, procedimientos y paquetes pl/sql y, por último, la zona de control y bloqueos propios de la library cache.
  • Shared sql area o área de sql compartido: se guardan los árboles sintácticos de las sentencias analizadas así como los planes de ejecución elegidos para cada una. 
  • Private sql area o zona privada de sql: por cada sesión diferente que hay en la base de datos se crea una zona de sql privado. Se mantiene información de las sentencias que se están tratando en ese momento. 
  • Procedimientos y Paquetes PL/SQL: existe un área diferenciada para el tratamiento de los procedimientos, funciones y paquetes pl/sql. Se tratan en esta zona igual que si fueran sentencias sql en la zona de sql compartido. 
  • Dictionary cache: mantiene datos de sus propias tablas y vistas ya que accede constantemente a ellas al ejecutar cualquier sentencia. 

DataBase Buffer Cache (Área de memoria Rápida): almacena los bloques de datos leídos resultado de las órdenes SQL ejecutadas por los usuarios conectados.

RedoLogs (Área de registro rehacer): se registran los cambios hechos a la base de datos.


PGA (Program global area)

Destinada a guardar información de los procesos de usuario y procesos de background que corren en una instancia de la base de datos y que a través de distintos procesos intercambian la información con la SGA.

Sort Areas (parámetro SORT_AREA_SIZE.): Son las zonas de memoria que Oracle reserva para realizar ordenaciones y que resultan mucho más rápidas si se realizan en la memoria. Por supuesto, no todas las ordenaciones caben en memoria y en esos casos debe utilizar también el disco y, si hemos configurado bien el sistema, se realizarán en los tablespaces que hemos definido como temporales.


Oracle cuenta con herramientas para verificar detalles de la memoria SGA y PGA así como también permite hacerle modificaciones. Para hacer esto primero accederemos a la página principal de Oracle. Hacemos click en el Database Control que se encuentra en Inicio > Oracle – OraDb11g_home1>Database Control – ABD e introduciremos el usuario y el password correspondientes.


Una vez dentro de la página principal seleccionaremos el link “Servidor” y posteriormente el de “Asesores de memoria”.



En esta imagen se puede observar un gráfico que muestra el historial de los componentes de memoria.

Si bajamos un poco podemos observar el historial de componentes de la memoria SGA así como también una pequeña grafica de que porcentaje de memoria utiliza cada componente del SGA. Ahora le daremos click en el link “PGA” indicado con una flecha roja.

En este apartado podemos observar la PGA actual asignada así como también la PGA máxima entre otra información útil. Daremos click en el botón “Detalles de Uso de Memoria PGA”.

En este recuadro podemos observar los detalles de uso de memoria PGA.


________________________________________________________