Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2.1 Prerrequisitos
• Se debe poseer al menos el privilegio del sistema CREATE TABLESPACE.
• Antes de crear un tablespace debe existir al menos una base de datos donde se ubique, que debe estar abierta.
Para poder crear tablespaces y objetos en ellos es necesario, además:
• Si nuestra base de datos está ejecutando usando tablespaces de deshacer, al menos uno de ellos debe estar
online.
• Si estamos usando segmentos de rollback, al menos un segmento de rollback, diferente del SYSTEM, debe
existir y estar online.
1/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
2.2 Sintaxis
create_tablespace::=
datafile_tempfile_spec::=
autoextend_clause::=
2/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
maxsize_clause::=
logging_clause::=
storage_clause::=
3/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
data_segment_compression::=
extent_management_clause::=
segment_management_clause::=
4/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
logging_clause
Se usa para indicar si las operaciones que van a realizarse sobre los objetos del tablespace deben registrarse en
los ficheros de redo log. Este es el valor por defecto para todos los objetos almacenados en el tablespace, si en la
creación de cada objeto no se indica lo contrario. Si a nivel de cada objeto se especifica una opción diferente, será esta
última la que prevalezca. Si no se indica nada, por defecto la opción es LOGGING.
FORCE LOGGING
Se usa para poner el tablespace en modo FORCE LOGGING, lo que implica que Oracle escribirá en el redo
log todos los cambios en los objetos almacenados en el tablespace, independientemente de lo que se haya especificado
para cada objeto a nivel individual. La base de datos debe estar abierta y en modo lectura/escritura. No es incompatible
con poner NOLOGGING en la cláusula anterior, que será el defecto para los objetos que se creen, si bien Oracle
ignorará este NOLOGGING mientras el tablespace esté en modo FORCE LOGGING. Esta cláusula no puede
especificarse para un tablespace temporal.
DEFAULT storage_clause
La cláusula storage puede usarse en muchas de las sentencias SQL CREATE y ALTER de diversos objetos
(TABLESPACE, TABLE, INDEX…). Permite especificar cómo Oracle debe almacenar un objeto de la base de datos.
Esto afectará al tiempo que se tardará en acceder a este objeto y la eficiencia del uso del espacio de almacenamiento
En la sentencia CREATE TABLESPACE con esta cláusula podemos indicar parámetros por defecto para
todos los objetos que se creen en el tablespace, si bien prevalecerán los parámetros que se hayan especificado en el
propio objeto. Para tablespaces temporales gestionados mediante el diccionario, Oracle sólo tiene en cuenta el
parámetro NEXT.
Debido a su extensión, los parámetros asociados a esta cláusula se explican por separado en la sección 2.3.1.
ONLINE | OFFLINE Clauses
ONLINE es el defecto y permite que después de la creación el tablespace esté disponible para aquellos
usuarios que tengan autorización. OFFLINE deja el tablespace no disponible. La vista del diccionario
DBA_TABLESPACES indica la situación de cada tablespace.
PERMANENT | TEMPORARY Clauses
Si el tablespace se usará para contener objetos permanentes, se debe especificar PERMANENT, que es el
defecto. TEMPORARY indica que se usará para operaciones temporales, tales como ordenaciones provocadas por la
cláusula ORDER BY de las sentencias SELECT. Los tablespaces temporales creados usando esta cláusula son siempre
gestionados por el diccionario y no se puede especificar una cláusula EXTEND MANAGEMENT LOCAL ni tampoco
BLOCKSIZE. Si se quiere crear tablespaces temporales gestionados localmente (lo que es fuertemente recomendado
por Oracle a partir de esta versión), debe usarse la cláusula CREATE TEMPORARY TABLESPACE.
extent_management_clause
Permite especificar como se gestionarán las extensiones del tablespace. Si se elige LOCAL (defecto), dentro
del propio tablespace estará almacenada la información necesaria para controlar el uso del espacio. En este caso, si se
indica la opción AUTOALLOCATE el tablespace será gestionado por el sistema y no se permite especificar un tamaño
de extensión. Este es el defecto si el parámetro de inicialización COMPATIBLE está puesto a 9.0.0 o superior. Por el
contrario, si se elige UNIFORM estamos indicando que la gestión del tablespace se realizará con extensiones
uniformes, que tendrán el tamaño que se indique en SIZE (Por defecto serán de 1M). Como alternativa a LOCAL,
podemos especificar DICTIONARY si queremos que la información relativa a la gestión del espacio en el tablespace se
administre mediante tablas del diccionario y no mediante información almacenada en el propio tablespace. Este valor
(DICTIONARY) es el defecto si el parámetro COMPATIBLE tiene un valor de versión menor que 9.0.0.
Como restricción: no se puede especificar DICTIONARY para ningún tablespace si el tablespace SYSTEM
está gestionado localmente. Oracle recomienda crear tablespaces con la opción LOCAL, ya que son mucho más
eficientes. Además, en futuras versiones probablemente sólo se soportará este tipo.
Si esta cláusula no se especifica, Oracle usa la información del parámetro de inicialización COMPATIBLE y
las cláusulas MINIMUM EXTENT y DEFAULT storage, para decidir la gestión de extensiones. Si COMPATIBLE es
menor que 9.0.0, Oracle crea un tablespace gestionado por tablas del diccionario. Si COMPATIBLE es mayor o igual a
ese valor:
• Si no se especifica la cláusula DEFAULT storage, Oracle crea un tablespace gestionado localmente por el
sistema (LOCAL+AUTOALLOCATE).
• Si se especifica la cláusula DEFAULT storage hay varias situaciones posibles. En caso de que se indique la
cláusula MINIMUM EXTENT, Oracle evalúa si los valores de MINIMUM EXTENT, INITIAL y NEXT son
5/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
segment_management_clause
Tiene sentido sólo para tablespaces permanentes y gestionados localmente. La opción MANUAL indica que la
gestión del espacio libre en los segmentos se realice por medio del uso de listas de bloques libres. La opción AUTO
indica que esta gestión se realice por medio de mapas de bits. Si se elige esta segunda opción Oracle ignora cualquier
especificación para PCTUSED, FREELIST y FREELIST GROUPS que aparezca en los objetos de este tablespace. A
esto se le llama gestión automática de espacio en segmentos.
Si queremos saber cuál es la gestión de segmentos predefinida para cualquier tablespace, podemos consultar la
columna SEGMENT_SPACE_MANAGEMENT de las vistas del diccionario DBA_TABLESPACES o
USER_TABLESPACES.
Si se usa AUTO y en la cláusula extent_management se indicó LOCAL UNIFORM, debemos asegurarnos que
cada extensión contiene al menos 5 bloques de la base de datos, dado el tamaño de bloque por defecto. Si se usa AUTO
pero en la cláusula extent_management se indicó LOCAL AUTOALLOCATE, y si, además, el tamaño de bloque es
mayor o igual a 16K, Oracle gestiona el espacio en los segmentos creando extensiones con un tamaño mínimo de 1M.
Como restricciones para la opción AUTO: sólo puede usarse para tablespaces permanentes y gestionados
localmente y nunca puede especificarse para el tablespace SYSTEM.
6/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
MAXEXTENTS
Indica el número total de extensiones, incluida la primera, que Oracle puede reservar para el objeto. El valor
mínimo es 1 y el predeterminado depende del tamaño de bloque especificado en cada caso. No se puede cambiar este
valor para un objeto que reside en un tablespace gestionado localmente.
UNLIMITED
Reserva automáticamente las extensiones en función de las necesidades. Oracle recomienda esta opción para
evitar la fragmentación, salvo en el caso de los segmentos de rollback, donde no debería usarse.
FREELIST GROUPS
Especifica el número de grupos de listas de extensiones libres para el objeto en cuestión. El valor
predeterminado y mínimo es 1. Si el tablespace en que reside el objeto está en modo de gestión automática del espacio
de segmentos se ignora este parámetro.
FREELIST
Especifica el número de listas de extensiones libres para cada uno de los grupos. El valor predeterminado y
mínimo es 1. Se ignora si el tablespace en que reside el objeto está en modo de gestión automática del espacio de
segmentos.
OPTIMAL
Sólo es relevante para los segmentos de rollback. Especifica el tamaño óptimo para estos segmentos y no
puede ser inferior al espacio que se ha asignado inicialmente por los parámetros INITIAL, NEXT, PCTINCREASE y
MINEXTENTS. Oracle redondea el tamaño a un múltiplo del tamaño del bloque de datos y se encarga de desasignar
extensiones libres o asignar nuevas extensiones para mantener el tamaño ajustado al valor de OPTIMAL. Si se
especifica NULL (valor por defecto), Oracle nunca desasigna extensiones.
BUFFER_POOL
Especifica un área de buffers predeterminada para un objeto. El tamaño de estas áreas puede definirse en el
fichero de parámetros de inicialización. La opción KEEP hace que los bloques del objeto vayan al área KEEP, donde se
retienen a fin de evitar operaciones de E/S. Si se define un área KEEP del tamaño apropiado puede mantenerse el
objeto completo en memoria. RECYCLE indica que los bloques se lleven a esta área, donde siempre permanecerán
disponibles para desalojo; así los bloques del objeto no ocuparán espacio de caché necesario para otras operaciones.
DEFAULT indica el área de buffers predeterminada. Es el valor por defecto y donde se llevan los bloques de objetos a
los que no se ha asignado KEEP o RECYCLE.
2.4 Ejemplos
1. Crear un tablespace de deshacer
CREATE UNDO TABLESPACE undots
DATAFILE 'undots.dat'
SIZE 10M AUTOEXTEND ON;
2. Crear un tablespace indicando parámetros de almacenamiento por defecto para los objetos que se creen
posteriormente
CREATE TABLESPACE tbs01
DATAFILE 'tbs01.dat' SIZE 20M
DEFAULT STORAGE (INITIAL 128K NEXT 128K
MINEXTENTS 1 MAXEXTENTS 999)
ONLINE;
3. Crear un tablespace con un fichero de datos de 1M de tal forma que cuando se llene, se le asignen extensiones de
500K hasta un máximo de 100M
CREATE TABLESPACE tbs02
DATAFILE 'diskb:tbs02.dat' SIZE 1M REUSE
AUTOEXTEND ON NEXT 500K MAXSIZE 100M;
7/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
4. Crear un tablespace especificando un tamaño mínimo de extensión de 500K (asignará extensiones como múltiplos de
500K)
CREATE TABLESPACE tbs03
DATAFILE 'tbs03.dat' SIZE 20M
MINIMUM EXTENT 500K
DEFAULT STORAGE (INITIAL 128K NEXT 128K)
LOGGING;
3.1 Prerrequisitos
• Si se posee el privilegio del sistema ALTER TABLESPACE pueden realizarse todas las operaciones.
• Si sólo se posee el privilegio MANAGE TABLESPACE las operaciones que pueden realizarse son: ponerlo
disponible o no disponible (online u offline), iniciar o finalizar una copia de seguridad y ponerlo en modo sólo
lectura o lectura/escritura.
Además, para poder poner un tablespace en modo de sólo lectura ha de cumplirse:
• El tablespace debe estar online.
• No puede contener ningún segmento de rollback activo. De ahí que el tablespace SYSTEM no pueda ponerse
nunca como no disponible.
• El tablespace no puede intervenir en una copia de seguridad abierta, porque al final de la misma se escribe en
el archivo de cabecera de los archivos de datos asociados al tablespace.
8/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
3.2 Sintaxis
alter_tablespace::=
datafile_tempfile_clauses::=
9/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
OFFLINE
Se usa para poner no disponible o desactivar un tablespace (esto afecta a todos sus archivos de datos y
objetos). La opción NORMAL (por defecto) limpia la SGA de todos los bloques pertenecientes a ficheros de datos de
este tablespace, asegurándose de que todo está escrito y consistente. Con la opción TEMPORARY, Oracle ejecuta un
punto de control (checkpoint) para todos los ficheros de datos de este tablespace, pero no asegura que todos los ficheros
puedan ser escritos; puede ser necesaria la recuperación de algunos ficheros desde soporte físico antes de poder poner
disponible de nuevo el tablespace. La opción IMMEDIATE obliga siempre a realizar una recuperación desde soporte
físico antes de volver a activar el tablespace.
No puede ponerse offline un espacio para tablas temporal.
BEGIN BACKUP
Indica que se va a comenzar una copia de seguridad abierta (los usuarios pueden seguir accediendo a los
datos). No se puede especificar esta opción para un tablespace de sólo lectura, ni temporal gestionado localmente.
END BACKUP
Indica que la copia de seguridad abierta se ha completado. Esta opción debe usarse tan pronto como sea
posible, inmediatamente después de finalizada la copia de seguridad, porque de no hacerse así, un fallo (o un shutdown
abort), que provoque la caída de la instancia, hará que en el rearranque se proceda a la recuperación del tablespace
desde ficheros de redo log archivados (si es que existen) con mucha probabilidad. Esta opción no puede usarse en
tablespaces de sólo lectura.
READ
La opción ONLY pone el tablespace en modo lectura, permitiendo primero que terminen las transacciones que
se estaban ejecutando e impidiendo el acceso de nuevas transacciones que pretenden escribir en los ficheros de datos.
La opción WRITE cambia a modo lectura/escritura un tablespace que era sólo de lectura, permitiendo, a partir de ese
momento, las operaciones de escritura.
COALESCE
Para todos los archivos de datos del tablespace, esta opción combina todas las extensiones libres con otras
contiguas, para formar extensiones más grandes.
3.4 Ejemplos
1. Indicación de que se va a hacer una copia de seguridad de un tablespace
ALTER TABLESPACE tbs01
BEGIN BACKUP;
3. Mover y renombrar los ficheros asociados a un tablespace. Hay que hacer varios pasos:
3.1. Poner el tablespace offline
ALTER TABLESPACE tbs01 OFFLINE NORMAL;
3.2. Mediante comandos del sistema operativo: mover el fichero a su nueva ubicación (supongamos desde
'diskb:tbs01.dat' to 'diska:tbs01.dat') y renombrarlo
10/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
3.3. Hacer que Oracle conozca el nuevo nombre del fichero de datos asociado al tablespace (“renombrar” en Oracle)
ALTER TABLESPACE tbs01
RENAME DATAFILE 'diskb:tbs01.dat'
TO 'diska:tbs01.dat';
3.4. Poner el tablespace online
ALTER TABLESPACE tbs01 ONLINE;
6. Cambiar la asignación de extensiones del tablespace haciendo que se obtengan siempre múltiplos de 128K.
ALTER TABLESPACE tbs03 MINIMUM EXTENT 128K;
4.1 Prerrequisitos
Se debe poseer al menos el privilegio del sistema DROP TABLESPACE. No se puede borrar un tablespace que
contenga segmentos de rollback con información de transacciones activas.
4.2 Sintaxis
drop_tablespace::=
4.3 Parámetros
tablespace
Nombre del tablespace que quiere borrarse. Un tablespace puede borrarse independientemente de que esté
online u offline. Sin embargo, Oracle recomienda ponerlo offline antes, para asegurarnos de que no hay ninguna
transacción realizando operaciones sobre alguno de los objetos del tablespace. Una vez que el tablespace haya sido
borrado, los usuarios que tuviesen asignado este tablespace por defecto no podrán seguir asignando espacio para sus
objetos o para las áreas de ordenación. Es preciso utilizar la sentencia ALTER USER para asignar al usuario un nuevo
tablespace por defecto (o temporal).
Algunas restricciones al borrar un tablespace:
• El tablespace SYSTEM no puede borrarse.
• No se puede borrar un tablespace de deshacer si está siendo usado por alguna transacción.
11/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
INCLUDING CONTENTS
Permite borrar todos los objetos del tablespace. Si se omite y el tablespace no está vacío, Oracle devuelve un
error y no borra el tablespace.
AND DATAFILES
Si se especifican las dos cláusulas anteriores Oracle borra, además de los objetos, los ficheros del sistema
operativo asociados a este tablespace. Esta cláusula no sería necesaria para los ficheros que son gestionados
directamente por Oracle (OMF, ver cláusula DATAFILE de la sentencia TABLESPACE).
CASCADE CONSTRAINTS
Permite borrar todas las restricciones de integridad referencial de tablas que están almacenadas en otros
tablespaces y hacen referencia a tablas del tablespace que se desea borrar. Si se omite la cláusula y existen estas
restricciones de integridad, Oracle devuelve un error y no borra el tablespace.
4.4 Ejemplos
1. Borrar un tablespace, eliminado todos los objetos que contiene y todas las restricciones de claves primarias y
externas de objetos almacenados fuera de este tablespace.
ALTER TABLESPACE tbs01 OFFLINE NORMAL;
COMMIT;
DROP TABLESPACE tbs01
INCLUDING CONTENTS
CASCADE CONSTRAINTS;
12/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
5. Ejercicios
En estos ejercicios vamos a crear, modificar y borrar tablespaces, para el usuario SYSTEM, en la base de datos
ABD0.
13/14
Curso Oracle Sesión 3
16/11/2006 Gestión de espacios para tablas
14/14