Como crear una estructura básica en una base de datos Oracle (I)

Este es mi primer artículo en este blog y en esta ocasión va a tratar sobre bases de datos.

Muchas veces me han preguntado cómo crear la estructura básica en una base de datos Oracle recién instalada, donde solo tenemos el usuario SYSTEM, así que con esta serie de artículos explicaremos de forma sencilla como configurar una base de datos para empezar a trabajar.

Una base de datos se compone principalmente de las siguientes estructuras internas que iremos describiendo en este y en los siguientes articulos:

– Tablespace

– Usuario

– Tablas

– Procedimientos

– Funciones

– Paquetes

– Índices

– Foreign Keys

– Triggers

– Secuencias

Para poder realizar todas estas operaciones, necesitamos tener privilegios de SYSTEM en una base de datos y tener instalado el cliente en nuestro ordenador, si no trabajamos directamente sobre el servidor:

sqlplus user/pass@bbdd

  • user : usuario de la base de datos, en este caso debe ser system
  • pass : password del usuario
  • bbdd : base de datos donde vamos a operar

1.Tablespace

Una base de datos se divide en unidades lógicas denominadas TABLESPACES. 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.

Un objeto en base de datos debe estar almacenado obligatoriamente dentro de uno.

Existen tres tipos:

· Almacenamiento: Almacena todos los objetos de la base de datos, es el tipo por defecto.

· Temporal: Se utiliza para la creación de objetos temporales en las operaciones internas de Oracle.

· Undo: Se utiliza para almacenar las transacciones que realiza Oracle hasta la realización del commit (insert, delete).

 

 

1.1. Datafile

Un datafile es la representación física de un tablespace. Son los “ficheros de datos” donde se almacena la información físicamente. 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.

Está asociado a un solo tablespace y, a su vez, un tablespace está asociado a uno o varios datafiles. Es decir, la relación lógica entre tablespaces y datafiles es de 1-N, maestro-detalle.

   

En el esquema podemos ver como el “Tablespace A” está compuesto (físicamente) por tres datafiles (DATOS_1.ORA, DATOS_2.ORA y DATOS_3.ORA). Estos tres son los ficheros físicos que soportan los objetos contenidos dentro del tablespace A. Aunque siempre se dice que los objetos están dentro del tablespace, en realidad las tablas están dentro del datafile.

1.2. Creación de un tablespace

Cuando creamos una tablespace por defecto tiene que tener asignado al menos un datafile. El tamaño máximo que se recomienda son 6GB, aunque Oracle no pone límites en ese tema, más que lo que permita el SO o el particionamiento del disco. Puede ser ampliado en cualquier momento. Cuando creemos uno, este ocupará tanto espacio en disco como hayamos indicado en su creación, aunque internamente esté vacío.

– Almacenamiento:

CREATE TABLESPACE nombre_tablespace

LOGGING

DATAFILE ‘/directorio/fichero.dbf’

SIZE 32(m/g)

AUTOEXTEND (ON/OFF);

– Temporal:

CREATE TEMPORARY TABLESPACE nombre_tablespace

TEMPFILE ‘/directorio/fichero.dbf’

SIZE 32(m/g)

AUTOEXTEND (ON/OFF);

– Undo:

CREATE UNDO TABLESPACE nombre_tablespace

DATAFILE ‘/directorio/fichero.dbf’

SIZE 100 (m/g);

Aclaración:

AUTOEXTEND: Activa o desactiva el crecimiento automático de los archivos de datos del tablespace. Cuando un tablespace se llena se puede usar esta opción, para que el tamaño del archivo o archivos de datos asociados crezca automáticamente. No suele recomendarse esta opción al dificultar el control del espacio ocupado.

1.2.1. Crear un datafile y anexarselo a un tablespace existente

Puede ocurrir que nuestro tablespace se haya ido llenando y no tengamos espacio suficiente, entonces necesitaremos crear un nuevo datafile y anexarlo al tablespace (si no tenemos activado el autoextend).

ALTER TABLESPACE nombre_tablespace

ADD DATAFILE ‘/directorio/fichero.dbf’ SIZE 10(m/g)

AUTOEXTEND (ON/OFF);