Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Oracle: Definiciones de los componentes lógicos, físicos y de memoria de Oracle
Bases de Datos


Os mostramos algunas definiciones de los componentes más importantes de la estructura física, lógica y de memoria de Oracle, tales como: espacios de tablas (tablespaces), archivos de datos (data files), registros de reconstrucción (redo log), archivos de control (control files), PGA, ...

ALGUNOS CONCEPTOS DE ORACLE

Espacios de tablas: un espacio de tablas es una división lógica de una base de datos. Toda base de datos consta, al menos, de un espacio de tablas (llamado espacio de tablas SYSTEM). Se pueden utilizar otros espacios de tablas para agrupar a los usuarios o aplicaciones, con el fin de facilitar el mantenimiento y mejorar el rendimiento. Algunos ejemplos de estos espacios de tablas pueden ser: USERS (para uso general) y UNDO (para deshacer cambios).

Archivos de datos: cada espacio de tablas consta de uno o más archivos, llamados archivos de datos, que se almacenan en disco. Pueden estar ubicados en unidades y carpetas diferentes. El tamaño de estos archivos se puede modificar después de su creación.

OTROS ARCHIVOS

Registros de reconstrucción: Oracle conserva registros de todas las transacciones realizadas en la base de datos. Estas transacciones se registran en archivos denominados archivos de registro de reconstrucción en línea. Estos archivos se utilizan para recuperar transacciones de la base de datos en el orden adecuado, en caso de que se produzca un fallo en la base de datos. También permiten que Oracle coordine la forma en que se escriben los datos en disco. Cuando se produce una transacción en la base de datos, ésta se introduce en los buffers del registro de reconstrucción, mientras que los bloques de datos afectados por la transacción no se escriben de manera inmediata en el disco. Todas las bases de datos Oracle tienen tres o más archivos de registro de reconstrucción en línea. Oracle escribe en ellos de manera cíclica: después de llenar el primer archivo de registro, escriben en el segundo, hasta llenarlo. Cuando se han llenando todos los archivos de registro, vuelve al primero y empieza a sobrescribir su contenido. Si la base de datos se está ejecutando en modo ARCHIVELOG, hará una copia de los archivos de registro antes de sobrescribirlos. Estos archivos de registro guardados (si el modo ARCHIVELOG está activado) pueden utilizarse para restaurar una parte o toda la Base de Datos en un momento de tiempo determinado. Debido a que estos registros de reconstrucción son fundamentales para el funcionamiento de la Base de Datos, Oracle permite duplicarlos en espejo y conviene que las diferentes copias se hagan en diferentes unidades de disco físicas.

Archivos de control: la arquitectura física global de una base de datos se mantiene por medio de sus archivos de control, en los que se registra la información de control referente a todos los archivos de la base de datos. Se utilizan para conservar la coherencia interna y guiar las operaciones de recuperación. Estos archivos son fundamentales para la base de datos, por ello se almacenan varias copias en línea. Estos archivos deben almacenarse en discos físicos separados. Oracle creará y mantendrá los archivos de control que se hubieran especificado en el momento de la creación de la base de datos. Los nombres de los archivos de control de la base de datos se especifican a través del parámetro de inicialización CONTROL_FILES. Se pueden añadir nuevos archivos de control a la base de datos, para ello hemos de cerrar la instancia, copiar uno de los archivos de control existentes a la ubicación donde queramos alojar el nuevo archivo de control y añadir la ubicación y nombre del fichero de control al parámetro CONTROL_FILES, a continuación reiniciaremos la instancia.

Archivos de traza y registro de alertas: todos los procesos asociados a una instancia que se ejecutan en segundo plano tienen a su vez un archivo de traza asociado. El archivo de traza contiene información relativa a los sucesos significativos con los que se encuentran dichos procesos. Además de estos archivos, Oracle conserva un archivo llamado registro de alertas, este registro almacena los comandos y los resultados de los comandos correspondientes a los sucesos más importantes que ocurren en la vida de la base de datos. El nombre de este registro suele ser: alert_NOMBREINSTANCIA.log.

