Gestión de espacio en Oracle

Tablespaces en Oracle

Tipos de Tablespaces

  • Temporales
  • Permenetes
  • Deshacer

Sintaxis:

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}

Permanent tablespace

create tablespace ts_something

logging

datafile '/dbf1/ts_sth.dbf'

size 32m

autoextend on

next 32m maxsize 2048m

extent management local;

create tablespace data datafile '/home/oracle/databases/ora10/data.dbf'

size 10M

autoextend on maxsize 200M

extent management local uniform size 64K;

Temporary tablespace

create temporary tablespace temp_mtr

tempfile '/dbf1/mtr_temp01.dbf'

size 32m

autoextend on

next 32m maxsize 2048m

extent management local;

Note, a temporary tablespace has tempfiles, not datafiles.

Undo tablespace

create undo tablespace ts_undo

datafile '/dbf/undo.dbf'

size 100M;

Manejo de extent

Dictionary Manager: Esta era la forma antigua de controlar los extends, la base de datos registraba dentro del diccionario los extends libres y ocupados. Cada vez que se producía un movimiento en los extens se tenían que actualizar las tablas correspondientes. Consultaba constantemente las tablas FET$ y UET$ (la primera guarda los segmentos libres y la segunda los usados) localizadas en el diccionario. Esto provocaba contención en el tablespace de system.

Ejemplo de la creación de tablespace dictionary manager:

 CREATE TABLESPACE users

  DATAFILE '/u10/app/oradata/TESTDB/user01.dbf' SIZE 50M

  EXTENT MANAGEMENT DICTIONARY

  DEFAULT STORAGE (

    INITIAL 64K

    NEXT 64K

    MINEXTENTS 2

    MAXEXTENTS 121

    PCTINCREASE 0);

Locally manager : Con este nuevo sistema que aparece a partir de Oracle 9, el registro de extends se hace a través de bitmaps. Cada bit dentro del bitmap corresponde a un bloque o grupo de bloques, cuando a un extends se le asigna espacio el servidor de oracle cambia los valores del bitmap para mostrar el nuevo status de los bloques. En oracle 9 si el parámetro COMPATIBLE =9.0.0 será la opción por defecto, si es inferior se creara como dictionary. A partir de Oracle 10 es la opción por defecto. Oracle recomienda la utilización de esta opción.

Con locally manager tablespaces existen dos opciones para asignar el espacio de los extends: UNIFORM o AUTOLLOCATE:

La opción uniform  asigna y desasigna el espacio en los extens de un tamaño uniforme. Este es el valor por defecto en los tablespaces temporales y no se puede especificar en los tablespaces de undo.

Ejemplo de la creación de un tablespace locally uniform:

 CREATE TABLESPACE users

  DATAFILE '/u10/app/oradata/TESTDB/user01.dbf' SIZE 50M

  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;

El autoallocate (or automatic) sin embargo le dice a la base de datos que varíe el tamaño de los extends para cada segmento. Por ejemplo, en Windows y en Linux con bloques de datos de 8KB, los primero 16 extends de un segmento serán de 64 KB. Los siguientes 63 extends serán de 1MB, de 8MB los siguientes 64 extend, y así progresivamente. Este algoritmo permite que los segmentos pequeños sean pequeños, mientras los grandes irán creciendo si afectar a los demás segmentos.

Ejemplo de la creación de un tablespace localy autoallocate:

CREATE TABLESPACE users

  DATAFILE '/u10/app/oradata/TESTDB/user01.dbf' SIZE 50M

  EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

Ventajas de la utilización de locally manager:

  • Como no guarda la información sobre el espacio sobre en el diccionario, reduce la contención sobre estas tablas.
  • Automáticamente rastrea el espacio adyacente libre, eliminando la necesidad de unirlo.
  • Evita operaciones recurrentes sobre las tablas del diccionario.
  • El tamaño de los extens puede ser determinado automáticamente por system,
  • Los cambios en los bitmaps no generan información de rollback, porque no actualizan las tablas en el diccionario. (excepto casos especiales como información de cuota del tablespace).
  • Reduce la fragmentación

     

Storage clause

Configuración del almacenamiento de tablas (CREATE TABLE), indices (CREATE INDEX), etc... en oracle.

STORAGE opciones

opciones:

 

INITIAL int K | M

NEXT int K | M


MINEXTENTS int


MAXEXTENTS int


MAXEXTENTS UNLIMITED

PCTINCREASE int

FREELISTS int

FREELIST GROUPS int

OPTIMAL

OPTIMAL int K | M

OPTIMAL NULL

BUFFER POOL {KEEP|RECYCLE|DEFAULT}

storage (

initial 65536

next 1048576

minextents 1

maxextents 2147483645

pctincrease 0

freelists 1

freelist groups 1

optimal 7k

buffer_pool default

)

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 creen dentro de el.

However, a default storage clause can not be specified for locally managed tablespaces. Dictionary managed tablespaces allow to have a storage clause, but without freelists, freelist groups and buffer_pool.

initial

Especifica el tamaño (en bytes) de la primera extensión.

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.

Especifica el incremento en el tamaño de las siguientes extensiones. El tamaño de una nueva extension es el tamaño de la anterior multiplico por pctincrease. Debe ser 0 para reducir la fragmentación en los tablespaces.

minextents

Especifica el numero inicial de extensiones cuando se crea el objeto.

maxextents

Especifica el numero máximo de extensiones que el objeto puede tener.

freelists

Especifica el numero de freelists. Este parámetro solo se puede usar con CREATE TABLE or CREATE INDEX.

freelist groups

Especifica el numero de freelist groups. Este parámetro solo se puede usar con CREATE TABLE or CREATE INDEX.

buffer_pool

El valor de buffer_pool debe ser uno de: keep, recycle, default. Este parámetro solo se puede usar con CREATE TABLE, CREATE INDEX, CREATE CLUSTER, ALTER TABLE, ALTER INDEX Y ALTER CLUSTER.

optimal

Solo se puede especificar para los rollback segments.

Últimas Noticias

Actualmente aumentar la  productividad y la competitividad empresarial es cada vez una tarea...
https://listacasas.com Uno de los portales inmobiliarios más conocidos de Guatemala...
Nuevo proyecto realizado por Infoacp, una web en prestashop : https://wiwi-pc.es En wiwi-pc...
More inNoticias  

Documentos Recientes

Categorías

Linkedin Twitter Facebook Youtube
Copyright (c) InfoAcp 2013. All rights reserved. Mantenimiento Informático
Infoacp Empresa de Informática, diseño gráfico, desarrollo de aplicaciones de gestión, Odoo, Contratos de mantenimiento informatico
Diseño y soluciones TIC Infoacp S.L.
Murcia Murcia 30007 España
Localización: 37.9956589, -1.1284899
868 70 76 94
informática, diseño gráfico, reparación de ordenadores, reparación de portatiles, reparación de móviles, programas de gestión para empresas, odoo, desarrollo odoo, programacion odoo, contratos de mantenimiento informatico