Apuntes

Anuncio
Oracle: parámetros de
configuración
BDSI – Rafael Caballero –
Facultad de Informática - UCM
Estructura físicas/lógicas



La estructura lógica de mayor nivel en Oracle
es el Tablespace
Un Tablespace puede ocupar varios ficheros
físicos y un fichero físico puede contener
varios tablespaces
Al crear tables, índices, etc. éstos se asocian a
un tablespace
bl
Bloques, extensiones y segmentos



Bloque --> Conjunto de bytes
consecutivos en disco (por
(p
ejemplo 2Kb)
Extensión --> Conjunto de
bloques consecutivos para un
mismo propósito
Segmento --> Conjunto de
extensiones, no necesariamente
consecutivas en un mismo
consecutivas,
tablespace y para un mismo
ppropósito
p
(por ejemplo
(p
j p contener
una tabla, o un índice).
Bloques
El tamaño parám. DB_BLOCK_SIZE

Múltiplo del tamaño de bloque
del sistema operativo
Cabecera de bloque (overhead):

H d di
Header:
dirección
ió fí
física,
i tipo
i de
d bloque
bl
(tabla,
( bl índice…)
í di
)

Table directory: Datos de la tabla/objeto dueño del bloque

Row directory: Datos de la fila/filas en este bloque
(Total variable, entre 84 y 107 bytes)
Espacio libre

Para posible crecimiento de valores de atributos varchar2

Para almacenar datos de transacciones

Gestión del espacio liberado



Por defecto de forma automática, aunque es configurable por
el usuario
D l y update
Delete
d pueden
d incrementar
i
ell espacio
i libre
lib en un
bloque
El espacio
p
libre creado por
p delete y update
p
puede
p
ser
utilizado:



Por un insert/update que forme parte de la misma transacción
Por un insert/update de otra transacción /(incluso otra sesión),
sesión) pero
sólo después de que la transacción que liberó el espacio haya
terminado.
El espacio libre dentro de un bloque puede estar fragmentado.
Oracle desfragmentará agrupando espacio libre cuando sea
conveniente
Filas en cadena y migraciones


Cuando el tamaño de una fila es mayor que el
tamaño de bloque,
bloque Oracle crea una cadena de
bloques para almacenar la fila.
T bié puede
También
d darse
d
ell caso:


Un bloque contiene varias filas
Una de estas filas crece por un update, y ya no
hay sitio en el bloque, pero la fila cabría en un
bloque nuevo
bl
 La fila se copia (migra) a un nuevo bloque
Gestión manual del espacio libre


Se hace con dos parámetros, pctfree y pctused
Se especifican
p
al crear un objeto:
j


Tabla: pctfree y pctused
Indice: sólo pctfree
Se pueden
S
d especificar
ifi en ell momento
t de
d la
l creación,
ió pero
también se pueden modificar posteriormente:
Alter table nombre_de_tabla
nombre de tabla pctfree nuevo_pct_free;
nuevo pct free;
Alter table nombre_de_tabla pctused nuevo_pct_used;
Alter index nombre_de_indice p
pctfree nuevo_p
pct_free;;

Pctfree

Indica el tanto por ciento de bloque que debe
dejarse libre para posibles updates
pdates
pctfree

Oracle mantiene una lista de bloques libres en una extensión.
Un bloque pertenece a esta lista desde que se crea hasta que
se alcanza la ocupación de blocksize * (1-(ptcfree/100))

P tf demasiado
Pctfree
d
i d pequeño
ñ –>
> pérdida
é did de
d eficiencia
fi i i



muchas filas en cadena
Muchas migraciones
g
Es tarea del DBA intentar mantener el número de
migraciones
i
i
y filas
fil en cadena
d
tan pequeño
ñ como sea posible
ibl
(jugar con tamaño de bloque, pctfree, tamaño medio inicial de
p
ppara filas))
filas,, crecimiento esperado
pctused

Es el máximo espacio que debe tener ocupado
un
n bloque
bloq e para admitir nuevas
n e as filas
Pctused y pctfree unidos
Creación de extents




Al crear una tabla, Oracle le asigna un segmento, y
al segmento le corresponde automáticamente un
extent inicial,
i i i l contiendo
i d un cierto
i
número de
d bloques
bl
(parámetro initial extent )
Cuando el extent inicial se llena,
llena se utiliza un extent
incremental para el segmento y así sucesivamente
Cuando se crea la tabla existe un sección storage que
fija estos valores.
El tamño de las extensiones sucesivas ppuede ser bien
UNIFORM o AUTOALLOCATE (variable,
controlado por el sistema )
Gestion de extents



Para crear uno se busca un número de bloques
consecutivos en cada fichero de datos asociado al
tablespace
Los extents de un segmento
g
sólo se liberan cuando
se elimina el objeto (drop table…)
Excepciones:
p



Sentencia truncate por el usuario
ALTER TABLE table_name
_
DEALLOCATE UNUSED;
Oracle en ciertas situaciones puede hacerlo si la
configuración lo permite
Descargar