Instancias: para acceder a los datos de la base de datos, Oracle utiliza un conjunto de procesos en segundo plano que comparten todos los usuarios. Además, existen estructuras de memoria (SGA: System Global Area) que sirven para almacenar los datos de la base de datos que se han consultado más recientemente. Estar áreas de memoria ayudan a mejorar el rendimiento de la base de datos, ya que reducen la cantidad de operaciones de E/S realizadas sobre los archivos de datos. Una instancia de base de datos (conocida como servidor) es un conjunto de estructuras de memoria y procesos en segundo plano que acceden a un conjunto de archivos de la base de datos. Los parámetros que determinan el tamaño y la composición de una instancia se almacenan en un archivo de inicialización denominado init.ora o bien residen dentro de la base de datos, en un archivo de parámetros de servidor, conocido como SPFILE, el cual está almacenado en el fichero spfile.ora.

MEMORIA

Área global del sistema (SGA): estructura básica de memoria de Oracle que sirve para facilitar la transferencia de información entre usuarios. Almacena la mayor parte de la información sobre la propia estructura de la base de datos que es consultada con más frecuencia. Actúa de forma similar a la caché de un PC. Si un usuario realiza una consulta SQL contra la base de datos y ésta ya ha sido ejecutada por otro usuario, tal vez se encuentre almacenada en la SGA, si es así, Oracle devolverá el resultado de la consulta SQL al segundo usuario que la ha solicitado bastante más rápida pues no tendrá que leer de los archivos de datos.

Cachés de buffers: Oracle ha introducido un área SGA dinámica a partir de Oracle9i. Ahora se puede cambiar la configuración de la SGA mientras la base de datos se encuentra en funcionamiento, de modo que se puede cambiar la caché de buffers y el área compartida sobre la marcha sin necesidad de cerrar la base de datos. Para llevar a cabo la gestión de la asignación de memoria, Oracle proporciona una nueva unidad de asignación de la SGA denominada gránulo que representa una cantidad de memoria virtual contigua y se basa en el valor del parámetro SGA_MAX_SIZE.

Caché de diccionario: la información sobre los objetos de base de datos se almacenan en las tablas del diccionario de datos. Cuando la base de datos necesita esta información se leen las tablas del diccionario de datos y los datos devueltos se almacenan en la caché de diccionario de la SGA. Esta memoria caché forma parte del área SQL compartida, cuyo tamaño se define mediante el parámetro SHARED_POOL_SIZE del archivo de parámetros de inicialización de la base de datos. Si la caché de diccionario es muy pequeña, la base de datos ha de consultar repetidamente las tablas del diccionario de datos para obtener la información que necesita, haciendo así llamadas recursivas y se resuelven de forma más lenta que las consultas que puede manejar por sí sola la caché de diccionario.

Buffer de registros de reconstrucción: los registros de reconstrucción describen los cambios realizados en la base de datos. Estos elementos se escriben en los archivos de registro de reconstrucción en línea, de forma que se pueden utilizar en las operaciones de reejecución de transacciones durante las recuperaciones de la base de datos. Antes de escribirse en los archivos de registro de reconstrucción en línea, las transacciones se registran en un área de la SGA llamada buffer de registros de reconstrucción. Después, periódicamente, la base de datos escribe de forma agrupada varias de estas transacciones de reconstrucción en los archivos de registro de reconstrucción en línea. El tamaño de los buffers de registros de reconstrucción se especifica mediante el parámetro LOG_BUFFER del archivo de parámetros de inicialización.

Área compartida: el área compartida almacena la caché de diccionario de datos y la caché de biblioteca (información sobre las instrucciones ejecutadas contra la base de datos). Mientras la caché de buffers de bloques de datos y la caché de diccionario permiten que los usuarios de la base de datos compartan la información sobre los datos y su estructura, la caché de biblioteca permite que se compartan las instrucciones SQL que se emplean con más frecuencia. El área SQL compartida contiene el plan de ejecución y el árbol de análisis de las instrucciones SQL que se ejecutan en la base de datos. La segunda vez que cualquier usuario ejecuta una misma instrucción, puede aprovecharse de la información de análisis disponible en el área SQL compartida, para acelerar la ejecución. El tamaño del área compartida se puede modificar dinámicamente mediante el parámetro SHARED_POOL_SIZE. El área compartida incluye la caché de biblioteca, la caché de diccionario de datos y el área SQL compartida.

