Tablespace en Oracle
Un tablespace es una unidad lógica de almacenamiento dentro de una base de datos oracle.
Es un puente entre el sistema de ficheros del sistema operativo y la base de datos.
Cada tablespace se compone de, al menos, un datafile y un datafile solo puede pertenecer a un tablespace.
Cada tabla o indice de oracle pertenece a un tablespace, es decir cuando se crea una tabla o indice se crea en un tablespace determinado.
Los tablespace son estructuras donde se almacenan los objetos del esquema de la base de datos, tales como tablas, índices, etc. con la particularidad de poderse repartir en varios ficheros. Por tanto, las bases de datos tienes varios tablespaces y estos a su vez varios datafiles. Un datafile sólo pertenece a un tablespace y un tablespace sólo pertenece a una Base de Datos.
Tipos de tablespaces.
- Tablespace SYSTEM.
- Se crea automáticamente al hacer la instalación de Oracle o al crear una Base de Datos.
- Contiene el diccionario de datos.
- Tablespaces TEMPORALES.
- Es aquél en el que solamente puede haber objetos temporales. No se pueden crear objetos permanentes como pueden ser los índices, las tablas o los segmentos de rollback.
- Optimización operaciones de ordenación.
- De tipo deshacer cambios (9i).
- Se utilizan para gestionar poder deshacer las transacciones incompletas. En versiones anteriores --> rollback
- Con tamaño de bloque variable (9i).
- De tipo BigFile (10g).
Estado del tablespace.
Su estado puede ser online o offline. Existe una vista que nos da información sobre los tablespaces de nuestra base de datos. Esa vista es la siguiente:
select tablespace_name, status from dba_tablespaces;
Para poder realizar una copia de seguridad del tablespace estando completamente seguros de que nadie está modificando los objetos del tablespace es necesario establecer el modo offlne. Así mismo se actuará de igual forma para poder actualizar una aplicación que se basa en los objetos de este tablespace sin que ningún usuario puede modificar los datos en medio de la actualización.
Manipulación del tablespace.
- Create tablespace prueba datafile 'c:\ORACLEXE\ORADATA\XE\prueba01.dbf' size 100M;
- Aumentar el tamaño del Tablespace.
- Alter database tablespace prueba add datafile ‘c:\oracleexe\oradata\XE\prueba02.dbf' size 50M;
- Alter database datafile '/users/oradata/orcl/prueba01.dbf' resize 150M;
Cláusula Storage.
Todo objeto que tenga ocupación física tiene esta cláusula. El objetivo es definir ciertas propiedades de almacenamiento para el objeto creado.
STORAGE( INITIAL entero{K|M} NEXT entero{K|M} {MINEXTENTS entero} {MAXEXTENTS entero|UNLIMITED} {PCTINCREASE %entero} )
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 tablespace prueba datafile '/users/oradata/orcl/prueba01.dbf' size 100M temporary;
Alter user nombre_de_usuario temporary tablespace nombre_de_tablespace;
Select username, temporary_tablespace from dba_users;
Select tablespace_name, contents from dba_tablespaces;
Tablespaces Read-Only.
Se pueden consultar los datos de los objetos, no se puede ni borrar ni insertar nada en ellos. La principal ventaja de un tablespace read-only es que no hace falta hacer backup del mismo.
Tablespace de Undo.
- Podemos tener varios tablespaces de “undo”, pero sólo uno de ellos estará activo.
- No se pueden crear objetos sobre un tablespace de “undo”.
- Al cambiar de tablespace “undo” activo (con undo_tablespace), los segmentos de rollback que contiene el nuevo tablespace pasan a estar online, mientras que los del tablespace anterior se ponen offline.
Se crean de dos formas:
- Mediante create database.
- Mediante create tablespace:
Create undo tablespace undotbs02 datafile ‘c:\oraclexe\oradata\ex\undo02.dbf’ size 25M reuse autoextend on;
Para eliminarlo:
drop tablespace undotbs02;
Parámetros de inicialización de los espacios de tablas de deshacer:
- Undo_Management (valores MANUAL/AUTO). Si auto se gestionará de forma automática el espacio de deshacer. No es dinámico, cuando se cambia de estado se debe rearrancar la instancia.
- Undo_tablespace (MANUAL/AUTO). En entornos RAC (Real Application Clusters)
Sintaxis TABLESPACE:
CREATE [UNDO] TABLESPACE tablespace_name
DATAFILE Datafile_Options Storage_Options ;
Datafile_Options:
'filespec' [AUTOEXTEND OFF]
'filespec' [AUTOEXTEND ON [NEXT int K | M] [MAXSIZE int K | M]]
La opción Autoextend Maxsize es por defecto UNLIMITED si no se especifica valor.
Storage_Options:
DEFAULT [COMPRESS|NOCOMPRESS] STORAGE storage_clause
MINIMUM EXTENT int {K|M}
BLOCKSIZE int K
LOGGING | NOLOGGING
FORCE LOGGING
ONLINE | OFFLINE
PERMANENT | TEMPORARY
EXTENT MANAGEMENT {DICTIONARY |
LOCAL {AUTOALLOCATE | UNIFORM [SIZE int K | M]} }
SEGMENT SPACE MANAGEMENT {MANUAL | AUTO}