You are on page 1of 46

Prof.

Robert Espinoza

Oracle
Arquitectura en disco
Arquitectura en disco

Tablespaces (espacios de tabla)


 Un tablespace es una división lógica de la BD. Cada BD

tiene al menos uno (SYSTEM).


 Un tablespace puede pertenecer sólo a una BD.
 Los tablespaces se utilizan para mantener juntos los datos de
usuarios o de aplicaciones para facilitar su mantenimiento o
mejorar las prestaciones del sistema.
 Cuando se crea una tabla se debe indicar el tablespace al
que se destina.
 Por defecto se depositan en el tablespace SYSTEM, que se
crea por defecto. Este tablespace es el que contiene el
diccionario de datos, por lo que conviene reservarlo para el
uso del servidor, y asignar las tablas de usuario a otro.
Arquitectura en disco

Tablespaces (espacios de tabla)


 Lo razonable y aconsejable es que cada aplicación tenga su

propio tablespace.
 Hay varias razones que justifican este modo de
organización de las tablas en tablespaces:
 Un tablespace puede quedarse offline debido a un fallo de
disco, permitiendo que el SGBD continúe funcionando con el
resto.
 Los tablespaces pueden estar montados sobre dispositivos
ópticos si son de sólo lectura.
 Permiten distribuir a nivel lógico/físico los distintos objetos de
las aplicaciones.
 Son una unidad lógica de almacenamiento, pueden usarse
para aislar completamente los datos de diferentes aplicaciones.
Arquitectura en disco

Tablespaces (espacios de tabla)


 Oracle permite realizar operaciones de backup/recovery a
nivel de tablespace mientras la BD sigue funcionando.
 Cuando se crean se les asigna un espacio en disco que
Oracle reserva inmediatamente, se utilice o no.
 Si este espacio inicial se ha quedado pequeño Oracle
puede gestionar el crecimiento dinámico de los ficheros
sobre los que se asientan los tablespaces.
 Esto elimina la posibilidad de error en las aplicaciones por
fallos de dimensionamiento inicial.
 Los parámetros de crecimiento del tamaño de los
tablespaces se especifican en la creación de los mismos.
Arquitectura en disco

Tablespaces (espacios de tabla)


 Por defecto Oracle proporciona los espacios de tabla

USERS (para los usuarios) SYSTEM (para los objetos


del sistema) y SYSAUX (apoyo a SYSTEM);
 Pero podemos crear otros y asignarles los archivos de
datos que deseemos.
 Se pueden ver los espacios de tablas definidos en
nuestra BD con el comando SQL siguiente:
SQL> select * from user_tablespaces;
Arquitectura en disco

Tablespaces
Arquitectura en disco

Segments (Segmentos)
 Dentro de cada tablespace se pueden almacenar

objetos de distinta naturaleza: tablas, índices, etc. Pero


no se pueden mezclar sin más. Necesitamos una
manera de separarlos, y eso son los segmentos.
 En cada archivo de datos existen segmentos, que
están relacionados directamente con un objeto de la
base de datos y que sería reconocible por un usuario
de la base de datos.
 El mismo segmento puede estar presente en más de

un archivo de datos (como en la ilustración anterior


ocurre con el segmento que almacena la tabla 3)
Arquitectura en disco

Segments (Segmentos)
 Se pueden almacenar más de un segmento por

tablespace.
 Un segmento está contenido en su totalidad en un
tablespace.
 Cuando se borra un segmento, el espacio es devuelto
al espacio de tabla.
Arquitectura en disco

Segments (Segmentos)
 Existen varios tipos de segmentos:

 De datos: almacenan las tablas.


 De índices: permiten un acceso rápido a los datos
dependiendo de la cantidad de los mismos (árboles B).
 Las consultas que sólo referencian a columnas indexadas se
resuelven en el índice.
 Establecen un control de unicidad (los índices son
automáticos cuando se definen claves primarias).
 Cada índice ocupa un segmento independiente del
segmento de datos y deberían estar en un espacio de tablas
distinto al de los datos, para mejorar el rendimiento.
Arquitectura en disco

Segments (Segmentos)
 De rollback: son objetos internos de la BD que permiten
efectuar la restauración de las transacciones no
validadas asegurando la consistencia en lectura. La
estructura de los registros de rollback es :
 Identificador de la transacción.
 Dirección del bloque donde está la tabla.
 Número de fila.
 Número de columna.
 Valor del dato antiguo (antes de ser modificado).