El área de bloques de gran tamaño: es un área de memoria opcional. Si se utiliza la opción de servidor compartido o si se llevan a cabo operaciones de copia de seguridad o restauración con frecuencia, estas operaciones podrían resultar más eficientes si se crea un área de bloques de gran tamaño. Otra aplicación del área de bloques de gran tamaño es la de albergar los buffers de mensajes que se utilizan en las consultas paralelas. El tamaño del área de bloques de gran tamaño se establece inicialmente con el parámetro LARGE_POOL_SIZE.

PROCESOS EN SEGUNDO PLANO

Las relaciones entre las estructuras físicas y de memoria de la base de datos se mantienen y aplican mediante procesos en segundo plano. Estos procesos son propios de la base de datos y su número varía en función de la configuración de la base de datos. La base de datos gestiona estos procesos y necesitan muy poco trabajo administrativo. Para visualizar los procesos en segundo plano puede hacer un select a la vista v$bgprocess.

SMON: cuando se inicia la base de datos, el proceso SMON (System Monitor) realiza la recuperación de la instancia, cuando sea preciso (utilizando los archivos de registro de reconstrucción en línea). También limpia la base de datos, eliminando objetos transaccionales que el sistema ya no necesita. SMON cumple una segunda función: agrupa extensiones libres contiguas en extensiones de mayor tamaño. Sólo habrá un proceso SMON por base de datos.

PMON: el proceso en segundo plano PMON (Process Monitor) realiza una limpieza de los procesos de usuario que han fallado. PMON libera los recursos que estuviera utilizando el usuario. Sus efectos se manifiestan cuando se elimina un proceso que mantiene un bloqueo, libera el bloqueo y lo pone a disposición de otros usuarios. Sólo habrá un proceso PMON por base de datos.

DBWR: el proceso en segundo plano DBWR (Database Write) se encarga de gestionar los contenidos de la caché de buffers de bloques de datos y de la caché de diccionario. El proceso DBWR realiza escrituras por lotes de los bloques modificados en los archivos de datos. Es posible tener múltiples procesos DBWR ejecutándose a la vez, dependiendo de la plataforma y del sistema operativo. La utilización de varios procesos DBWR ayuda a minimizar la contienda dentro del propio DBWR durante operaciones de gran tamaño que afectan a varios archivos de datos. El número de procesos DBWR en ejecución se establece mediante el parámetro DB_WRITER_PROCESS.

LGWR: el proceso en segundo LGWR (Log Writer) gestiona la escritura del contenido del buffer del registro de reconstrucción en los archivos de registro de reconstrucción en línea. Si los archivos de registro de reconstrucción en línea están duplicados en espejo, LGWR escribe simultáneamente en los conjuntos de registros duplicados.

CKPT: el proceso CKPT actualiza los archivos de control y las cabeceras de los archivos de datos para salvaguardar el punto de comprobación. Los parámetros LOG_CHEKPOINT_INTERVAL y LOG_CHECPOINT_TIMEOUT se utilizan para configurar la frecuenta de comprobación.

ARCH: el proceso en segundo plano LGWR escribe en los archivos de registro de reconstrucción en línea de forma cíclica. Después de llenar el primer archivo, empieza a escribir en el segundo, hasta que lo llena, y empieza entonces a escribir en el tercero. Una vez que el último archivo de registro de reconstrucción en línea está lleno, LGWR empieza a sobrescribir los contenidos del primero. Cuando Oracle se ejecuta en modo ARCHIVELOG, la base de datos realiza una copia de cada uno de los archivos de registro de reconstrucción cuando se llenan. La copia de dichos archivos suele escribirse en un dispositivo de disco. La función de archivado la realiza el proceso en segundo plano ARCH.

