CONCEPTOS BÁSICOS DBMS

Concepto de Tablespace (espacio de tablas)
Una base de datos se divide en unidades lógicas denominadas TABLESPACES. Un tablespace no es un fichero físico en el disco, simplemente es el nombre que tiene un conjunto de propiedades de almacenamiento que se aplican a los objetos (tablas, secuencias…) que se van a crear en la base de datos bajo el tablespace indicado (tablas, secuencias…).

Concepto de Datafile (fichero de datos)
Un datafile es la representación física de un tablespace. Son los "ficheros de datos" donde se almacena la información físicamente.
Un datafile puede tener cualquier nombre y extensión (siempre dentro de las limitaciones del sistema operativo), y puede estar localizado en cualquier directorio del disco duro, aunque su localización típica suele ser $ORACLE_HOME/Database.
Un datafile tiene un tamaño predefinido en su creación (por ejemplo 100Mb) y este puede ser alterado en cualquier momento.
 Cuando creemos un datafile, este ocupará tanto espacio en disco como hayamos indicado en su creación, aunque internamente esté vacío.
Oracle hace esto para reservar espacio continuo en disco y evitar así la fragmentación. Conforme se vayan creando objetos en ese tablespace, se irá ocupando el espacio que creó inicialmente.
Concepto de Segment (segmento, trozo, sección)
Un segment es aquel espacio reservado por la base de datos, dentro de un datafile, para ser utilizado por un solo objeto. Así una tabla (o cualquier otro objeto) está dentro de su segmento, y nunca podrá salir de él, ya que si la tabla crece, el segmento también crece con ella.
Físicamente, todo objeto en base de datos no es más que un segmento (segmento, trozo, sección) dentro de un datafile. Se puede decir que, un segmento es a un objeto de base de datos, lo que un datafile a un tablespace: el segmento es la representación física del objeto en base de datos (el objeto no es más que una definición lógica).
Existen cuatro tipos de segmentos (principalmente):
*      Segmentos de TABLE: aquellos que contienen tablas
*      Segmentos de INDEX: aquellos que contienen índices
*      Segmentos de ROLLBACK: aquellos se usan para almacenar información de la transacción activa.
*      Segmentos TEMPORALES: aquellos que se usan para realizar operaciones temporales que no pueden realizarse en memoria, tales como ordenaciones o agrupaciones de conjuntos grandes de datos.
Concepto de Extent (extensión)
Para cualquier objeto de base de datos que tenga cierta ocupación en disco, es decir, cualquier objeto que tenga un segment relacionado, existe el concepto de extent. Extent es un espacio de disco que se reserva de una sola vez, un segmento que se reserva en un momento determinado de tiempo.
 El concepto de extent es un concepto físico, unos  están separados de otros dentro del disco. Ya dijimos que todo objeto tiene su segmento asociado, pero lo que no dijimos es que este segmento, a su vez, se compone de distintas extensiones.
Un segmento, puede ser reservado de una sola vez (10 Mb de golpe), o de varias veces (5 Mb hoy y 5 Mb mañana). Cada una de las veces que se reserva espacio se denomina “extensión”.
Concepto de Data block (bloque de datos)
Un data block es el último eslabón dentro de la cadena de almacenamiento. El concepto de Data block es un concepto físico, ya que representa la mínima unidad de almacenamiento que es capaz de manejar Oracle. Igual que la mínima unidad de almacenamiento de un disco duro es la unidad de asignación, la mínima unidad de almacenamiento de Oracle es el data block. En un disco duro no es posible que un fichero pequeño ocupe menos de lo que indique la unidad de asignación, así si la unidad de asignación es de 4 Kb, un fichero que ocupe 1 Kb, en realidad ocupa 4 Kb.
Siguiendo con la cadena, cada segmento (o cada extensión) se almacena en uno o varios bloques de datos, dependiendo del tamaño definido para el extensión, y del tamaño definido para el data block.
Estructuras de memoria
Todas las estructuras que hemos visto se refieren a cómo se almacenan los datos en el disco. Sin embargo, y como es lógico, Oracle también utiliza la memoria del servidor para su funcionamiento. Oracle utiliza dos tipos de memoria:
Ø  Memoria local y privada para cada uno de los procesos: PGA (Process Global Area o Program Global Area).
Ø  Memoria común y compartida por todos los procesos SGA (System Global Area o Shared Global Area).
El SGA se divide en cuatro grandes zonas:
-Database buffer cache: almacena los bloques que se han leído de los datafiles. Cada vez que es necesario acceder a un bloque, se busca el bloque en esta zona, y en caso de no existir, se lee de nuevo del datafile correspondiente.
Cuantos más bloques quepan en esta zona de memoria, mejor será el rendimiento.
-SQL Area: es la zona de memoria se almacenan compiladas las últimas sentencias SQL (y bloques PL/SQL) ejecutadas. Además se almacenan las variables acopladas (bind), el árbol de parsing, los buffer de ejecución y el plan de ejecución. Es importante que siempre que se utilice la misma sentencia, sea exactamente igual, para poder aprovechar sentencias previas almacenadas en el SQL Area. Es decir, las siguientes sentencias:
“SELECT * FROM TABLA”
“select * from tabla”
“SELECT * FROM TABLA”
“SELECT * FROM tabla”
Archivos de inicialización
Además de estructuras de disco y de memoria, un servidor Oracle necesita ciertos archivos para poder ejecutarse. Estos archivos se establecen durante la creación de la base de datos, y se consultarán cada vez que se arranque la base de datos, por lo que deben estar disponibles. Básicamente podemos diferencias los tipos de archivos:
Control files: son archivos de control que se consultan cada vez que se arranca la base de datos. Indica datos como la localización de los datafiles, nombre de la base de datos.
Init file: es el archivo que contiene los parámetro de inicio de la base de datos (tamaño del bloque, tamaño del SGA, etc.). Normalmente tiene el nombre INIT.ORA
Redo logs: estos archivos contienen un historial de todas las instrucciones que han sido lanzadas a la base de datos, para poder recuperarla en caso de fallo. No se utilizan durante la inicialización, sino durante toda la ejecución de la base de datos.
Tipos de datos en Oracle
Los tipos de datos soportados por Oracle se agrupan en los siguientes conjuntos.
Los valores alfanuméricos van encerrados entre comilla simple: 'Alfanumérico' Los valores numéricos son número simples: 123 Las fechas van encerradas entre comillas simples: '1/12/2000' Los valores binarios no pueden ser representados (son fotos, videos…)
Lenguaje de manipulación de datos: DML
El DML (Data Manipulation Language) es el conjunto de sentencias que está orientadas a la consulta, y manejo de datos de los objetos creados. El DML es un subconjunto muy pequeño dentro de SQL, pero es el más importante, ya que su conocimiento y manejo con soltura es imprescindible. Básicamente consta de cuatro sentencias: SELECT, INSERT, DELETE, UPDATE.
 Lenguaje de definición de datos: DDL
El DDL (Data Definition Language) es el conjunto de sentencias que está orientadas a la creación, modificación y configuración de objetos en base de datos. El DDL es el subconjunto más extenso dentro de SQL así que sólo vamos a hacer una referencia rápida a algunas sentencias.


FF