Son tan importantes que una BD no puede arrancar si no
puede acceder al menos a un segmento de rollback.
Arquitectura en disco

Segments (Segmentos)
 Temporales: son creados por Oracle para un uso
temporal cuando debe realizar una ordenación que no le
cabe en memoria, y en las operaciones: create
index, order by, group by, distinct, union, intersect, minus.
Son eliminados cuando la sentencia finaliza.
 De bootstrap: Se crea en SYSTEM y contiene
definiciones del diccionario para sus tablas, que se
cargan al abrir la BD. No requiere ninguna acción por
parte del DBA. No cambia de tamaño.
Arquitectura en disco

Segments (Segmentos)
 La tabla que guarda la información de los segmentos

de usuario es user_segments, y se puede visualizar la


información sobre los segmentos con la sentencia SQL
siguiente:
SQL> select * from user_segments;
Arquitectura en disco
Arquitectura en disco

Extents (Extensiones)
 Un segmento está constituido por un conjunto de

extensiones (extents), que no son más que grupos de


bloques de disco ORACLE contiguos.
 Una vez que una extensión existente en un segmento
no puede almacenar más datos, el segmento obtendrá
del espacio de tabla otra extensión.
 Este proceso de extensión continuará hasta que no
quede más espacio disponible en los ficheros del espacio
de tablas, o hasta que se alcance un número máximo de
extensiones por segmento.
Arquitectura en disco

Bloques
 Es el elemento de datos más pequeño distinguible por

Oracle.
 Cada extensión se compone de una serie de bloques.
EL tamaño de bloque se puede configurar por parte del
DBA para optimizar el rendimiento.
 Cada bloque de datos de Oracle equivale a uno o más

bloques de datos del Sistema Operativo.


 Es decir si en un disco concreto, el Sistema Operativo
tiene un tamaño de bloque de 16KB, sólo podremos
asignar en Oracle tamaños de bloque de 16, 32, 48, 64
etc. Kilobytes.
Arquitectura en disco. Visión general
Vistas del Data Dictionary
Tablespace - Administración
Tablespace

 Un tablespace es una unidad lógica de


almacenamiento de datos representado físicamente
por uno o más archivos de datos.
 Se recomienda crear un tablespace por aplicación o
grupos de usuarios.
Tablespaces SYSTEM y Non-SYSTEM

 Tablespace SYSTEM:
 Creado con la base de datos
 Contiene el diccionario de datos
 Contiene el segmento de rollback SYSTEM
 Tablespace Non-SYSTEM:
 Segmentos separados
 Facilita la administración de espacio
 Controla la cantidad de espacio asignada a un usuario
Creación de Tablespaces

 Para crear un tablespace se usa la orden CREATE


TABLESPACE la cual permite asignar uno o más
archivos al espacio de tablas y especificar un espacio
por omisión para cualquiera de las tablas creadas sin
un espacio de tabla explícitamente mencionado en una
sentencia CREATE TABLE.
Creación de Tablespaces

CREATE TABLESPACE nb_tablespace