ESTRUCTURAS INTERNAS DE LA BASE DE DATOS

Tablas, columnas y tipos de datos: las tablas son el mecanismo de almacenamiento de los datos en una base de datos Oracle. Contienen un conjunto fijo de columnas. Las columnas de una tabla describen los atributos de la entidad que se representa con la tabla. Cada columna tiene un nombre y unas características específicas: tipo de datos y longitud, restricciones, etc.

Tablas temporales: al igual que una tabla normal, una tabla temporal es un mecanismo de almacenamiento de datos que reside en una base de datos Oracle. Una tabla temporal está compuesta por columnas para las que se han definido tipos de datos y longitudes. A diferencia de una tabla normal, la configuración de una tabla temporal se conserva, mientras que los datos insertados en la tabla permanecen en ella o bien durante una sesión, o bien, durante una transacción.

Restricciones de columnas: se puede crear restricciones en las columnas de una tabla, cuando esto ocurre, todas las filas de la tabla deben cumplir las condiciones que se especifiquen en la definición de la restricción.

  • PRIMARY KEY: la columna será clave primaria de la tabla (no podrá contener valores duplicados ni nulos). Se creará un índice automáticamente para esta columna.
  • NOT NULL: esta columna no podrá contener valores nulos.
  • DEFAULT VALOR: la columna, al crearse un nuevo registro, contendrá, por defecto, el valor especificado en VALOR.
  • CHECK (FORMULA): la columna deberá cumplir la fórmula especificada en FORMULA. Por ejemplo: CHECK (salario > 1000) en este caso, el valor de la columna salario deberá ser mayor que 1000.
  • UNIQUE: los valores de la columna a la que se le aplique esta restricción no podrán duplicarse (al igual que PRIMARY KEY). Se creará un índice automáticamente para esta columna.
  • FOREIGN KEY (NOMBRECAMPOTABLAACTUAL) REFERENCES NOMRETABLAFORANEA (NOMBRECAMPOTABLAFORANEA): este tipo de restricción se utiliza para especificar las relaciones entre tablas (clave externa ó clave foránea). Una clave foránea de una tabla (en este caso NOMBRECAMPOTABLAACTUAL) hace referencia a una clave primaria que se haya definido previamente en cualquier otra tabla (en este caso la tabla externa será NOMBRETABLAFORANEA y la clave primaria de esta tabla será NOMBRECAMPOTABLAFORANEA). Es importante mencionar que para crear una restricción de clave foránea en una tabla, previamente ha de existir la tabla y la columna de la tabla (como clave primaria) a la que se quiera referenciar.
  • Etc.

Usuarios: una cuenta de usuario no es una estructura física de la base de datos, pero sí que tiene importantes relaciones con los objetos de la base de datos: los usuarios son propietarios de los objetos de la base de datos. El usuario SYS es propietario de las tablas del diccionario de datos, en las que se almacena información sobre el resto de las estructuras de la base de datos. El usuario SYSTEM posee las vistas que permiten acceder a estas tablas del diccionario de datos, para que las utilicen los restantes usuarios. Cuando se crean objetos en la base de datos se pueden asociar a cuantas del sistema operativo, permitiendo así a los usuarios el acceso a la base de datos desde el sistema operativo, sin tener que volver a introducir la contraseña para acceder a Oracle. Los usuarios pueden tener acceso a los objetos que poseen o a aquellos a los que se les ha concedido acceso.

Esquemas: el conjunto de objetos que posee una cuenta de usuario se denomina esquema del usuario.

Índices: para que sea posible encontrar los datos, todas las filas de todas las tablas se etiquetan con un identificador RowID (identificador de fila). Este identificador de fila indica a la base de datos la ubicación exacta de una fila (archivo, bloque del archivo y fila del bloque). Un índice es una estructura de base de datos que utiliza el servidor para localizar rápidamente una fila de una tabla. Oracle almacena los elementos de los índices utilizando un mecanismo de árbol binario que garantiza una ruta de acceso corta hasta el valor clave.

