TABLESPACES EN ORACLE
JULIÁN JOSÉ TORRES ZABALA
PEDRO JAVIER SILVA
CRISTIAN CAMILO RAMIREZ
JULIAN ARJONA
UNIVERSIDAD DEL TOLIMA
INGENERIA DE SISTEMAS VI SEMESTRE
2009
Modificado para docencia – I.E.S. Castelar
ÍNDICE
Espacio de almacenamiento
Tipos de tablespaces
Estado del tablespace
Manipulación del tablespace
Cláusula Storage
Tablespaces temporales
Introducción a los espacios de tablas en Oracle
ESPACIO DE ALMACENAMIENTO
Estructura de los tablespace
En los tablespaces se almacenan los objetos del
esquema de la BD (tablas, índices, etc.), pudiéndose
repartir por varios ficheros.
Una BD tiene varios tablespaces.
Un tablespace tiene varios datafiles.
Un datafile sólo pertenece a un tablespace y un
tablespace sólo pertenece a una BD.
Introducción a los espacios de tablas en Oracle
ESPACIO DE ALMACENAMIENTO
La estructura es la siguiente:
Introducción a los espacios de tablas en Oracle
ESPACIO DE ALMACENAMIENTO
TABLESPACE
Un tablespace es el nombre que tiene un conjunto de propiedades
de almacenamiento que se aplican a los objetos (tablas, índices…)
que se crean en la base de datos bajo el tablespace indicado (tablas,
secuencias…). Una base de datos se divide en unidades lógicas
denominadas TABLESPACES.
Introducción a los espacios de tablas en Oracle
ESPACIO DE ALMACENAMIENTO
DATAFILE
Un datafile es un "fichero de datos" donde se almacena la
información físicamente. Puede tener cualquier nombre y extensión
(siempre dentro de las limitaciones del SO), y puede estar localizado
en cualquier directorio del disco duro, además está asociado a un
solo tablespace y un tablespace está asociado a uno o varios
datafiles.
Los datafiles tienen una propiedad llamada AUTOEXTEND, que en
caso de que está activa, se encarga de que el datafile crezca
automáticamente cada vez que se necesite espacio.
Aunque el datafile esté vacio, tiene el tamaño en disco que ha sido
indicado en su creación o el que el sistema le ha dado por defecto.
Oracle hace esto para direccionar espacio continuo en disco y evitar
así la fragmentación. 6
Introducción a los espacios de tablas en Oracle
ESPACIO DE ALMACENAMIENTO
SEGMENT
Un segmento es el espacio direccionado 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 segment, y
nunca podrá salir de él, ya que si la tabla crece, el segment también
crece.
En pocas palabras, el segmento es la representación física del
objeto en base de datos. Existen varios tipos de segmentos
(principalmente):
Segmentos de DATOS: contienen tablas
Segmentos de ÍNDICE: contienen índices
Segmentos de ANULACIÓN: se usan para almacenar
información de la transacción activa.
7
Segmentos TEMPORALES: almacenan datos intermedios
Introducción a los espacios de tablas en Oracle
ESPACIO DE ALMACENAMIENTO
EXTENT
Una extensión es un espacio de disco que se direcciona de una
sola vez, es decir un segmento que se direcciona en un momento
determinado.
El concepto de extent es un concepto físico; unos extents están
separados de otros dentro del disco.
Hay dos tipos de extents:
INITIAL (extensiones iniciales): extensiones que se direccionan en
el momento de la creación del objeto. Una vez que un objeto está
creado, no se puede modificar su extensión inicial.
NEXT (siguientes o subsiguientes extensiones): toda extensión
direccionada después de la creación del objeto, cuando se agota el
espacio y hay que ampliarlo.
Introducción a los espacios de tablas en Oracle
ESPACIO DE ALMACENAMIENTO
DATA BLOCK
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, además es el último eslabón en la cadena de
almacenamiento.
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.
Introducción a los espacios de tablas en Oracle
TIPOS DE TABLESPACES
Tablespace SYSTEM
Se crea automáticamente al hacer la instalación de
Oracle, o al crear una BD.
Contiene el diccionario de datos.
Tablespaces TEMP (temporales)
Guardan datos temporales usados durante el
procesamiento interno.
Tablespaces UNDO (deshacer cambios)
Almacenan información necesaria para deshacer
transacciones incompletas (rollback) o recuperar una
caida del sistema.
10
Introducción a los espacios de tablas en Oracle
ESTADO DEL TABLESPACE
Un tablespace puede estar en dos estados: Online y
Offline.
Existe una vista que nos da información sobre los
tablespaces de nuestra base de datos.
select tablespace_name, status from dba_tablespaces;
11
Introducción a los espacios de tablas en Oracle
ESTADO DE TABLESPACE (MODO OFFLINE Y MODO ONLINE)
Modo ONLINE:Los datos del tablespace están a
disposición de los aplicaciones y de las bases de
datos (para poder hacer una copia de seguridad
del tablespace o actualizar una aplicación que se
basa en los objetos de este tablespace ).
Modo OFFLINE: Los datos del tablespace no
están a disposición de los usuarios aunque la
base de datos está disponible.
12
Introducción a los espacios de tablas en Oracle
MANIPULACIÓN DEL TABLESPACE
Crear un Tablespace.
Create tablespace prueba datafile
‘C:\ORACLEXE\ORADATA\prueba01.dbf' size
100M;
Aumentar el tamaño del Tablespace.
Alter tablespace prueba add datafile
‘c:\oraclexe\oradata\prueba02.dbf' size 50M;
Alter database datafile
'c:\oraclexe\oradata\prueba01.dbf' resize 150M;
13
Introducción a los espacios de tablas en Oracle
MANIPULACIÓN DEL TABLESPACE
Borrando un tablespace.
Para eliminar un tablespace de la base de datos se
debe utilizar la sentencia:
Drop tablespace prueba
INCLUDING CONTENTS
[AND DATAFILES];
14
Introducción a los espacios de tablas en Oracle
CLAÚSULA STORAGE
Esta clausula aparece al final de la definición de los objetos de
almacenamiento de la base de datos (tablas, indices, etc...).
Cuando creamos un tablespace (CREATE TABLESPACE)
podemos definir un storage por defecto para los objetos que se
Oracle
Introducción a los espacios de tablas en
creen dentro de el.
STORAGE opciones:
INITIAL int K | M
NEXT int K | M
MINEXTENTS int
MAXEXTENTS int
MAXEXTENTS UNLIMITED
PCTINCREASE int
15
CLAÚSULA STORAGE
initial
Especifica el tamaño (en bytes) de la primera extensión.
Oracle
Introducción a los espacios de tablas en
next
Especifica el tamaño (en bytes) de la segunda extensión.
pctincrease
Especifica el % de incremento en el tamaño de las
siguientes extensiones.
minextents
Especifica el numero inicial de extensiones cuando se crea
el objeto.
maxextents
Especifica el numero máximo de extensiones que el objeto 16
puede tener.
CLAÚSULA STORAGE
Ejemplo:
Oracle
Introducción a los espacios de tablas en
storage
( initial 65536 K
next 1048576 K
minextents 1
maxextents 2147483645
pctincrease 0 )
TABLESPACES TEMPORALES
Para crear un tablespace temporal simplemente
hay que añadir la palabra TEMPORARY a la
instrucción utilizada para crear tablespaces
normales.
Create TEMPORARY tablespace pruebaTemp tempfile
‘c:\oraclexe\oradata\prueba01_TEMP.dbf' size 100M;
• Select tablespace_name, contents from dba_tablespaces;
COMO CREAR UN TABLESPACE EN ORACLE 11G.
La sentencia CREATE TABLESPACE sirve para crear
un tablespace en una base de datos Oracle.
Un tablespace es una asignación lógica de espacio en la
Oracle
Introducción a los espacios de tablas en
base de datos Oracle que puede contener objetos de
esquema.
Podemos distinguir tres tipos de tablespaces.
Tablespaces permanentes: contienen objetos,
tablas, índices, etc. de un o más esquemas. Los
objetos en los tablespaces permanentes se almacenan
en archivos de datos o datafiles.
Tablespaces UNDO
tipo de tablespace permanente utilizado por la base de datos
ORACLE para gestionar datos de UNDO si está ejecutando la
Oracle
Introducción a los espacios de tablas en
base de datos en modo automático de gestión de UNDO.
Oracle recomienda que uso automático de gestión de UNDO
en lugar de usar segmentos de rollback para UNDO.
Tablespace temporal
contiene objetos de esquema sólo durante la sesión. Los
objetos en tablespaces temporales se almacenan en datafiles
temporales (tempfiles).
La sentencia CREATE TABLESPACE tiene una
sintaxis con numerosas opciones:
Oracle
Introducción a los espacios de tablas en
La sentencia CREATE TABLESPACE siguiente crea
un tablespace en un filesystem,
CREATE TABLESPACE DATOS01
DATAFILE ‘C:\...\PRUEBA01_DATOS01_01.dbf'
SIZE 100M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
Tablespaces con AUTOEXTEND ON.
Podemos crear tablespaces donde el/los datafiles se vayan
extendiendo de forma automática.
Oracle
Introducción a los espacios de tablas en
No debemos olvidar la cláusula MAXSIZE, ya que si la
omitimos el datafile se extenderá hasta llenar el filesystem
donde este creado.
Ejemplo: creamos un tablespace con AUTOEXTEND ON,
para que vaya extendiéndose en tramos de 200K y con un
máximo de 200M.
CREATE TABLESPACE DATOS01
DATAFILE ‘C:\...\PRUEBA01_DATOS01_01.dbf'
SIZE 100M
22
AUTOEXTEND ON NEXT 200K MAXSIZE 200M;
La sentencia CREATE UNDO TABLESPACE tiene una
sintaxis con numerosas opciones:
Oracle
Introducción a los espacios de tablas en
La sentencia CREATE UNDO TABLESPACE siguiente
crea un tablespace en un filesystem,
CREATE UNDO TABLESPACE undotbs1
DATAFILE ‘C:\...PRUEBA1_UNDOTBS01.dbf' SIZE 3
00M;
La sentencia CREATE TEMPORARY TABLESPACE
tiene una sintaxis con numerosas opciones:
Oracle
Introducción a los espacios de tablas en
La sentencia CREATE TEMPORARY TABLESPACE
siguiente crea un tablespace en un filesystem,
CREATE TEMPORARY TABLESPACE TEMP_2
TEMPFILE ‘C:\...\PRUEBA1_TEMP.dbf' SIZE 150M