DATAFILE 'nb_archivo' [SIZE entero [K|M][REUSE]]
[AUTOEXTEND {OFF|ON claúsulas}],
['nb_archivo' [SIZE entero [K|M][REUSE]
[AUTOEXTEND {OFF|ON claúsulas}], …] …
[DEFAULT STORAGE
(INITIAL tamaño
NEXT tamaño
MINEXTENTS tamaño
MAXEXTENTS tamaño
PCTINCREASE valor
)]
[ONLINE|OFFLINE];
Creación de Tablespaces

Donde:
 DATAFILE: Especifica los archivos de datos que componen el
tablespace.
 REUSE: Reutiliza el archivo si ya existe o lo crea si no existe.
 SIZE entero: Especifica el tamaño del tablespace, en KB o MB
 DEFAULT STORAGE: Define el almacenamiento por omisión para
todos los objetos que se creen en ese espacio de tabla. Fija la cantidad
de espacio si no se especifica en la sentencia CREATE TABLE.
 INITIAL: Extensión inicial. Tamaño en bytes de la primera extensión del
objeto.
 NEXT: Extensión siguiente. Tamaño de la siguiente extensión que va a
asignar al objeto. Por defecto, es el tamaño de un bloque de datos
 El tamaño del bloque de datos se especifica en el parámetro de inicio de
Oracle: db_block_size y debe ser múltiplo del tamaño del bloque del
sistema operativo del servidor
Creación de Tablespaces

 MINEXTENTS: Reserva extensiones adicionales más allá de la


extensión inicial que se da a la tabla por omisión. Este parámetro
permite asignar una gran cantidad de espacio cuando se crea un
objeto, incluso si el espacio disponible no esta contiguo.
 El valor por omisión es 1, que significa que Oracle solo asigna la extensión
inicial.
 Si el valor es mayor que 1, Oracle calcula el tamaño de las extensiones
subsiguientes basándose en los valores de los parámetros INITIAL,
NEXT Y PCTINCREASE.
 MAXEXTENTS: Número total de extensiones incluida la primera que
Oracle puede asignar al objeto. El valor depende del tamaño del
bloque de datos.
 PCTINCREASE: Es un factor de crecimiento para las extensiones. Por
defecto es 50, lo que significa que cada extensión subsiguiente será
un 50% más grande que la extensión anterior. El valor de la siguiente
extensión es: NEXT = NEXT + (PCTINCREASE * NEXT) / 100
Creación de Tablespaces

 ONLINE: El tablespace está disponible después de crearlo. Activa


tablespaces. Es el valor por defecto
 OFFLINE: Desactiva el tablespace e impide el acceso al mismo.
 AUTOEXTEND cláusulas: Activa o desactiva el crecimiento
automático de los archivos de datos del tablespace.
 Cuando un tablespace se llena podemos usar esta opción para que el
tamaño del archivo o archivos de datos asociados crezca
automáticamente.
 AUTOEXTEND OFF desactiva el crecimiento automático.
 El formato AUTOEXTEND ON es:
AUTOEXTEND ON NEXT entero {K|M}
MAXSIZE {UNLIMITED|entero {K|M}}
Creación de Tablespaces

 NEXT entero: Es el incremento de espacio en disco expresado en


Kilobytes o en Megabytes que se reservara automáticamente para el
archivo.
 MAXSIZE: es el máximo espacio en disco reservado para la extensión
automática del archivo.
 UNLIMITED: Significa que no hay limite del espacio en el disco
reservado.
Creación de Tablespaces

CREATE TABLESPACE trabajo


DATAFILE 'TRABAJ1.ORA' SIZE 10 M,
'TRABAJ2.ORA' SIZE 5 M
DEFAULT STORAGE
(INITIAL 10
NEXT 10
PCTINCREASE 25);

 En este ejemplo se crea un tablespace “Trabajo” que


está formado por 2 ficheros, y con valor inicial,
siguiente y porcentaje de incremento.
Creación de Tablespaces

CREATE TABLESPACE app_data


DATAFILE '/DISK4/app_data_01'
SIZE 100M,
'/DISK5/app data_ 02'
SIZE 100M
MINIMUM EXTENT 500K
DEFAULT STORAGE ( INITIAL 500K
NEXT 500K
MAXEXTENTS 500
PCTINCREASE 0 );
Gestión de Espacio en Tablespaces

 Dictionary-Managed Tablespaces:
 Técnica por defecto
 Extents libres registrados en las tablas del diccionario de
datos
 Locally Managed Tablespaces:
 Extents libres registrados en bitmap
 Cada bit corresponde a un bloque o grupo de bloques
 Valores de Bit indican libre o utilizado
Locally Managed Tablespaces

CREATE TABLESPACE user_data


DATAFILE '/DISK2/user_data_01'
SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 10M;

 Gestión de espacio recursivo reducida


 Contenido reducido de las Tablas del diccionario de
datos
 No se genera rollback
Temporary Tablespace

CREATE TEMPORARY TABLESPACE temp


TEMPFILE '/DISK2/temp_01'
SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 10M;

 Utilizado para operaciones de ordenamiento


 No puede contener ningún objeto permanente
 Extents gestionados localmente se recomienda
 UNIFORM SIZE = SORT_AREA_SIZE * n
Modificación de tablespaces

ALTER TABLESPACE nb_tablespace


{ADD DATAFILE 'nb_archivo' [SIZE entero [K|M]] [REUSE]
[AUTOEXTEND ON **... |OFF]
[,'nb_archivo' [SIZE entero [K|M] [REUSE]
[AUTOEXTEND ON **... |OFF] ... ]
RENAME DATAFILE 'nb_archivo' [, 'nb_archivo2'] ...
TO 'nb_nuevo_archivo' [, 'nb_nuevo_archivo2']
[DEFAULT STORAGE clausulas_de_almacenamiento]
[ON LINE|OFF LINE]};
Modificación de tablespaces

Donde:
 ADD DATAFILE: Añade al tablespace uno o varios ficheros.
 AUTOEXTEND: Hace que se active o desactive el crecimiento de los
ficheros. Por defecto está en ON.
 RENAME DATAFILE: Cambia el nombre de un archivo existente en el
tablespace.
 Este cambio ha de hacerse previamente en el sistema operativo y después
ejecutar la orden SQL.
 El tablespaces debe estar desactivado (offline) mientras se produce
el cambio.
 DEFAULT STORAGE: especifica los nuevos parámetros de
almacenamiento para todos los objetos que se creen a partir de ahora
en este tablespaces.
Modificación de tablespaces

 ** PUNTOS SUSPENSIVOS (...): En este lugar pueden ir colocadas las


siguientes cláusulas (como vimos anteriormente):
 NEXT: Entero que incrementa el espacio en disco, en Mb.
 MAXSIZE: Es el máximo espacio en disco reservado para la extensión
automática del tablespace.
 UNLIMITED: No existe límite reservado.
Modificación de tablespaces

 Desactivar el tablespace Trabajo


ALTER TABLESPACE Trabajo OFF LINE;

 Añadir un fichero de 6 Mb al tablespace Trabajo


ALTER TABLESPACE Trabajo
ADD DATAFILE 'Trabajo3.ora' SIZE 6 M;
Modificación de tablespaces

 Cambio en configuración de almacenamiento


ALTER TABLESPACE app_data
MINIMUM EXTENT 2M;

ALTER TABLESPACE app_data


DEFAULT STORAGE (
INITIAL 2M
NEXT 2M
MAXEXTENTS 999 );
Modificación de tablespaces

 Tablespace Read-Only
 Tablespace solo disponible para operaciones de lectura
 Los objetos se pueden borrar del tablespace

ALTER TABLESPACE app_data READ ONLY;


Eliminación de tablespaces

 Tablespace eliminado del data dictionary


 Opcionalmente, contenidos eliminados del data
dictionary
 Archivos del SO no se eliminan

DROP TABLESPACE nb_tablespace


[INCLUDING CONTENTS [AND DATAFILES]
[CASCADE CONSTRAINTS]];
Eliminación de tablespaces

Donde:
 INCLUDING CONTENTS: Permite borrar un tablespaces que
tenga datos. Sin esta opción solo puede borrarse uno vacío.
 AND DATAFILES: Borra todos los archivos de datos asociados.
 CASCADE CONSTRAINTS: Borra las relaciones de integridad
referencial que afecten a las tablas del tablespaces suprimido.
 Conviene poner el tablespace a offline antes de borrarlo para
asegurarnos de que no haya sentencias SQL que estén
accediendo a sus datos, en cuyo caso sería imposible borrarlo.
Habilitar Extensión automática de
Data Files

ALTER TABLESPACE app_data


ADD DATAFILE '/DISK6/app_data_04'
SIZE 200M
AUTOEXTEND ON
NEXT 10M
MAXSIZE 500M;
Modificar el Tamaño de Data Files
Manualmente

ALTER DATABASE
DATAFILE '/DISK5/app_data_02'
RESIZE 200M;
Agregar Data Files a un Tablespace

ALTER TABLESPACE app_data


ADD DATAFILE '/DISK5/app_data_03'
SIZE 200M;
Mover Data Files: Alter Tablespace

 La base de datos debe estar montada.


 Los data files destino deben existir.

ALTER TABLESPACE app_data


RENAME
DATAFILE '/DISK4/app_data_01'
TO '/DISK5/app_data_01';
Mover Data Files: Alter Database

 La base de datos debe estar montada.


 Los data files destino deben existir.

ALTER DATABASE
RENAME FILE '/DISK1/system_01'
TO '/DISK2/system_01.dbf';
Obtener Información de un
Tablespace
 Información de los Tablespaces:
 DBA_TABLESPACES
 V$TABLESPACE
 Información de los Data files:
 DBA_DATA_FILES
 V$DATAFILE
 Información de los Tempfiles:
 DBA_TEMP_FILES
 V$TEMPFILE
Recomendaciones

 Use varios tablespaces


 Especifique los parámetros de almacenamiento por
defecto para los tablespaces
 Asigne cuotas de tablespace para los usuarios
 Incluya rutas de dir. en los nombres de archivo
 Use MINIMUM EXTENTS
 Use locally managed extents
 Puede tener 1023 data files por tablespace

You might also like