Vistas: una vista se asemeja a una tabla con columnas y se consulta de la misma forma que una tabla. Las vistas no almacenan físicamente los datos. Sólo se almacena la definición de la vista en el diccionario de datos. Cuando se consulta una vista, ésta consulta las tablas en las que se basa y devuelve los datos en el formato y orden especificados en la definición de la vista. Las vistas no pueden indexarse, ya que no hay datos físicos directamente asociados a ellas. Las vistas sólo son consultables, no modificables.

Secuencias: proporcionan una lista consecutiva de números unívocos que sirve para simplificar las tareas de programación. La primera vez que una consulta llama a una secuencia, se devuelve un valor predeterminado. En las sucesivas consultas se obtendrá un valor incrementado según el tipo de incremento especificado. Las secuencias pueden ser útiles, por ejemplo, para simular el tipo de datos AUTOINCREMENTO de Paradox, Acces y MySQL.

Procedimientos: un procedimiento es un bloque de instrucciones PL/SQL que se almacena en el diccionario de datos y al que pueden llamar las aplicaciones. Los procedimientos permiten almacenar dentro de la base de datos la lógica de las aplicaciones que se emplea con más frecuencia. Cuando se ejecuta un procedimiento, sus instrucciones se ejecutan como una unidad. Los procedimientos no devuelven ningún valor al programa que los llama.

Funciones: las funciones, al igual que los procedimientos, son bloques de código que se almacenan en la base de datos. A diferencia de éstos, las funciones pueden devolver valores al programa que las llama. Se pueden crear funciones propias e invocarlas desde las instrucciones SQL.

Disparadores (triggers): son procedimientos que se ejecutan cuando se produce un suceso de base de datos determinado en una tabla específica. Pueden utilizarse para aumentar la integridad referencial de los datos, imponer requisitos de seguridad adicionales o mejorar la auditoría. Existen dos tipos de disparadores:

  • Disparadores de instrucción: se activan una vez por cada instrucción de disparo
  • Disparadores de fila: se activan una vez por cada fila de una tabla afectada por las intrucciones.

Por ejemplo, un disparador de instrucción se activa una sola vez para un comando delete que elimina 1.000 filas. En cambio un disparador de fila se activará 1.000 veces para esa misma instrucción.

Para cada tipo de disparador puede crearse un disparador BEFORE (antes) y otro AFTER (después) para cada tipo de suceso de disparo. Entre los sucesos de disparo se encuentran las operaciones de insert (insertar), update (actualizar) y delete (eliminar).

Privilegios y roles:para que un usuario pueda acceder a un objeto propiedad de otro usuario, tiene que habérsele concedido previamente el privilegio de acceso a dicho objeto. También se pueden crear roles, que son grupos de privilegios, para simplificar el proceso de gestión de privilegios. Pueden concederse privilegios a un rol y, éste, a su vez, concederse a varios usuarios.

Segmentos, extensiones y bloques: los segmentos son la contrapartida física de los objetos de base de datos lógicos. Los segmentos almacenan datos. Los segmentos de índice, por ejemplo, almacenan los datos asociados con los índices. Un segmento se compone de varias secciones llamadas extensiones (conjuntos contiguos de bloques Oracle). Cuando las extensiones de un segmento ya no pueden contener nuevos datos, el segmento tendrá que obtener otra extensión. El proceso de ampliación continuará mientras sea necesario, hasta agotar el espacio libre disponible en los archivos de datos del espacio de tablas o hasta alcanzar el número máximo de extensiones por segmento.

Área global de programa (PGA): es un área de memoria utilizada por un único proceso de usuario de Oracle. La memoria PGA no se comparte.

CAPACIDADES DE COPIA DE SEGURIDAD Y RECUPERACIÓN

La base de datos Oracle incorpora varias opciones de copia de seguridad y de recuperación:

  • Exportar e Importar (Export/Import): la utiliadad export extrae datos de la base de datos (a nivel lógico) y los almacena en un archivo binario físico (en disco). Puede especificarse qué partes de la base de datos deben exportarse. También se puede exportar la base de datos completa (útil para reconstruir completamente una base de datos). La utilidad import lee la información contenida en el archivo binario creado por la operación export, con import se pueden elegir de manera selectiva los objetos o usuarios que se deseen importar (o todo el fichero), después intentará insertar estos datos en la base de datos (no sobrescribirá registros existentes). Esta opción de copia de seguridad extraerá los datos de un determinado instante (en el que se ejecute), es útil para bases de datos pequeñas y no tengan un gran número de transacciones. Ambos comandos no necesitan que la base de datos esté cerrada.
  • Copias de seguridad fuera de línea: es una copia de seguridad que se realiza a nivel físico (archivos que componen la base de datos). Para realizar copias de seguridad fuera de línea es necesario cerrar la base de datos y, una vez cerrada, podrán copiarse los archivos que componen la base de datos en un dispositivo de almacenamiento. Aunque las copias de seguridad fuera de línea no constituyan la opción más utilizada de recuperación y seguridad (puesto que hay que cerrar la base de datos), conviene realizar una copia de seguridad de este tipo de manera periódica.
  • Copias de seguridad en línea: en las bases de datos que se ejecutan en modo ARCHIVELOG pueden realizarse copias de seguridad en línea. Este tipo de copias permiten realizar copias de seguridad físicas mientras la base de datos está abierta. Este método de copia de seguridad (bien configurado) es el más utilizado pues no necesita cerrar la base de datos y, además, se podría restaurar la copia de seguridad a cualquier momento.
  • RMAN (Recovery Manager): a partir de Oracle8, es posible utilizar Recovery Manager para llevar a cabo copias físicas de la base de datos. Puede realizar copias de seguridad físicas incrementales de los archivos de datos. Durante una copia de seguridad completa (nivel0) de un archivo de datos, se hace una copia de todos los bloques que se hayan utilizando alguna vez. Durante una copia de seguridad acumulativa (nivel1) se copian todos los bloques utilizados desde la última copia de seguridad completa o acumulativa más reciente. RMAN puede utilizarse para realizar copias de seguridad en línea.

TIPOS DE DATOS DE ORACLE MÁS HABITUALES

  • CHAR: campo de caracteres de longitud fija, con un máximo de 2000.
  • VARCHAR2: campo de caracteres de longitud variable, con un máximo de 4000.
  • DATE: almacena la fecha y la hora. En las consultas la fecha aparece en formato DD-MON-YY (por ejemplo: 18-APR-05), salvo que se modifique el parámetro NLS_DATE_FORMAT o se utilice alguna función especial.
  • NUMBER: columna numérica de longitud variable. Se puede especificar la precisión entre paréntesis, por ejemplo: NUMBER (9,2) será un número de nueve dígitos de los cuales dos serán decimales, por ejemplo: 5235323,85.
  • CLOB: objeto de caracteres de gran tamaño, de hasta 4 GB de longitud. Es el equivalente al MEMO en Access y Paradox.
  • BLOB: objeto binario de gran tamaño, de hasta 4 GB de longitud.
  • ROWID: datos binarios que representan un identificador de fila.
  • Tipos abstractos de datos: a partir de Oracle8 el administrador puede definir sus propios tipos de datos. Por ejemplo se puede crear un tipo de datos que contenga todas las partes del nombre de una persona (nombre, segundo nombre, apellido y segundo apellido):

Create type NOMBRE_COMPLETO as object

(nombre VARCHAR2(25),

segundonombre VARCHAR2(25),

apellido VARCHAR2(30),

segundoapellido VARCHAR2(30));

Para utilizar este tipo de datos en una tabla:

Create table prueba (

codigo NUMBER(10) PRIMARY KEY,

empleado NOMBRE_COMPLETO,

salario NUMBER(7,2) CHECK (salario < 1000000),

fechaalta DATE);

Nota: Fuente: Manual del administrador (Oracle 9i) de los autores Kevin Loney y Marlene Theriault.
Anuncios


Enviado el Domingo, 14 agosto a las 16:54:39 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A