Está en la página 1de 223

TEMARIO

Administracin y Ajuste de Oracle 10g

Este documento electrnico puede ser descargado libre y


gratuitamente desde Internet para su ejecucin e
impresin, slo para fines educativos y/o personales,
respetando su integridad y manteniendo los crditos de
los autores en el pie de pgina.

Francisco Fernndez Martnez (pacof@um.es)


Juan Luis Serradilla Amarilla (juanlu@um.es)

Arquitectura de la Base de Datos

Arranque y parada

Fichero de control

Redo log

Tablespaces

Segmentos de rollback

Usuarios, roles, privilegios y perfiles

Jobs

Auditora

Copias de seguridad y recuperacin

Universidad de Murcia

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

OBJETIVOS

Conocer la Arquitectura Oracle.

Saber arrancar y parar una base de datos Oracle.

Gestionar los ficheros Redo log.

Gestionar el fichero de control.

Gestionar tablespaces, incluyendo temporales y undo.

Gestionar segmentos de rollback.

Gestionar usuarios, roles, privilegios y perfiles.

Gestionar jobs.

Gestionar la auditora del sistema gestor de base de datos.

Realizar copias de seguridad y recuperacin de la base de


datos.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 1
ARQUITECTURA DE LA BASE DE DATOS

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 1.
ARQUITECTURA DE LA BD

SERVIDOR ORACLE
Servidor Oracle:
Instancia
Oracle
Base de datos
Oracle

Servidor oracle

Instancia

Conexin a la Base de datos

Instancia
Oracle:

Memoria: SGA (Automatic Shared Memory Management


>=10g) y PGA

Procesos: procesos de usuario, servidores y background

Estructura lgica: tablespaces, segmentos, extensiones,


bloques

Base de datos
Oracle:

Arquitectura OFA

Usuarios administradores de la BD: sys y system

Fichero de autenticacin (orapw)

Administracin y Ajuste de Oracle 10g

System Global
Area (SGA)
Procesos
Background

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Ficheros de
Datos
Fichero(s) de
Control
Ficheros Redo
Log.

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INSTANCIA

CONEXIN A LA BD

La integran los procesos background y la SGA


Abre una y slo una BDO, y permite acceder a ella.

Para poder conectarnos a una BDO, necesitamos una serie de


variables en el entorno del usuario del S.O. desde el que
realizaremos la conexin. En el caso de unix/linux:

Nota: con Oracle Real Application Cluster (RAC), ms de una


instancia usarn la misma BD.

ORACLE_HOME. Localizacin del sw Oracle a utilizar.


ORACLE_SID. BD, asociada al ORACLE_HOME, a la que vamos a
conectarnos. Tiene sentido slo en un SBD.
PATH=$PATH:$ORACLE_HOME/bin. Programas Oracle
LD_LIBRARY_PATH=$ORACLE_HOME/lib. Localizacin de las libreras
compartidas (Linux/Unix).
NLS_LANG=spanish_spain. Idioma del cliente (opcional).

En la mquina donde reside el servidor Oracle, la variable


ORACLE_SID identifica a la instancia con la que estamos
trabajando.

Proceso de usuario: la ejecucin de la aplicacin que permite al


usuario iniciar la conexin; por ejemplo, sql*plus.
Proceso servidor: se crea en el SBD cuando el usuario se
conecta a la BD, y es el que realmente interacta con la BD.
Una conexin de un proceso de usuario al SBD es una sesin
en la BD (puede haber varias del mismo usuario). Se inicia
cuando el usuario se valida contra la BD y termina cuando el
usuario se desconecta.
Desconectar una sesin con ALTER SYSTEM DISCONNECT
SESSION 'sid, serial#' [POST_TRANSACTION] [IMMEDIATE];.
Destruye el servidor dedicado (o el circuito virtual si MTS).
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

SGA (System Global Area)

CONEXIN A LA BD: procesos

y Automatic Shared Memory Management


Zona
de
memoria
compartida,
que
se
reserva al arrancar la
instancia. Su tamao es
REDO
SHARED
BUFFER
dinmico
(>=
9i)
y
BUFFER
limitado por el parmetro
POOL
CACHE
SGA_MAX_SIZE.
(log_buffer)
SGA_TARGET
(>=10g)
fija el tamao de la SGA
LARGE
JAVA
STREAMS
y
activa
el
reparto
automtico de su espacio
POOL
POOL
POOL
entre: sga fija, shared
pool, large pool, java
pool, buffer cach y
SGA (sga_target, sga_max_size)
streams pool. El resto se
ajustan manualmente.
log buffer, buffer cachs keep y recycle, y buffer cachs con tamao de
bloque especial; aunque consumen espacio de SGA_TARGET, se fijan
manualmente
(LOG_BUFFER,
DB_KEEP_CACHE_SIZE,
DB_RECYCLE_CACHE_SIZE, DB_nK_CACHE_SIZE). El resto (punto
anterior) los dejaremos a cero (tb podemos darles valores, q sern
tomados como mnimos).
V$SGAINFO: tamao componentes SGA (tb grnulo y libre).
V$SGA_DYNAMIC_COMPONENTS.
V$SGA_TARGET_ADVICE: recomendaciones sobre SGA_TARGET.

Conexin con
Servidor
Compartido
(MTS)
Conexin con
Servidor
Dedicado

Administracin y Ajuste de Oracle 10g

ARQUITECTURA DE LA BD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

SGA (System Global Area)


y ASMM

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

10

SGA: Shared Pool

La SGA est formada por grnulos (espacio contiguo de memoria virtual), que
sern de 4M para SGAs <= 1Gb (en 9i <= 128M), y de 16M en caso contrario
(ver V$SGAINFO). Los componentes de la SGA (buffer cache, sharedpool,
largepool, javapool, etc) variarn su tamao usando en base a grnulos. Al
arrancar, se asignan al menos tres grnulos (uno para la SGA fija que incluye
los redo buffers, otro para la buffer cache y uno ms de sharedpool); y cada
componente seguir reservando tantos grnulos como necesite.
La SGA est compuesta, fundamentalmente, por tres estructuras de memoria:
shared pool, database buffer cache y redo log buffer. Adems, existen tres
estructuras de memoria que, opcionalmente, pueden estar presentes en la
SGA: large pool, streams pool y java pool. Los parmetros del fichero de
inicializacin que ms afectan al tamao de la SGA son: DB_CACHE_SIZE
(>=9i, antiguo db_block_buffer en <=8i), LOG_BUFFER, SHARED_POOL_SIZE.
Ejemplo de parmetros de inicializacin para usar gestin automtica de SGA
(SGA_TARGET):
sga_max_size = 80M
sga_target = 70M
db_cache_size = 0
shared_pool_size = 0
large_pool_size = 0
java_pool_size = 0
streams_pool_size = 0
log_buffer = 1048576

Administracin y Ajuste de Oracle 10g

ARQUITECTURA DE LA BD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

11

Formada por dos estructuras de


memoria
gestionadas
por
algoritmos LRU:
library cache
dictionary cache
Su tamao viene determinado
por
el
parmetro
shared_pool_size, del init.ora
(sin
que
la
SGA
supere
sga_target (sga_max_size en
9i)). Desde 10g se recomienda
usar
sga_target,
dejando
shared_pool_size a cero, o
indicando un valor mnimo). Se
puede cambiar dinmicamente
con:
ALTER SYSTEM SET SHARED_POOL_SIZE
= 64M;

Se puede vaciar con ALTER


SYSTEM FLUSH SHARED_POOL;
(menos lo q est en uso por
sesiones o q est fijado con
dbms_shared_pool.keep).

SQL AREA

PL/SQL
AREA

LIBRARY CACHE
DICTIONARY CACHE

SHARED POOL (shared_pool_size)

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

12

SGA: Shared Pool

SGA: Database Buffer Cache

En la library cache se almacena informacin sobre las


sentencias SQL y PL/SQL, usadas recientemente. Est
formada por dos estructuras:

Shared SQL rea; se almacenan los planes de ejecucin y


los rboles sintcticos (parse tree) de las sentencias SQL.
Shared PL/SQL rea; contiene las unidades de programa
compiladas y analizadas sintcticamente (parsed):
procedures, functions, packages y triggers.

ALTER SYSTEM SET DB_CACHE_SIZE = 96M;

El uso de una u otra cach lo indicaremos con el parmetro BUFFER_POOL, de la clausula STORAGE de
la tabla: keep, recycle o default: ALTER TABLE mitabla STORAGE (BUFFER POOL KEEP);

13

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Es un buffer circular que registra todos


los cambios hechos en los bloques de la
cach de datos (incluidos datos en s,
ndices y rollback), en lo que llamaremos
redo entries. Su propsito principal es
la recuperacin de la instancia (no
confundir con el rollback).
El tamao viene determinado por el
parmetro log_buffer (en bytes).
Las redo entries contienen la informacin
necesaria (indices y rollback incluidos) para
repetir los cambios hechos mediante
insert, update, delete, create, alter o drop.
Los procesos servidores copian las entradas
de redo en la Redo Log Buffer Cache
(despus de modificar los bloques en la
cache de datos) ; y el proceso LGWR es el
encargado de volcar dichos buffers al
fichero redo log activo (en disco).

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Se pueden definir cachs adicionales para tablas que no usan el tamao de bloque por
defecto de la BD; con los parmetros DB_nK_CACHE_SIZE, por ejemplo,
DB_16K_CACHE_SIZE. Despus se crea un tablespace que use el nuevo tamao de
bloque (crete tablespace ... BLOCKSIZE 16384;). Util al importar un tablespace de otra
BD con otro db_block_size.

Desde 10g, se puede vaciar con ALTER SYSTEM FLUSH BUFFER_CACHE; . Vaca
completamente la cach de datos de la SGA. OJO!!!, no usar en produccin. Util si se
quiere medir el rendimiento de sentencias sql como si se ejecutasen por primera vez.
Administracin y Ajuste de Oracle 10g
ARQUITECTURA DE LA BD
14
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SGA: Redo Log Buffer Cache

DB_CACHE_SIZE. Dimensiona la cach por defecto, que siempre existe y cuyo


tamao no puede valer cero.
DB_KEEP_CACHE_SIZE. Dimensiona la cach donde se guardarn los bloques de
tablas que se usan frecuentemente.
DB_RECYCLE_CACHE_SIZE. Dimensiona la cach que almacena los bloques de las
tablas que se usan poco.

DD.

ARQUITECTURA DE LA BD

Se pueden definir varias cachs de datos independientes:

En la dictionary cache se guardan las definiciones de


datos usadas ms recientemente: database files, tablas,
ndices, columnas, usuarios, privilegios, etc. Esta
informacin se genera y utiliza en la fase de anlisis
sintctico (parse); y se obtiene de las tablas del
diccionario de datos. Es como una cach de datos para el
Administracin y Ajuste de Oracle 10g

Almacena copias de los bloques de datos, extrados de los ficheros de datos


(data files); y est gestionado por un algoritmo LRU.
Cuando se procesa una query, el proceso servidor busca los bloques de datos
en la Database Buffer Cache; si no los encuentra, los lee de los ficheros de
datos y guarda una copia en la Database Buffer Cache.
Su tamao depende principalmente del parmetro DB_CACHE_SIZE (desde
10g mejor usar sga_target, dejando db_cache_size a cero o un valor mnimo).
Puede modificarse dinmicamente (sin sobrepasar sga_target (sga_max_size
en 9i)):

SGA: Large Pool


Es un rea de memoria de la SGA, a configurar slo si se
usa:
un entorno de servidores compartidos (shared server o
MTS)
recovery manager (RMAN)
parallel query
Con MTS, almacena informacin sobre las sesiones
conectadas a travs de servidores compartidos: UGA, I/O y
operaciones de backup y recuperacin.
No hace uso de algoritmo LRU para su gestin.
Su tamao depende del parmetro large_pool_size (en
bytes), del fichero de inicializacin, que se puede modificar
dinmicamente (sin que el tamao total de la SGA
sobrepase el parmetro sga_target (sga_max_size en 9i)):
ALTER SYSTEM SET LARGE_POOL_SIZE = 64M;
Desde 10g mejor usar sga_target, dejando large_pool_size
a cero (o con un valor mnimo).

LGWR

DML
USERS

ARQUITECTURA DE LA BD

15

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

16

SGA: Java Pool

Program Global Area (PGA)


Es una zona de memoria, fuera de la SGA, reservada para
cada proceso de usuario que se conecta a la BD.
Se crea cada vez que se arranca un nuevo proceso servidor (o
un proceso background); y se libera cuando el proceso
termina.
En un entorno de servidores dedicados (dedicated server)
contiene: sort area, informacin de sesin (privilegios de
usuario y estadsticas de sesin), estado de los cursores
(etapa del procesamiento de cada sentencia SQL que est
usando actualmente la sesin), pila (stack space).
Con servidores compartidos (MTS), parte de estas estructuras
se guardan en la SGA. Si se activa la Large Pool se almacenan
en ella, si no se quedan en la Shared Pool.
PGA_AGGREGATE_TARGET (>=9i). Valor mnimo 10M, y
default=20%SGA.. Vista V$PGASTAT. Tamao = en OLTP
RAM*0.80*0.20 (en DSS RAM*0.80*0.50). Activar: si es
distinto de cero (junto a WORKAREA_SIZE_POLICY=AUTO).
Habilita el uso de una zona de memoria compartida para las
PGA, evitando la necesidad de asignar parmetros como
SORT_AREA_SIZE o HASH_AREA_SIZE.

Slo es necesaria si se instala y se usa Java en la BD.


Se utiliza para compilar (parsing) el cdigo Java (de
forma similar a la Shared Pool para el cdigo PL/SQL).
Su tamao depende del parmetro java_pool_size
(redondeado por encima a un mltiplo del valor del
grnulo), del fichero de inicializacin. En Oracle9i, su
tamao por defecto es de 24M (si el tamao del grnulo
es de 4M, y de 32M si es de 16M.
Desde
10g
mejor
usar
sga_target,
dejando
java_pool_size a cero (o con un valor mnimo), de modo
q sea Oracle el que se encargue de ajustar su tamao
automticamente.
Administracin y Ajuste de Oracle 10g

ARQUITECTURA DE LA BD

17

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SESION

Procesos de usuario: se arranca uno cuando un usuario solicita


una conexin a la BD. Establece la conexin con la BD pero no
interacta directamente con ella.
Procesos servidores: creado cuando se establece la conexin a
la BD. Es el proceso que interacta con la BD, para cada
sesin. Un proceso servidor puede ser dedicado o compartido.
Uno dedicado slo gestiona la peticiones de la sesin que lo
inicia; sin embargo, uno compartido gestiona las peticiones de
varios procesos de usuario.
Procesos background: disponibles cuando se arranca una
instancia Oracle. Son los siguientes: DBWR, PMON, SMON,
LGWR y CKPT; y nuevos en 10g: PSP0 (Process Spawner),
MMAN (Memory Manager), MMON (Memory Monitor), MMNL
(Memory Monitor Light). Opcionalmente podemos tener:
ARCH, RECO, Dispatchers (Dnnn), Shared Servers (Snnn), etc.
El parmetro BACKGROUND_DUMP_DEST, del fichero de
inicializacin, define el directorio donde se guardan los ficheros
de traza de los procesos background.

PILA

PGA

PGA
(servidor dedicado)
SQL

SHARED POOL

SHARED POOL
SESION

LARGE POOL

SGA
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

18

Estructura de procesos

(servidor compartido)

SQL

ARQUITECTURA DE LA BD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Program Global Area (PGA)

PILA

Administracin y Ajuste de Oracle 10g

SGA
ARQUITECTURA DE LA BD

19

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

20

Procesos background

Procesos background

(DBWR)

DBWR. Escribe los bloques de datos (y rollback) de la SGA (data


buffer cache) en los ficheros de datos. Esto lo hace de forma
asncrona, cuando:
Sucede un checkpoint.
El nmero de buffers modificados alcanza un umbral.
No quedan buffers libres.
Ocurre un timeout.
Ponemos un tablespace offline.
Dejamos un tablespace en modo readonly.
Borramos o truncamos una tabla.
ALTER TABLESPACE nombretsp BEGIN BACKUP.

Nota. Un checkpoint sucede cuando:


El fichero redo log se llena al 90%.
Se alcanza log_checkpoint_interval (bloques del SO).
Se llega a log_checkpoint_timeout (en segundos).

ARQUITECTURA DE LA BD

21

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

22

ESTRUCTURA LGICA

PMON. Se activa peridicamente, recuperando los recursos despus


de que un proceso falle: hace rollback de las transacciones que el
usuario tena en curso, libera bloqueos a nivel de tabla/fila y otros
recursos reservados por el usuario, y vuelve a arrancar dispatchers
muertos (dead dispatchers).
CKPT. Avisa al DBWR cuando sucede un checkpoint y actualiza las
cabeceras de los ficheros de datos y de control (el DBWR volcar los
buffers actualizados a los ficheros de datos). Si los checkpoints
suceden muy frecuentemente puede haber contencin en disco. Si
tardan mucho se alargar el proceso de recovery. Como mucho
suceder un checkpoint al llenarse el redolog.
ARCH. Proceso opcional. Archiva automticamente los redo log online
si se activa el modo ARCHIVELOG; asegurando que se registran todos
los cambios hechos en la base de datos. Archiva el redo log que se ha
llenado, cuando sucede un log switch.
MMAN (>=10g). Memory Manager. Gestiona Automatic Shared
Memory Managment.
MMON (>=10g). Memory monitor. Genera snapshots del AWR (abre
procesos esclavos M000).
MMNL (>=10g). Memory Monitor Light. Captura frecuentemente
session history (V$ACTIVE_SESSION_HISTORY) y calcula mtricas.
PSP0 (>=10G). Process spawner. Crea y gestiona otros procesos
Oracle.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Procesos background (PMON, CKPT, ARCH)

LGWR. Realiza escrituras secuenciales del contenido de la redo


log buffer cache en los ficheros redo log. Cuando?
Se hace commit.
La redo log buffer cache se llena 1/3.
Hay 1Mb de cambios en la redo log buffer cache.
Como mucho, cada 3 segundos.
Siempre antes que escriba el DBWR.
SMON. Recupera la instancia, si es necesario, cuando sta
arranca: aplica los cambios registrados en los redo log (roll
forward), abre la base de datos dejndola accesible a los
usuarios, y hace rollback de las transacciones que no
terminaron.
Tambin se activa peridicamente, agrupando extensiones libres
contiguas en extensiones de mayor tamao (slo para tablespaces con
default storage cuyo pctincrease > 0).
Adems libera el espacio ocupado por segmentos temporales durante
el procesamiento de sentencias SQL.

Nombre del proceso: DBW0 a DBW9 y DBWa DBWj (mximo 20).


DB_WRITER_PROCESSES. N de procesos arrancados.

Administracin y Ajuste de Oracle 10g

(LGWR, SMON)

ARQUITECTURA DE LA BD

23

La estructura lgica de la base de datos determina el uso que

se hace del espacio fsico que la sustenta. Existe una


jerarqua top-down en esta estructura, consistente en
tablespaces, segmentos, extensiones y bloques.
Una BDO la forman un grupo de tablespaces. Un tablespace
puede contener uno o ms segmentos. Un segmento lo
integran una o ms extensiones. Una extensin tendr al
menos un bloque. El bloque es la unidad mnima de
almacenamiento.
El tamao del bloque ser mltiplo del que tenga el SO, y lo
determina la variable db_block_size (2K, 4K, 8K, 16K y 32K).
Cuando un segmento (tabla, ndice, rollback o temporal)
crece, el espacio que se aade es de una extensin.
ASM (>=10g). Gestor de volmenes para bases de datos
Oracle. Gestiona directamente los discos. Adems distribuye
automticamente los datos entre los discos, manteniendo el
reparto uniforme cuando se aaden o quitan discos (incluso
en caliente). Tambin se encarga de borrar los ficheros que
ya no forman parte de la BD.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

24

ESTRUCTURA LGICA

ARQUITECTURA OFA

Base de Datos, Tablespaces, Segmentos, Extensiones y Bloques

OFA (Oracle Flexible Architecture) propone una estructura de


directorios que permite ubicar fcilmente cualquier fichero del
servidor de base de datos; adems de agrupar dichos ficheros por
componentes.
Adems, facilita el reparto de los ficheros entre diferentes discos,
optimizando la E/S. Oracle recomienda separar el software de los
datos; y estos ltimos repartirlos entre varios discos (por ejemplo,
separando datos e ndices, incluso tambin temp y rollback).
Estructura de directorios OFA:

/u01/app/oracle (ORACLE_BASE)
$ORACLE_BASE/product/10.2.0.1 (ORACLE_HOME)
$ORACLE_HOME/bin (Ejecutables)
$ORACLE_HOME/dbs (init$ORACLE_SID.ora, orapw$ORACLE_SID)
$ORACLE_BASE/admin/$ORACLE_SID (ADMIN)
$ORACLE_BASE/admin/$ORACLE_SID/pfile (PFILE)
init$ORACLE_SID.ora (crear enlace en $ORACLE_HOME/dbs)
$ORACLE_BASE/admin/$ORACLE_SID/bdump (BDUMP)
alert$ORACLE_SID.ora y ficheros de traza de procesos background
$ORACLE_BASE/admin/$ORACLE_SID/udump (UDUMP)
alert$ORACLE_SID.ora y ficheros de traza de procesos background
/u02/oradata/$ORACLE_SID (Ficheros de la BD: *.dbf, *.ctl, *.log)
/u03/oradata/$ORACLE_SID (Ficheros de la BD: *.dbf, *.ctl, *.log)
/u04/oradata/$ORACLE_SID (Ficheros de la BD: *.dbf, *.ctl, *.log)
Administracin y Ajuste de Oracle 10g

ARQUITECTURA DE LA BD

25

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARQUITECTURA DE LA BD

26

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

USUARIOS ADMINISTRADORES DE LA
BD

FICHERO DE AUTENTICACIN

Cuando creamos una BDO se crean automticamente


los usuarios SYS y SYSTEM, ambos con el rol DBA.

El SYS, cuya clave inicial es change_on_install, es el


propietario del DD y habitualmente se usa para arrancar
y parar la base de datos, as como para modificar los
componentes de la misma (como instalar nuevas
opciones). Para conectar como SYS:
CONNECT SYS AS SYSDBA
CONNECT / AS SYSDBA

Un fichero de autenticacin nos permite conectar a la BD como


SYS AS SYSDBA, sin pertenecer al grupo dba o desde un puesto
remoto al SBD, realizando dicha autenticacin contra el mencionado
fichero. Lo usaremos cuando no dispongamos de una conexin
desde el propio SBD como grupo dba.
Para usar un fichero de autenticacin:
Crearemos el fichero con la utilidad orapwd:

orapwd file=nombre_fichero password=clave


entries=mximo_de_usuarios
Nota: el fichero se llamar orapw$ORACLE_SID y estar en $ORACLE_HOME/dbs.

Activaremos el parmetro REMOTE_LOGIN_PASSWORDFILE del init:


EXCLUSIVE. Permite dar el privilegio SYSDBA a otros usuarios
(adems del SYS). Slo una instancia usa el fichero.
SHARED. El nico usuario reconocido por le fichero es el SYS. El
fichero puede ser compartido por varias instancias.
Incluiremos el usuario en el fichero de claves (para el SYS no hay que
hacerlo):

Nota: hay que pertenecer al grupo dba (Unix/Linux) o crear un


fichero de autenticacin en el SBD.

El SYSTEM, con clave inicial manager, es el DBA por


excelencia. Se usara para las tareas administrativas
habituales: alta de usuarios, creacin de tablespaces,
etc.

GRANT SYSDBA TO usuario;


Nota: en V$PWFILE_USERS estn los usuarios con SYSDBA y/o SYSOPER.

Conectaremos a la BD (el usuario Oracle que se conecta siempre es el


SYS):
CONNECT usuario/clave AS SYSDBA

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

27

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

28

PROCESO DE CONSULTA
1. El proceso de usuario enva la
sentencia
SQL
al
proceso
servidor.
2. El proceso servidor busca la
sentencia SQL en la Shared
Pool. Si no la encuentra, la
compila y la guarda en la
Shared Pool.
3. El proceso servidor accede a los
datos en la Database Buffer
Cache. Si no los encuentra,
accede
directamente
a
los
ficheros de datos, llevando los
datos a la Database Buffer
Cache.
4. El proceso servidor devuelve los
datos al proceso de usuario q
Administracin y Ajuste de Oracle 10g
inici la conexin.

PROCESO DE ACTUALIZACIN

3
1

2
4

1
3
ARQUITECTURA DE LA BD

29

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

3
1

2
7

6
1

3
ARQUITECTURA DE LA BD

30

PRACTICAS TEMA 1

V$DATABASE (Base de datos).


V$INSTANCE (Instancia).
V$SGA (SGA).
V$SGAINFO (Gestin dinmica de la SGA).
V$SGASTAT (SGA detallada).
V$BUFFER_POOL (Buffers en la cach de datos)
V$SQLAREA (Sentencias SQL).
V$PROCESS (Procesos).
V$BGPROCESS (Procesos background).
V$DATAFILE (Ficheros de datos de la BD).
V$CONTROLFILE (Ficheros de control de la BD).
V$LOGFILE (Ficheros redo log de la BD).
DBA_TABLESPACES (Tablespaces de la BD).
DBA_SEGMENTS (Segmentos que hay en los tablespaces).
DBA_EXTENTS (Extensiones que componen los segmentos).
DBA_USERS (Usuarios de la BD).

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

VISTAS DEL DD

En primer lugar se repiten las fases 1


(envo de la sentencia), 2
(compilacin) y 3 (acceso a los
datos) vistas en el proceso de
consulta.
4. Se guarda una copia del dato
(antes
del
cambio)
en
un
segmento de Rollback (por si se
deshace la transaccin).
5. Se modifican los bloques de datos
en la Database Buffer Cach. El
DBWR (de forma asncrona) los
llevara a los ficheros de datos
cuando suceda un checkpoint.
6. Se guardan en la cach de Redo
las "redo entries" (vector de
cambios
de
cada
bloque
modificado)
necesarias
para
registrar el cambio q se va a
hacer (el LGWR vuelca el buffer al
fichero redo log activo, cuando se
hace commit o cada 3 segundos).
7. El proceso servidor devuelve el
nmero de filas actualizadas al
proceso de usuario.
Administracin y Ajuste de Oracle 10g

ARQUITECTURA DE LA BD

1.1. Comprobar la asignacin de variables de entorno


necesarias para conectarnos a la BD:

$ORACLE_HOME
$ORACLE_SID
$LD_LIBRARY_PATH
$PATH

1.2. Identificar los procesos que componen instancia:

ps -ef|grep $ORACLE_SID
select username, program from v$process where background is
not null;
select name,description from v$bgprocess where PADDR!='00';

1.3. Ver el tamao de la SGA de la BD:

1.4. Comprobar valores de parmetros del init relacionados


con el tamao de la SGA:

select * from v$sgainfo;


select * from v$sgastat;
select * from v$sgastat where name in ('library cache','row
cache','sql area','buffer_cache','log_buffer');

31

echo
echo
echo
echo

show
show
show
show
show
show
show
show

parameter
parameter
parameter
parameter
parameter
parameter
parameter
parameter

sga_target
sga_max_size
shared_pool_size
db_cache_size
db_block_size
log_buffer
large_pool_size
java_pool_size

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

32

PRACTICAS TEMA 1.

1.5. Comprobar ficheros que componen la BD y ubicarlos en la


estructura OFA:

PRACTICAS TEMA 1.

ls -l /u0?/oradata/$ORACLE_SID
select name from v$datafile;
select name from v$tempfile;
select member from v$logfile;
select name from v$controlfile;

select name, created, log_mode, checkpoint_change#,


open_mode, platform_name, current_scn from v$database;
select instance_name, host_name,version, startup_time, status,
archiver,logins, database_status from v$instance;

1.6. Identificar la estructura lgica de la BD: tablespaces,


segmentos, extensiones.

Select tablespace_name from dba_tablespaces;


select tablespace_name, file_name from dba_data_files order by
tablespace_name, file_name;
select tablespace_name, segment_type, count(*) segmentos from
dba_segments group by tablespace_name,segment_type;
select tablespace_name,segment_type, count(*) extensiones from
dba_extents group by tablespace_name,segment_type;

Administracin y Ajuste de Oracle 10g

ARQUITECTURA DE LA BD

1.7. Consultar informacin sobre la base de datos


(v$database) y la instancia (v$instance).

1.8. Localizar el proceso servidor asociado a mi sesin


(v$process y v$session). Es un servidor dedicado o
compartido?

select a.server, a.username dbuser,a.program user_program, b.spid


server_process, b.program server_program
from v$session a, v$process b
where a.username=USER and a.PADDR=b.ADDR;

33

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARQUITECTURA DE LA BD

34

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PRACTICAS TEMA 1.

1.9. Cuanto ocupa la Dictionary cache y la Library cache en


tu BD? (v$sgastat)
select SQL_TEXT, PERSISTENT_MEM, EXECUTIONS, LOADS,
DISK_READS, CPU_TIME, ELAPSED_TIME from v$sqlarea order by
DISK_READS desc;

TEMA 2
ARRANQUE Y PARADA DE LA BASE DE
DATOS

1.10. Ver la actividad de la Library Cache (v$librarycache).


select namespace,gethitratio, gethitratio from v$librarycache;

1.11. Ver las sentencias SQL que guarda la Shared-Pool


(v$sqlarea).

1.12. Crear el fichero de autenticacin y activarlo (orapwd).

select sql_text from v$sqlarea;


orapwd file=$ORACLE_HOME/dbs/orapwCURSOxy password=miclave
entries=5
remote_login_passwordfile=EXCLUSIVE"

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

35

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARRANQUE Y PARADA DE LA BD

36

TEMA 2.
ARRANQUE Y PARADA DE LA BD

FICHEROS DE PARMETROS DE
INICIALIZACIN I

Ficheros de inicializacin: init.ora y spfile.ora


Creacin de la BD
OMF (Oracle Managed Files)

Arranque de la base de datos


Comando startup
Comando alter database
Parar la base de datos

CREATE SPFILE [='nombre'] FROM PFILE [='nombre'];

Fichero alertSID.Log

Nota1. Si se omiten los nombres, toma los valores por defecto.


Nota2. La BD no podr abrir el nuevo spfile hasta el siguiente arranque.
Nota3. Se puede crear un init a partir de un spfile, invirtiendo la sintaxis.

Trazas de los procesos background

Los parmetros del spfile se modifican con:

Trazas de los procesos de usuario

ALTER SYSTEM SET parametro = valor [SCOPE = MEMORY


| SPFILE | BOTH]

Diccionario de datos

Nota. Si slo queremos modificar el parmetro en el spfile, indicaremos


SPFILE. Para hacer el cambio solo en memoria, especificar MEMORY.

Automatic Storage Managment (ASM)


Administracin y Ajuste de Oracle 10g

ARRANQUE Y PARADA DE LA BD

37

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

38

db_name=CURSOxy
db_block_size=2048
compatible = 10.2.0
control_files = (/u02/oradata/CURSOxy/control1.ctl,
/u03/oradata/CURSOxy/control2.ctl)
undo_management = auto
undo_tablespace = undo_rbs
background_dump_dest = /u01/app/oracle/admin/CURSOxy/bdump
core_dump_dest = /u01/app/oracle/admin/CURSOxy/cdump
user_dump_dest = /u01/app/oracle/admin/CURSOxy/udump
max_dump_file_size = 10240
sga_max_size = 120M
sga_target = 100M
db_cache_size = 0
shared_pool_size = 0
large_pool_size = 0
java_pool_size = 0
log_buffer = 2886656
log_checkpoint_interval = 0
log_checkpoint_timeout = 1800
pga_aggregate_target = 10M
processes = 30
remote_login_passwordfile=EXCLUSIVE
nls_territory=spain
nls_language=spanish

Si usamos OFA, la ubicacin tpica para el init.ora es


$ORACLE_BASE/admin/$ORACLE_SID/pfile. Despus creamos un
enlace en $ORACLE_HOME/dbs (ubicacin por defecto).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARRANQUE Y PARADA DE LA BD

EJEMPLO DE INIT.ORA

Hay dos tipos de parmetros:


Explcitos: los que se indican en el fichero de parmetros.
Implcitos: el resto, que tomarn un valor por defecto.
La forma de indicar valor a los parmetros es
parametro=valor.
El smbolo # indica el comienzo de un comentario, pudiendo
estar al principio o en medio de la lnea.
En el init.ora, el parmetro ifile permite incluir otros ficheros
con parmetros.
Una lista de valores se indicar entre parntesis, separando
los valores por comas.
Para indicar un valor de tipo cadena de caracteres hay que
encerrarlo entre comillas simples.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FICHEROS DE PARMETROS DE
INICIALIZACIN II

Para arrancar la instancia, el servidor Oracle tiene que leer el


fichero de parmetros de inicializacin (spfile o init), cuya
ubicacin predeterminada es $ORACLE_HOME/dbs.
El fichero de parmetros de inicializacin puede ser de dos
tipos:
Init: se trata de un fichero de texto, editable, cuyo nombre
sigue el patrn init$ORACLE_SID.ora.
Spfile: es un fichero binario, no editable pero visualizable,
cuyo nombre sigue el patrn spfile$ORACLE_SID.ora.
Se crea, a partir de un init, con:

ARRANQUE Y PARADA DE LA BD

Nota. Es un fichero de texto que hay que mantener manualmente con un editor ASCII (vi,
notepad, etc).
39

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARRANQUE Y PARADA DE LA BD

40

PARMETROS BSICOS DE
ORACLE 10g

CREAR LA BASE DE DATOS


y borrarla

Como curiosidad, son aquellos parmetros que sera


obligatorio fijar para una instancia (los dems se podran
dejar por defecto). Realmente sto no debe hacerse (dejar el
resto de parmetros sin asignar para que tomen sus valores
por defecto).
NLS_LANGUAGE
COMPATIBLE
CONTROL_FILES
DB_BLOCK_SIZE
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST
DB_DOMAIN
DB_NAME
DB_RECOVERY_FILE_DEST
DB_RECOVERY_FILE_DEST_SIZE
INSTANCE_NUMBER
JOB_QUEUE_PROCESSES
LOG_ARCHIVE_DEST_n
LOG_ARCHIVE_DEST_STATE_n

Administracin y Ajuste de Oracle 10g

Conectarnos al servidor Oracle como SYS AS SYSDBA, autenticndonos


contra el S.O. o usando un fichero de claves.
Suficiente memoria para arrancar la instancia y espacio en disco para
crear la BD.

41

Crearemos un fichero init.ora, y si queremos, un spfile.ora.


Arrancaremos las instancia con STARTUP NOMOUNT.
Crearemos la BD con el comando CREATE DATABASE.
Ejecutaremos los scripts catalog.sql y catproc.sql que estn en
$ORACLE_HOME/rdbms/admin.
Desde 10g se puede borrar con DROP DATABASE; (slo montada).

Administracin y Ajuste de Oracle 10g

ARRANQUE Y PARADA DE LA BD

42

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

EJEMPLO DE CREACION DE BASE


DE DATOS

ORACLE MANAGED FILES (OMF)

connect / as sysdba
startup nomount

CREATE DATABASE "CURSOxy"


maxdatafiles 254
maxinstances 1
maxlogfiles 32
character set WE8ISO8859P15
DATAFILE '/u02/oradata/CURSOxy/system01.dbf' SIZE 260M
AUTOEXTEND ON NEXT 10M
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u02/oaradata/CURSOxy/sysaux01.dbf' size 100M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
UNDO TABLESPACE UNDO_RBS1
DATAFILE '/u03/oradata/CURSOxy/rbs01.dbf' SIZE 10M
DEFAULT TABLESPACE USERS
DATAFILE '/u02/oradata/CURSOxy/users01.dbf' SIZE 10M
DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE '/u03/oradata/CURSOxy/temp01.dbf' SIZE 10M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K
logfile '/u04/oradata/CURSOxy/redo01.log' SIZE 3M,
'/u04/oradata/CURSOxy/redo02.log' SIZE 3M,
'/u04/oradata/CURSOxy/redo03.log' SIZE 3M;

ARRANQUE Y PARADA DE LA BD

OMF permite que Oracle se encargue de la creacin de los ficheros que


componen la BD, simplificando la administracin de la misma.
OMF se activa mediante dos parmetros de inicializacin:
DB_CREATE_FILE_DEST. Define el directorio donde se ubicarn los ficheros.
DB_CREATE_ONLINE_LOG_DEST_N. Establece los directorios donde se
guardarn los ficheros de control y redolog; donde N puede valer de 1 a 5.
Nota. Se pueden activar ambos parmetros o slo uno ellos.

Ejemplo para crear una BD, usando OMF, separando los ficheros
redolog y de control del resto:
Parmetros de inicializacin:
DB_CREATE_FILE_DEST='/u02/oradata/CURSOxy'
DB_CREATE_ONLINE_LOG_DEST_1='/u03/oradata/CURSOxy'
DB_CREATE_ONLINE_LOG_DEST_2='/u04/oradata/CURSOxy'
Creacin de la BD:
CREATE DATABASE CURSOxy
character set WE8ISO8859P15
UNDO TABLESPACE UNDO_RBS
DEFAULT TABLESPACE USERS
DEFAULT TEMPORARY TABLESPACE TEMP;

rem *** CREACION DE LAS VISTAS DEL DD ***


@$ORACLE_HOME/rdbms/admin/catalog.sql
@$ORACLE_HOME/rdbms/admin/catproc.sql

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

La BD la podemos crear con el asistente grfico (en Linux dbca)


o con el comando CREATE DATABASE:

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

Para ubicar los ficheros que componen la BD:

Guardaremos, al menos, dos copias del fichero de control, en discos


separados.
Multiplexaremos los redolog en discos diferentes (separados del resto
de la BD).
Separaremos los ficheros de datos que provoquen contencin en disco;
por ejemplo: datos, ndices, system (DD), temp y rollback.

NLS_TERRITORY
OPEN_CURSORS
PROCESSES
REMOTE_LISTENER
REMOTE_LOGIN_PASSWORDFILE
ROLLBACK_SEGMENTS
SESSIONS
SHARED_SERVERS
STAR_TRANSFORMATION_ENABLE
D
UNDO_MANAGEMENT
UNDO_TABLESPACE
ARRANQUE Y PARADA DE LA BD

Para crear una BD necesitamos:

43

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARRANQUE Y PARADA DE LA BD

44

ARRANCAR LA BASE DE DATOS

COMANDO STARTUP
Arranca la instancia y abre la BD. Permite parar el

Cuando arrancamos una BDO, pasa por varios estados hasta


que finalmente queda accesible a los usuarios: nomount,
mount y open.
En el primer estado (nomount) se arranca la instancia:
lectura del fichero de parmetros, creacin de la SGA,
arranque de los procesos background y apertura del fichero
alert$ORACLE_SID.log.

proceso de arranque de la BD en cualquiera de sus


fases (NOMOUNT, MOUNT).

STARTUP (abre la base de datos con el fichero de


parmetros por defecto).

STARTUP PFILE=/home/CURSO/cursoXY/miinit.ora

Nota: el fichero de parmetros se busca en $ORACLE_HOME/dbs,


comenzando por spfile$ORACLE_SID.ora. Si no lo encuentra, sigue
con spfile.ora, y finalmente init$ORACLE_SID.ora.

STARTUP NOMOUNT (para crear la base de datos).


STARTUP MOUNT (para renombrar datafiles, activar

Seguidamente la BD se monta (mount) abriendo el fichero de


control y obteniendo de l los nombres de los ficheros que la
componen: datafiles y redo log.
Finalmente se abre la BD (open), procediendo a la apertura
de los ficheros de datos (datafiles) y los ficheros redo log. El
servidor oracle comprueba la consistencia de la base de datos,
y si es necesario el proceso SMON inicia la recuperacin de la
instancia.

Administracin y Ajuste de Oracle 10g

ARRANQUE Y PARADA DE LA BD

ARCHIVELOG o hacer una recuperacin completa de la


BD).

STARTUP RESTRICT (slo permite la conexin de


usuarios con el privilegio RESTRICTED SESION).

STARTUP FORCE (hace SHUTDOWN ABORT y arranca la


BD).

45

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Permite cambiar el estado de la base de datos, p.e. de NOMOUNT a


MOUNT, o de MOUNT a OPEN. Tambin se utiliza para dejar la BD en
modo READ ONLY.
Encolar la BD (>=9i). Util si el DBA necesita q no haya transacciones
ni consultas concurrentes a la suya. Espera a q terminen
transacciones/consultas (se pueden ver en V$BLOCKING_QUIESCE) e
impide nuevas (excepto de SYS/SYSTEM). Slo desde SYS/SYSTEM.
V$INSTANCE.ACTIVE_STATE:
ALTER SYSTEM QUIESCE RESTRICTED;
ALTER SYSTEM UNQUIESCE;

Suspender la BD (>=9i). Util para copias de seguridad en caliente.


Suspende E/S a ficheros de datos y control (los tablespaces deben
estar en modo hot backup con ALTER TABLESPACE BEGIN BACKUP).
Slo SYS/SYSTEM. V$INSTANCE.DATABASE_STATUS. Ojo, no cerrar
la sesin q hace el SUSPEND pues es la nica q puede hacer RESUME:
ALTER TABLESPACE nomtsp BEGIN BACKUP;
...
ALTER SYSTEM SUSPEND;
// Copiamos ficheros de la BD (necesitar recuperar la
instancia, pues no se hace checkpoint).
ALTER SYSTEM RESUME;
ALTER TABLESPACE nomtsp END BACKUP;

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

46

PARAR LA BASE DE DATOS

ALTER DATABASE {MOUNT | OPEN}


ALTER DATABASE OPEN [READ WRITE | READ ONLY]

ARRANQUE Y PARADA DE LA BD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMANDO ALTER DATABASE Y


ENCOLAR Y SUSPENDER LA BD

Administracin y Ajuste de Oracle 10g

ARRANQUE Y PARADA DE LA BD

47

Hay determinadas operaciones que requieren parar la BD; como la


actualizacin de algunos parmetros del init.ora; o hacer una copia
fsica de la BD (copia en frio). La BD se para con el comando
SHUTDOWN, impidiendo cualquier conexin posterior.
SHUTDOWN [NORMAL], espera a que terminen todas las
transacciones en curso y todas las sesiones, fuerza un checkpoint,
adems de cerrar todos los ficheros y destruir (parar) la instancia.
SHUTDOWN TRANSACTIONAL, slo espera a que terminen las
transacciones en curso, fuerza un checkpoint, cierra los ficheros y
destruye (para) la instancia.
SHUTDOWN IMMEDIATE, hace rollback de todas las transacciones
en curso y cierra todas las sesiones; cierra y desmonta la BD,
adems de forzar un checkpoint, cerrar ficheros y parar la instancia
(como los anteriores).
SHUTDOWN ABORT, cierra la instancia (destruye procesos
background y SGA) sin esperar a desmontar ni cerrar la BD (como
en una caida, ni hace checkpoint ni cierra ficheros)). Requiere
recovery de la instancia al arrancar (lo hace automticamente el
proceso SMON).

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARRANQUE Y PARADA DE LA BD

48

COMANDO SHUTDOWN

FICHERO alert.log

Sintaxis:

SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT]

Tipos de parada. Cada una de las opciones de parada se


comporta de forma diferente en cuanto a esperar a que
terminen transacciones y sesiones, hacer checkpoint, o
desmontar y cerrar la BD:

Esperar Transacciones
Esperar Sesiones
Checkpoint
Cerrar BD
Desmontar BD
Parar instancia

NORMAL
S
S
S
S
S
S

TRANSACTIONAL
S
N
S
S
S
S

Administracin y Ajuste de Oracle 10g

IMMEDIATE
N
N
S
S
S
S

ARRANQUE Y PARADA DE LA BD

ubicacin tpica es $ORACLE_BASE/admin/$ORACLE_SID/bdump.

ABORT
N
N
N
N
N
S
49

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARRANQUE Y PARADA DE LA BD

50

FICHEROS DE TRAZA DE LOS


PROCESOS BACKGROUND
CKPT started with pid=7, OS id=18012
SMON started with pid=8, OS id=18014
RECO started with pid=9, OS id=18016
MMON started with pid=10, OS id=18018
MMNL started with pid=11, OS id=18020
Tue Oct 26 13:11:08 2006
ALTER DATABASE
MOUNT
...
SMON: enabling cache recovery
Mon Oct 26 13:11:13 2006
Successfully onlined Undo Tablespace 1.
Mon Oct 26 13:11:13 2006
SMON: enabling tx recovery
Mon Oct 26 13:11:13 2006
Database Characterset is WE8ISO8859P15
...
Tue Oct 26 13:11:16 2006
Completed: ALTER DATABASE OPEN
Wed Oct 26 13:52:06 2006
Thread 1 advanced to log sequence 552
Current log# 3 seq# 4 mem# 0:
/home/u04/oradata/CURSOxy/redo03.log

Nota. En el ejemplo de arriba se puede ver el arranque de la instancia, los parmetros asignados, los procesos
arrancados, como se monta la BD, y cmo finalmente se abre la BD y se empiezan a usar los fichero redolog.
Administracin y Ajuste de Oracle 10g

Recoge tanto informacin de estado como errores:


arranque y parada,
parmetros del init sin valores por defecto,
arranque de los procesos background,
cambio de fichero redolog (log switch),
creacin de tablespaces y segmentos de rollback,
comandos alter (alter database, alter tablespace, etc),
errores ORA-600 y los que indican falta de espacio (llenado
de tablas, ndices, tablespaces, etc).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

EJEMPLO DE alert.log
Tue Oct 26 13:11:08 2006
Starting ORACLE instance (normal)
...
Starting up ORACLE RDBMS Version:
10.2.0.2.0.
System parameters with non-default values:
processes
= 30
sga_max_size
= 83886080
__shared_pool_size
= 50331648
shared_pool_size
= 0
__large_pool_size
= 4194304
large_pool_size
= 0
__java_pool_size
= 4194304
java_pool_size
= 0
...
db_cache_size
= 0
compatible
= 10.2.0
log_buffer
= 2886656
...
db_name
= CURSOxy
pga_aggregate_target
= 10485760
PMON started with pid=2, OS id=18002
PSP0 started with pid=3, OS id=18004
MMAN started with pid=4, OS id=18006
DBW0 started with pid=5, OS id=18008
LGWR started with pid=6, OS id=18010

Es el fichero de log de la BD y la primera referencia para el


DBA en el da a da de la administracin de la misma.
Por defecto est en $ORACLE_HOME/rdbms/log; o en el
directorio
que
indique
el
parmetro
BACKGROUND_DUMP_DEST del init. Si usamos OFA, una

ARRANQUE Y PARADA DE LA BD

51

Registran
errores
producidos
en
los
procesos
background de la instancia: LGWR, DBWR, SMON,
PMON, etc.
Se generan en el directorio indicado por el parmetro de
inicializacin BACKGROUND_DUMP_DEST, que por
defecto es $ORACLE_HOME/rdbms/log. Si se utiliza la
arquitectura OFA para ubicar los ficheros Oracle, una
ubicacin tpica para estos ficheros de traza es
$ORACLE_BASE/admin/$ORACLE_SID/bdump.
Su
nombre
sigue
el
patrn
${ORACLE_SID}_nombreproceso_pid.trc; por ejemplo,
cursoXY_smon_16432.trc (los nombres de los ficheros
de traza en Unix/Linux estn siempre en minsculas).
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARRANQUE Y PARADA DE LA BD

52

FICHEROS DE TRAZA DE LOS


PROCESOS
DE USUARIO
Recogen estadsticas de seguimiento de sentencias SQL o errores en

DICCIONARIO DE DATOS (DD)

las sesiones de usuario.


Las trazas de usuario se generan en el directorio que indique el
parmetro
USER_DUMP_DEST
(por
defecto,
$ORACLE_HOME/rdbms/log). Si usamos OFA, una ubicacin tpica
es $ORACLE_BASE/admin/$ORACLE_SID/udump.
Su tamao est limitado por el parmetro MAX_DUMP_FILE_SIZE.
Sus nombres siguen el patrn ${ORACLE_SID}_ora_pid.trc; por
ejemplo, cursoXY_ora_23654.trc (siempre en minsculas).
Pueden ser muy tiles para el ajuste de sentencias SQL. En este
caso se pueden generar voluntariamente activando la traza:
A
nivel
de
sesin
con
ALTER
SESSION
SET
SQL_TRACE=TRUE;,
Desde
una
sesin
del
DBA
con
dbms_system.set_sql_trace_in_session(sid,true), donde SID
es el n de sesion oracle (V$SESSION, V$PROCESS). Se
desactiva de igual forma (indicando false en lugar de true).
A nivel de instancia, con el parmetro SQL_TRACE=TRUE del
init.
Utilidad TKPROF. Permite generar un informe legible, a partir de
un fichero de traza generado explcitamente para una sesin.
tkprof cursoXY_ora_23654.trc salida_traza.txt explain=scott/tiger

Administracin
y Ajuste de Oracle 10g
sys=no

ARRANQUE Y PARADA DE LA BD

53

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Ejemplos de vistas del DD:

El DD contiene informacin sobre: la definicin de todos los


objetos de la BD (tablas, vistas, ndices, sinnimos,
secuencias, procedimientos, funciones, paquetes, triggers,
etc), el espacio ocupado por cada objeto, condiciones de
integridad, usuarios, privilegios, roles, as como auditora del
sistema.

Administracin y Ajuste de Oracle 10g

ARRANQUE Y PARADA DE LA BD

54

El DD tambin tiene las llamadas tablas dinmicas, cuyas vistas tienen el prefijo
V$ (como V$SESSION). Se crean al arrancar la instancia y residen en memoria.
Cuando cerramos la BD (y por tanto la instancia), desaparecen y con ellas su
contenido.
ARRANQUE Y PARADA DE LA BD

ASM (>=10g). Gestor de volmenes para bases de datos Oracle. Mejor


rendimiento de E/S y fcil de gestionar. Maneja el espacio en forma de
grupos de discos. Divide cada fichero en extensiones (de 128K o 1M) y
las reparte entre los discos de un grupo (striping). Tb permite mirror, y
lo hace a nivel de fichero (ms granular q a nivel de disco),
gestionando el mirror a nivel de extensin. Varias opciones de mirror
(a nivel de grupos de discos): 2-way mirroring (1 copia por extensin),
3-way (2 copias) y unprotected (sin mirror). Opciones de striping: fine
(128Kb) y coarse (1M). Se puede desactivar mirror y/o striping.
Al aadir nuevo disco a un grupo, rebalancea los datos online. Si esto
genera mucha E/S, se puede frenar con ASM_POWER_LIMIT (en el
init de la propia instancia ASM).
ASM necesita un tipo especial de instancia:
Tiene init y orapw, pero no DD. Usuarios SYS y SYSTEM con
autenticacin SO (no ms usuarios).
Instancia: mount o no mount (nunca open). Memoria: de 60M a
120M.
Comandos de gestin propios: create | alter | drop diskgroup.
Nuevos procesos background:
RBAL: coordina la actividad de rebalanceo de los discos en cada
grupo.
ORBn (n=0..9): ejecuta el rebalanceo, moviendo extensiones
entre discos.
Administracin y Ajuste de Oracle 10g

Objetos de la BD: dba_objects, dba_tables, dba_indexes,


dba_tab_columns, dba_ind_columns, dba_constraints, dba_views.
Espacio ocupado: dba_data_files, dba_segments, dba_extents.
Estructura de la BD: dba_tablespaces, dba_data_files.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Las tablas base se crean automticamente cuando creamos la BD


con el comando CREATE DATABASE; y son las que realmente
contienen la informacin del DD.
Las vistas se crean al lanzar el script catalog.sql; y permiten
acceder a la informacin de las tablas del DD (que est
codificada).

AUTOMATIC STORAGE
MANAGEMENT (ASM) - I

El DD se modifica cada vez que lanzamos una sentencia DDL.


Las vistas estticas que forman parte del DD son de tres
tipos: dba, all y user. Cada una de ellas tendr un prefijo
asociado que la ubica en uno de dichos tipos.
DBA: todos los objetos de la BD.
ALL: todos los objetos accesibles por el usuario actual.
USER: todos los objetos propiedad del usuario actual.
La vista DICTIONARY contiene una lista de todas las vistas del
DD; y en DICT_COLUMNS tenemos el detalle de las columnas
de cada una de ellas.

Administracin y Ajuste de Oracle 10g

El DD est compuesto por un conjunto de tablas y vistas


asociadas donde se almacena toda la informacin sobre los
objetos que componen la BD, as como la estructura lgica y
fsica de la misma.
El DD incluye dos tipos de objetos: tablas base y vistas.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

VISTAS DEL DICCIONARIO DE


DATOS

55

ARRANQUE Y PARADA DE LA BD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

56

AUTOMATIC STORAGE
MANAGEMENT (ASM) - II

VISTAS DEL DD

Cada BD q usa ASM, tiene dos nuevos procesos background:


OSMB: comunicacin entre BD y la instancia ASM.
RBAL: abre y cierra los discos en los grupos, en la parte de la
BD.
Parmetros del init (para instancia ASM y/o BD q la usa):
instance_type = ASM (para una BD es RDBMS)
db_unique_name = +ASM (valor por defecto)
asm_power_limit = 1 (mximo 11; velocidad rebalanceo; 1 es el
ms lento)
asm_diskstring (limita los dispositivos de disco usables para grupos
de discos; ejemplo: '/dev/hd*').
asm_diskgroups (nombres de grupos de discos q se mostarn
automticamente; por defecto vale NULL y los monta todos).
large_pool_size (al menos 8M, para ejecutar los paquetes internos
de uso de ASM)
Ejemplo de init de una instancia ASM

instance_type=ASM
db_unique_name=+ASM
asm_power_limit=1
asm_disk_string=/dev/vgora01/rdsk/*, /dev/vgora02/rdsk/*
asm_disk_groups=diskgrp1, diskgrp2
Administracin y Ajuste de Oracle 10g
ARRANQUE Y PARADA DE LA BD
large_pool_size=16M

57

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ls -l $ORACLE_HOME/dbs/init$ORACLE_SID.ora
ls -l $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora

more $ORACLE_HOME/dbs/init$ORACLE_SID.ora
grep processes $ORACLE_HOME/dbs/init$ORACLE_SID.ora

cp $ORACLE_HOME/dbs/init$ORACLE_SID.ora init01xy.ora
echo processes=17 >> init01xy.ora
tail init01xy.ora

STARTUP
show parameter processes

SHUTDOWN immediate
STARTUP pfile=init01xy.ora
show parameter processes

Anotar el valor de los parmetros: db_block_size, sga_target, sga_max_size,


shared_pool_size, db_cache_size, log_buffer, processes.

Crear fichero /home/CURSO/cursoxy/init01xy.ora, copia del initCURSOxy.ora, y


modificar processes=17.

Arrancar la BD y comprobar valor de parmetros, por qu no ha tomado el


nuevo valor?.

Parar la BD y arrancar con el init01xy.ora. Comprobar parmetro processes.


Abrir otra conexin de sqlplus y ver qu ocurre.

Parar la BD de forma normal, estando conectado algn usuario y ver qu


ocurre. Y qu sucede cuando todos los usuarios se desconectan.

Repetir la parada de la BD, estando conectado algn usuario, de forma que no


espere:

SHUTDOWN IMMEDIATE

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARRANQUE Y PARADA DE LA BD

58

2.2. Arranque de la BD (STARTUP). Comprobar las diferentes fases


en el arranque de la BD.

Localizar el fichero init.ora (y spfile si existe) de nuestra BD:

SHUTDOWN

Administracin y Ajuste de Oracle 10g

PRACTICAS TEMA 2.

2.1. Fichero init.ora. Arranque y parada de la BD.

V$INSTANCE
V$DATABASE
V$SESSION
V$PROCESS
V$PARAMETER
V$PARAMETER2
V$SYSTEM_PARAMETER
V$SYSTEM_PARAMETER2
DICTIONARY
DICT_COLUMNS
V$ASM_DISKGROUP
V$ASM_CLIENT
V$ASM_DISK
V$ASM_FILE
V$ASM_TEMPLATE
V$ASM_OPERATION

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PRACTICAS TEMA 2.

ARRANQUE Y PARADA DE LA BD

Arrancar slo la instancia (NOMOUNT) y consultar algn parmetro. Qu ocurre al acceder a


V$CONTROLFILE.
STARTUP NOMOUNT
SHOW PARAMETER processes
SELECT * FROM V$CONTROLFILE;
Ahora montar la BD y volver a consultar V$CONTROLFILE. Que sucede al leer DBA_USERS.
ALTER DATABASE MOUNT
SELECT * FROM V$CONTROLFILE;
SELECT * FROM DBA_USERS;
Abrir la BD en modo READ ONLY y crear una tabla. Activar modo READ WRITE y volver a
crear la tabla.
ALTER DATABASE OPEN READ ONLY
CREATE TABLE MITABLA (C1 VARCHAR2(2));
ALTER DATABASE OPEN READ WRITE
CREATE TABLE MITABLA (C1 VARCHAR2(2));

2.3. Fichero alert.log y ficheros de traza. Diccionario de datos.

59

Buscar y consultar el fichero de alert de la BD.


ls -l $ORACLE_HOME/rdbms/log/alert_$ORACLE_SID.log
ls -l $ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log
cat alert_$ORACLE_SID.log
tail -26f alert_$ORACLE_SID.log
Buscar si hay ficheros de traza.
ls -l $ORACLE_HOME/rdbms/log/*.trc
ls -l $ORACLE_BASE/admin/$ORACLE_SID/bdump/*.trc
ls -l $ORACLE_BASE/admin/$ORACLE_SID/udump/*.trc
Sacar la lista de vistas del DD. Consultar las columnas de dichas vistas.
Select * from DICTIONARY;
Select * from DICT_COLUMNS;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARRANQUE Y PARADA DE LA BD

60

PRACTICAS TEMA 2.

PRACTICAS TEMA 2.

2.4. Impedir las conexiones de usuarios, de modo que el DBA s


pueda conectarse. Intenta conectarte como scott/tiger. Volver
a permitir conexiones de usuarios.

2.6. Conctate como SCOTT y haz update sobre DEPT (sin hacer
commit). Desde otra sesin, cierra la BD con SHUTDOWN
TRANSACTIONAL. Qu pasa al hacer commit en la sesin de
SCOTT?
CONNECT SCOTT/TIGER
SHUTDOWN TRANSACTIONAL (sesin del sys)
update dept set deptno=88 where deptno=99; (sesin de scott)
COMMIT; (sesin de scott)
2.7. Conctate como usuario scott/tiger. Activa la traza y haz una
query con una join entre EMP y DEPT (select a.ename, b.dname
from emp a, dept b where a.deptno=b.deptno;). Desactiva la traza
y analiza el fichero que se ha generado con el comando tkprof (es
un comando unix, no de SQL).
CONNECT SCOTT/TIGER
ALTER SESSION SET SQL_TRACE=TRUE;
tkprof nombre_fichero_traza.trc salida_traza.txt explain=scott/tiger sys=no (desde
fuera SQL)
cat salida_traza.txt

STARTUP RESTRICT (si la BD est parada)


ALTER SYSTEM ENABLE RESTRICTED SESSION; (sila BD estaba arrancada)
ALTER SYSTEM DISABLE RESTRICTED SESSION;

2.5. Forzar un checkpoint y hacer un insert en la tabla


SCOTT.DEPT. Inmediatamente despus hacer SHUTDOWN
ABORT. Arrancar y comprobar SCOTT.DEPT. Volver a repetir el
insert, haciendo commit antes del SHUTDOWN ABORT; y
comprueba el contenido de SCOTT.DEPT.

ALTER SYSTEM CHECKPOINT;


insert into scott.dept values (99,'FORMACION','MURCIA');
SHUTDOWN ABORT
STARTUP
SELECT * FROM SCOTT.DEPT;
insert into scott.dept values (99,'FORMACION','MURCIA');
COMMIT;
SHUTDOWN ABORT
STARTUP
SELECT * FROM SCOTT.DEPT;

Administracin y Ajuste de Oracle 10g

ARRANQUE Y PARADA DE LA BD

61

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARRANQUE Y PARADA DE LA BD

62

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 3.
FICHERO DE CONTROL

Fichero de control

TEMA 3
FICHERO DE CONTROL

Contenido del fichero de control


Multiplexar fichero de control
Backup del fichero de control

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FICHERO DE CONTROL

63

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FICHERO DE CONTROL

64

AADIR COPIAS Y BACKUP DEL


FICHERO DE CONTROL

FICHERO DE CONTROL

Se trata de un fichero binario, sin el cual no es posible

Se para la BD con SHUTDOWN NORMAL.


Se hace una copia fsica del fichero de control, a nivel del sistema
operativo. En Unix con el comando cp.
Se incluye la nueva copia del fichero de control en el init.ora (o
spfile); en el parmetro CONTROL_FILES.
Arrancar la BD con STARTUP.

arrancar la BD. Por ello es conveniente mantener varias


copias del mismo, en diferentes discos.

Se lee al montar la BD.


Su tamao es fijo, y depende de los parmetros

indicados al crear la BD con CREATE DATABASE; como


por ejemplo MAXLOGFILES y MAXDATAFILES.
nombre de la BD, fecha de creacin de la BD, nombres
de los tablespaces, nombre y localizacin de los ficheros
de datos y de redo, nmero de secuencia del redo log
en curso, informacin de checkpoint, informacin del
archivado de los redo log, informacin de backup.
FICHERO DE CONTROL

65

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

FICHERO DE CONTROL

66

VISTAS DEL DD

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "CURSOxy" NORESETLOGS
NOARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 1000
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u04/oradata/CURSOxy/redo01.log' SIZE 10M,
GROUP 2 '/u04/oradata/CURSOxy/redo02.log' SIZE 10M,
GROUP 3 '/u04/oradata/CURSOxy/redo03.log' SIZE 10M
DATAFILE
'/u02/oradata/CURSOxy/system01.dbf',
'/u03/oradata/CURSOxy/undo_rbs01.dbf',
'/u03/oradata/CURSOxy/sysaux01.dbf',
'/u02/oradata/CURSOxy/users01.dbf'
CHARACTER SET WE8ISO8859P15;
ALTER DATABASE OPEN;
Nota: si hubiese que indicar la opcin RESETLOGS, se perder el
contenido de los ficheros redolog.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

En la vista V$CONTROLFILE tenemos la lista de todos los


ficheros
de
control
de
la
BD.
En
V$CONTROLFILE_RECORD_SECTION veremos las diferentes
secciones y su estado de uso.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ALTER DATABASE BACKUP


CONTROLFILE TO TRACE

Administracin y Ajuste de Oracle 10g

Se recomienda sacar una copia de seguridad del fichero de


control cada vez que cambie la estructura fsica de la BD:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
De esta forma se generan, en un fichero de traza, las sentencias
sql necesarias para volver a crear el fichero de control.
ALTER DATABASE BACKUP CONTROLFILE TO
/u02/oradata/CURSOxy/ora_control01.bak;
Hace una copia binaria y aislada del fichero.

El fichero de control contiene informacin como:

Administracin y Ajuste de Oracle 10g

Para aadir una copia del fichero de control:

FICHERO DE CONTROL

67

V$CONTROLFILE

V$CONTROLFILE_RECORD_SECTION

V$PARAMETER

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FICHERO DE CONTROL

68

PRACTICAS TEMA 3

PRACTICAS TEMA 3

3.1.Localizar el fichero de control desde el SO y desde la


BD.

3.3. Aade una copia al fichero de control de la BD en


"/u04/oradata/$ORACLE_SID". Crea un initxy02.ora e incluye
el nuevo fichero. Arranca la BD con el nuevo init y comprueba
que ha tomado la nueva copia del fichero de control.

ls -lt /u0?/oradata/$ORACLE_SID/*.ctl

shutdown immediate
cp /u02/oradata/$ORACLE_SID/control1.ctl
/u04/oradata/$ORACLE_SID/control3.ctl
cp $ORACLE_HOME/dbs/init$ORACLE_SID.ora init02xy.ora
vi init02xy.ora
startup pfile=init02xy.ora
select * from v$controlfile;

ls -l /u0?/oradata/$ORACLE_SID/*control*
select * from v$controlfile;
3.2.Consultar la informacin de la BD relativa al contenido
del fichero de control. Forzar un checkpoint y volver a
consultar. Consultar las secciones que contiene el
fichero de control y su estado de uso.

3.4. Sacar una copia de seguridad del fichero de control, tanto en


un fichero de traza, como un nuevo fichero de control.
alter database backup controlfile to trace;
ls -lt $ORACLE_BASE/admin/$ORACLE_SID/udump|head -2
alter database backup controlfile to
'/u02/oradata/CURSOxy/ora_control1.bak';
ls -lt /u02/oradata/$ORACLE_SID/control_copia1.ctl
select * from v$controlfile;

select * from v$database;


alter system checkpoint;
select * from v$controlfile_record_section;
Administracin y Ajuste de Oracle 10g

FICHERO DE CONTROL

69

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

FICHERO DE CONTROL

70

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 4.
GESTION DEL REDO LOG

Ficheros redo log


Funcionamiento del redo log

TEMA 4
GESTION DEL REDO LOG

Aadir/quitar grupos/miembros de redo


Configuracin de los ficheros redo log
Modo archivelog

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTION DEL REDO LOG

71

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTION DEL REDO LOG

72

FUNCIONAMIENTO DEL REDO


LOG

FICHEROS REDO LOG


Los ficheros redo log guardan
todos los cambios hechos en los
datos y permiten volver a
aplicarlos en caso de cada de la
BD.
Los ficheros redo log se organizan
en grupos. Una BD requiere al
menos dos grupos. Cada fichero
redo log dentro de un grupo se
llama miembro.
La idea es que cada grupo tenga
tantos miembros como discos
disponemos para matener las
copias de los redo. Lo usual es
tener 3 grupos de redo con 2
miembros cada uno.
Administracin y Ajuste de Oracle 10g

GESTION DEL REDO LOG

73

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Los ficheros redo log se usan de


manera circular: cuando uno se
llena, el LGWR comienza a
escribir en el siguiente grupo
(log switch), hasta volver al
primero. Cuando ocurre un log
switch, tambin sucede un
checkpoint; y se actualiza el
fichero de control. Podemos
forzar un log switch o un
checkpoint explcitamente con:
ALTER SYSTEM SWITCH
LOGFILE;
ALTER SYSTEM CHECKPOINT;
El LGWR escribe al hacer commit,
o cada 3 segundos, o si el buffer
redolog se llena 1/3, y antes de
que el DBWR vuelque los
cambios de los buffers de datos a
los ficheros de la BD.

Administracin y Ajuste de Oracle 10g

GESTION DEL REDO LOG

74

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AADIR GRUPOS Y MIEMBROS


DE REDO

ELIMINAR GRUPOS Y MIEMBROS


DE REDO
Eliminar grupos del Redo Log Online (por ejemplo si he
creado otros ms grandes):

ALTER DATABASE DROP LOGFILE GROUP 3;

Aadir grupos al Redo Log Online:

No puede haber menos de 2 grupos; no se puede borrar


el grupo activo; al borrar un grupo no se eliminan los
ficheros del sistema operativo (a no ser que se use
OMF).

ALTER DATABASE ADD LOGFILE GROUP 3


(/u04/oradata/CURSOxy/redo03a.log,
/u03/oradata/CURSOxy/redo03b.log)

Elminar miembros Redo Log Online:

SIZE 1M;

Aadir miembros Redo Log Online :

ALTER DATABASE DROP LOGFILE MEMBER


/u03/oradata/CURSOxy/redo03b.log;

ALTER DATABASE ADD LOGFILE MEMBER

No se puede borrar el ltimo miembro q quede de un


grupo (y dejarlo vaco); tampoco un miembro del grupo
en curso; si la BD est en modo ARCHIVELOG no se
puede borrar un miembro cuyo grupo no ha sido
archivado; cuando borramos un miembro no se elimina
el fichero correspondiente del sistema operativo.

/u03/oradata/CURSOxy/redo01b.log TO GROUP 1,
/u03/oradata/CURSOxy/redo02b.log TO GROUP 2;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTION DEL REDO LOG

75

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTION DEL REDO LOG

76

CONFIGURACIN DE LOS
FICHEROS REDO LOG

MODO ARCHIVELOG

Vaciado (por ejemplo si todos los miembros de un grupo estn


corruptos):

ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE


/u02/oradata/CURSOxy/redo02a.log;

Es equivalente a aadir y borrar un fichero redolog.


Mover o renombrar (ojo! la BD debe estar slo montada):

!mv /u04/oradata/CURSOxy/redo03a.log
/u03/oradata/CURSOxy/redo3a.log
ALTER DATABASE RENAME FILE /u04/oradata/CURSOxy/redo03a.log TO
/u03/oradata/CURSOxy/redo3a.log;

Configuracin del Redo Log Online:


El nmero de grupos Redo Log Online necesarios, como mnimo
ser dos. Es probable que se necesite alguno ms debido a que,
al llenarse circularmente, los checkpoints no completen. La
configuracin debe ser simtrica: mismo nmero de miembros
para todos los grupos.
Cada miembro de un grupo debe estar en un disco diferente.
Adems hay que separar en diferentes discos los Redo Log
Archivados de los Redo Log Online, para reducir la contencin
entre el LGWR y el ARCH. El Redo Log Online tambin debera
estar en un disco distinto a los ficheros de datos, para reducir la
contencin entre LGWR y DBWR.
En las vistas V$LOG, V$LOG_HISTORY y V$LOGFILE estn los
detalles del redo.

Administracin y Ajuste de Oracle 10g

GESTION DEL REDO LOG

77

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Por defecto, la BD se crea en modo NOARCHIVELOG (con CREATE


DATABASE). Si activamos el modo ARCHIVELOG se irn archivando los
ficheros redo log conforme se llenan (cada vez que ocurre un log
switch).
LOG_ARCHIVE_START=TRUE, activa archivado automtico (en 10g no
hace falta). El proceso ARCH ir archivando el grupo redo log lleno,
despus de cada log switch, en el directorio indicado por el parmetro
LOG_ARCHIVE_DEST (por defecto $ORACLE_HOME/dbs/arch).
Nota. Se puede ver el estado del archivado con el comando archive log list del sqlplus.

Cada vez que se archiva un redo log, en el fichero de control se guarda


el nombre del redolog archivado, nmero de secuencia, y nmeros SCN
ms alto y ms bajo.
El redolog que se ha llenado no puede reutilizarse hasta que ocurra un
checkpoint y haya sido copiado por el proceso ARCH.
Poner BD en modo ARCHIVELOG: SHUTDOWN, backup (por seguridad),
configurar log_archive_dest en el INIT, STARTUP MOUNT, activar
archivado (ALTER DATABASE ARCHIVELOG;), abrir BD (ALTER
DATABASE OPEN;), parar BD, y hacer backup (pues ha cambiado el
fichero de control y la copia anterior ya no nos sirve).
Nota. Ms informacin en
http://cursos.atica.um.es/oradoc102/server.102/b14231/archredo.htm#i1006246

Administracin y Ajuste de Oracle 10g

GESTION DEL REDO LOG

78

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

VISTAS DEL DD

PRACTICAS TEMA 4
4.1. Localizar los ficheros redolog de la BD. Cuntos grupos hay y
cuntos miembros tiene cada grupo? estn correctamente
distribuidos?
ls -lt /u0?/oradata/$ORACLE_SID/*.log
ls -lt /u0?/oradata/$ORACLE_SID/*redo*
select * from v$logfile;
4.2. Comprobar el fichero redo log activo. Qu ocurre al forzar un
"log switch"? y al forzar un checkpoint?
select * from v$log;
alter system switch logfile;
alter system checkpoint;
4.3. Aade un miembro ms a cada grupo:
/u03/oradata/$ORACLE_SID/redo11.log,
/u03/oradata/$ORACLE_SID/redo12.log,
/u03/oradata/$ORACLE_SID/redo13.log.

V$LOG
V$LOG_HISTORY
V$LOGFILE
V$DATABASE

alter database add logfile member


'/u03/oradata/CURSOxy/redo11.log' to group 1,
'/u03/oradata/CURSOxy/redo12.log' to group 2,
'/u03/oradata/CURSOxy/redo13.log' to group 3;
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTION DEL REDO LOG

79

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTION DEL REDO LOG

80

PRACTICAS TEMA 4
4.4.

PRACTICAS TEMA 4

Aade un grupo ms (grupo 4), con dos miembros de 1M:


y
/u03/oradata/$ORACLE_SID/redo04.log
/u04/oradata/$ORACLE_SID/redo14.log. Aade 2 grupos ms (grupo 5 y 6), con
las mismas caractersticas.

4.6. Cambiar el nombre de los miembros de redo de los grupos 4, 5 y 6; a redo1a.log,


redo1b.log, redo2a.log, redo2b.log, redo3a.log, redo3b.log.
shutdown immediate

alter database add logfile group 4

OJO, la BD debe estar slo montada!!!


startup mount
mv /u03/oradata/CURSOxy/redo01.log /u03/oradata/CURSOxy/redo1a.log
mv /u04/oradata/CURSOxy/redo11.log /u04/oradata/CURSOxy/redo1b.log
mv /u03/oradata/CURSOxy/redo02.log /u03/oradata/CURSOxy/redo2a.log
mv /u04/oradata/CURSOxy/redo12.log /u04/oradata/CURSOxy/redo2b.log
mv /u03/oradata/CURSOxy/redo03.log /u03/oradata/CURSOxy/redo3a.log
mv /u04/oradata/CURSOxy/redo13.log /u04/oradata/CURSOxy/redo3b.log
alter database rename file '/u03/oradata/CURSOxy/redo01.log' to
'/u03/oradata/CURSOxy/redo1a.log';
alter database rename file '/u04/oradata/CURSOxy/redo11.log' to
'/u04/oradata/CURSOxy/redo1b.log';
alter database rename file '/u03/oradata/CURSOxy/redo02.log' to
'/u03/oradata/CURSOxy/redo2a.log';
alter database rename file '/u04/oradata/CURSOxy/redo12.log' to
'/u04/oradata/CURSOxy/redo2b.log';
alter database rename file '/u03/oradata/CURSOxy/redo03.log' to
'/u03/oradata/CURSOxy/redo3a.log';
alter database rename file '/u04/oradata/CURSOxy/redo13.log' to
'/u04/oradata/CURSOxy/redo3b.log';
alter database open;
select * from v$logfile;

('/u03/oradata/CURSOxy/redo04.log',
'/u04/oradata/CURSOxy/redo14.log') size 1M;
alter database add logfile group 5
('/u03/oradata/CURSOxy/redo05.log',
'/u04/oradata/CURSOxy/redo15.log') size 1M;
alter database add logfile group 6
('/u03/oradata/CURSOxy/redo06.log',
'/u04/oradata/CURSOxy/redo16.log') size 1M;

4.5. Elimina los miembros del grupo 1, de uno en uno. Qu ocurre al eliminar el
ltimo?. Borrar los grupos 1, 2 y 3. Ojo y no borrar el redo log activo !!!

Alter database drop logfile member

'/u04/oradata/CURSOxy/redo01.log';

alter database drop logfile member

'/u03/oradata/CURSOxy/redo11.log';

alter database drop logfile group 1;


alter database drop logfile group 2;
alter database drop logfile group 3;
Administracin y Ajuste de Oracle 10g

GESTION DEL REDO LOG

81

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

GESTION DEL REDO LOG

82

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 5.
TABLESPACES

TEMA 5
TABLESPACES

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES

83

Qu es un tablespace
Tablespaces system y sysaux
Create tablespace
Formas de gestionar el espacio de un tablespace
Tablespaces undo
Tablespaces temporales
Tablespace temporal por defecto de la BD y tablespace
por defecto de la BD
Tablespace offline y rename
Tablespace read-only y bigfile
Borrar un tablespace y grupos
Redimensionar un tablespace
Mover ficheros

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES

84

QUE ES UN TABLESPACE

TABLESPACES

Una BD 10g podra tener slo los tablespaces SYSTEM y SYSAUX


(>=10g). Oracle recomienda crear tablespaces adicionales para los
datos, ndices, rollback y segmentos temporales.
Segn la estructura fsica, una BD est compuesta por: el fichero de
control, ficheros redo log y ficheros de datos. La estructura lgica nos
dice que est compuesta de tablespaces, segmentos, extensiones y
bloques.
Cada tablespace consiste en uno o ms ficheros del s.o. llamados
ficheros de datos (un fichero pertenece a un solo tablespace):
Un tablespace slo puede pertenecer a una BD a la vez.
Puede tener cero o ms segmentos (un segmento slo pertenece a un
tablespace).
Exceptuando el tablespace SYSTEM, o aquellos que contengan segmentos de
rollback activos, un tablespace se puede poner offline, estando la BD
funcionando.
Un tablespace se puede poner en modo read-only o read-write, y viceversa.

Tipos de tablespaces: permanent (datos: system, sysaux,


aplicaciones), undo (rollback) y temporary (sort).
Oracle 10g permite crear bigfile tablespaces, de hasta 8EB (millones
de terabytes).

Administracin y Ajuste de Oracle 10g

TABLESPACES

85

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

86

CREAR UN TABLESPACE

Los tablespaces SYSTEM y SYSAUX son los nicos que, cmo


mnimo, se crean con la BD (create database).
El tablespace SYSTEM (No debe contener datos de aplicaciones):
Contiene el DD, incluidos procedimientos almacenados, funciones,
triggers y paquetes.
Tambin alberga al segmento de rollback system

El tablespace SYSAUX (>=10g) permite que en el tablespace


SYSTEM slo est el DD, aglutinando las utilidades del sistema
(Repositorio OEM, Intermedia, Spatial, OLAP, RMAN, XML DB,
etc).
Qu hay en el tablespace SYSAUX y cunto ocupa?
select occupant_name, space_usage_kbytes from v$sysaux_occupants;

Se puede mover el contenido de SYSAUX a otro tablespace?


select occupant_name, move_procedure, move_procedure_desc from v$sysaux_occupants;

Respecto al resto de tablespaces (no SYSTEM), se recomienda


separar los ficheros de redo, luego datos de ndices, despus
rollback y segmentos temporales. Tambin es bueno separar
datos estticos y dinmicos.
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES SYSTEM Y SYSAUX

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

TABLESPACES

87

CREATE [BIGFILE] TABLESPACE


nombre
[DATAFILE clasula_fichero]
[MINIMUM EXTENT n[K|M]]
[BLOCKSIZE n[K]]
[LOGGING|NOLOGGING]
[clasula_extensiones]
[DEFAULT clasula_storage]
[ONLINE|OFFLINE]
[PERMANENT|TEMPORARY];

clasula_fichero :== nombre_fichero


[SIZE n[K|M] [REUSE] | REUSE]
[AUTOEXTEND ON|OFF [NEXT n[K|M]]
[MAXSIZE n[K|M]]]
clasula_extensiones :== EXTENT MANAGEMENT
[DICTIONARY | LOCAL [AUTOALLOCATE |
UNIFORM [SIZE n[K|M]]
[SEGMENT SPACE MANAGEMENT AUTO | MANUAL]]]
clasula_storage :== STORAGE (INITIAL
n[K|M] [NEXT n[K|M]] [MINEXTENTS n]
[MAXEXTENTS n] [PCTINCREASE n])

CREATE TABLESPACE DATOS_USUARIOS


DATAFILE /u02/oradata/CURSOxy/datos_usuarios01.dbf SIZE 16M
AUTOEXTEND ON NEXT 1M MAXSIZE 32M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
SEGMENT SPACE MANAGEMENT AUTO;
CREATE TABLESPACE DATOS_USUARIOS
DATAFILE /u02/oradata/CURSOxy/datos_usuarios01.dbf SIZE 16M
AUTOEXTEND ON NEXT 1M MAXSIZE 32M
EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE (INITIAL 16K NEXT 32K MAXEXTENTS 10 PCTINCREASE 50);
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES

88

FORMAS DE GESTIONAR EL
ESPACIO DE UN TABLESPACE

Tablespaces manejados localmente (Oracle los recomienda >=8i):

Las extensiones libres se registran en un bitmap, de forma que cada bit


corresponde a un bloque. El valor de cada bit indica si el bloque
correspondiente est libre o usado. Existe un bitmap de este tipo en cada
fichero del tablespace. Cada vez que una extensin se reserva o se
libera, se modifica el bitmap correspondiente.
Ventajas:
Reduccin de la contencin en las tablas del DD.
No se genera rollback al reservar/liberar espacio (pues no se
actualiza el DD).
No es necesario hacer coalesce.
No tienen el mismo sentido INITIAL_EXTENT y NEXT_EXTENT y no se
usan MIN_EXTENTS, MAXEXTENTS y PCTINCREASE del STORAGE al crear
una tabla. Tampoco tiene sentido DEFAULT STORAGE del tablespace.

TABLESPACES UNDO

Es el mtodo por defecto en Oracle8i. Las extensiones libres quedan


registradas en tablas del DD. Cada vez que una extensin se libera o se
reserva, las tablas correspondientes del DD deben ser actualizadas.
Permite definir STORAGE flexible a los segmentos (los locales NO).
TABLESPACES

89

Los segmentos temporales (de sort) se crean en tablespaces


temporales, automticamente, para ordenaciones (order by, joins,
create index, etc) que no caben en memoria. Existen slo durante la
ejecucin de la sentencia SQL.
Un tablespace temporal no puede contener objetos permanentes.
Es recomendable que sean locally managed (no pueden usar
AUTOALLOCATE ni SEGMENT SPACE MANAGEMENT AUTO) y usen
ficheros temporales:
CREATE TEMPORARY TABLESPACE temp
TEMPFILE /u03/oradata/CURSOxy/temp01.dbf SIZE 100M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M;

CREATE UNDO TABLESPACE undo01


DATAFILE /u03/oradata/CURSOxy/undo01.dbf SIZE 100M;

Desde Oracle10g se pueden agrupar tablespaces temporales,


repartiendo las ordenaciones entre ellos (cada ordenacin slo
usa un segmento de sort en un tablespace).
ALTER TABLESPACE temp1 TABLESPACE GROUP gtemp;
ALTER TABLESPACE temp2 TABLESPACE GROUP gtemp;
ALTER TABLESPACE temp3 TABLESPACE GROUP gtemp;
ALTER TABLESPACE temp3 TABLESPACE GROUP '';
ALTER USER nombre_usuario TEMPORARY TABLESPACE gtemp;

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Un tablespace de rollback slo se usa cuando se activa la gestin


automtica de rollback en la BD (undo_management=auto y
undo_tablespace=nombre_tablespace). Slo puede haber un
tablespace de rollback activo en un momento dado.

Administracin y Ajuste de Oracle 10g

TABLESPACES

90

TABLESPACES

TABLESPACE TEMPORAL POR


DEFECTO DE LA BD Y
TABLESPACE POR DEFECTO
Desde Oracle9i, al crear la BD se puede

Para optimizar el rendimiento es recomendable que UNIFORM SIZE sea


mltiplo de SORT_AREA_SIZE.
No se puede renombrar un fichero temporal (tempfile). Tampoco se
pueden poner en modo read-only. Siempre tienen el modo
NOLOGGING (no producen entradas de redo log).

Administracin y Ajuste de Oracle 10g

En Oracle 9i se introducen los segmentos de undo automticos, que


permiten sustituir la gestin manual de segmentos de rollback. Con
Oracle 10g todava se puede optar por la gestin manual, pero se
avisa de que ya no estar disponible en futuras versiones.
Los tablespaces undo slo pueden contener segmentos de rollback
(ningn otro tipo de objeto). Los llamaremos tablespaces de
rollback.
Son del tipo manejados localmente (de forma automtica).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES TEMPORALES
Y GRUPOS

Tablespaces gestionados a travs del DD (a extinguir):

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

El tablespace system se puede manejar localmente, desde Oracle9i (en 8i no). Si


el SYSTEM es local, NO se pueden crear tablespaces por diccionario. Desde
Oracle9i, por defecto, los tablespaces se crean como locales (si el parmetro
compatible>=9.0), exepto el SYSTEM.

Administracin y Ajuste de Oracle 10g

91

(y se debe) indicar un
tablespace temporal por defecto para aquellos usuarios a los que
no se le asigne uno explcitamamente. Si no se hace as, por defecto,
se asignar el tablespace SYSTEM (sto hay que evitarlo a toda costa).
EL tablespace temporal por defecto de la BD se puede cambiar:
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE nombre_tablespace;
Nota: nombre_tablespace podra ser un nombre de grupo.

Tambin se puede crear con la BD (CREATE DATABASE), en cuyo caso,


ser del tipo local.
Al asignar a la BD un tablespace temporal por defecto, todos los
usuarios que no tengan uno asignado explcitamente, pasarn a
tenerlo. Y cuando cambiemos el tablespace temporal por defecto de la
BD, cambiar para todos los usuarios que no lo tengan asignado de
forma explcita.
No podemos borrarlo hasta que hayamos asignado otro. No podemos
ponerlo offline.
Desde Oracle10, adems, se puede definir un tablespace por
defecto para los usuarios a los que no se le asigna uno
explcitamente, en el momento de la creacin de la BD con la clasula
DEFAULT TABLESPACE nombre. Adems se puede cambiar en
cualquier momento con (ojo!!!, se cambiar para todos los usuarios,
incluso los q tuviesen asignado uno concreto, excepto especiales como
SYS, SYSTEM, DBSNMP, OUTLN, etc):
ALTER DATABASE DEFAULT TABLESPACE nombre;

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES

92

TABLESPCE READ-ONLY Y
BIGFILE

TABLESPACE OFFLINE Y RENAME


Cuando un tablespace est OFFLINE no se puede acceder
a los datos que contiene:
ALTER TABLESPACE DBA01USER OFFLINE;
Para ponerlo de nuevo ONLINE:
ALTER TABLESPACE DBA01USER ONLINE;
Algunos tablespaces no se pueden poner OFFLINE:
SYSTEM, tablespaces con segmentos de rollback o
temporales activos.

Sintaxis
ALTER TABLESPACE nombre ONLINE | OFFLINE;

Los segmentos que contiene pueden ser borrados (por


ejemplo drop table, porque slo afectan al DD). En
tablespaces locales, el segmento borrado pasa a ser del
tipo temporal.
Desde Oracle 10g, se puede renombrar un tablespace
(execpto SYSTEM y SYSAUX), incluso estando READ
ONLY:
ALTER TABLESPACE nombre1 RENAME TO nombre2;

Administracin y Ajuste de Oracle 10g

TABLESPACES

93

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES

94

REDIMENSIONAR UN
TABLESPACE
Podemos cambiar el tamao de un tablespace aadiendo un
fichero al mismo, o bien cambiando el tamao del fichero que lo
compone.

Al borrar un tablespace, se elimina del DD. No podemos


borrar SYSTEM/SYSAUX. Los ficheros asociados no se
borran (hacerlo desde el SO despus de eliminar el
tablespace), a no ser que usemos INCLUDING CONTENTS
AND DATAFILES (>= Oracle9i).
No podremos borrarlo si contiene objetos, a menos que
indiquemos NCLUDING CONTENTS. Tampoco podemos
hacerlo si existen foreign keys apuntando a sus objetos, a
menos que adems indiquemos CASCADE CONSTRAINTS
(se borrarn las citadas constraints FK).
Se recomienda poner el tablespace OFFLINE antes de
borrarlo, para asegurarnos que nadie est usando su
contenido.

ALTER TABLESPACE users ADD DATAFILE


/u02/oradata/CURSOxy/users02.dbf size 1M;
ALTER DATABASE DATAFILE
/u02/oradata/CURSOxy/users01.dbf resize 2M;
Podemos reducir el tamao de un fichero, pero no podremos
hacerlo si hay espacio ocupado al final del mismo.

Una opcin interesante es programar el crecimiento del fichero


que compone el tablespace:

ALTER DATABASE DATAFILE


/u02/oradata/CURSOxy/users01.dbf SIZE 1M AUTOEXTEND ON
NEXT 1M MAXSIZE 4M;
Podemos indicar UNLIMITED como MAXSIZE. Y las unidades
tambin pueden ser K (p.e. 512K) o bytes (p.e. 100000).

Slo un tablespace BIGFILE se puede redimensionar con ALTER


TABLESPACE, sin indicar DATAFILE (>=10g):
ALTER TABLESPACE bigtbs RESIZE 60G;

Podemos borrar fichero vaco de tablespace, con ms de uno


(>=10g):

DROP TABLESPACE nombre_tablespace


[INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]];

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

BORRAR UN TABLESPACE

Administracin y Ajuste de Oracle 10g

Al poner un tablespace en modo READ-ONLY, slo se permiten


operaciones de lectura sobre sus datos; sin embargo los segmentos
que contiene pueden ser borrados (por ejemplo drop table,
porque slo afecta al DD). En tablespaces locales, el segmento
borrado pasa a ser del tipo temporal.
Sintaxis:
ALTER TABLESPACE nombre READ [ONLY | WRITE];
Un tablespace BIGFILE puede tener hasta 8Exabytes (millones de
Tb). No pueden serlo ni SYSTEM ni SYSAUX.
CREATE BIGFILE TABLESPACE nombre DATAFILE
'/u02/oradata/CURSOxy/nombre01.dbf' size 50G EXTENT
MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

TABLESPACES

ALTER TABLESPACE users DROP DATAFILE


'/u02/oradata/CURSOXY/users02.dbf';

95

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES

96

REDIMENSIONAR UN
TABLESPACE

MOVER FICHEROS
Existen dos mtodos para mover ficheros: con ALTER
TABLESPACE y con ALTER DATABASE.
El primero slo es aplicable a tablespaces que no son el
SYSTEM, y que no contienen segmentos de rollback o
temporales activos:
Poner el tablespace offline
Mover el fichero a nivel del S.O.
ALTER TABLESPACE RENAME DATAFILE /path1/fichero1 TO
/path2/fichero2;
Poner el tablespace online.

El segundo requiere que la BD est slo montada, y es la


nica forma de mover el tablespace SYSTEM:
Parar la BD.
Montar la BD (startup mount).
Mover el fichero desde el S.O.
ALTER DATABASE RENAME FILE
/path2/fichero2;
Abrir la BD.

Administracin y Ajuste de Oracle 10g

TABLESPACES

97

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

RECYCLE BIN (>=10g). Contenedor donde Oracle guarda las tablas


borradas (a no ser q se borre con la opcin PURGE).
DBA_RECYCLEBIN. Ver todas las tablas borradas. En
USER_RECYCLEBIN o RECYCLEBIN, slo las mas. Tb con SHOW
RECYCLEBIN (desde sql*plus).
Se puede desactivar con parmetro del init recyclebin = off (por
defecto on). Tb con ALTER SYSTEM | SESSION ....
Recuperar tabla borrada:
FLASHBACK TABLE tablaBorrada TO BEFORE DROP;
Borrar definitivamente:
PURGE TABLE tabla; (tb PURGE INDEX)

PURGE RECYCLEBIN | DBA_RECYCLEBIN;


PURGE TABLESPACE nomtsp [USER usuario];
Borrar directamente sin pasar por RECYCLEBIN:
DROP TABLE tabla PURGE;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

98

ADDM (AUTOMATIC DATABASE


DIAGNOSTIC MONITOR)

Slo van a RECYCLEBIN los ndices de las tablas borradas (no con DROP
INDEX)

TABLESPACES

TO

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECYCLE BIN Y DROP TABLE

/path1/fichero1

TABLESPACES

99

Se activa por defecto (statistics_level = TYPICAL u ALL; se desactiva con


BASIC).
Informes. Entre dos snapshots del AWR. Su objetivo es reducir la
estadstica DB time (tiempo acumulado invertido por la BD para
atender las peticiones de usuarios, ver V$SYS_TIME_MODEL).
$ORACLE_HOME/rdbms/admin/addmrpt.sql. Tb usando el paquete
DBMS_ADVISOR.
Para el anlisis de E/S, por defecto, se toma un valor de 10000
microsegundos para la lectura de un bloque de la BD. Si calculamos el
valor real para nuestra BD, podemos cambiarlo con:
EXECUTE DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER(
'ADDM', 'DBIO_EXPECTED', 8000);
Vistas del DD:
DBA_ADVISOR_TASKS.
DBA_ADVISOR_LOG.
DBA_ADVISOR_RECOMMENDATIONS. Ordenar por RANK
(importancia) y ver BENEFIT.
DBA_ADVISOR_FINDINGS.
Ms informacin sobre ADDM:


http://cursos.atica.um.es/oradoc102/server.102/b14211/diagnsis.htm#sthref4

Administracin y Ajuste de Oracle 10g


TABLESPACES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

100

AWR (AUTOMATIC WORKLOAD


REPOSITORY)
Genera y procesa estadsticas de rendimiento para que el propio servidor
Oracle pueda detectar problemas y dar recomendaciones de ajuste
(usando ADDM).
Se activa por defecto (statistics_level = TYPICAL u ALL; se desactiva con
BASIC).
Genera snapshots automticamente. Tb manualmente con paquete
DBMS_WORKLOAD_REPOSITORY.
Informes:
AWR: $ORACLE_HOME/rdbms/admin/awrrpt.sql. Permite generar
HTML.
ASH (V$ACTIVE_SESSION_HISTORY):
$ORACLE_HOME/rdbms/admin/ashrpt.sql.
Vistas del DD:
V$ACTIVE_SESSION_HISTORY (ASH, aade sesiones activas cada
segundo a buffer circular en SGA)
V$METRIC*: V$METRIC, V$METRICGROUP, V$METRICNAME,
V$METRIC_HISTORY.
DBA_HIST*: DBA_HIST_ACTIVE_SESS_HISTORY,
DBA_HIST_BASELINE, DBA_HIST_DATABASE_INSTANCE,
DBA_HIST_SNAPSHOT, DBA_HIST_SQL_PLAN,
DBA_HIST_WR_CONTROL.
Ms informacin sobre AWR:

VISTAS DEL DD

DBA_TABLESPACES
DBA_DATA_FILES
DBA_TEMP_FILES
V$TABLESPACE
V$DATAFILE
V$TEMPFILE
V$UNDOSTAT
DBA_TABLESPACE_GROUPS

http://cursos.atica.um.es/oradoc102/server.102/b14211/autostat.htm#i27008
Administracin
y Ajuste de Oracle 10g
TABLESPACES
101

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

5.2. Crea el tablespace DATACURSOxy, NO manejado


localmente, con el fichero /u02/oradata/datacursoxy01.dbf,
con un tamao de 1M. Crea 4 tablas (TABLA01, TABLA02,
TABLA03, TABLA04) de 256K sobre dicho tablespace. Borra
las tablas TABLA02 y TABLA04, y crea una tabla TABLA05 de
512K. Qu ocurre y por qu?. Borra el tablespace
DATACURSOxy y cralo de nuevo, manejado localmente.
Vuelve a crear las tablas y repite el borrado de TABLA02 y
TABLA04; y la creacin de TABLA05 de 512K. Qu ocurre
esta vez y por qu?

5.1. Consultar los tablespaces que componen la BD.


Comprobar los ficheros que tienen cada uno de
ellos.
Select * from dba_tablespaces;
select * from v$tablespace
select * from dba_data_files;
select * from v$datafile;
select * from dba_temp_files;
select * from v$tempfile;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

102

PRACTICAS TEMA 5

PRACTICAS TEMA 5

TABLESPACES

Create tablespace DATACURSOxy datafile


/u02/oradata/CURSOxy/datacursoxy01.dbf size 1M extent
management dictionary;
create table TABLA01 (C1 VARCHAR2(4000)) tablespace
DATACURSOxy storage (initial 256K minextents 1);
drop table TABLA02;
create table TABLA05 (C1 VARCHAR2(4000)) tablespace
DATACURSOxy storage (initial 512K minextents 1);
alter tablespace DATACURSOxy offline;
drop tablespace DATACURSOxy including contents and datafiles;
create tablespace DATACURSOxy datafile
/u02/oradata/CURSOxy/datacursoxy01.dbf size 1M extent
management local uniform size 256K;

TABLESPACES

103

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES

104

PRACTICAS TEMA 5

PRACTICAS TEMA 5

5.3. Pon el tablespace DATACURSOxy en modo READ-ONLY.


Inserta una fila en alguna de sus tablas, qu ocurre?. Borra
la tabla TABLA01, por qu se puede borrar?. Deja el
tablespace DATACURSOxy en modo READ-WRITE. Repite el
insert sobre TABLA01.

5.5. Crea el tablespace INDCURSOxy de 1M con el


fichero
/u02/oradata/CURSOxy/indcursoxy01.dbf.
Muvelo al directorio /u03/oradata/CURSOxy.

alter tablespace DATACURSOxy read only;


insert into TABLA01 values (PRIMERA FILA);
drop table TABLA01;
alter tablespace DATACURSOxy read write;
insert into TABLA01 values (PRIMERA FILA);

Create tablespace INDCURSOxy datafile


/u02/oradata/CURSOxy/indcursoxy01.dbf size 1M;
alter tablespace CURSOxy offline;
mv /u02/oradata/CURSOxy/indcursoxy01.dbf
/u03/oradata/CURSOxy/indcursoxy01.dbf
alter tablespace rename datafile
/u02/oradata/CURSOxy/indcursoxy01.dbf to
/u03/oradata/CURSOxy/indcursoxy01.dbf;
alter tablespace INDCURSOxy online;
select * from dba_data_files;

5.4. Crea una tabla TABLA06 en el tablespace DATACURSOxy,


qu ocurre y por qu?. Activa el autoextend de su fichero,
ajustando next 256K y maxsize 2M. Vuelve a crear la tabla
TABLA06.
Create table TABLA06 (C1 varchar2(4000)) tablespace
DATACURSOxy storage (initial 256K minextents 1);
alter database datafile
/u02/oradata/CURSOxy/datacursoxy01.dbf autoextend on next
256K maxsize 2M;
Create table TABLA06 (C1 varchar2(4000)) tablespace
DATACURSOxy storage (initial 256K minextents 1);

Administracin y Ajuste de Oracle 10g

TABLESPACES

105

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

TABLESPACES

106

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 6.
ESPACIO DE UNDO.
Concepto de Transaccin.
Espacio de UNDO (DESHACER).
Cadas del sistema. Redo log.
Consistencia en lectura.
Retroceso de transaccin. Flashback.

TEMA 6.

Gestin de Espacio de UNDO (DESHACER).


Parmetros obsoletos.

Modo automtico de undo.

ESPACIO DE UNDO.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

107

Parmetros de inicializacin.
Cuota de UNDO.
Espacio almac. Creacin, modificacin, borrado e intercambio.
Vistas.
Dimensionado manual y automtico.
Periodo de permanencia. Retention guarantee.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

108

TEMA 6.
ESPACIO DE UNDO.

TRANSACCIN.

Unidad lgica de trabajo que contiene una o ms


sentencias SQL; se trata de una unidad indivisible o
atmica. Los efectos de las sentencias de una
transaccin pueden ser todos validados (aplicados a la
base de datos) o retrocedidos.

Modo manual de UNDO (DESHACER).

Segmentos y sus tipos: segmentos de rollback.


Escritura en un segmento de rollback.
Segmento rollback system.
Segmentos de rollback pblicos y privados.
Creacin. Decremento y borrado. Parmetro optimal.
Puesta en/fuera de lnea.
Modificacin de parmetros.
Asignacin explcita a una transaccin.
Vistas estticas.

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

Comienza en la primera sentencia SQL ejecutable.


Termina cuando es validada o retrocedida, de forma
explicita,
mediante
las
sentencias
COMMIT
o
ROLLBACK, o implcitamente, en el caso de sentencias
DDL.

109

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

110

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO Y CADAS


DEL SISTEMA.

ESPACIO DE UNDO (DESHACER).


Espacio de undo: Conjunto de registros que guardan
informacin, relativa a acciones realizadas por una
transaccin, necesaria para:

En caso de producirse una cada del sistema y quedar


transacciones activas (sin validacin commit- ni
retroceso rollback-), Oracle recupera la informacin
del espacio de undo y una vez hecho se realiza el
rollback de dichas transacciones.

Recuperacin de la base de datos.


Proporcionar consistencia en lectura (imagen de los
datos).

En la recuperacin de base de datos y una vez aplicados


los cambios guardados en los ficheros de redo, el
espacio de undo sirve para deshacer los efectos de
transacciones no validadas.

Retroceder transacciones (rollback).

Anlisis de datos previos usando Oracle Flashback


Query.

Recuperacin lgica usando Oracle Flashback.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

Este proceso recibe el nombre de rolling back o


transaction recovery.
111

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

112

ESPACIO DE UNDO Y CADAS


DEL SISTEMA.

ESPACIO DE UNDO Y REDO LOG.


En el caso del redo log, al igual que con undo, el
sistema recoge datos estadsticos que ayudan a
determinar su tamao ptimo.
En general los redo deben ser lo bastante grandes de
como para que los checkpoint no ocurran demasiado
frecuentemente; si se produce log switch con
frecuencia superior a 20 minutos, el rendimiento
decrece. Por otra parte, los redo excesivamente
grandes afectan al rendimiento en disco y ocupan
espacio.
La columna OPTIMAL_LOGFILE_SIZE de la vista
V$INSTANCE_RECOVERY indica el valor mnimo
recomendado para el tamao de los redo log.

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

113

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

114

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO Y
CONSISTENCIA EN LECTURA.

ESPACIO DE UNDO Y
CONSISTENCIA EN LECTURA.

Se usa la informacin en el espacio de undo para


crear un conjunto de datos coherente respecto a un
punto en el tiempo.
Al validar la transaccin (commit) se libera la
informacin pero no se destruye inmediatamente sino
que permanece un tiempo para asegurar la consistencia
en lectura de las consultas que comenzaron antes de la
validacin.
Los cambios realizados por otras transacciones que
suceden durante la ejecucin de la consulta no son
tenidos en cuenta por esta. Los bloques alterados son
reconstruidos a partir del espacio de undo, y los datos
obtenidos enviados a la consulta.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

115

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

116

ESPACIO DE UNDO Y
CONSISTENCIA EN LECTURA.

ESPACIO DE UNDO Y
RETROCESO DE TRANSACCION.

En ciertos casos, no pude devolverse un conjunto


coherente de resultados, snapshot, para consulta
voluminosa. Ocurre porque no puede almacenarse
suficiente informacin en el espacio de undocomo
para reconstruir los datos requeridos.

Retroceder una transaccin (rolling back) es deshacer


cualquier cambio realizado a los datos por sentencias
SQL de una transaccin no validada.
En el retroceso de una transaccin:

Generalmente se produce si existe una gran actividad


que fuerza a que se sobrescriban datos necesarios para
lograr la consistencia. Se genera el error:

Se aplican todos los cambios almacenados en orden


inverso hasta llegar al dato original.

ORA-01555 snapshot too old: rollback segment


number string with name "string" too small

Se libera cualquier bloqueo de datos efectuado por la


transaccin.
Finaliza la transaccin.

La solucin es disponer de ms espacio de undo.


Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

117

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

118

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTION DE ESPACIO DE
UNDO (DESHACER).

PARAMETROS OBSOLETOS.

Existen dos formas de gestionar el espacio de undo:

Existen distintos parmetros usados en versiones


anteriores, relacionados con undo -manual y
automtico-, que han quedado obsoletos:

- Usando espacios de almacenamiento de undo (modo


automtico). Oracle recomienda que se trabaje de esta
forma, dado que es menos complejo de implementar y
ms eficiente en su gestin.

UNDO_SUPPRESS_ERRORS
MAX_ROLLBACK_SEGMENTS

- Usando segmentos de rollback (modo manual). A


desaparecer.

ROW_LOCKING

SERIALIZABLE

Ambas formas NO pueden simultanearse.

TRANSACTION_AUDITING

La forma de gestin, manual o automtica, se


determina en el arranque de la base de datos mediante
el parmetro de inicializacin UNDO_MANAGEMENT.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

119

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

120

MODO AUTOMATICO UNDO.


PARAMETROS INICIALIZACION.
El parmetro de inicializacin
debe tener el valor AUTO.

UNDO_MANAGEMENT

UNDO_MANAGEMENT = AUTO

Al arrancar se busca un espacio de almacenamiento


(tablespace) de undo (existente desde la creacin
de la bd o creado posteriormente), el primero
disponible.

MODO AUTOMATICO DE UNDO

Si no existe, se usa el segmento de rollback SYSTEM,


y se genera un mensaje de error en el fichero de
alertas. Error!.
Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

121

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

MODO AUTOMATICO UNDO.


PARAMETROS INICIALIZACION.

- UNDO_TABLESPACE. Parmetro dinmico (alter system ...) que indica


el espacio de almacenamiento de undo a usar en el arranque. Si se
indica en modo manual, provoca error y falla el arranque.
Si se omite, se elige el primer espacio de almacenamiento de
undo disponible, si no hay ninguno se arranca sin esp.alm. de undo
y las transacciones se ejecutan en el segmento de rollback SYSTEM
Error!.

- UNDO_RETENTION.
Parmetro
dinamico
(alter
system
set
undo_retention= <valor>) que indica en segundos -por defecto 900-,
cuanto tiempo ha de permanecer, al menos, la informacion de undo
disponible -importante en largas transacciones, consistencia en lectura,
y utilidades Flashback -.
Slo en ciertas circunstancias es necesario fijar este parmetro:

122

MODO AUTOMATICO UNDO.


PARAMETROS INICIALIZACION.

Otros parametros de inicializacin relacionados son:

ESPACIO DE UNDO

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Esp. de alm. con la opcin AUTOEXTEND.


Fijar el periodo de retencin para LOB.
Se desea especificar la retention guarantee.

Al arrancar en modo automtico, cualquier parmetro relativo


al modo manual usado en el fichero de parmetros es
ignorado.

El sistema calcula automticamente el periodo de permanencia,


para satisfacer los requerimientos de las consultas, basndose en el
uso y tamao del esp.alm. de undo e ignorando el valor
UNDO_RETENTION, si es necesario, a menos que retention guarantee
est activa (si se necesita espacio para las transacciones activas y no
hay suficiente , se reutiliza el existente y puede provocar el fallo de
consultas muy largas).
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

123

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

124

MODO AUTOMATICO UNDO.


ESPACIO DE ALMACENAMIENTO.

MODO AUTOMATICO UNDO.


ESPACIO DE ALMACENAMIENTO.

Para el uso en modo automtico es necesario al menos


un espacio de almacenamiento (tablespace) de
undo, que est reservado exclusivamente para esta
funcin (no pueden crearse all objetos de datos).

Distintas operaciones pueden llevarse a cabo con este


espacio de almacenamiento:
- Creacin.
-

- Modificacin.

A cada instancia se le asigna slo un esp.alm. de undo


-puede ser de tipo bigfile-. Los datos de undo se
manejan usando segmentos de undo que se crean y
mantienen por el sistema.

- Borrado.
-

- Intercambio entre distintos espacios de undo.


-

- Modificar la clausula de retencin.

Si no hay ningn espacio de undo se emplea el


segmento de rollback SYSTEM. Error!.

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

125

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

126

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MODO AUTOMATICO UNDO.


CREACION DE ESPACIO UNDO.

MODO AUTOMATICO UNDO.


CREACION DE ESPACIO UNDO.

Al crear la base de datos, mediante la clausula UNDO


TABLESPACE de la sentencia CREATE DATABASE:

Restricciones:
En la creacion slo puede especificarse la clausula
DATAFILE (localizacin del fichero), determinando
Oracle el resto de atributos.

CREATE DATABASE CURSO25 ...


UNDO TABLESPACE undotbs_01 DATAFILE
'/u03/oradata/CURSO25/undo01.dbf';

Mediante la sentencia CREATE UNDO TABLESPACE


(identica a CREATE TABLESPACE):
CREATE UNDO TABLESPACE undotbs1
DATAFILE '/u03/oradata/CURSO25/undo01.dbf'
SIZE 10M AUTOEXTEND ON RETENTION
GUARANTEE;
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

127

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

128

MODO AUTOMATICO UNDO.


MODIFICACION ESPACIO UNDO.

MODO AUTOMATICO UNDO.


MODIFICACION ESPACIO UNDO.
ALTER DATABASE DATAFILE

Mediante la sentencia ALTER TABLESPACE. Se permite:

'/u03/oradata/CURSO25/undo01.dbf' RESIZE 100M;


- Aadir un fichero de datos.

- Renombrar un fichero de datos.

ALTER TABLESPACE UNDOTBS ADD DATAFILE


'/u03/oradata/CURSO25/undo02.dbf' AUTOEXTEND
ON NEXT 1M MAXSIZE UNLIMITED;

ALTER DATABASE RENAME FILE


'/u03/oradata/CURSO25/undo01.dbf' TO
'/u03/oradata/CURSO25/tbsp_undo01.dbf';

- Redimensionar un fichero de datos.

- Poner en lnea o fuera de lnea un fichero de datos.

ALTER DATABASE DATAFILE


'/u03/oradata/CURSO25/undo01.dbf' RESIZE 20M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;
Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

ALTER DATABASE DATAFILE


'/u03/oradata/CURSO25/undo01.dbf'
ONLINE/OFFLINE;
129

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

130

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MODO AUTOMATICO UNDO.


BORRADO ESPACIO UNDO.

MODO AUTOMATICO UNDO.


MODIFICACION ESPACIO UNDO.

Se emplea la sentencia DROP TABLESPACE:


- Modificar clasula RETENTION.
DROP TABLESPACE <nombre_tbsp>;

NO preservar los datos de undo que son aun vlidos.

Slo es posible borrar si el espacio de undo no est en


uso. Al borrar se elimina todo su contenido.

ALTER TABLESPACE UNDOTBS


RETENTION NOGUARANTEE;

Preservar los datos de undo que son aun vlidos.

ALTER TABLESPACE UNDOTBS


RETENTION GUARANTEE;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

131

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

132

MODO AUTOMATICO UNDO.


INTERCAMBIO ESPACIO UNDO.

MODO AUTOMATICO UNDO.


INTERCAMBIO ESPACIO UNDO.

Se usa la sentencia ALTER SYSTEM SET para asignar un


nuevo espacio de undo, que sustituye al que
anteriormente se utilizaba:

Si existen transacciones pendientes de validar,


commit, en el antiguo espacio de undo, este pasa al
estado PENDING OFFLINE. Las transacciones siguen su
curso pero no se usa para nuevas transacciones.

ALTER SYSTEM SET


UNDO_TABLESPACE=<nombre_tbsp>;

En el estado PENDING OFFLINE, un espacio de undo


no puede borrarse. Una vez finalizadas todas las
transacciones pasa al estado OFFLINE.

Se producir error en caso de que el nuevo espacio de


almacenamiento no exista, no sea de undo o se este
usando por otra instancia.
La bd est en lnea mientras se realiza la operacin; y
pueden ejecutarse transacciones, al terminar todas
aquellas comenzadas despues de la sentencia se
asignan al nuevo espacio de undo.
Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

Si se indica ALTER SYSTEM SET UNDO_TABLESPACE=''; se


deasigna el espacio de undo actual y se pasa al
siguiente disponible.

133

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

MODO AUTOMATICO UNDO.


DIMENSIONANDO EL ESPACIO UNDO.

V$UNDOSTAT. Estadsticas para monitorizar y ajustar el


espacio de undo.

Empleando esp. de almacenamiento autoextensibles, de


forma que incrementa su tamao conforme es necesario
(clasula AUTOEXTEND).

V$ROLLSTAT. Informa sobre el comportamiento


segmentos undo en el espacio de undo.

V$TRANSACTION. Transacciones activas en el sistema.

Clculo usando mtodo manual.

DBA_TABLESPACES.

Clculo usando mtodo automtico: Undo Advisor.

DBA_UNDO_EXTENTS. Extensiones en el espacio de undo.

DBA_HIST_UNDOSTAT. Estadsticas acerca de consumo de


espacio de undo, concurrencia de transacciones, longitud de
las consultas ejecutas en la instancia, ... (contiene vistas de
v$UNDOSTAT).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

de

Puede dimensionarse de tres formas:

Administracin y Ajuste de Oracle 10g

134

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MODO AUTOMATICO UNDO.


VISTAS.

Administracin y Ajuste de Oracle 10g

los

135

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

136

MODO AUTOMATICO UNDO.


DIMENSIONADO MANUAL.
El espacio de undo
informacion
un
(UNDO_RETENTION) es:

necesario
tiempo

MODO AUTOMATICO UNDO.


DIMENSIONADO AUTOMATICO.
para

retener la
determinado

Si el espacio NO es autoextensible puede estimarse su valor


ptimo usando el Undo Advisor, empleando el paquete
DBMS_ADVISOR; este depende del repositorio Automatic
Workload Repository (AWR) que contiene instantneas de
todas las estadsticas clave y de la carga de trabajo de la bd,
a intervalos de 30 minutos (registro histrico de uso de la bd).

Operaciones a seguir:

Espacio = UR * (Tasa_transaccion * tamao_bloque)


Donde UR es el valor de UNDO_RETENTION, en
segundos, y la tasa de transaccion el nmero mximo
de bloques undo por segundo (columna UNDOBLKS de
V$UNDOSTAT).

a) Determinar el periodo de tiempo a analizar (seleccionando los


identificadores
de
snap
apropiados).
La
vista
DBA_HIST_SNAPSHOT muestra la informacin sobre instantneas
en el AWR (nmero de instantnea y fecha).

Es preciso aadir al valor obtenido entre un 10% y un


20% de forma que pueda hacerse frente a situaciones
inesperadas.

SQL >Select snap_id, begin_interval_time, end_interval_time


from DBA_HIST_SNAPSHOT
where begin_interval_time > '...' and
end_interval_time < '...' order by end_interval_time desc;

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

137

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

138

MODO AUTOMATICO UNDO.


DIMENSIONADO AUTOMATICO.

b) Invocar Undo Advisor mediante el siguiente bloque para determinar el


nmero de tarea.

c) Consultar la vista DBA_ADVISOR_FINDINGS para averiguar las


recomendaciones.

DECLARE
tid NUMBER;
tname VARCHAR2(30);
oid NUMBER;
BEGIN
DBMS_ADVISOR.CREATE_TASK('Undo Advisor', tid, tname, 'Undo Advisor Task');
DBMS_ADVISOR.CREATE_OBJECT(tname, 'UNDO_TBS', null, null, null, 'null', oid);
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'TARGET_OBJECTS', oid);
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'START_SNAPSHOT',
snap_id_inicial);
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'END_SNAPSHOT', snap_id_final);
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'INSTANCE', 1);
DBMS_ADVISOR.execute_task(tname);
DBMS_OUTPUT.PUT_LINE ('Identificador de trabajo es: ' || tid ||' '|| tname);
end;
/

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MODO AUTOMATICO UNDO.


DIMENSIONADO AUTOMATICO.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

139

SQL >Select owner, task_id, task_name, type, message, more_info


from dba_advisor_findings where task_id= <numero_tarea -tid->

Puede generarse un informe de texto o HTML mediante AWR ejecutando


SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

140

MODO AUTOMATICO UNDO.


PERIODO DE PERMANENCIA UNDO.

MODO AUTOMATICO UNDO.


PERIODO DE PERMANENCIA UNDO.

El clculo del valor ptimo para UNDO_RETENTION se realiza


a partir de informacin estadstica de uso y se ajusta para la
consulta ms larga, la informacin sobre duracin de las
consultas se obtiene cada 30 segundos.

En el clculo, automtico, del periodo de permanencia es


necesario considerar:

La bd analiza automticamente el uso de undo para


determinar el tamao del esp.alm. de undo de forma que
pueda soportar la consulta ms larga.

El valor por defecto para UNDO_RETENTION son 900 segundos.


Si el parmetro se ajusta a cero o no se indica valor, se ajusta
automticamente empleando el valor 900 como el mnimo.
Si UNDO_RETENTION se ajusta a un valor distinto de cero, se
ajusta automticamente empleando el valor indicado como
mnimo.

Esta caracterstica est activada por defecto (arquitectura) y


NO puede desactivarse. El valor calculado ser tal que permita
evita el error snapshot too old.

Para un esp.alm. de undo con AUTOEXTEND. El sistema lo ajusta


para ser algo superior que el mayor tiempo correspondiente a la
ejecucin de una consulta, si hay espacio. Si hay espacio libre, el
periodo no es inferior al UNDO_RETENTION asignado.
Para un esp.alm. de undo de tamao fijo, la bd lo ajusta al
mximo posible (hasta que haya espacio). Se ignora el valor de
UNDO_RETENTION a menos que RETENTION GUARANTEE est
activa.

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

141

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

select to_char(begin_time, 'DD-MON-RR HH24:MI') begin_time,


to_char(end_time, 'DD-MON-RR HH24:MI') end_time,
tuned_undoretention
from v$undostat order by end_time;

En operaciones DML de gran carga no se garantiza


UNDO_RETENTION. Para asegurar que el espacio de undo
necesario siempre estar disponible durante el periodo indicado se
emplea la clasula RETENTION GUARANTEE.

BEGIN_TIME
------------------04-FEB-06 00:01
...
07-FEB-06 23:21
...

El tiempo que el sistema retiene los datos en undo para el


esp.alm. actual puede obtenerse consultando la columna
TUNED_UNDORETENTION de la vista V$UNDOSTAT.

ESPACIO DE UNDO

END_TIME
------------------04-FEB-06 00:11
07-FEB-06 23:31

TUNED_UNDORETENTION
-----------------------------12100
86700

El valor de tuned_undoretention se muestra en segundos.

La vista presenta estadsticas en periodos de diez minutos, una fila


de datos por periodo, para los ltimos 4 das (ms all han de
consultarse en la vista DBA_HIST_UNDOSTAT).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

142

MODO AUTOMATICO UNDO.


PERIODO DE PERMANENCIA UNDO.

El ajuste automtico del periodo de permanencia no es soportado


por LOB. Para estos objetos, el valor es el fijado por el parmetro
UNDO_RETENTION.

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MODO AUTOMATICO UNDO.


PERIODO DE PERMANENCIA UNDO.

Administracin y Ajuste de Oracle 10g

143

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

144

MODO AUTOMATICO UNDO.


RETENTION GUARANTEE.

La clasula RETENTION GUARANTEE permite garantizar el


xito de consultas de larga duracin u operaciones
Flashback. Puede usarse al crear el esp.almacenamiento de
undo (CREATE UNDO TABLESPAE o CREATE DATABASE) o
usando la sentencia ALTER TABLESPACE.

Al activar la clasula se garantiza el mnimo undo_retention


especificado, de forma que la bd nunca sobeescribe datos (las
transacciones pueden fallar por falta de espacio).

Para desactivar la garanta de retencin debe usarse la


clasula RETENTION NOGUARANTEE.

El
valor
actual
puede
consultarse
en
la
vista
DBA_TABLESPACES (columna RETENTION, con valores
GUARANTEE, NOGUARANTEE o NOT APLY).

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

MODO MANUAL DE UNDO

145

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

146

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MODO MANUAL UNDO.


PARAMETROS INICIALIZACION.

MODO MANUAL UNDO.


PARAMETROS INICIALIZACION.
Parametros de inicializacin relacionados son:

El parmetro de inicializacin UNDO_MANAGEMENT


debe tener el valor MANUAL, o bien no indicarse (es el
valor por defecto).

- ROLLBACK_SEGMENTS. Asigna segmentos a la instancia.


Indica
el
nmero
mximo
de
- TRANSACTIONS.
transacciones concurrentes. Valores mayores incrementan
el tamao de la SGA y pueden incrementar el numero de
segmentos reservados.

UNDO_MANAGEMENT = MANUAL

- TRANSACTIONS_PER_ROLLBACK_SEGMENT.
Indica
el
nmero de transacciones concurrentes que cada segmento
se espera que maneje.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

147

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

148

SEGMENTOS Y SUS TIPOS.

SEGMENTOS DE ROLLBACK.
Toda base de datos posee uno o ms segmentos de
rollback.

Segmento: Un conjunto de extensiones que contiene


todos los datos para una estructura lgica de
almacenamiento especifica en un tablespace.

Contiene/n los valores antiguos de datos modificados


por cada transaccin.

Tipos de segmentos:

La informacin se dispone en mltiples entradas de


rollback que contienen informacin de bloque y el
dato tal como exista antes de la operacin involucrada
en la transaccin.

- Segmentos de datos.
- Segmentos de ndices.
- Segmentos temporales.

Estas entradas modifican los bloques del segmento de


rollback y Oracle almacena todos los cambios hechos
en la bitcora (redo log).

- Segmentos de rollback.

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

149

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

150

ESCRITURA EN UN SEGMENTO
DE ROLLBACK.
Durante la transaccin se escribe la informacin de
rollback en el segmento asignado de forma secuencial.
Cada transaccin escribe en una nica extensin del
segmento en un momento dado.

Una transaccin es asociada a un segmento:


- Automticamente, al siguiente segmento libre que
exista.
Oracle distribuye las transacciones entre los
segmentos activos de forma que todos ellos trabajen
con, aproximadamente, el mismo nmero. Esto no
depende del tamao de los segmentos.

Por
cada
segmento
existe
una
tabla
de
transacciones: Lista de todas las transacciones que lo
usan y las entradas en el mismo para cada modificacin
realizada por dichas transacciones.

- Por asignacin. Al comienzo de la transaccin puede


indicarse el segmento de rollback apropiado a usar
(SET TRANSACTION USE ROLLBACK SEGMENT ).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRANSACCIONES
Y SEGMENTOS DE ROLLBACK.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

Muchas
transacciones
activas
pueden
escribir
concurrentemente en un segmento, pero cada bloque
de datos de una extensin de un segmento solo puede
contener informacin de una transaccin.
151

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

152

ESCRITURA EN UN SEGMENTO
DE ROLLBACK.

ESCRITURA EN UN SEGMENTO
DE ROLLBACK.

Cada segmento de rollback debe tener al menos dos


extensiones asignadas.
Si una transaccin agota el espacio libre en la extensin
actual y debe proseguir la escritura, se localiza una
extensin en el mismo segmento:
- Bien se reutiliza una extensin ya asignada al
segmento. Se comprueba la siguiente extensin y si no
contiene informacin de una transaccin activa, se
convierte en la extensin actual.
- O bien se asigna una nueva extensin al segmento.
Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

153

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

154

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESCRITURA EN UN SEGMENTO
DE ROLLBACK.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

ESCRITURA EN UN SEGMENTO
DE ROLLBACK.

155

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

156

SEGMENTOS DE ROLLBACK
PBLICOS Y PRIVADOS.

SEGMENTO ROLLBACK SYSTEM.

Se crea al mismo tiempo que la base de datos.


Reside en el tablespace SYSTEM y usa sus parmetros
de almacenamiento por defecto.
No puede borrarse.
Si existen diversos segmentos de rollback, se emplea
para transacciones especiales del sistema, y las
transacciones de usuario son distribuidas entre otros
segmentos de rollback.
Se recomienda crear segmentos adicionales al SYSTEM
tras instalar la base de datos.
Si hay excesivas transacciones para el resto de
segmentos, el segmento SYSTEM tambin es usado.
Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

Un segmento privado se adquiere explcitamente por


la instancia si es nombrado en el fichero de inicializacin
(parmetro ROLLBACK_SEGMENTS). Tambin puede
usarse al ponerlo en lnea de forma manual.
Los segmentos pblicos forman un conjunto que
cualquier instancia puede usar. El nmero de
segmentos
pblicos
adquiridos
automticamente
depende de los valores de TRANSACTIONS y
TRANSACTIONS_PER_ROLLBACK_SEGMENT.
La distincin tiene sentido si se usa la opcin Real
Application Clusters.
157

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

158

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECOMENDACIONES.

CREACIN.
Debe poseerse el privilegio create rollback segment.

Se recomienda crear un espacio de almacenamiento


exclusivo que albergue a los segmentos de rollback.

El espacio de almacenamiento destino debe estar en


lnea.

Ventajas:

Sintaxis:

- Puede ser mantenido en lnea de forma permanente.

CREATE <PUBLIC> ROLLBACK SEGMENT <NOMBRE>


TABLESPACE <NOMBRE_TBSP>
STORAGE (INITIAL <XX>
NEXT <XX>
MINEXTENTS <XX>
MAXEXTENTS <XX>
OPTIMAL <XX> );

- No impide que otros espacios de almacenamiento sean


puestos fuera de lnea.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

159

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

160

CREACIN.
PARMETRO OPTIMAL.

CREACIN. RECOMENDACIONES.

Especifica el tamao optimo del segmento. Oracle


intenta mantener este tamao para el segmento
deasignando dinmicamente las extensiones cuando sus
datos no son necesarios para otras transacciones
activas.

INITIAL y NEXT deben ser del mismo valor: Se


consiguen as extensiones de tamao uniforme.
Debe crearse un adecuado nmero de extensiones
iniciales para minimizar la necesidad de extensin.

Cuando una transaccin necesita escribir en otra


extensin, se compara el tamao actual del segmento
con el optimo; si es mayor, y la extensin siguiente a la
que se ha llenado es inactiva, se desalojan extensiones
hasta llegar al optimo (siempre las mas antiguas).

No debe fijarse MAXEXTENTS=UNLIMITED. Se evita as


que se extienda de forma ilimitada debido a un error de
programacin.

Su valor no puede ser menor que el espacio asignado


inicialmente, especificado por los parmetros initial,
next y el numero mnimo de extensiones.
Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

161

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

162

TAMAO SEGMENTO
ROLLBACK.

Las estadsticas generadas en la vista V$ROLLSTAT


(valores SHRINKS, AVESHRINK, AVEACTIVE y OPTSIZE)
dan idea de lo adecuado o no del parmetro OPTIMAL.

Aunque los segmentos de rollback pueden manejar


transacciones de cualquier dimensin:
Si un sistema ejecuta slo transacciones cortas es
preferible que los segmentos sean pequeos (siempre
permanecen en memoria pero se corre el peligro de
generar el ORA-01555).
Si son transacciones de larga duracin es mejor usar
segmentos de gran tamao.

SHRINKS (bajo) y AVESHRINK (bajo): Si AVEACTIVE es


cercano a OPTSIZE, OPTIMAL es correcto. En caso
contrario, OPTIMAL es demasiado grande.
SHRINKS (bajo) y AVESHRINK (alto): OPTIMAL correcto.
SHRINKS (alto) y AVESHRINK (bajo): OPTIMAL
demasiado pequeo.

Lo ideal es crear un nmero de segmentos de tamao


apropiado para cada tipo de transaccin y asignar
explicitamente las transaccion atpicas a aquellos que
corresponda (por ejemplo, transacciones largas).

SHRINKS (alto) y AVESHRINK (alto): Aumentar OPTIMAL


hasta que SHRINKS disminuya.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CREACIN.
PARMETRO OPTIMAL.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

163

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

164

TAMAO SEGMENTO
ROLLBACK.

PUESTA EN/FUERA DE LNEA.

Se recomienda que cada segmento tpico tenga un 10%


del tamao de la mayor tabla de la bd.

Cuando se crea un segmento esta fuera de lnea y debe


ser puesto en lnea de forma explicita.
Si se intenta poner fuera de lnea un segmento activo y
en uso solo se consigue cuando las transacciones que lo
usan finalizan. Permanecer fuera de lnea hasta que
explcitamente sea puesto en lnea o la instancia
rearrancada.
Sintaxis:
ALTER ROLLBACK SEGMENT <NOMBRE> ONLINE;
ALTER ROLLBACK SEGMENT <NOMBRE> OFFLINE;

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

165

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

166

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MODIFICACIN DE
PARMETROS.

DECREMENTO.

Sintaxis:
ALTER ROLLBACK SEGMENT <NOMBRE>
STORAGE (INITIAL <XX>
NEXT <XX>
MINEXTENTS <XX>
MAXEXTENTS <XX>
OPTIMAL <XX> );

Manualmente puede reducirse el tamao de un segmento


derollback. El tamao final depende del espacio libre en el
segmento y de cuantas transacciones activas usan el
segmento.

Si no se especifica un tamao concreto se intenta ajustar al


del parmetro de creacin OPTIMAL. Si no se ha determinado,
al del parmetro MINEXTENTS.

Sintaxis:
ALTER ROLLBACK SEGMENT <NOMBRE>
SHRINK TO <XX> K/M;
ALTER ROLLBACK SEGMENT <NOMBRE> SHRINK;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

167

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

168

ASIGNACIN EXPLICITA A UNA


TRANSACCIN.

BORRADO.

Debe poseerse el privilegio drop rollback segment.

El segmento debe estar en lnea y usarse como primera


sentencia de la transaccin:

El segmento debe estar fuera de lnea.

SET TRANSACTION USE ROLLBACK SEGMENT <NOMBRE>;

Sintaxis:

Un ejemplo de uso es asignar transacciones que insertan,


actualizan o borran grandes cantidades de informacin a
segmentos lo bastante grandes como para contener la
informacin de rollback de la transaccin.

DROP ROLLBACK SEGMENT <NOMBRE>;

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

169

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ESPACIO DE UNDO

170

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

VISTAS.
V$ROLLNAME. Nombres de los segmentos de rollback en
lnea.

TEMA 7.

V$ROLLSTAT. Estadsticas sobre segmentos de rollback.


V$TRANSACTION. Transacciones activas en el sistema.
DBA_ROLLBACK_SEGS.

Informacin

sobre

segmentos

de

rollback de la bd.

GESTIN DE USUARIOS Y
RECURSOS.

DBA_SEGMENTS, donde tipo de segmento sea ROLLBACK


Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

171

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

172

TEMA 7.
GESTIN DE USUARIOS Y RECURSOS.

TEMA 7.
GESTIN DE USUARIOS Y RECURSOS.
Privilegios sobre objetos. Otorgar y revocar privilegios
sobre objetos.

Usuarios y su autentificacin.
Creacin, modificacin y borrado de usuarios.

Roles. Beneficios de los roles. Roles predefinidos.

Grupos de espacios temporales.


Espacio de almacenamiento SYSAUX.

Creacin, modificacin, asignacin y deasignacin de


roles a usuarios.

Perfiles. Parmetros. Funcin de verificacin.

Parmetro max_enabled_roles.

Creacin, modificacin, asignacin y borrado de perfiles.

Borrado de roles.

Privilegios. Privilegios de sistema y sobre objetos.

Roles por defecto. Activacin y desactivacin de roles.

Privilegios de sistema. Otorgar y revocar. Restricciones.

Vistas.

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

173

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

174

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

USUARIOS Y SU AUTENTIFICACIN.

Cada base de datos tiene una lista valida de usuarios.


Para acceder a la misma un usuario debe ejecutar un
aplicacin y conectarse a la instancia usando un nombre
valido previamente definido. Tras la autentificacin,
puede autorizarse, o no, el acceso a determinados
elementos y la ejecucin de ciertas acciones.

USUARIOS

Las formas ms comunes de autentificar a un usuario


son:
- Por base de datos.
- Por sistema operativo (autentificacin externa).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

175

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

176

USUARIOS Y SU AUTENTIFICACIN.

CREACIN DE USUARIOS.
Necesario el privilegio de sistema CREATE USER.
Normalmente slo lo tiene el usuario administrador.

En la autentificacin por base de datos la administracin


de la cuenta de usuario, contrasea, que se guarda
encriptada, y la autentificacin es realizada por Oracle.

No es posible la conexin del usuario creado a menos


que posea el privilegio de sistema CREATE SESSION.

En la autentificacin externa la cuenta es mantenida por


Oracle pero la administracin de la contrasea y la
autentificacin de usuario es realizada externamente.
El ejemplo ms comn de la autentificacin por
sistema operativo es los usuarios ops$ o identified
externally. El prefijo a usar viene determinado por el
parmetro
de
inicializacin,
fichero
init.ora,
OS_AUTHENT_PREFIX (define el prefijo a aadir al
comienzo de toda cuenta de usuario identificado por
s.o. y su valor por defecto es OPS$).
Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

Sintaxis:
CREATE USER <usuario>
IDENTIFIED BY <contrasea>/EXTERNALLY
DEFAULT TABLESPACE <espacio>
TEMPORARY TABLESPACE <espacio>/<grupo_espacios>
QUOTA <xx>/UNLIMITED ON <espacio>
PROFILE <perfil>
PASSWORD EXPIRE
ACCOUNT LOCK/UNLOCK;
177

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

178

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CREACIN DE USUARIOS.

CREACIN DE USUARIOS.
DEFAULT TABLESPACE.

Nombre de usuario.

Indica aquel espacio de almacenamiento donde se


crearn los objetos del esquema del usuario cuando al hacerlo
no se indica ninguno en particular.

Debe ser nico respecto a otros nombres de usuario y


roles. Cada usuario tiene asociado un esquema y dentro del
mismo cada objeto debe tener un nico nombre.

Si se omite la clausula, los objetos se crean en el esp. alm. por


defecto de la bd (default user tablespace) que se indica mediante la
sentencia: alter database default tablespace ...; si este no se ha
especificado el espacio por defecto es SYSTEM (Error!).

Identificacin.

TEMPORARY TABLESPACE.
Un usuario autentificado de forma externa se ha de crear
con la clusula IDENTIFIED EXTERNALLY.

Indica el espacio o grupo de espacios de almacenamiento


para los segmentos temporales requeridos por el usuario.
No debe indicarse cuota. Si se omite la clausula, el espacio
temporal por defecto es el SYSTEM (Error!) a menos que se haya
fijado el valor del esp. temporal por defecto (default temporary
tablespace): alter database default temporary tablespace ...; .

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

179

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

180

CREACIN DE USUARIOS.

CREACIN DE USUARIOS.

QUOTA.

PROFILE.

Indica la cantidad mxima de espacio que un usuario


puede utilizar en un determinado espacio de almacenamiento.
Puede indicarse cuota en mltiples espacios al tiempo.

Indica el perfil a asignar al usuario (especifica


limitaciones en recursos del sistema y restricciones). Si se
omite se asigna el perfil DEFAULT.

El creador del usuario puede indicar cuota sobre espacios


de almacenamiento aunque l no las posea.

PASSWORD EXPIRE.

Por defecto no se tiene cuota en ningn espacio de


almacenamiento. Indicando UNLIMITED, es ilimitado el
espacio a usar. Pueden usarse distintas abreviaturas para
indicar el tamao: kilobytes (K), megabytes (M), gigabytes
(G), terabytes (T), petabytes (P), o exabytes (E).

ACCOUNT.

Fuerza al usuario a cambiar la clave antes de conectarse


a la base de datos.

ACCOUNT LOCK, bloquea la cuenta de usuario y


deshabilita el acceso. ACCOUNT UNLOCK, desbloquea la
cuenta de usuario y permite al acceso.

Puede revocarse el acceso a un espacio de


almacenamiento asignando cuota cero en el mismo. Los
objetos ya creados permanecen pero no pueden crecer ni
crearse ninguno ms.
Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

181

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

182

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GRUPOS ESPACIOS TEMPORALES.

Administracin y Ajuste de Oracle 10g

GRUPOS ESPACIOS TEMPORALES.

Un grupo de espacios de alm. temporales (temporary


tablespace group) es un sinnimo que engloba a un conjunto
de espacios de almacenamiento temporales.

Asignar grupos por defecto:


alter database default temporary tablespace
<nombre_grupo>;

El grupo se crea cuando se aade el primer espacio temporal


al mismo (no puede estar vacio, por lo que, al menos, tiene
un miembro). Si se eliminan todos sus componentes, el grupo
deja de existir.

Eliminar un temporal de un grupo:


alter tablespace <nombre_temporal> tablespace group '';

Creacin de grupos:
alter tablespace <nombre_temporal> tablespace group
<nombre_grupo_temporales>;
create temporary tablespace <nombre_temporal>
tempfile '/.../... .dbf' size ... tablespace group
<nombre_grupo>;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

183

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

184

MODIFICACIN DE USUARIOS.

MODIFICACIN DE USUARIOS.

Los usuarios pueden cambiar sus propias claves, sin embargo


para cambiar cualquier otro parmetro es necesario el
privilegio ALTER USER.

DEFAULT ROLE.
Indica los roles otorgados por defecto al usuario en
la conexin. Se refiere a roles otorgados de forma
directa al usuario (con la sentencia GRANT).

Sintaxis:
ALTER USER <usuario>
IDENTIFIED BY <contrasea>/EXTERNALLY
DEFAULT TABLESPACE <espacio>
TEMPORARY TABLESPACE <espacio>/<grupo_espacios>
QUOTA <xx>/UNLIMITED ON <espacio>
DEFAULT ROLE <role>/ALL/ALL EXCEPT <role>/NONE
PROFILE <perfil>
PASSWORD EXPIRE
ACCOUNT LOCK/UNLOCK;

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

Oracle activa los roles indicados sin necesidad de


especificar sus contraseas.
Al crear el usuario los roles por defecto son todos
los asignados, se limitan posteriormente mediante
ALTER USER.

185

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

BORRADO DE USUARIOS.

Una posible solucin para que permanezca el usuario y


los objetos pero impedir la conexin es revocar el
privilegio CREATE SESSION.

Es necesario tener el privilegio de sistemas DROP


USER.
GESTIN DE USUARIOS Y
RECURSOS

Oracle no borra esquemas de usuario no vacios a menos que


se indique CASCADE, realiza un borrado de objetos previo, o
se hayan eliminado con anterioridad los objetos.
Es conveniente estudiar las implicaciones que sobre otros
esquemas tiene el borrado del usuario y de su esquema:
Se invalida vistas o sinnimos para objetos en el esquema
borrado.
Se invalidan procedimientos almacenados, funciones, o paquetes
que consulten objetos pertenecientes al esquema eliminado.
Las vistas materializadas en otros esquemas basados en tablas
pertenecientes al esquema borrado no podrn refrescarse.
Se borran todos los disparadores, triggers, del esquema.
No se eliminan roles creados por el usuario.

No es posible eliminar un usuario que permanezca


conectado a la base de datos. Debe esperarse a que
concluya o forzar su terminacin (ALTER SYSTEM KILL
SESSION).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

186

BORRADO DE USUARIOS.

Al borrar un usuario el esquema asociado, con todos sus


objeto, desaparecen.

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Sintaxis:
DROP USER <usuario> <CASCADE>;

187

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

188

ESPACIO DE ALMACENAMIENTO SYSAUX.

El espacio de almacenamiento SYSAUX acompaa a SYSTEM,


ayudando a incrementar la disponibilidad de la bd al descargar
datos de aplicaciones que utilizaban el espacio SYSTEM u
otros con anterioridad a esta versin de bd.
Tiene las mismas caractersticas de almacenamiento que
SYSTEM.

La vista dinmica V$SYSAUX_OCCUPANTS indica, entre otras


cosas, las aplicaciones que usan SYSAUX, el espacio utilizado,
el nombre del esquema propietario de la mismas y el nombre
del procedimiento que debe emplearse para desplazar
determinado contenido desde SYSAUX hasta otra lozalizacin:

PERFILES

Select occupant_name, schema_name, space_usage_kbytes,


move_procedure from V$SYSAUX_OCCUPANTS;
Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

189

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

190

CREACIN DE PERFILES.

Est constituido por un conjunto de lmites de recursos


de la base de datos. Diferentes perfiles pueden ser
asignados a diferentes usuarios.

Es necesario el privilegio de sistema CREATE PROFILE.


Existe un perfil por defecto o DEFAULT. Inicialmente
todos los recursos designados en l tienen valor
UNLIMITED, por lo que es conveniente modificarlo
(sentencia ALTER PROFILE).

Habilitar o deshabilitar la limitacin de recursos


mediante perfiles puede hacerse (no aplicable a los
parmetros de contrasea que siempre estn
habilitados):

Un usuario al que no se le asigna perfil posee el perfil


DEFAULT.
Aquellos recursos para los que en el perfil asignado no
se ha definido un valor, o se ha indicado DEFAULT,
toman el valor designado en el perfil por defecto.

- Mediante
el
parmetro
de
inicializacin
RESOURCE_LIMIT (init.ora), asignando valores TRUE o
FALSE (por defecto).
- Mediante
la
sentencia
ALTER
RESOURCE_LIMIT = TRUE/FALSE.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PERFILES.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

SYSTEM

GESTIN DE USUARIOS Y
RECURSOS

Sintaxis:

SET

CREATE PROFILE <nombre_perfil>


LIMIT <parmetros> <valor>/UNLIMITED/DEFAULT;
191

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

192

CREACIN DE PERFILES.
PARMETROS DE RECURSOS.

CREACIN DE PERFILES.
PARMETROS DE RECURSOS.

Parmetros de recursos:
SESSIONS_PER_USER. Nmero de sesiones concurrentes.

LOGICAL_READS_PER_SESSION. Numero de bloques de datos


ledos en una sesin (memoria o disco).

CPU_PER_SESSION. Tiempo de UCP por sesin (centsimas de


segundo).

LOGICAL_READS_PER_CALL. Numero de bloques de datos para


una llamada de una SQL (parse, execute, o fetch).

CPU_PER_CALL. Tiempo de UCP para una llamada (parse, execute,


o fetch) en centsimas de segundo.

PRIVATE_SGA. Cantidad de espacio, en bytes, para uso privado


reservado en la shared pool de la SGA (se emplea K o M para
indicar kilobytes o megabytes). Solo en Shared Server.

CONNECT_TIME. Tiempo total para una sesin (minutos).

COMPOSITE_LIMIT. Coste total en recursos por sesin expresado


en unidades de servicio (CPU_PER_SESSION, CONNECT_TIME,
LOGICAL_READS_PER_SESSION, y PRIVATE_SGA).

IDLE_TIME. Tiempo de inactividad continua en una sesin


(minutos).

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

193

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

194

CREACIN DE PERFILES.
PARMETROS DE CONTRASEA.

Parmetros de contrasea:

PASSWORD_REUSE_MAX . Nmero de cambios de clave


necesarios antes de poder reutilizar la clave actual.

FAILED_LOGIN_ATTEMPTS. Nmero de intentos fallidos de


conexin antes del bloqueo.

NOTA: PASSWORD_REUSE_TIME y PASSWORD_REUSE_MAX deben usarse


conjuntamente. Si se indica un entero para ambos parmetros, el usuario no
puede reutilizar la contrasea hasta que ha cambiado el nmero de veces
indicado en PRM durante el periodo indicado por PRT. Si alguno de los dos tiene
valor UNLIMITED, nunca se podr reutilizar la contrasea. Si ambos tiene valor
UNLIMITED, la bd los ignora.

PASSWORD_LIFE_TIME. Nmero de das en que la clave es vlida


para autentificacin.
Si se indica un valor para PASSWORD_GRACE_TIME, la clave
expira si no se cambia en este periodo. Si no se indica valor para
PASSWORD_GRACE_TIME, por defecto UNLIMITED, se genera un
aviso pero el usuario puede seguir conectndose.

PASSWORD_LOCK_TIME. Nmero de das que la cuenta estar


bloqueada despus de un cierto nmero de fallos de conexin
indicado.

PASSWORD_GRACE_TIME. Periodo de gracia donde se permite la


conexin pero se notifica la necesidad de cambiarla.

PASSWORD_VERIFY_FUNCTION. Permite indicar como argumento


un script PL/SQL que verifica la complejidad de la clave. Si se
indica NULL no se usa funcin alguna. Oracle proporciona una
funcin por defecto: verify_function.

PASSWORD_REUSE_TIME . Nmero de das en los cuales la


contrasea no puede reutilizarse.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CREACIN DE PERFILES.
PARMETROS DE CONTRASEA.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

195

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

196

CREACIN DE PERFILES.

FUNCIN DE VERIFICACIN.

Valor UNLIMITED. Si es un parmetro de recurso indica que


puede usarse una cantidad ilimitada del mismo, en el caso de
parmetros de contrasea que no ha sido fijado limite.

Valor DEFAULT. Si se indica DEFAULT o se omite en el perfil


algn parmetro, al ser asignado a un usuario toma para
dicho parmetro el valor indicado en el perfil DEFAULT.

Ejemplo de creacin de perfil.

La contrasea satisface un mnimo de longitud.


La contrasea no coincide con el nombre de usuario.

CREATE PROFILE perfil_2 LIMIT


FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX 5
PASSWORD_VERIFY_FUNCTION verify_function
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 10;
Administracin y Ajuste de Oracle 10g

La funcin de verificacin de contrasea debe pertenecer al


usuario SYS. Realiza las comprobaciones:

GESTIN DE USUARIOS Y
RECURSOS

Puede modificarse, siempre en el esquema SYS y conectando


como CONNECT SYS/password AS SYSDBA

197

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

MODIFICACIN DE PERFILES.

ASIGNACIN DE PERFILES.

Es necesario poseer el privilegio de sistema ALTER


PROFILE.

Los perfiles no pueden asignarse a roles ni a otros


perfiles, solo a usuarios.

Los valores modificados no afectan a las sesiones en


curso.

Se puede realizar durante la creacin del usuario


(CREATE USER) o posteriormente (ALTER USER).

Sintaxis:

Un usuario slo puede tener un perfil asignado a la vez.


Las asignaciones de perfiles no afectan a las sesiones
activas.

ALTER PROFILE <perfil>


LIMIT <parmetros> <valor>/UNLIMITED/DEFAULT;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

198

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

199

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

200

BORRADO DE PERFILES.

VISTAS. USUARIOS Y PERFILES.

Debe poseerse el privilegio de sistema DROP PROFILE.


El perfil DEFAULT no puede borrarse.
Para eliminar un perfil asignado a un usuario debe
usarse la opcin CASCADE. Si se borra un perfil
asociado a un usuario, a este se le asigna de forma
automtica el perfil DEFAULT.
El borrado de un perfil no afecta a las sesiones en
curso.

DROP PROFILE <perfil>;


DROP PROFILE <perfil> CASCADE;
GESTIN DE USUARIOS Y
RECURSOS

Usuarios de la base de datos.

ALL_USERS

Usuarios visibles al usuario actual.

USER_USERS

Describe el usuario actual.

DBA_TS_QUOTAS
USER_TS_QUOTAS
USER_PASSWORD
_LIMITS
USER_RESOURCE_
LIMITS

Sintaxis:

Administracin y Ajuste de Oracle 10g

DBA_USERS

201

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Cuotas de espacio para usuarios.


Parmetros de contrasea asignados al usuario.
Parmetros de recursos asignados al usuario.

V$SESSION

Informacin sobre sesiones.

V$SESSTAT

Estadsticas
de
V$STATNAME).

Administracin y Ajuste de Oracle 10g

sesin

(ver

tambin

GESTIN DE USUARIOS Y
RECURSOS

202

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PRIVILEGIOS.
Derecho a ejecutar un tipo determinado de sentencia
SQL o a acceder a un objeto de otro usuario. Pueden
asignarse a usuarios o, preferiblemente, a roles. Es
importante no excederse en la concesin de privilegios.
Se distinguen dos tipos:

PRIVILEGIOS

- De sistema: Permite realizar determinadas acciones en


la base de datos (Por ejemplo, crear espacios de
almacenamiento, crear usuarios, ) o en cualquier
esquema.
- Sobre objetos: Permite a un usuario acceder y
manipular o ejecutar objetos concretos (tablas, vistas,
secuencias, procedimientos, funciones o paquetes).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

203

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

204

PRIVILEGIOS DE SISTEMA.

PRIVILEGIOS DE SISTEMA.

DATABASE.

ALTER DATABASE
ALTER SYSTEM
AUDIT SYSTEM

DATABASE LINKS
CREATE DATABASE LINK
CREATE PUBLIC DATABASE LINK
DROP PUBLIC DATABASE LINK

CREATE TABLE
CREATE ANY TABLE / CREATE ANY INDEX
ALTER ANY TABLE / ALTER ANY INDEX
DROP ANY TABLE / DROP ANY INDEX
DELETE ANY TABLE / DROP ANY TABLE / INSERT ANY TABLE /
UPDATE ANY TABLES/ SELECT ANY TABLE

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

205

CREATE ROLE
ALTER ANY ROLE
DROP ANY ROLE
GRANT ANY ROLE

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

206

PRIVILEGIOS DE SISTEMA.

ROLLBACK SEGMENTS
CREATE ROLLBACK SEGMENT
ALTER ROLLBACK SEGMENT
DROP ROLLBACK SEGMENT

SESSIONS

CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
MANAGE TABLESPACE
UNLIMITED TABLESPACE

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

OTROS

TABLESPACES

USUARIO
CREATE USER
ALTER USER
DROP USER

CREATE SESSION
ALTER SESSION

ROLES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PRIVILEGIOS DE SISTEMA.

PROFILES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CREATE PROCEDURE
CREATE ANY PROCEDURE
ALTER ANY PROCEDURE
DROP ANY PROCEDURE
EXECUTE ANY PROCEDURE

CREATE PROFILE
ALTER PROFILE
DROP PROFILE

TABLAS INDICES

PROCEDURE

ANALYZE ANY
AUDIT ANY
COMMENT ANY TABLE
...

Nota: Consultar Oracle Database SQL Reference para una lista completa de
privilegios de sistema.

GESTIN DE USUARIOS Y
RECURSOS

207

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

208

OTORGAR
PRIVILEGIOS DE SISTEMA.

PRIVILEGIOS DE SISTEMA.
La clusula ANY en cualquier privilegio indica que los
usuarios a los que se les conceda tienen dicho privilegio
en cualquier esquema.

Para que un usuario pueda otorgar un priv.de sistema bien


debe haberse otorgado con ADMIN OPTION, permite a aquel a
quien se le concede el privilegio poder otorgarlo (peligro!), o
haber sido concedido el privilegio GRANT ANY PRIVILEGE.

Notas:

Sintaxis:

- No existe el privilegio CREATE INDEX.


- CREATE TABLE incluye las sentencias CREATE INDEX y
ANALYZE.
- Privilegios como CREATE TABLE o CREATE PROCEDURE
incluyen el borrado de dichos objetos.
- UNLIMITED TABLESPACE no puede otorgarse a un rol.
Este privilegio permite usar una cantidad ilimitada de
espacio en cualquier espacio de almacenamiento de la
bd y se antepone a cualquier cuota explcita asignada
al usuario (Error!).
Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

GRANT
<privilegio>/ALL
<usuario>/<rol>/PUBLIC;

209

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GRANT
<privilegio>/ALL
PRIVILEGES
<usuario>/<rol>/PUBLIC WITH ADMIN OPTION;

TO

Al especificar ALL PRIVILEGES se otorgan todos los privilegios


de sistema (Peligro!).

La clusula PUBLIC otorga el privilegio a todos los usuarios


(Peligro!).

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

210

REVOCAR
PRIVILEGIOS DE SISTEMA.

El parmetro de inicializacin, fichero init.ora,


O7_DICTIONARY_ACCESSIBILITY permite restringir los
privilegios de sistema. Impide el acceso al esquema SYS
a travs de los privilegios que conceden acceso a
cualquier esquema (privilegios ANY).

Si su valor es TRUE, se permite el acceso a los objetos


del esquema SYS (Error!).
GESTIN DE USUARIOS Y
RECURSOS

Sintaxis:
REVOKE
<privilegio>/ALL
<usuario>/<rol>/PUBLIC;

Por defecto su valor es FALSE, el acceso a objetos en


este esquema est entonces restringido a SYS y
aquellos usuarios que se conectan como SYSDBA. En
este caso, por ejemplo, SELECT ANY TABLE permite
acceder a vistas y tablas en otros esquemas pero no
seleccionar objetos del esquema SYS (diccionario de
datos).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TO

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RESTRICCIONES
EN PRIVILEGIOS DE SISTEMA.

Administracin y Ajuste de Oracle 10g

PRIVILEGES

211

PRIVILEGES

FROM

Cualquier usuario con la opcin ADMIN OPTION sobre un


privilegio puede revocarlo. Quien lo hace no tiene porque ser el
usuario que originalmente lo otorgo.

Al retirar ciertos privilegios determinados objetos pueden quedar


inconsistentes (procedimientos o vistas consultadas merced al
privilegio SELECT ANY TABLE).

En el caso de ADMIN OPTION no hay un efecto en cascada


cuando se retira un privilegio referente a operaciones DDL (por
ej. CREATE TABLE); si lo hay cuando se revoca un privilegio
referente a operaciones DML (por ejemplo SELECT ANY TABLE).

Si se retira un privilegio de sistema de PUBLIC, pero existen


usuarios a los que se ha otorgado aquel directamente o a travs
de roles, estos siguen pudiendolo usar.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

212

OTORGAR
PRIVILEGIOS SOBRE OBJETOS.

PRIVILEGIOS SOBRE OBJETOS.

TABLAS
ALTER
INDEX
SELECT

- FLASHBACK
- SELECT

- INSERT
- UPDATE

Sintaxis:
GRANT <privilegio>/ALL PRIVILEGES <columna>/ON <esquema>.objeto
TO <usuario>/<rol>/PUBLIC;
GRANT <privilegio>/ALL PRIVILEGES ON <esquema>.objeto
TO <usuario>/<rol>/PUBLIC WITH GRANT OPTION;

SECUENCIAS
ALTER

- FLASHBACK
- REFERENCES

VISTAS
DELETE
REFERENCES

- DELETE
- INSERT
- UPDATE

- SELECT

Con ALL PRIVILEGES se otorgan todos los privilegios sobre el objeto


(Peligro!).

Con PUBLIC otorga el privilegio a todos los usuarios (Peligro!).

La clusula GRANT OPTION permite a aquel a quien se le concede el


privilegio poder otorgarlo (Peligro!).

FUNCIONES, PAQUETES Y PROCEDIMIENTOS


EXECUTE
Nota: Consultar Oracle Dat.SQL Reference para lista completa privilegios sobre objetos.

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

213

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

OTORGAR
PRIVILEGIOS SOBRE OBJETOS.

CASCADE CONSTRAINTS elimina cualquier clusula de


integridad referencial que aquel a quien se retiran los
permisos haya definido usando REFERENCES o ALL
PRIVILEGES.

Quien otorgo privilegios solo puede revocarlos a aquellos


usuarios a quienes se los ha concedido.

En el caso de GRANT OPTION hay un efecto en cascada


cuando se retira un privilegio.

GRANT ALL PRIVILEGES ON nomina.retenciones


TO gestor WITH GRANT OPTION;
GRANT REFERENCES (dni_empleado), UPDATE (dni_empleado,
sueldo_base) ON nomina.empleados TO gestor;

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Sintaxis:
REVOKE <privilegio>/ALL PRIVILEGES ON <esquema>.objeto
FROM <usuario>/<rol>/PUBLIC <CASCADE CONSTRAINTS>;

Ejemplos:

Administracin y Ajuste de Oracle 10g

214

REVOCAR
PRIVILEGIOS SOBRE OBJETOS.

GESTIN DE USUARIOS Y
RECURSOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

215

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

216

ROLES.
Es un grupo de privilegios, de sistema o sobre objetos,
a los que se les da un nombre y pueden ser asignados a
otros usuarios y roles.
Caractersticas:
- Pueden otorgarse a cualquier usuario o rol, pero no a si
mismo y tampoco de forma circular.

ROLES

- Pueden tener contrasea.


- Su nombre es nico en la bd, distinto a cualquier otro
nombre de usuario o rol.
- No pertenecen a ningn esquema.
Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

217

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

218

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ROLES. BENEFICIOS.

ROLES PREDEFINIDOS.

Simplifican el manejo de privilegios. Los permisos pueden


asignarse a un rol y este a los diferentes usuarios.

Manejo de privilegios dinmico. Si se modifican los privilegios


asociados al rol, todos los usuarios que lo posean los
adquieren de forma inmediata.

Disponibilidad de privilegios selectiva. Roles asignados a un


usuario pueden ser activados o desactivados temporalmente.

Mejora aplicaciones. Cuando un usuario ejecuta una


determinada aplicacin puede activarse, o desctivarse,
selectivamente roles en funcin de nuestro inters. Los roles
tambin pueden protegerse con claves y estos activarse slo
si la aplicacin suministra la correcta.

Administracin y Ajuste de Oracle 10g

Oracle proporciona roles predefinidos como ayuda a la


administracin de base de datos, entre los que se
encuentran:
CONNECT. Incluye slo el privilegio CREATE SESSION.
RESOURCE. Incluye CREATE CLUSTER, CREATE INDEXTYPE,
CREATE
OPERATOR,
CREATE
PROCEDURE,
CREATE
SEQUENCE, CREATE TABLE, CREATE TRIGGER y CREATE
TYPE.
DBA. Todo privilegio de sistema WITH ADMIN OPTION.
EXP_FULL_DATABASE. Privilegios para realizar exportaciones
completas e incrementales de la base de datos.

Mejora de la productividad. El uso de roles disminuye el


numero de grants almacenados en el diccionario de datos.

IMP_FULL_DATABASE. Idem para importaciones completas.


Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

219

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

220

ROLES PREDEFINIDOS.

CREACIN DE ROLES.

DELETE_CATALOG_ROLE. Privilegio de borrado en la tabla de


auditora de sistema (AUD$).

Debe poseerse el privilegio CREATE ROLE.

EXECUTE_CATALOG_ROLE. Privilegio de ejecucin sobre


objetos en el diccionario de datos.

El nombre debe ser diferente a cualquier nombre de rol


o usuario existente.

SELECT_CATALOG_ROLE. Privilegio de consulta sobre objetos


del diccionario de datos.

Sintaxis:

Los roles CONNECT, RESOURCE y DBA se mantienen


por compatibilidad con versiones anteriores de Oracle.
No se asegura que sigan existiendo en un futuro.

CREATE ROLE <rol> IDENTIFIED BY <contrasea>;


CREATE ROLE <rol> NOT IDENTIFIED/<>;

Se recomienda crear roles especficos en cada bd y


asignarles los permisos necesarios, evitando el uso de
roles predefinidos, con lo que no surgirn problemas si
estos quedan obsoletos en futuras versiones.
Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

La clusula IDENTIFIED BY indica como debe ser


autorizado antes de usarse por un usuario al que se la
ha otorgado.
221

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

222

ASIGNAR ROLES A USUARIOS.


Sintaxis:

Un rol solo puede modificarse para cambiar su mtodo


de autentificacin.

GRANT <rol> TO <usuario>/<rol>/PUBLIC;

Debe poseerse el privilegio de sistema ALTER ANY ROLE


o haber sido sido otorgado el rol con la opcin ADMIN.

GRANT <rol> TO <usuario>/<rol>/PUBLIC WITH ADMIN


OPTION;

No se ven afectadas las sesiones en las que el rol est


ya activo.

Para que un usuario pueda otorgar un rol debe


habrsele concedido con ADMIN OPTION, poseer el
privilegio GRANT ANY ROLE, o haberlo creado.

Sintaxis:

El usuario que crea el rol implcitamente lo tiene


asignado con ADMIN OPTION.

ALTER ROLE <rol> NOT IDENTIFIED/ IDENTIFIED BY


<contrasea>;

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MODIFICACIN DE ROLES.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

223

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

224

PARMETRO MAX_ENABLED_ROLES.

ROLES POR DEFECTO.


Un rol por defecto es aquel que automticamente se
activa al conectarse.

Este parmetro est obsoleto y slo se mantiene por


compatibilidad. Es preferible NO usarlo.

Con la sentencia ALTER USER se limitan los roles por


defecto asignados a un usuario. La clasula puede slo
indicar roles otorgados directamente al usuario con una
sentencia GRANT.

Es un parmetro de inicializacin que define el numero


mximo de roles de base de datos activos
concurrentemente, incluyendo aquellos contenidos
dentro de otros roles, que un usuario puede poseer.

Sintaxis:

Un
usuario
puede
activar
como
mximo
2+MAX_ENABLED_ROLES puesto que cada usuario
tiene dos roles adicionales (PUBLIC y y el propio rol del
usuario).
Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

ALTER USER <usuario> DEFAULT ROLE <rol1>,<roln>/


ALL [EXCEPT rol1 [,role2]... ] / NONE;

225

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

226

DEASIGNACIN DE ROLES.

La clusula DEFAULT ROLE se aplica solo a los roles


otorgados de forma directa, y no para roles no
asignados al usuario o asignados a travs de otros
roles.

Puede hacerlo cualquier usuario con la opcin ADMIN


OPTION para un rol, tambin aquellos usuarios con el
privilegio GRANT ANY ROLE (pueden revocar cualquier
rol).

ALL hace que todos los roles sean por defecto excepto
aquellos indicados en la clusula EXCEPT.

Sintaxis:

EXCEPT indica que los roles que le siguen no sern por


defecto.

REVOKE <rol1>, <roln>


FROM <usuario>|<rol>|PUBLIC
[, <usuario>|<rol>} ]...

NONE hace que ninguno de los roles sea por defecto, y


los nicos privilegios al efectuarse la conexin sern
aquellos asignados directamente.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ROLES POR DEFECTO.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

Con PUBLIC se deasigna el rol de todos los usuarios.


227

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

228

ACTIVACIN Y
DESACTIVACIN DE ROLES.

BORRADO DE ROLES.

Durante una sesin, el usuario o una aplicacin puede usar la


sentencia SET ROLE para modificar los roles activos en la
sesin. Previamente los roles deben haber sido asignados al
usuario.
Al crear un usuario todos los roles asignados son por
defecto, a menos que se limite con ALTER USER.

No podr hacerse uso de los privilegios otorgados a travs del


rol inactivo a menos que tambin se hayan otorgado de forma
directa o a travs de otros roles.

En la siguiente sesin, los roles activos vuelven a ser los roles


por defecto.

La vista SESSION_ROLES informa de aquellos roles que, para


el usuario actual, estn activos en un momento determinado.

Debe poseerse el privilegio DROP ANY ROLE o haber


sido concedido el rol con ADMIN OPTION.
Sintaxis:
DROP ROLE <rol>;

Al borrar un rol se deasigna de todos los usuarios y


roles, y se elimina de la base de datos. Las sesiones en
las que el rol est activo no se ven afectadas, pero
ninguna otra lo podr usar.

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

229

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Sintaxis:

IDENTIFIED BY indica la contrasea del rol al activarlo.

ALL activa todos los roles excepto los que aparecen en la


clusula EXCEPT (no puede usarse esta opcin para activar
roles con contrasea).
NONE desactiva todos los roles en la sesin (solo son activos
los privilegios otorgados directamente).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

230

VISTAS.

SET ROLE <rol> [ IDENTIFIED BY <contrasea>]


[, <rol> [ IDENTIFIED BY <contrasea>]]/
ALL [ EXCEPT <rol1> , ,<roln> ] ...]
/NONE

GESTIN DE USUARIOS Y
RECURSOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ACTIVACIN Y
DESACTIVACIN DE ROLES.

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

231

DATABASE_PROPERTIES ... Propiedades de la bd.

DBA_USERS ... Usuarios de la bd.

DBA_ROLES ... Roles existentes en la bd.

DBA_ROLE_PRIVS ... Roles concedidos a usuarios y roles.

DBA_SYS_PRIVS ... Privilegios de sistema a usuarios y roles.

DBA_TAB_PRIVS ... Permisos sobre objetos en la bd.

DBA_TABLESPACE_GROUPS ... Grupos de espacios temporales.

DBA_COL_PRIVS ... Permisos sobre columnas de objetos en bd.

DBA_TS_QUOTAS ... Cuotas de espacio para usuarios.

DBA_PROFILES ... Perfiles en la bd.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y
RECURSOS

232

VISTAS.

ROLE_ROLE_PRIVS ... Roles concedidos a otros roles.

ROLE_SYS_PRIVS ... Privilegios de sistema concedidos a roles.

ROLE_TAB_PRIVS ... Privilegios sobre objetos concedidos a


roles.

DBA_CONNECT_ROLE_GRANTEES ... Usuarios con privilegio


CONNECT.

USER_PASSWORD_LIMITS ... Parmetros contrasea usuario.

USER_RESOURCE_LIMITS ... Lmites de recursos por usuario.

SESSION_PRIVS ... Privilegios disponibles en la sesin.

SESSION_ROLES ... Roles activos en la sesin.

V$SESSION ... Informacin de sesin.

Administracin y Ajuste de Oracle 10g

GESTIN DE USUARIOS Y
RECURSOS

233

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBMS_JOB vs. DBMS_SCHEDULER.

MIGRACION A DBMS_SCHEDULER.
CREACION DE TRABAJOS.
MODIFICACION DE TRABAJOS.
BORRADO DE TRABAJOS.

PLANIFICADOR (SCHEDULER).

ARQUITECTURA DEL PLANIFICADOR.

NOMENCLATURA OBJETOS.

PRIVILEGIOS PLANIFICADOR.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS.

Administracin y Ajuste de Oracle 10g

TRABAJOS

234

TRABAJOS

236

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 8.
TRABAJOS (JOBS).

TEMA 8.

TEMA 8.
TRABAJOS (JOBS).

TRABAJOS

235

PROCEDIMIENTOS PLANIFICADOR.
CREATE_JOB. INTERVALO EJECUCION.
SET _ATTRIBUTE.
SET _ATTRIBUTE_NULL.
COPY.
ENABLE.
DISABLE.
RUN_JOB.
STOP_JOB.
DROP_JOB.

VISTAS.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBMS_JOB vs. DBMS_SCHEDULER.

DBMS_JOB vs. DBMS_SCHEDULER.

Los trabajos son el resultado de la combinacin de una


planificacin y un programa, p.ej. cdigo PL/SQL, junto con
los argumentos requeridos por dicho programa. Se lanzan a la
cola de trabajos, especificando la periodicidad con que deben
ser ejecutados.

Las funciones de planificacin se ofrecen a travs del paquete


DBMS_SCHEDULER, este reemplaza al paquete DBMS_JOB.

Para gestionar la cola de trabajos se dispone, por tanto, del


paquete DBMS_SCHEDULER. Aunque DBMS_JOB sigue
estando disponible, no es probable que lo est en un futuro.

Dentro del paquete DBMS_SCHEDULER existen diversos


procedimientos como CREATE_JOB, DROP_JOB, STOP_JOB, ...
que permiten planificar los trabajos automatizados.

Administracin y Ajuste de Oracle 10g

TRABAJOS

237

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBMS_JOB permite ejecutar slo programas almacenados o


bloques PL/SQL. DBMS_SCHEDULER puede ejecutar tambin
ejecutables de S.O.

En DBMS_JOB slo hay un componente, el trabajo o job. En


DBMS_SCHEDULER
hay
mltiples
componentes
que
incrementan la capacidad de planificacin.

Usando DBMS_SCHEDULER los intervalos de planificacin


pueden definirse en lenguaje natural y de forma ms compleja
que con DBMS_JOB, el cual slo acepta expresiones tipo
fecha.

DBMS_SCHEDULER proporciona mayor detalle en cuanto al


estado del trabajo y sus fallos, esta informacin puede
consultarse en el diccionario de datos.

Administracin y Ajuste de Oracle 10g

238

MIGRACION A DBMS_SCHEDULER (II).


MODIFICACION DE TRABAJOS.

Usando DBMS_JOB:

VARIABLE jobno NUMBER;

Usando DBMS_JOB:
BEGIN

BEGIN

DBMS_JOB.WHAT(31, 'INSERT INTO employees VALUES (7935, ''TOM'', ''DOGAN'',


''tom.dogan@xyzcorp.com'', NULL, SYSDATE,''AD_PRES'', NULL, NULL, NULL, NULL);');

DBMS_JOB.SUBMIT(:jobno, 'INSERT INTO employees VALUES (7935, ''SALLY'', ''DOGAN'',


''sally.dogan@xyzcorp.com'', NULL, SYSDATE, ''AD_PRES'', NULL,NULL, NULL, NULL);',
SYSDATE, 'SYSDATE+1');

COMMIT;
END;

COMMIT;

END;
/

TRABAJOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MIGRACION A DBMS_SCHEDULER (I).


CREACION DE TRABAJOS.

Usando DBMS_SCHEDULER:

Usando DBMS_SCHEDULER:
BEGIN

BEGIN

DBMS_SCHEDULER.SET_ATTRIBUTE(

DBMS_SCHEDULER.CREATE_JOB(

name => 'JOB1',

job_name => 'job1',

attribute => 'job_action',

job_type => 'PLSQL_BLOCK',

value => 'INSERT INTO employees VALUES (7935, ''TOM'', ''DOGAN'', ''tom.dogan@xyzcorp.com'',
NULL, SYSDATE, ''AD_PRES'', NULL, NULL, NULL, NULL);');

job_action => 'INSERT INTO employees VALUES (7935, ''SALLY'', ''DOGAN'',


''sally.dogan@xyzcorp.com'', NULL, SYSDATE,''AD_PRES'', NULL, NULL, NULL,
NULL);');

END;
/

start_date => SYSDATE,


repeat_interval => 'FREQ = DAILY; INTERVAL = 1');
END;
/

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

239

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

240

MIGRACION A DBMS_SCHEDULER (III).


BORRADO DE TRABAJOS.

PLANIFICADOR (SCHEDULER).

Usando DBMS_JOB:

Mediante el planificador puede controlarse cundo y


dnde se ejecutarn los trabajos automatizados.
Permite, por ejemplo:

BEGIN
DBMS_JOB.REMOVE(14144);
COMMIT;
END;

Planificar trabajos de mantenimiento de la bd como copias


de seguridad u otras tareas a realizar durante horas de
menor actividad.

Usando DBMS_SCHEDULER:
BEGIN
DBMS_SCHEDULER.DROP_JOB('myjob1');

Planificar la ejecucin de trabajos


determinada o basndose en eventos.

END;
/

en

una

fecha

Agrupar trabajos en clases y priorizar entre las mismas


(incluso modificar la priorizacin en funcin del tiempo).
Gestionar y monitorizar trabajos.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

241

Administracin y Ajuste de Oracle 10g

TRABAJOS

242

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DEL PLANIFICADOR.

Tabla de trabajos.
Hay una por base de datos y almacena informacion tal
como el propietario, nivel de log o si el trabajo se elimina al
finalizar opcin por defecto (visible mediante la vista
DBA_SCHEDULER_JOBS o las anlogas ALL_... y USER_...).

Proceso coordinador.
Proceso
background,
cjqNNN,
que
arranca
automticamente cuando un trabajo debe ejecutarse y se
desactiva tras un periodo de inactividad. Se encarga de:
Controlar y crear los procesos esclavos.
Consultar la tabla de trabajos.
Coger los trabajos de la tabla y colocarlos en memoria
cache. Darlos a los esclavos para su ejecucin.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

244

ARQUITECTURA DEL PLANIFICADOR.

ARQUITECTURA DEL PLANIFICADOR.

Limpiar el conjunto de esclavos cuando no son necesarios.


Desactivarse cuando no hay trabajos planificados.
Despertar cuando debe ejecutarse un nuevo trabajo o se
ha creado un trabajo.
Recuperar los trabajos en ejecucin tras el arranque
posterior a un cierre anormal de la bd (p.ej. caida del
sistema o shutdown abort).

Existe slo un proceso coordinador por instancia.

(abrir sesin, comenzar la transaccin, comenzar la


ejecucin, finalizar la transaccin y cerrar sesin).
Actualizar el estado del trabajo en la tabla de trabajos
reflejando el estado del trabajo.
Actualizar la cuenta de ejecuciones o fallos del trabajo.
Buscar nuevos trabajos a ejecutar (o ir a dormir si no hay
ninguno).
...

Procesos esclavos.
Su nmero es ajustado automticamente por el
planificador. Son despertados por el coordinador cuando hay
trabajos por ejecutar. Se encargan de:
Ejecutar el trabajo y realizar las operaciones asociadas

Administracin y Ajuste de Oracle 10g

TRABAJOS

245

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

246

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PLANIFICADOR. RAC.

Administracin y Ajuste de Oracle 10g

NOMENCLATURA OBJETOS.

El planificador usa una tabla de trabajos por cada base de


datos y un proceso coordinador para cada instancia. Los
coordinadores comunican entre s para guardar informacin
actualizada.

Los objetos del planificador se nombran de la misma


forma que cualquier otro objeto de la base de datos:
[esquema_usuario].nombre. Los objetos deben ser
nicos en el espacio de nombres.
Por defecto, los nombres de objetos se almacenan en
maysculas a menos que estn encerrados en dobles
comillas.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

247

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

248

PRIVILEGIOS PLANIFICADOR.

PRIVILEGIOS PLANIFICADOR.

Para administrar el planificador debe poseerse el rol


SCHEDULER_ADMIN (generalmente slo administradores).

Es necesario ser restrictivos con la concesin de estos


permisos, siendo aconsejable la concesin de privilegios
concretos, por ejemplo:
GRANT CREATE JOB TO scott; -crear trabajos,... en su esquemaGRANT ALTER myjob1 TO scott;

Una alternativa para administrar el planificador es el privilegio


MANAGE SCHEDULER. Por ejemplo:
GRANT MANAGE SCHEDULER TO <usuario>;

El usuario podr crear, modificar, o borrar ventanas de


ejecucion, clases de trabajo o grupos de ventanas.
Administracin y Ajuste de Oracle 10g

TRABAJOS

249

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

250

TRABAJOS

252

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PRIVILEGIOS PLANIFICADOR.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

PRIVILEGIOS PLANIFICADOR.

TRABAJOS

251

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBMS_SCHEDULER.
PROCEDIMIENTO CREATE_JOB.

PROCEDIMIENTOS PLANIFICADOR.

Administracin y Ajuste de Oracle 10g

TRABAJOS

253

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

El propietario del trabajo es el usuario en cuyo esquema se ha


creado, el creador del trabajo es el usuario que ha creado el
mismo. Un trabajo puede crearse en otro esquema indicando
esquema.nombre_trabajo.

Los trabajos se ejecutan con los privilegios del esquema en el


cual se crean. El entorno del trabajo cuando se ejecuta es
aquel que exista en el momento de su creacin.

Cualquier trabajo puede consultarse una vez creado usando


las vistas *_SCHEDULER_JOBS. Por defecto los trabajos se
crean deshabilitados y necesitan activarse para ser
ejecutados.

Administracin y Ajuste de Oracle 10g

TRABAJOS

254

DBMS_SCHEDULER.
PROCEDIMIENTO CREATE_JOB.

Sintaxis:

TRABAJOS

job_name
Identificador unvoco del trabajo. Si el trabajo reside en otro esquema
debe indicarse el nombre de esquema. Para generar el nombre puede
usarse el procedimiento GENERATE_JOB_NAME

DBMS_SCHEDULER.CREATE_JOB (
job_name IN VARCHAR2,
job_type IN VARCHAR2,
job_action IN VARCHAR2,
number_of_arguments IN PLS_INTEGER DEFAULT 0,
start_date IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
repeat_interval IN VARCHAR2 DEFAULT NULL,
end_date IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
job_class IN VARCHAR2 DEFAULT 'DEFAULT_JOB_CLASS',
enabled IN BOOLEAN DEFAULT FALSE,
auto_drop IN BOOLEAN DEFAULT TRUE,
comments IN VARCHAR2 DEFAULT NULL);

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Debe indicarse la accin, planificacin y atributos del trabajo.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBMS_SCHEDULER.
PROCEDIMIENTO CREATE_JOB.

Administracin y Ajuste de Oracle 10g

DBMS_SCHEDULER.GENERATE_JOB_NAME
'JOB$_') RETURN VARCHAR2;

(prefijo

IN

VARCHAR2

DEFAULT

job_type
Tipo de trabajo creado. Algunos de los tipos soportados son:
a) 'PLSQL_BLOCK'. Bloque PL/SQL. En este caso no pueden indicarse
argumentos.
b) 'STORED_PROCEDURE'. Procedimiento almacenado o subprograma
C externo (slo procedimientos, no funciones con valor de retorno, son
soportados).

255

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

256

DBMS_SCHEDULER.
PROCEDIMIENTO CREATE_JOB.

DBMS_SCHEDULER.
PROCEDIMIENTO CREATE_JOB.

job_action
Para un bloque PL/SQL, la accin es es ejecutar un cdigo PL/SQL
code. Estos bloques deben acabar con un ; (my_proc(); o BEGIN
my_proc(); END; ...)
Para un procedimiento almacenado la accin es el nombre del mismo.

number_of_arguments. Nmero de argumentos para el trabajo (0-255,


por defecto 0).

queue_spec. Cola de eventos.

repeat_interval. Intervalo de ejecucin. Si no se indica el trabajo slo se


ejecuta una vez.

schedule_name. Nombre de la planificacin, window, o window group


asociada al trabajo.

end_date. Fecha tras la que el trabajo no se ejecutar ms (el STATE del


trabajo se asigna a COMPLETED, y se deshabilita). Si no se indica fecha, el
trabajo se repetir indefinidamente a menos que se alcance max_runs o
max_failures en cuyo caso el trabajo para.

program_name. Nombre del programa asociado altrabajo.

start_date. Fecha en que el trabajo arrancar. Si start_date y


repeat_interval son nulos, el trabajo se inicia tan pronto sea habilitado.

job_priority. Prioridad del trabajo entre los que integran la clase (de 1
-mxima- a 5 -mnima-, por defecto 3).

event_condition. Expresin de eventos.

comments. Comentarios.

Administracin y Ajuste de Oracle 10g

TRABAJOS

257

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

auto_drop. Si su valor es TRUE, el trabajo ser borrado tras ser


deshabilitado o completarse su ejecucin (cuando llega a su fecha final,
alcanza el nmero de ejecuciones indicadas por max_runs -fijadas con
SET_ATTRIBUTE- o slo debe ejecutarse una vez). Un trabajo se
deshabilita cuando falla las veces indicadas por max_failures times
(fijadas con SET_ATTRIBUTE).
Si el valor es FALSE, el trabajo no se borra hasta hacerlo
explcitamente con el procedimiento DROP_JOB.
Por defecto los trabajos se crean con auto_drop igual a TRUE.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

258

DBMS_SCHEDULER.
PROCEDIMIENTO CREATE_JOB.

enabled. Indica si el trabajo se crea habilitado o no (TRUE o FALSE). Por


defecto su valor es FALSE, por tanto el planificador lo ignora y no se enva
a ejecucin. Para ser ejecutado el argumento debe tener valor TRUE o ser
activado con el procedimiento ENABLE.

Administracin y Ajuste de Oracle 10g

TRABAJOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBMS_SCHEDULER.
PROCEDIMIENTO CREATE_JOB.

Administracin y Ajuste de Oracle 10g

TRABAJOS

259

Ejemplo:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (job_name => 'my_emp_job1',
job_type => 'PLSQL_BLOCK',
job_action => 'INSERT INTO sales VALUES( 7987, ''SALLY'',
''ANALYST'', NULL, NULL, NULL, NULL, NULL);',
start_date => '28-APR-03 07.00.00 PM Australia/Sydney',
repeat_interval => 'FREQ=DAILY;INTERVAL=2',
end_date => '20-NOV-04 07.00.00 PM Australia/Sydney',
comments => 'My new job');
END;
/

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

260

INTERVALO EJECUCION.

INTERVALO EJECUCION.

Est definido por el valor del atributo repeat_interval o por el de


la planificacin que referencia el trabajo. Si no se indica valor
para repeat_interval el trabajo slo se ejecuta una vez (indicada
en start date).
Puede indicarse de dos formas:
Mediante una expresin acorde a Scheduler Calendaring
Syntax (vase PL/SQL Packages and Types Reference para
una descripcin detallada). Por ejemplo:

TRABAJOS

c) Ejecucin el 10 de marzo.
FREQ=YEARLY; BYMONTH=MAR; BYMONTHDAY=10;
FREQ=YEARLY; BYDATE=0310;
d) Cada 10 dias.
FREQ=DAILY; INTERVAL=10;
e) Diariamente a las 4, 5 y 6 de la tarde.
FREQ=DAILY; BYHOUR=16,17,18;
f) Cada 50 horas.
FREQ=HOURLY; INTERVAL=50;

a) Ejecucin todos los viernes (los ejemplos son equivalentes).


FREQ=DAILY; BYDAY=FRI;
FREQ=WEEKLY; BYDAY=FRI;
FREQ=YEARLY; BYDAY=FRI;
Administracin y Ajuste de Oracle 10g

b) Ultimo da del mes.


FREQ=MONTHLY; BYMONTHDAY=-1;

g) Cada hora durante los tres primeros das del mes.


FREQ=HOURLY; BYMONTHDAY=1,2,3;

261

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

TRABAJOS

262

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBMS_SCHEDULER.
PROCEDIMIENTO SET _ATTRIBUTE.

INTERVALO EJECUCION.
Mediante una expresin PL/SQL . Por ejemplo:

Sintaxis:
DBMS_SCHEDULER.SET_ATTRIBUTE (
name IN VARCHAR2,
attribute IN VARCHAR2,
value IN [VARCHAR2, TIMESTAMP WITH TIMEZONE,
PLS_INTEGER, BOOLEAN, INTERVAL DAY TO SECOND],
<value2 IN VARCHAR2 DEFAULT NULL>);

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'scott.my_job2',
start_date => '15-JUL-04 01.00.00 AM Europe/Warsaw',
repeat_interval => 'SYSTIMESTAMP + INTERVAL '30' MINUTE',
end_date => '15-SEP-04 01.00.00 AM Europe/Warsaw',
comments => 'Comentarios');
END;
/

Name ... nombre del objeto.


Attribute ... atributo a modificar.
Value ... nuevo valor (no puede ser NULL). Para fijar un atributo a
NULL debe usarse el procedimiento SET_ATTRIBUTE_NULL.
Value2 ... Usado en atributos que pueden tener dos valores
asociados.

Supone la ejecucin por primera vez el 15 de julio y luego


cada 30 minutos hasta el 15 de septiembre.

Cualquier parmetro, excepto job_name, puede modificarse.


Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

263

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

264

DBMS_SCHEDULER.
PROCEDIMIENTO SET _ATTRIBUTE.

DBMS_SCHEDULER.
PROCEDIMIENTO SET _ATTRIBUTE.

Algunos de los valores que pueden modificarse son:

job_action
job_type

logging_level.
Indica
qu
informacin
se
guarda:
DBMS_SCHEDULER.LOGGING_OFF
-ninguna-,
DBMS_SCHEDULER.LOGGING_RUNS -informacin sobre ejecucionesy DBMS_SCHEDULER.LOGGING_FULL -informacin sobre creacin,
habilitacin, modificacin, ...-.

repeat_interval
start_date
end_date

restartable. Indica si un trabajo se rearranca en caso de fallo. Por


defecto su valor es FALSE.

comments

max_failures. Nmero de veces que un trabajo puede fallar


consecutivamente antes de ser deshabilitado (en este caso su STATE
es puesto a BROKEN). Por defecto NULL, nuevas instancias del trabajo
arrancan independientemente del nmero de fallos previos.

auto_drop. Indica si el trabajo debe ser borrado despus de completar


su ejecucin.

max_runs. Nmero mximo de ejecuciones consecutivas. Al


alcanzarlas, el trabajo se deshabilita y su estado pasa a ser
COMPLETED. Por defecto es NULL, con lo que el trabajo se repite
indefinidamente o hasta alcanzar end_date o max_failures.
Administracin y Ajuste de Oracle 10g

TRABAJOS

265

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

DBMS_SCHEDULER.
PROC. SET _ATTRIBUTE_NULL.

Sintaxis:

DBMS_SCHEDULER.SET_ATTRIBUTE_NULL (
name IN VARCHAR2,
attribute IN VARCHAR2);

DBMS_SCHEDULER.COPY_JOB (
old_job IN VARCHAR2,
new_job IN VARCHAR2);

Este procedimiento asigna el valor NULL a un atributo.

Copia todos los atributos de un trabajo existente a un nuevo trabajo, este


es creado deshabilitado -el estado del trabajo original no vara-.

Esta operacin requiere tener privilegios para crear un trabajo en el


esquema del nuevo trabajo (CREATE JOB para el propio esquema o
CREATE ANY JOB en otro caso). Si el trabajo original no est en el propio
esquema de usuario se necesita tambin privilegio ALTER en el mismo o
poseer el privilegio CREATE ANY JOB.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

266

DBMS_SCHEDULER.
PROCEDIMIENTO COPY.

Sintaxis:

Administracin y Ajuste de Oracle 10g

TRABAJOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

267

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

268

DBMS_SCHEDULER.
PROCEDIMIENTO ENABLE.

DBMS_SCHEDULER.
PROCEDIMIENTO DISABLE.
Sintaxis:

Sintaxis:

DBMS_SCHEDULER.DISABLE (
name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE);

DBMS_SCHEDULER.ENABLE (name IN VARCHAR2);

Permite activar un trabajo, programa, ... todos los cuales, por defecto,
son creados deshabilitados. A partir de la activacin el proceso
coordinador puede llevarlo a ejecucin.

Permite desactivar un trabajo, programa, ... puede indicarse en name


una lista de nombres separados por comas. Deshabilitar un objeto ya
deshabilitado no genera error.

Se llevan a cabo operaciones de validacin previas a la habilitacin. Si


fallan, no se habilita el objeto y se genera un error.

Se debe ser el propietario del objeto, tener privilegio ALTER en el mismo o


poseer el privilegio CREATE ANY JOB.

Se debe ser el propietario del objeto, tener privilegio ALTER en el mismo o


poseer el privilegio CREATE ANY JOB.

Cuando un trabajo se deshabilita su estado se modifica a disabled. Si


force es FALSE y el trabajo est ejecutndose se develve un error; si
force es TRUE, se deshabilita el trabajo pero se permite finalizar la
instancia del mismo que est ejecutndose.

Administracin y Ajuste de Oracle 10g

TRABAJOS

269

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

DBMS_SCHEDULER.
PROCEDIMIENTO RUN_JOB.

Sintaxis:

DBMS_SCHEDULER.RUN_JOB (
job_name IN VARCHAR2,
use_current_session IN BOOLEAN DEFAULT TRUE);

DBMS_SCHEDULER.STOP_JOB (
job_name IN VARCHAR2
force IN BOOLEAN DEFAULT FALSE);

Ejecuta un trabajo de forma inmediata. Usar RUN_JOB requiere bien


ser el propietario del trabajo, bien tener privilegio ALTER en dicho trabajo.
Tambin pueden ejecutarse trabajos con el privilegio CREATE ANY JOB.

Si use_current_session es TRUE, el trabajo se ejecuta en la sesion que


llama a RUN_JOB. Esta forma de ejecutarse no hace que se modifique los
contadores failure_count y run_count, el trabajo se reflejar en el
log del mismo.

Si use_current_session es FALSE: es preciso chequear el log para


obtener informacin sobre la ejecucin del trabajo; run_count,
last_start_date, last_run_duration y failure_count son actualizados y
RUN_JOB falla si hay un trabajo planificado ejecutndose.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

270

DBMS_SCHEDULER.
PROCEDIMIENTO STOP_JOB.

Sintaxis:

Administracin y Ajuste de Oracle 10g

TRABAJOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

271

Permite parar trabajos en ejecucin. Tras la parada de un trabajo, el


estado de este pasa a ser STOPPED si slo se ejecutaba una vez; mientras
que el de uno programado para repetirse mltiples veces pasa a ser
SCHEDULED o COMPLETED (en funcin de si la siguiente ejecucin estaba
planificada).

Si el argumento force de la llamada es FALSE, el planificador intenta


parar el trabajo ordenadamente y genera un error si falla en su intento. Si
su valor es TRUE, se interrumpe inmediatamente el proceso esclavo
(Oracle slo recomienda esta opcin si ha fallado la parada ordenada).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

272

DBMS_SCHEDULER.
PROCEDIMIENTO DROP_JOB.

VISTAS.

Sintaxis:
DBMS_SCHEDULER.DROP_JOB (
job_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE);

Permite borrar un trabajo (desaparece de cualquier vista, por tanto, y no


vuelve a ejecutarse).

Requiere ser el propietario del trabajo, tener el privilegio ALTER sobre el


mismo, o poseer el privilegio de sistema CREATE ANY JOB.

Si el argumento force es FALSE, y una instancia del trabajo est


ejecutndose se genera un error. Si su valor es TRUE, el planificador
intenta parar la instancia del trabajo y despus lo borra.

Administracin y Ajuste de Oracle 10g

TRABAJOS

273

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBA_SCHEDULER_JOB_ARGS. Argumentos de trabajos.

DBA_SCHEDULER_JOB_LOG. Cambios de estado de trabajos.

DBA_SCHEDULER_JOB_RUN_DETAILS.
ejecucin de trabajos.

DBA_SCHEDULER_JOBS. Informacin sobre trabajos en la bd.

DBA_SCHEDULER_RUNNING_JOBS. Trabajos en ejecucin.

DBA_SCHEDULER_SCHEDULES. Planificacin de trabajos.

SESSION_PRIVS. Privilegios de sistema actuales.

V$LOCK. Bloqueos mantenidos por el servidor.

V$SESSION. Informacin de sesiones actuales.

Detalles

Administracin y Ajuste de Oracle 10g

sobre

TRABAJOS

la

274

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 9.
AUDITORA.

TEMA 9.
AUDITORA.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

275

Auditora.

Tipos de auditora.

Registros de auditora. Audit trail.

Parmetro audit_trail.

Auditora de usuarios administradores.

Informacin audit trail de sistema operativo.

Auditora de sentencias. opciones.

Auditora de privilegios. Privilegios auditables.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

276

TEMA 9.
AUDITORA.

Auditora de esquema. Opciones.

Auditora y flashback.

AUDITORA.
Mediante la auditora se intenta monitorizar y registrar
acciones en la base de datos con el fin de :
Investigar actividades maliciosas (borrado de tablas, ..)

Auditora de grano fino. Paquete dbms_fga. Procedimientos.

Detectar privilegios incorrectamente otorgados a usuarios (que permiten


realizar acciones inapropiadas, las cuales son detectadas)

Desactivacin. Sentencia noaudit.

Recoger datos sobre actividades concretas (tablas que se actualizan,


usuarios concurrentes, )

Desactivacin de la auditora.

Detectar problemas con la implementacin de polticas de seguridad


(puntos dbiles que generan registros)

Control y proteccin del audit trail.

Auditora. Recomendaciones.

Vistas.

Puede ser ms o menos general, permitiendo auditar:


Ejecuciones de sentencias exitosas, fallidas o ambas.

Administracin y Ajuste de Oracle 10g

Ejecucin de sentencias por sesin o por lanzamiento de sentencia.


Usuarios concretos o todos los usuarios.
AUDITORIA

277

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

AUDITORIA

278

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TIPOS DE AUDITORA.

TIPOS DE AUDITORA.

Existen varios tipos:


- De sentencias. Seleccionando un tipo concreto de las
mismas, que afectan a una determinada clase de objetos
de base de datos (por ejemplo, AUDIT TABLE que audita
create table, alter table y drop table).

- De privilegios. Auditora de privilegios de sistema (por


ejemplo, AUDIT CREATE TABLE).
- De esquema. Sentencias especficas sobre objetos de un
esquema
concreto
(p.
ej.
AUDIT
SELECT
ON
<nombre_tabla>).

Si se habilitan opciones de auditora semejantes de sentencia


y de privilegio, slo se genera un registro; por ej. la auditora
de TABLE -sentencia- y CREATE TABLE -privilegio- slo genera
un registro al crear una tabla. La auditora de privilegios es
ms restringida que la de sentencias pues audita sentencias
especficas.

- De grano fino (fine grained). Acceso a datos concretos y


cambios en los mismos a nivel columna.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

279

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

280

REGISTROS DE AUDITORA.
AUDIT TRAIL.

La informacin de auditora se almacena en los registros de


auditora, que incluyen datos como:

REGISTROS DE AUDITORA.
AUDIT TRAIL.

Usuario. Identificador de sesin y terminal


Nombre del esquema accedido
Operacin y cdigo de operacin
Fecha y hora

En la auditora bsica (sentencias, privilegios, esquemas) los


registros se guardan en la tabla de diccionario de datos
SYS.AUD$ (db audit trail) o en ficheros de sistema operativo
(operating system audit trail). Est codificada y no es
legible. En el primer caso, existen diferentes vistas que
permiten
usar
la
informacin
almacenada
como
DBA_AUDIT_TRAIL.
En la auditora de grano fino, los registros se escriben en
DBA_FGA_AUDIT_TRAIL (tabla SYS.FGA_LOG$).

Administracin y Ajuste de Oracle 10g

AUDITORIA

281

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Cuando la auditora est habilitada se genera un registro durante la


fase de la ejecucin de la sentencia. La generacin e insercin de un
registro de auditora es independiente de como acabe la transaccin
del usuario; si esta es deshecha (rollback), el registro de auditora
permanece (commit).

Las opciones de auditora para sentencias y privilegios en vigor


cuando un usuario se conecta permanecen as durante la sesin
(auque se modifiquen o establezcan nuevas opciones, que slo
tendrn efecto en una nueva sesin). Por el contrario, cambios en las
opciones sobre esquema se aplican inmediatamente para la sesin
en curso.

Administracin y Ajuste de Oracle 10g

AUDITORIA

282

REGISTROS DE AUDITORA.
AUDIT TRAIL.

La auditora de grano fino se aplica a objetos individuales y, por tanto,


no se ve afectada por la auditora bsica que est habilitada o no para
la bd al completo.

El audit trail no almacena informacin sobre los valores de los datos


que pudieran estar involucrados en una determinada sentencia que
est siendo auditada. Por ejemplo, los valores actuales y anteriores de
una fila modificada no se guardan al auditar la sentencia UPDATE
(puede hacerse usando disparadores de base de datos, triggers).
CREATE TRIGGER audit_emp_salaries
AFTER INSERT OR DELETE OR UPDATE ON employee_salaries
for each row
begin
if (:new.salary> :old.salary * 1.10) then insert into emp_salary_audit
values (:employee_no,:old.salary,:new.salary,user,sysdate);
endif;
end;

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

El registro de informacin puede estar habilitado o deshabilitado.


Aquellos usuarios autorizados de la base de datos pueden determinar
las opciones de auditora, pero el decidir si se graba o no informacin
pertenece al administrador.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

REGISTROS DE AUDITORA.
AUDIT TRAIL.

Administracin y Ajuste de Oracle 10g

AUDITORIA

283

Independientemente de si la auditora esta habilitada o


no, siempre se registran algunos tipos de acciones que
son escritos a ficheros de sistema operativo (ficheros en
$ORACLE_HOME/rdbms/audit):
Startup de la instancia. Se almacena el usuario de
sistema operativo que lo hace, el identificador de terminal
del usuario, fecha y hora. El audit trail de bd no est
disponible hasta que se ha arrancado satisfactoriamente
esta.
Shutdown de la instancia. Almacena el usuario de
sistema operativo, el identificador de terminal del usuario
y fecha y hora.
Conexiones a
administrador.

la

base

de

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

datos

con

AUDITORIA

privilegios

de
284

AUDITORA.
PARAMETRO AUDIT_TRAIL.

AUDITORIA DE USUARIOS
ADMINISTRADORES.

Para comenzar a auditar debe asignarse al parmetro de


inicializacin, esttico, AUDIT_TRAIL el valor DB (auditora en base de
datos excepto para los valores que siempre se escriben a s.o.). El
valor NONE, valor por defecto, deshabilita la auditora.

El valor OS indica que la auditora debe llevarse


El parmetro AUDIT_FILE_DEST seala donde se
as como los registros de auditora para
$ORACLE_BASE/$DB_UNIQUE_NAME/adump y,
$ORACLE_HOME/rdbms/audit).

a sistema operativo.
guardan los ficheros,
SYS (por defecto
en segundo lugar,

El valor XML indica que los registros se escriben como ficheros xml en
el s.o.. Pueden consultarse mediante la vista V$XML_AUDIT_TRAIL.

Para auditar una sentencia SQL o privilegio debe poseerse el privilegio


de sistema AUDIT SYSTEM. Para auditar operaciones sobre un
objeto, debe pertenecer al esquema o tener privilegio AUDIT ANY.

Habilitar la auditora de grano fino o la del SYS no precisa indicar


valor para AUDIT_TRAIL.

Administracin y Ajuste de Oracle 10g

AUDITORIA

285

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Si su valor es FALSE, valor por defecto, no son


auditadas (AUDIT_SYS_OPERATIONS=FALSE).

Administracin y Ajuste de Oracle 10g

AUDITORIA

286

INFORMACION AUDIT TRAIL DE


SISTEMA OPERATIVO.

El almacenamiento de la auditora en base de datos tiene


diferentes ventajas:
Pueden usarse ciertas vistas predefinidas, existentes en el
diccionario de base de datos, para consultar de forma sencilla el
audit trail (como dba_audit_trail).
Pueden usarse herramientas Oracle de generacin de informes,
como Oracle Reports.
Evita la ejecucin de eventos si el audit trail no puede grabar los
registros que se generan.

Por otra parte, la auditora en sistema operativo podra ayudar


a examinar la actividad global del sistema con mayor facilidad;
al estar todos los registros de auditora (de Oracle y de otras
herramientas) en un mismo lugar. Tambin podra ser ms
seguro al requerir permisos concretos para acceder a los
ficheros.
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Si su valor es TRUE (AUDIT_SYS_OPERATIONS=TRUE),


se auditan dichas operaciones.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORA BD vs SO.

Administracin y Ajuste de Oracle 10g

El parmetro de inicializacin AUDIT_SYS_OPERATIONS


- esttico- permite especificar la auditora de aquellas
sesiones de usuarios conectados como SYS (privilegio
SYSDBA). Los registros generados son escritos en el
audit trail de sistema operativo, no depende del valor
del parmetro AUDIT_TRAIL.

AUDITORIA

287

Los registros de auditora escritos a ficheros de sistema


operativo contienen informacin codificada que incluye
los campos:
Cdigo de operacin (action code). Debe consultarse la
tabla AUDIT_ACTIONS, esta muestra la descripcin de los
cdigos de operacin.
Privilegios. Privilegios de sistema usados para realizar la
accin. Consultar la tabla SYSTEM_PRIVILEGE_MAP.
Terminacin (completion code). Describe el resultado; si
hubo xito se devuelve un valor cero, en caso contrario un
cdigo de error.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

288

AUDITORA DE SENTENCIAS.

AUDITORA DE SENTENCIAS.

Sintaxis:

La clusula BY ACCESS indica que se desea un registro


para cada sentencia SQL y operacin auditadas. Si se
auditan sentencias de definicin de datos del lenguaje
(DDL) siempre se audita por acceso.

AUDIT <sentencia1, sentencian>/ALL


BY <usuario1, usuarion>
BY SESSION/ACCESS
WHENEVER SUCESSFUL/NOT SUCCESSFUL;

La clusula WHENEVER SUCESSFUL, permite auditar


slo sentencias SQL y operaciones que surten efecto.

La clusula BY <usuario> permite restringir la auditora


slo a aquellas sentencias ejecutadas por los usuarios
indicados.

La clusula WHENEVER NOT SUCESSFUL, permite


auditar slo sentencias SQL y operaciones que fallan o
generan errores.

La clusula BY SESSION, clausula por defecto, indica


que se desea un slo registro para todas las sentencias
SQL y operaciones del mismo tipo ejecutadas en la
misma sesin.
Administracin y Ajuste de Oracle 10g

AUDITORIA

Si se omiten las dos opciones anteriores, se realiza la


auditora independientemente del xito o fallo de la
sentencia.
289

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Opcion

Nota general: Para cualquier tipo de auditora (sentencia,


privilegio o sistema), si se opta por auditar NOT
SUCCESSFUL se generan registros slo si el fallo se produce
por alguna razn relacionada con la opcin auditada. Por
ejemplo, no se produce registro si una sentencia falla por no
tener cuota estando auditando CREATE TABLE.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

290

AUDITORA DE SENTENCIAS.
OPCIONES.

Nota general: Si se configura la auditora por s.o., la clusula


BY SESSION equivale a BY ACCESS. Se genera un registro
cada vez que se realiza un acceso.

Administracin y Ajuste de Oracle 10g

AUDITORIA

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORA DE SENTENCIAS.

Administracin y Ajuste de Oracle 10g

AUDITORIA

291

Sentencias SQL auditadas.

Database link

Create database link / drop database link

Index

Create / alter / analyze /drop index

Not exists

Todas las sentencias SQL que fallan por no


existir un determinado objeto

Procedure

Create function / create package / create


package body / create procedure / drop
function / drop package / drop procedure

Public database
link

Create public database link / drop public


database link

Public synonym

Create public synonym / Drop public


synonym

Role

Create role / alter role / drop role / set role

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

292

AUDITORA DE SENTENCIAS.
OPCIONES.
Opcin

AUDITORA DE SENTENCIAS.
OPCIONES.

Sentencias SQL auditadas.

Opcin

Rollback Statement Create rollback segment/ alter rollback


segment / drop rollback segment
Sequence

Create sequence / drop sequence

Session

Conexiones

Synonym

Create synonym / drop synonym

System audit

Audit sentencias_sql / Noaudit


sentencias_sql

- valor por defecto y nico BY SESSION -

System grant

Grant y revoke privilegios_sistema y roles

Table

Create table / drop table / truncate table

Tablespace

Create tablespace / drop tablespace / alter


tablespace

Administracin y Ajuste de Oracle 10g

AUDITORIA

293

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Trigger

Create trigger / drop trigger /alter trigger

User

Create user / alter user /drop user

View

Create view /drop view

Alter table

Alter table

Delete table

Delete from <tabla>, <vista>

Grant procedure

Grant / revoke <privilegio> on


<procedimiento, funcion, paquete>

Grant sequence

Grant / revoke <privilegio> on <secuencia>

Grant table

Grant / revoke <privilegio> on <tabla,


vista, vista materializada>

Administracin y Ajuste de Oracle 10g

AUDITORIA

294

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORA DE SENTENCIAS.
OPCIONES.
Opcin

Sentencias SQL auditadas.

AUDITORA DE PRIVILEGIOS.

Sentencias SQL auditadas.

Insert table

Insert into <tabla, vista>

Lock table

Lock table <tabla, vista>

Select sequence

Cualquier sentencia que contenga


sequence.CURRVAL o sequence.NEXTVAL

Select table

Select from <tabla, vista, vista


materializada>

Update table

Update <tabla, vista>

Sintaxis:
AUDIT <priv_sistema1, priv_sisteman>
/ALL PRIVILEGES
BY <usuario1, usuarion>
BY SESSION/ACCESS
WHENEVER SUCESSFUL/NOT SUCCESSFUL;

La clusula ALL PRIVILEGES, indica que debe auditarse


todo privilegio de sistema.
Toda la auditora de privilegios sobre sentencias DDL se
hace por acceso. Por defecto es por sesin.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

295

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

296

PRIVILEGIOS AUDITABLES.

PRIVILEGIOS AUDITABLES.

ALTER DATABASE
ALTER SYSTEM
AUDIT SYSTEM

CREATE PROFILE
ALTER PROFILE
DROP PROFILE

CREATE DATABASE LINK


CREATE PUBLIC DATABASE LINK
DROP PUBLIC DATABASE LINK

CREATE ROLE
ALTER ANY ROLE
DROP ANY ROLE

CREATE PROCEDURE
CREATE ANY PROCEDURE
ALTER ANY PROCEDURE
DROP ANY PROCEDURE
EXECUTE ANY PROCEDURE

CREATE ROLLBACK SEGMENT


ALTER ROLLBACK SEGMENT
DROP ROLLBACK SEGMENT

CREATE ANY TABLE / ANY INDEX


ALTER ANY TABLE / ANY INDEX
DELETE ANY TABLE
DROP ANY TABLE / ANY INDEX
INSERT ANY TABLE
UPDATE ANY TABLE
SELECT ANY TABLE

CREATE USER
ALTER USER
DROP USER
CREATE VIEW
CREATE ANY VIEW
DROP ANY VIEW
ANALYZE ANY
AUDIT ANY
COMMENT ANY TABLE

CREATE SESSION
ALTER SESSION

Administracin y Ajuste de Oracle 10g

AUDITORIA

297

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

AUDITORIA

298

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORA DE ESQUEMA.

AUDITORA DE ESQUEMA.

Sintaxis:

Puede auditarse todas las sentencias SELECT y DML


permitidas por los privilegios de objetos.

AUDIT <clausula_objeto1, clausula_objeton>/ALL


ON <esquema>.objeto_auditado/DEFAULT
BY SESSION/ACCESS
WHENEVER SUCESSFUL/NOT SUCCESSFUL;

No pueden auditarse procedimientos


paquetes, aunque s procedimientos
individuales y tambin paquetes.

incluidos en
y funciones

Si se habilita afecta a todos los usuarios de la bd.

La clusula ALL indica todas las opciones posibles sobre


un tipo de objeto concreto.
Mediante la clusula ON DEFAULT se establece por
defecto las opciones indicadas para todo objeto creado
con posterioridad. Al establecerlas permanecen aquellas
definidas por defecto para objetos creados previamente
(pueden cambiarse indicando explcitamente el objeto).
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

299

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

300

AUDITORA DE ESQUEMA.
OPCIONES.

AUDITORA Y FLASHBACK.

Tablas.
Alter / audit / comment / delete / grant / index / insert / lock
rename / select /update / flashback (slo a consultas flashback)

Para usar las prestaciones flashback, la bd debe estar en


modo automtico de undo.

La
vista
FLASHBACK_TRANSACTION_QUERY
muestra
informacin acerca de las transacciones realizadas en la bd. Si
se han modificado datos en una tabla, la vista muestra
informacin sobre los mismos y seala la sentencia precisa
(campo UNDO_SQL) que permite deshacerlos.

Flashback Version Query hace posible ver todos los cambios


producidos en una fila de una tabla en un periodo de tiempo
concreto. FVQ permite aadir una clusula VERSIONS a la
sentencia SELECT que indique un rango SCN o temporal en el
que se desea consultar las modificaciones. La sentencia
tambin puede devolver informacin sobre la transaccin
responsable del cambio (VERSIONS_XID).

Vistas.
Audit / comment / delete / grant / insert / lock
rename / select /update / flashback (slo a consultas flashback)

Secuencias.
Alter / audit / grant / select

Procedimientos.
Audit / execute / grant / rename

Vistas materializadas.
Alter / audit / comment / delete / index / insert / lock / select /update

Administracin y Ajuste de Oracle 10g

AUDITORIA

301

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Para ejecutar flashback query es necesario el privilegio


SELECT sobre los objetos, adems bien el privilegio
FLASHBACK sobre los objetos, bien FLASHBACK ANY TABLE
(permite ejecutarla sobre cualquier tabla, vista o vista
materializada en cualquier esquema).

Puede recuperarse
pseudocolumnas :

travs

de

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

Clausula FLASHBACK:

AS OF pemite recuperar la version de las filas a un momento


en el tiempo o SCN particular.

VERSIONS permite recuperar mltiples versiones validades


de las filas entre dos SCN o momentos en el tiempo.
MINVALUE y MAXVALUE se refieren a los datos ms antiguo y
ms reciente respectivamente.

distintas

VERSIONS_STARTTIME. Fecha de la primera versin de las filas devueltas


por la consulta.
VERSIONS_STARTSCN. Idem para SCN.
VERSIONS_ENDTIME. Fecha de la ltima versin de las filas devueltas por
la consulta.
VERSIONS_ENDSCN. Idem para SCN
VERSIONS_XID. Transaccin que gener la versin.
VERSIONS_OPERATION. Operacin que di lugar a la versin (I -insert-, U
-update- o D -delete-).

Administracin y Ajuste de Oracle 10g

302

AUDITORA Y FLASHBACK.

AUDITORIA

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORA Y FLASHBACK.

informacin

Administracin y Ajuste de Oracle 10g

303

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

304

AUDITORA Y RECUPERACION DE TABLAS.


FLASHBACK TABLE.

AUDITORA DE GRANO FINO.

Es posible restaurar una tabla a un estado anterior a aquel


donde tuvieron lugar una serie de cambios mediante la
sentencia FLASHBACK TABLE.

Para llevarla a cabo NO es preciso habilitar la auditoria bsica


(audit trail).

Permite monitorizar accesos a datos basndose en su


contenido y auditar sentencias SELECT y DML en tablas y
vistas mediante la creacin de una poltica de auditora al
efecto.

Se usa el paquete DBMS_FGA y sus procedimientos asociados,


generndose apuntes en el audit trail de grano fino
(SYS.FGA_LOG$,
accesible
a
travs
de
la
vista
DBA_FGA_AUDIT_TRAIL).

Este tipo de auditora permite indicar columnas singulares,


relevantes, que precisan ser auditadas (por ejemplo: dni,
ayudas sociales, datos de salud, ...) -caso de no hacerlo se
aplica a todas las columnas-; as como establecer acciones a
llevar a cabo si se produce el acceso conforme a la poltica de
auditora implementada.

Nota: Esta posibilidad ser analizada en relacion a los


mecanismos de copias de seguridad.

Administracin y Ajuste de Oracle 10g

AUDITORIA

305

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

306

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORA DE GRANO FINO.

Administracin y Ajuste de Oracle 10g

AUDITORA DE GRANO FINO.

Proporciona las siguientes funcionalidades:


Usar polticas diferenciadas para INSERT, UPDATE,
DELETE, y SELECT; y poder tener varias de ellas asociadas
a cada tabla.

En el ejemplo se auditan las sentencias INSERT, UPDATE, DELETE, y


SELECT en la tabla hr.emp, controlando cualquier acceso a la
columna salary de empleados pertenecientes al departamento
sales:
DBMS_FGA.ADD_POLICY(
object_schema => 'hr',
object_name => 'emp',
policy_name => 'chk_hr_emp',
audit_condition => 'dept = ''SALES'' ',
audit_column => 'salary'
statement_types => 'insert,update,delete,select');

Activar la auditoria slo cuando es necesaria (por ejemplo,


con informacin crtica como el salario o datos de salud) y
slo si es referenciada una columna concreta.

Cualquiera de las sentencias siguientes genera un registro:


SELECT count(*) FROM hr.emp WHERE dept = 'SALES' and salary > 10000000;
SELECT salary FROM hr.emp WHERE dept = 'SALES';
DELETE from hr.emp where salary >1000000;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

307

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

308

PAQUETE DBMS_FGA.
PROCEDIMIENTO ADD_POLICY.

PAQUETE DBMS_FGA.
PROCEDIMIENTO ADD_POLICY.

Procedimiento ADD_POLICY.
Permite crear una poltica de auditora (hasta un mximo de 256
sobre una tabla o vista).
DBMS_FGA.ADD_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2,
audit_condition VARCHAR2,
audit_column VARCHAR2,
handler_schema VARCHAR2,
handler_module VARCHAR2,
enable BOOLEAN,
statement_types VARCHAR2,
audit_trail BINARY_INTEGER IN DEFAULT,
audit_column_opts BINARY_INTEGER IN DEFAULT);

Administracin y Ajuste de Oracle 10g

AUDITORIA

309

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

310

PAQUETE DBMS_FGA.
PROCEDIMIENTO DISABLE_POLICY.

Ejemplo.

DBMS_FGA.ADD_POLICY(object_schema => 'scott', object_name=>'emp',


policy_name => 'mypolicy1', audit_condition => 'sal < 100', audit_column
=>'comm, credit_card, expirn_date', handler_schema => NULL,
handler_module => NULL, enable => TRUE, statement_types=> 'INSERT,
UPDATE', audit_trail => DBMS_FGA.DB+DBMS_FGA.EXTENDED,
audit_column_opts => DBMS_FGA.ALL_COLUMNS);

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PAQUETE DBMS_FGA.
PROCEDIMIENTO ADD_POLICY.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

AUDITORIA

311

Procedimiento DISABLE_POLICY.
Deshabilita una poltica de auditora.
DBMS_FGA.DISABLE_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2 );

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

312

PAQUETE DBMS_FGA.
PROCEDIMIENTO ENABLE_POLICY.

PAQUETE DBMS_FGA.
PROCEDIMIENTO DROP_POLICY.

Procedimiento ENABLE_POLICY.

Habilita una poltica de auditora.

Borra una poltica de auditora.

DBMS_FGA.ENABLE_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2
enable BOOLEAN);

Administracin y Ajuste de Oracle 10g

DBMS_FGA.DROP_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2);

AUDITORIA

313

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

314

DESACTIVACIN.
SENTENCIA NOAUDIT.

Para desactivar la auditora de una sentencia es


necesario poseer el privilegio de sistema AUDIT
SYSTEM.

Sintaxis:
NOAUDIT <sentencia1, sentencian>/ALL
BY <usuario1, usuarion>
WHENEVER SUCESSFUL/NOT SUCCESSFUL;

Para detener la auditora sobre un objeto, debe


pertenecer al esquema o tener el privilegio AUDIT
ANY.

NOAUDIT <priv_sistema1, priv_sisteman>


/ALL PRIVILEGES
BY <usuario1, usuarion>
WHENEVER SUCESSFUL/NOT SUCCESSFUL;

La sintaxis de NOAUDIT es igual a la de AUDIT (para


cada sentencia de auditora es necesaria una sentencia
NOAUDIT que la deshabilite).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DESACTIVACIN.
SENTENCIA NOAUDIT.

Administracin y Ajuste de Oracle 10g

Procedimiento DROP_POLICY.

AUDITORIA

NOAUDIT <clausula_objeto1, clausula_objeton>/ALL


ON <esquema>.objeto_auditado/DEFAULT
WHENEVER SUCESSFUL/NOT SUCCESSFUL;
315

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

316

DESACTIVACIN
DE LA AUDITORA.

CONTROL DEL AUDIT TRAIL.

Mediante la sentencia NOAUDIT slo se desactivan


opciones de auditora bsica. Para deshabilitar la
auditora bsica debe modificarse el parmetro de
inicializacin AUDIT_TRAIL.

Si el audit trail se llena de forma que no pueden


insertarse ms registros, las sentencias auditadas no
pueden ejecutarse correctamente hasta que se vaca, y
se generan errores (por ejemplo, si se est auditando
CREATE SESSION no se podrn conectar usuarios a la
bd).
El tamao mximo de SYS.AUD$ depende de los
parmetros de almacenamiento, default storage, del
espacio SYSTEM. Pueden modificarse los parmetros
para SYS.AUD$.

Administracin y Ajuste de Oracle 10g

AUDITORIA

317

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Despus del borrado de registros, las extensiones


adquiridas para esta tabla permanecen. Este espacio
puede reducirse:

- DELETE FROM SYS.AUD$;

SYS.AUD$

318

CONTROL DEL AUDIT TRAIL.

La gestin del audit trail, el nico objeto de SYS


directamente modificable, es similar a la de otra tabla;
pueden borrarse registros con la sentencia DELETE:

- DELETE
FROM
<nombre_objeto>;

AUDITORIA

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CONTROL DEL AUDIT TRAIL.

Administracin y Ajuste de Oracle 10g

- Copiar el audit trail a otra tabla o exportarlo


WHERE

OBJ$NAME=

- Conectarse como usuario administrador y truncar


SYS.AUD$ (sentencia TRUNCATE).

Slo el usuario SYS, un usuario al que se haya concedido el


privilegio DELETE sobre SYS.AUD$, o un usuario con el
privilegio DELETE ANY TABLE pueden efectuar el borrado.

- Cargar los datos anteriormente


interese mantener accesibles.

salvados

que

La informacin del audit trail puede archivarse copindola a


una tabla (INSERT INTO <tabla> SELECT ... FROM SYS.AUD$)
o ser exportada.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

319

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

320

AUDITORA.
RECOMENDACIONES.

PROTECCIN DEL AUDIT TRAIL.


Debe protegerse de borrados no autorizados:

Es necesario seguir una serie de reglas a la hora de


auditar la actividad de la base de datos:

- Otorgar el privilegio DELETE ANY TABLE solo a usuarios


administradores.
- Auditar cualquier cambio que se realice en el audit trail
mediante la sentencia

- Limitar el numero de acciones auditadas y el tiempo


durante el que se har. As disminuye el impacto de la
auditora sobre las sentencias supervisadas y se limita el
tamao del audit trail (qu debo o quiero auditar?).

AUDIT SELECT, INSERT, UPDATE, DELETE ON SYS.AUD$ BY


ACCESS;

- Evaluar el propsito y planear una estrategia (para qu y


por qu audito?, qu actividad maliciosa he detectado?).
- Si se audita debido a la sospecha de alguna accin
maliciosa; debe comenzarse por auditar acciones de tipo
general para, una vez analizada la informacin, pasar a
auditar acciones mas concretas.

Administracin y Ajuste de Oracle 10g

AUDITORIA

321

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

322

AUDITORA. VISTAS.

- Proteger el audit trail, de forma que la infomacion de


auditora no pueda ser aadida, modificada o borrada sin
ser registrada la operacin.
- Controlar de forma estricta quien tiene derecho a auditar.
- En caso de que se desee recoger informacin histrica
sobre determinadas operaciones debe auditarse slo
aquellas acciones que sean pertinentes; y preocuparse de
guardar los registros de auditora de inters y eliminar
peridicamente del audit trail esta informacion.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORA.
RECOMENDACIONES.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

AUDITORIA

323

AUDIT_ACTIONS. Descripciones para los cdigos de tipos de


accin.

ALL_DEF_AUDIT_OPTS. Opciones por defecto de auditora de


objetos que sern aplicadas al crearlos.

DBA_AUDIT_EXISTS.
EXISTS.

DBA_AUDIT_OBJECT. Registros para todos los objetos en el


sistema.

DBA_AUDIT_SESSION.
desconexiones.

DBA_AUDIT_STATEMENT. Registros para las sentencias GRANT,


REVOKE, AUDIT, NOAUDIT, y ALTER SYSTEM.

DBA_AUDIT_TRAIL. Registros de audit trail.

Registros

Registros

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

producidos

relativos

AUDITORIA

por

AUDIT

NOT

conexiones

324

AUDITORA. VISTAS.

AUDITORA. VISTAS.

DBA_OBJ_AUDIT_OPTS. Opciones de auditora para todos los


objetos.

DBA_COMMON_AUDIT_TRAIL. Incluye registros de auditora


bsica y de grano fino, as como el contenido de
V$XML_AUDIT_TRAIL

DBA_FGA_AUDIT_TRAIL. Registros de auditora grano fino.

DBA_AUDIT_POLICIES. Polticas de auditora de grano fino en el


sistema.

DBA_PRIV_AUDIT_OPTS. Privilegios de sistema auditados.

DBA_STMT_AUDIT_OPTS. Opciones de auditora por sentencia.

FLASBACK_TRANSACTION_QUERY.
transacciones y operaciones realizadas.

Administracin y Ajuste de Oracle 10g

Informacin

AUDITORIA

STMT_AUDIT_OPTION_MAP. Informacin cdigos de auditora.

sobre

325

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

AUDITORIA

326

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 10.
COPIAS DE SEGURIDAD.

TEMA 10.
COPIAS DE SEGURIDAD.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

327

MODOS DE OPERACION DE LA BD.

COPIAS DE SEGURIDAD.

COPIA FISICA.

OPTIMAL FLEXIBLE ARCHITECTURE. O.F.A. Y UNIX.

COPIA FISICA. SISTEMAS DE FICHEROS.

COPIA FISICA. TAR (UNIX) Y RECOVERY MANAGER.

RECUPERACION DE TABLAS. FLASHBACK TABLE.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

328

TEMA 10.
COPIAS DE SEGURIDAD.

TEMA 10.
COPIAS DE SEGURIDAD.

DATA PUMP EXPORT. PARAMETROS. MODO INTERACTIVO.

DATA PUMP IMPORT. PARAMETROS.

DATA PUMP IMPORT. PARAMETROS. MODO INTERACTIVO.

DATA PUMP Y PARAMETROS.

COPIA LOGICA. UTILIDADES EXPORT/IMPORT.

DATA PUMP. VENTAJAS. EJECUCION. INFORMACION.


FICHEROS.

EXPORT/IMPORT vs. DATA PUMP

DATA PUMP EXPORT. PARAMETROS.

UTILIDAD EXPORT. EXPORT MODO DIRECTO. CASOS


PRACTICOS.

RECUPERACION DE TABLAS. RECYCLE BIN.

RECUPERACION DE TABLAS. PURGE. FLASHBACK TO


BEFORE DROP.

COPIA LOGICA. DATA PUMP EXPORT/IMPORT.


ARQUITECTURA DATA PUMP.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

329

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

330

MODOS DE OPERACION DE LA BD.

UTILIDAD IMPORT. CASOS PRACTICOS.

RENOMBRAR ESP. DE ALMACENAMIENTO.

SQL*LOADER. CARGA DE DATOS. FICHEROS DATOS Y


CONTROL.

SQL*LOADER. EJEMPLOS. EJECUCION.

VISTAS.

APENDICE A. RECURSOS ORACLE.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 10.
COPIAS DE SEGURIDAD.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Existen dos modos de operacin de la bd:

Modo NOARCHIVELOG.
El archivado de los redo log est deshabilitado. Cuando
un grupo de redo pasa a estar inactivo tras un log
switch, est disponible para ser nuevamente usado por el
LGWR.
Este modo protege a la bd de fallos en la instancia pero no
de fallos en los soportes (media failure). Slo los
cambios recientes en la bd, almacenados en el redo en
lnea pueden recuperarse; si ocurre un fallo en disco, la bd
slo puede recuperarse hasta el momento en que se
realiz la copia ms reciente.
Para la recuperacin slo pueden emplearse copias
completas y coherentes realizadas con la bd cerrada
consistentemente.

331

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

332

MODOS DE OPERACION DE LA BD.

COPIAS DE SEGURIDAD.

Modo ARCHIVELOG.

Copias de seguridad fsicas. Se realiza la copia de los


ficheros que constituyen la base de datos. Se distinguen
copias de seguridad en lnea (en caliente) y fuera de lnea
(en frio).
Se pueden hacer manualmente (comando tar de s.o.) o
mediante la utilidad RMAN (recovery manager) de Oracle.

El archivado de los redo log est habilitado. Un grupo de


redo no puede reutilizarse por LGWR hasta ser archivado
tras el log switch.
Se garantiza que todas las transacciones validadas pueden
recuperarse en caso de fallo en el sistema o disco. Adems
pueden emplearse copias realizadas con la bd abierta y en
uso normal.

Copias de seguridad lgicas. Implican la lectura de un


conjunto de registros de base de datos y su escritura en un
fichero especial.
Se emplean utilidades propias de la base de datos:
export/import y data pump export/import.

Nota: durante este tema se asume que la base de datos est en


modo noarchivelog.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Pueden distinguirsen dos tipos de copias:

333

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

334

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD.

Las copias de seguridad lgicas se emplean para:


Transferir objetos de datos entre bases de datos Oracle
(independientemente de la plataformas en que residan).
Proporcionar copia de seguridad lgica para objetos de la
base de datos, un espacio de almacenamiento o la base de
datos al completo.
Migracin entre versiones de base de datos (Peligro!).

COPIA FISICA

Una buena estrategia de copias de seguridad incluir ambos


tipos de copias, fsicas y lgicas, pues son complementarias.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

335

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

336

OPTIMAL FLEXIBLE
ARCHITECTURE (O.F.A.).

COPIA FISICA.

Realizar una copia fsica implica copiar los sistemas de


ficheros asociados a la base de datos y aquellos donde se ha
instalado la misma.

Oracle
recomienda
usar
la
Optimal
Flexible
Architecture (O.F.A.) en las instalaciones de base de
datos.

La copia de los ficheros de base de datos se realiza de


forma diaria.

O.F.A. tiene los siguientes beneficios:

La copia del software de base de datos se realiza con


frecuencia semanal, dado su menor nivel de actualizacin.

Organiza grandes cantidades de software y datos en


disco evitando cuellos de botella y bajas productividades.

Dado que se asume que la base de datos est en modo


noarchivelog, slo es posible realizar copias en frio de la
misma. Por tanto, previamente a la copia fsica se efectuar
una parada de la base de datos, de forma que su contenido
sea ntegro y coherente.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Facilita las tareas administrativas rutinarias.


Gestiona
de
forma
adecuada
administracin de la base de datos.

337

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

338

O.F.A. EN ENTORNOS UNIX.

Por defecto /u01/app/oracle


Por defecto
/u01/app/oracle/product/<v_bd
>

$ORACLE_HOME

crecimiento

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

O.F.A. EN ENTORNOS UNIX.

$ORACLE_BASE

Administracin y Ajuste de Oracle 10g

el

Por defecto
/u01/app/oracle

$ORACLE_BASE
admin
/<nombre_BD>

Nombre base datos.

/bin

Binarios.

/network

Ficheros NET.
Comunicaciones.

adhoc

Scripts SQL Ad hoc.

/dbs

Enlaces a donde residen los


ficheros de inicializacin.

arch

Fich. archivados de
redo log.

/rdbms

Ficheros de servidor y
libreras bd requeridas.

bdump

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

339

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Fich.de traza procesos


background.

COPIAS DE SEGURIDAD

340

COPIA FISICA.
SISTEMAS DE FICHEROS.

O.F.A. EN ENTORNOS UNIX.

Los sistemas de ficheros a copiar diariamente son:

Por defecto
/u01/app/oracle

$ORACLE_BASE

- Sistemas de ficheros de administracin de la bd, bajo


$ORACLE_BASE/admin. Incluir la copia del fichero de
parmetros de inicializacin init.ora y del fichero de
parmetros spfile en su caso.

admin
/<nombre_BD>

Administracin y Ajuste de Oracle 10g

Nombre base datos.

- Sistemas de ficheros asociados a la base de datos.


Aquellos de la forma /uxx/oradata/<nombre_bd>;
contendrn los ficheros de datos (.dbf), de control (.ctl) y
de redo log (.log) de la base de datos.

cdump

Ficheros core dump.

create

Progr. creacin bd.

exp

Fich. Export bd.

pfile

init.ora

- Sistemas de ficheros asociados a la exportacin de base de


datos (en caso de que se haya optado por realizarla). En
nuestra bd de la forma /export/<nombre_bd>.

udump

Fich. traza usuario.

- Sistema de ficheros /etc.

COPIAS DE SEGURIDAD

341

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

342

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIA FISICA.
SISTEMAS DE FICHEROS.

COPIA FISICA. COMANDO TAR (UNIX).


La copia se realizar tras:

Los sistemas de ficheros a copiar semanalmente son:

Haber hecho la exportacin correspondiente de la base de


datos.

- Sistemas de ficheros que integran la estructura O.F.A.


Bajo $ORACLE_BASE (/u01/app/oracle).

Haber cerrado cualquier comunicacin con la base de datos


(proceso listener).

- Todos los sistemas de ficheros que integran la copia diaria


de la base de datos.

Cerrar la base de datos (shutdown).

Se usar la sentencia TAR de sistema operativo: Copia


los sistemas de ficheros indicados a un dispositivo fsico.
El proceso debe ser automatizado y el cese de actividad
de la base de datos afectar lo menos posible al servicio.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

343

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

344

COPIA FISICA. RECOVERY MANAGER.

Es una utilidad que permite realizar copias y recuperaciones


en la bd y automatiza la administracin de las mismas. El
entorno para RMAN incluye:
Bd a copiar.
Cliente RMAN. Permite ejecutar sentencias RMAN.
Flash recovery area (opcional). Localizacin en disco en
que la bd puede almacenar y gestionar ficheros de copia y
recuperacin.

FLASHBACK

Media management software (opcional). SW necesario


para que RMAN interacte con dispositivos de copia como
unidades de cinta y otros.
BD recovery catalog (opcional). Esquema de bd
empleado para registrar la actividad de RMAN en una o
ms bbdd destino.
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

345

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

346

RECUPERACION DE TABLAS.
FLASHBACK TABLE.

Es posible restaurar una tabla a un estado anterior a aquel


donde tuvieron lugar cambios, usando el espacio de undo,
mediante la sentencia FLASHBACK TABLE. Se proporciona as
una forma rpida de recuperar una tabla modificada o
borrada, y se evita recurrir a mtodos complejos.

Caractersticas:

Durante la recuperacin se adquiere un bloqueo DML que


impide cualquier operacin sobre la tabla. Esta se realiza
en una transaccin nica, independientemente del nmero
de tablas que comprenda la recuperacin.

COPIAS DE SEGURIDAD

Requisitos:
Debe poseerse el privilegio FLASHBACK ANY TABLE o tener
el privilegio FLASHBACK sobre la tabla.
Deben poseerse los privilegios SELECT, INSERT, DELETE, y
ALTER en la tabla.
La informacin de undo debe ser suficiente como para
recuperar hasta el punto indicado en la operacin.
Debe habilitarse en la tabla la caracterstica row
movement mediante la sentencia:

La operacin se realiza en lnea.


Se mantienen automticamente todos los atributos de la
tabla (ndices, disparadores, constraints) necesarios.
Se mantienen las restricciones de integridad.
No se pierden los datos originales, pudiendo volver al
principio (no puede hacerse un rollback de la sentencia,
pero puede realizarse una nueva recuperacin a un
momento justo anterior al actual -es conveniente anotar
previamente el SCN actual-).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION DE TABLAS.
FLASHBACK TABLE.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

ALTER TABLE <nombre_tabla> ENABLE ROW MOVEMENT;


347

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

348

RECUPERACION DE TABLAS.
FLASHBACK TABLE.

RECUPERACION DE TABLAS.
FLASHBACK DROP.

Restricciones:
Esta operacin no puede realizarse en tablas que forman
parte de un cluster, vistas materializadas, tablas
Advanced Queuing (AQ), tablas estticas de diccionario,
tablas de sistema, tablas remotas, object tablas, tablas
anidadas o particiones individuales de tablas.

Al borrar una tabla, la bd no borra inmediatamente el espacio


ocupado por la misma. La bd renombra la tabla y la coloca
junto con sus objetos asociados (constraints, tablas
anidadas y semejantes) en lo que denomina recycle bin, de
forma que si fue borrada por error es posible recuperarla
usando la sentencia FLASHBACK TABLE (flashback drop).

El recycle bin es una tabla de diccionario con informacin


sobre los objetos borrados y sus asociados, los cuales no se
eliminan hasta indicarlo explicitamente o hasta haber
necesidades de espacio (se eliminan en orden first-in firstout -FIFO-). Cada usuario, a menos que tenga privilegio
SYSDBA, slo puede acceder a sus propios objetos en esta
tabla:

Las operaciones DDL que cambian la estructura de una


tabla no permiten usar esta utilidad (actualizacin,
moving o truncado de la tablas, adicin de constraint,
adicin de una tabla a un cluster, modificacin o borrado
de una columna, adicin, borrado, coalescencia, divisin,
modificacin o truncado de una particin -salvo la adicin
de una particin range-).

SELECT * FROM RECYCLEBIN;

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

349

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

350

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION DE TABLAS.
RECYCLE BIN.

El espacio libre en un espacio de almacenamiento puede


consultarse en la vista DBA_FREE_SPACE.

RECUPERACION DE TABLAS.
RECYCLE BIN.

Al borrar un espacio de almacenamiento incluyendo su


contenido, los objetos en el mismo no se almacenan en el
recycle bin y la bd elimina cualquier referencia en el mismo.
Igualmente sucede cuando se borra un usuario, cluster o
type.

Tambin se obvia en ciertas ocasiones el recycle bin:


En la sentencia DROP TABLE ... PURGE (ej. SQL> drop
table emp purge;).
En la sentencia DROP TABLESPACE ... INCLUDING
CONTENTS. Cada espacio de almacenamiento tiene su
propio recycle bin por lo que borrar el espacio implica
eliminar este y cualquier objeto en el mismo.

Este modo de funcionamiento, habilitado por defecto, puede


habilitarse o deshabilitarse mediante el parmetro de
inicializacin RECYCLEBIN, o, dinmicamente mediante las
sentencias:

AL emplear DROP USER...CASCADE. Se elimina el usuario


y todos sus objetos (incluidos aquellos en el recycle bin.

ALTER SESSION/SYSTEM SET recyclebin = OFF;


ALTER SESSION/SYSTEM SET recyclebin = ON;
Deshabilitar recycle bin no afecta a los objetos que ya se
hallan en el mismo.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

351

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

352

RECUPERACION DE TABLAS.
RECYCLE BIN.

RECUPERACION DE TABLAS.
PURGE. FLASHBACK TO BEFORE DROP.

A los objetos almacenados en el recycle bin se les asigna un


nombre
generado
por
el
sistema
de
la
forma
BIN$unique_id$version , donde :

unique_id es un identificador nico para el objeto compuesto por


26 caracteres, y

PURGE TABLE/INDEX <nombre>;

version es un nmero de version asignado a la bd.

PURGE TABLESPACE <nombre_tbsp> USER <nombre_usuario>;


Nota: Se eliminan todos los objetos de nombre_usuario para el
esp.almacenamiento nombre_tbsp.

Es posible obtener informacin mediante las vistas:

PURGE RECYCLEBIN/DBA_RECYCLEBIN;

USER_RECYCLEBIN. Permite a un usuario ver los objetos de su


propiedad que han sido borrados, tiene un sinnimo:
RECYCLEBIN.

DBA_RECYCLEBIN. Da informacin a los administradores sobre


todos los objetos borrados.

COPIAS DE SEGURIDAD

La sentencia FLASHBACK TABLE ... TO BEFORE DROP permite


recuperar objetos del recycle bin:
FLASHBACK TABLE <nombre_tabla> TO BEFORE DROP
RENAME TO <nombre_tabla>;

O mediante la sentencia SQL*Plus SHOW RECYCLEBIN.


Administracin y Ajuste de Oracle 10g

Mediante la sentencia PURGE puede borrarse explicitamente el


contenido del recycle bin y liberar el espacio asociado (son
necesarios los mismos privilegios requeridos para borrar el
elemento):

353

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

354

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIA LGICA.
DATA PUMP EXPORT/IMPORT.

COPIA LOGICA: DATAPUMP

Son utilidades integradas en la bd que permiten cargas y


descargas de informacin a gran velocidad. Todo el proceso de
exportacin/importacin se lleva a cabo en el servidor.

No son compatibles con el export/import originales.

Consta de los siguientes componentes:


Clientes
expdp
e
impdp.
Usan
los
procedimientos
proporcionados por el paquete DBMS_DATAPUMP.
Paquete DBMS_DATAPUMP. Conocido como Data Pump API,
permite crear y monitorizar los trabajos implicados.
Paquete DBMS_METADATA. Conocido como Metadata API,
proporciona la definicin de los objetos de la bd a Data Pump.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

355

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

356

ARQUITECTURA DATA PUMP.

DATA PUMP. VENTAJAS.

Algunas de las ventajas de Data Pump son:


La forma de acceso a los datos se decide automticamente
(habitualmente direct path, external cuando no es posible).
La exportacin puede realizarse en paralelo y puede escribirse a
mltiples ficheros en diferentes discos (opciones PARALLEL y
DUMPFILE).
Puede reiniciarse un trabajo fallido donde se interrumpi.
Permite filtrar metadatos
INCLUDE y EXCLUDE).

con

mltiples

combinaciones

(opciones

Pueden filtrarse filas de datos durante la importacin.


Permite estimar el espacio en disco necesario antes de realizar el
trabajo (opcin ESTIMATE_ONLY).
Pueden hacerse
database link.
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

357

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

exportaciones

Administracin y Ajuste de Oracle 10g

importaciones

remotas

COPIAS DE SEGURIDAD

usando
358

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP. VENTAJAS.

DATA PUMP. EJECUCIN.

Los trabajos pueden asignar recursos dinmicamente segn la carga de


trabajo.

En cada exportacin o importacin se crea un proceso maestro que


controla la misma, incluyendo la comunicacin con los clientes, la
creacin y control del conjunto de procesos de trabajo necesarios y
la realizacin de las operaciones de conexin.

En la transferencia de datos y metadatos, se emplea un tabla


maestro, que se crea en el esquema del usuario que realiza la
exportacin/importacin y tiene el nombre del trabajo -job- que
realiza la operacin, para realizar el seguimiento del proceso:

Puede indicarse explcitamente la versin de bd, de forma que slo los


objetos soportados se exportan.
Durante la importacin, puede cambiarse los nombres de fichero,
esquemas y espacios de almacenamiento destino.

Durante la exportacin la tabla registra la localizacin de los objetos en


el conjunto de ficheros de descarga (dump file set). Al finalizar, el
contenido de la tabla se escribe a fichero.
Durante la importacin la tabla maestro se carga desde el conjunto de
ficheros de descarga y se emplea para controlar la secuencia de
localizacin de los ficheros a importar.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

359

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

360

DATA PUMP. EJECUCIN.

DATA PUMP. INFORMACIN.

Esta tabla maestro tambin se emplea para reiniciar un trabajo.

El destino final de la tabla maestro es diverso:

Puede obtenerse informacin en las siguientes vistas:


DBA_DATAPUMP_JOBS y USER_DATAPUMP_JOBS. Identifican trabajos
Data Pump activos.

Si el trabajo finaliza correctamente, la tabla se borra.


Si el trabajo se para, usando la sentencia STOP_JOB, se retiene para
poder reiniciarlo.

DBA_DATAPUMP_SESSIONS. Identifica sesiones de usuario asociadas a


un trabajo.

Si el trabajo se elimina, usando la sentencia KILL_JOB, la tabla se


elimina y el trabajo no puede reiniciar.

V$SESSION_LONGOPS. Informacin sobre el progreso del trabajo.

Si un trabajo termina inesperadamente, se mantiene la tabla. Puede


borrarse si no hay intencin de reiniciar el trabajo.

El progreso de un trabajo y los errores producidos pueden


registrarse en un fichero de log. El estado del mismo, en tiempo
real, puede obtenerse usando la sentencia STATUS en modo
interactivo de Data Pump.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

361

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Ficheros de volcado (dump). Contienen datos y metadatos.


Durante una exportacin pueden indicarse al definir el trabajo as
como posteriormente (por ejemplo, pueden aadirse ficheros de
volcado con ADD_FILE).
Durante un importacin, todos los ficheros de volcado deben
especificarse al definir el trabajo.

Por defecto se asigna el valor para DATA_PUMP_DIR:


SQL> CREATE DIRECTORY DATA_PUMP_DIR AS '/datapump/ficheros';

Ficheros SQL. Registran la salida de una operacin SQLFILE (parmetro


SQLFILE) consistente en el volcado de todas las sentencias DDL que se
hubieran ejecutado durante una importacin a un fichero.
Nota: Los ficheros de log y SQL pueden sobreescribirse si ya
existen. Nunca se sobreescriben ficheros de volcado si ya existen, se
genera un error.
COPIAS DE SEGURIDAD

Es necesario crear objetos tipo directorio (asocia un nombre a un


directorio o sistema de ficheros) por un usuario administrador o
con el privilegio CREATE ANY DIRECTORY. Al exportar/importar se
indica mediante el parmetro DIRECTORY.
SQL> CREATE DIRECTORY DPUMP_VOLCADO AS '/datapump/ficheros';

Ficheros log. Contienen mensajes sobre la operacin realizada.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

362

DATA PUMP.
LOCALIZACION DE FICHEROS.

Existen tres tipos de ficheros gestionados por Data Pump:

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP. FICHEROS.

Administracin y Ajuste de Oracle 10g

363

Tras la creacin de un directorio, su creador debe conceder el


permiso de lectura (READ) o escritura (WRITE) a otros usuarios.
SQL> GRANT READ, WRITE ON DIRECTORY <directorio> TO <usuario>;
Nota: Implica tener acceso a travs de bd pero no el poder acceder a
travs de s.o.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

364

DATA PUMP.
LOCALIZACION DE FICHEROS.

DATA PUMP EXPORT.


Se emplea la utilidad expdp, indicando las caractersticas de la
exportacin en la lnea de comandos o mediante un fichero de
parmetros. Los ficheros resultantes de una exportacin slo
pueden importarse con D.P. Import.
Cualquier usuario puede exportar objetos de su propiedad o su
esquema al completo.
Los usuarios no privilegiados deben tener permiso WRITE en el
objeto directorio y deben indicar ste en el parmetro DIRECTORY
o junto al nombre de fichero de volcado.

El orden de precedencia usado para determinar la localizacin es:


1.- Objeto directorio formando parte de la especificacin de un
nombre de fichero (DUMPFILE=<localizacin>:<fichero>.dmp).
2.- Objeto directorio indicado en el parmetro DIRECTORY.
3.- Valor de la variable de entorno DATA_PUMP_DIR (definida en
el entorno del cliente):
SQL> CREATE DIRECTORY DUMP_FICHERO AS
'/DATAPUMP/FICHEROS';

Modo ayuda en lnea: expdp HELP=y


Modo interactivo: expdp directory=<localizacin>

# EXPORT DATA_PUMP_DIR=<VARIABLE_FICHERO_VOLCADO>

Modo fichero de parmetros: expdp PARFILE=<fichero_parametros>

4.- Si es un usuario privilegiado se emplea el valor por defecto en


bd del directorio DATA_PUMP_DIR (que debe estar previamente
creado). No confundir con la variable de entorno.
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

365

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

- Esquema de usuario (parmetro SCHEMAS). Si no se posee rol


EXP_FULL_DATABASE slo es posible exportar el esquema propio.
- Tabla
(parmetro
TABLES). Para
exportar
tablas
pertenecientes al propio esquema es necesario el
EXP_FULL_DATABASE.

DIRECTORY =<DATA_PUMP_DIR>
Localizacin para los ficheros de volcado y registro.

no
rol

DUMPFILE = <directorio_objeto:>nombre_fichero
Fichero de volcado. Por defecto expdat.dmp

- Tablespace (parmetro TABLESPACES). Debe tenerse el rol


EXP_FULL_DATABASE.

ESTIMATE = <BLOCKS | STATISTICS>


Mtodo de estimacin de espacio en disco necesario para cada tabla.

- Transport Tablespace (parmetro TRANSPORT_TABLESPACES).


Permite exportar metadatos para tablas y objetos dependientes
pertenecientes a un conjunto de espacios de almacenamiento. Es
necesario el rol EXP_FULL_DATABASE.
COPIAS DE SEGURIDAD

CONTENT =<ALL | DATA_ONLY | METADATA_ONLY>


Indica contenido a exportar: datos, metadatos o ambos.

- Full export (parmetro FULL). Se exporta toda la bd. Es


necesario el rol EXP_FULL_DATABASE.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

366

DATA PUMP EXPORT.


PARMETROS.

Existen cinco modos de trabajar con datapump export:

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP EXPORT.

Nota: Si no se indica ningn otro parmetro se usan los valores por defecto en la
exportacin: expdat.dmp y export.log -ficheros-, exportacin a nivel de esquema,
SYS_EXPORT_SCHEMA_01 -trabajo- y se exportan datos y metadatos.

ESTIMATE_ONLY =<N | Y>


Permite estimar el espacio consumido en una exportacin sin realizarla.

367

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

368

DATA PUMP EXPORT.


PARMETROS.

DATA PUMP EXPORT.


PARMETROS.

EXCLUDE = tipo_objeto <:clusula>

Filtrar metadatos exportados indicando objetos y tipos excluidos. Por


defecto ninguno. Es excluyente con el parmetro INCLUDE.

Filtrar metadatos exportados indicando objetos y tipos incluidos


(consultar
las
vistas
DATABASE_EXPORT_OBJECTS,
SCHEMA_EXPORT_OBJECTS y TABLE_EXPORT_OBJECTS).

FILESIZE

Tamao mximo para ficheros de exportacin (por defecto ilimitado).

INCLUDE = tipo_objeto <:clusula>

Especificar un nombre para el trabajo, job, de exportacin; coincide


tambien con la tabla maestro usada para controlar la exportacin.
Por defecto de las forma sys_export_<modo>_xx

FULL = <N | Y>


Realizar una exportacin de la bd al completo. En una exportacion
completa no se incluyen los esquemas SYS, ORDSYS, EXFSYS,
MDSYS,
DMSYS,
CTXSYS,
ORDPLUGINS,
LBACSYS,
XDB,
SI_INFORMTN_SCHEMA, DIP, DBSNMP, y WMSYS. Nunca se
exportan tampoco los permisos sobre objetos de SYS.

JOB_NAME

LOGFILE = <directorio_objeto:>nombre_fichero
Fichero de registro, por defecto export.log

NOLOGFILE = <Y | N>


No crear fichero de registro.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

369

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PARALELL = n

QUERY =<nombre_esquema.><nombre_tabla> | <clusula>

Frecuencia con que muestra el estado del trabajo junto a una


descripcin de la operacin actual (por defecto es cero y no muestra
informacin hasta acabar la exportacin de cada objeto).
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

371

TRANSPORT_FULL_CHECK =<N | Y>


Chequear o no las dependencias entre los objetos residentes los
espacios de almacenamiento a transportar y aquellos situados
fuera del conjunto (slo en modo transport tablespace).

SCHEMAS =<lista de esquemas>

STATUS = nn

TABLESPACES = <nombre_espacioalmac>, ...


Indica tbsp. a exportar en modo tablespace.

Permite indicar que se realizar una exportacin de esquemas, es el


modo por defecto. Por defecto referencia el esquema de usuario.

TABLES = <nombre_esquema.><nombre_tabla>, ...


Indica exportacin en modo tabla (del propio esquema, por defecto).

Permite seleccionar filas a exportar segn condiciones a cumplir. No


compatible con CONTENT=METADATA_ONLY, ESTIMATE_ONLY o
TRANSPORT_TABLESPACES.

370

DATA PUMP EXPORT.


PARMETROS.

Grado de paralelismo en la ejecucin (por defecto 1). Su nmero debe


ser igual al nmero de ficheros de volcado indicados.

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP EXPORT.


PARMETROS.

Administracin y Ajuste de Oracle 10g

TRANSPORT_TABLESPACES = <nombre_espacioalmac>, ...


Realizar una exportacin en modo transport tablespace y espacios de
almacenamiento a los que se aplica. Este modo tiene un grado de
paralelismo
igual
a
1
y
requiere
disponer
del
rol
EXP_FULL_DATABASE, sus trabajos no se pueden reiniciar.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

372

DATA PUMP EXPORT.


MODO INTERACTIVO.

DATA PUMP EXPORT.


MODO INTERACTIVO.
CONTINUE_CLIENT. Salir de modo interactivo y entrar en modo
registro.

Tras iniciar un trabajo, puesto que se ejecuta en el servidor, es


posible interrumpir la sesin cliente y asociarse al trabajo
posteriormente. Tambin es posible modificar ciertos parmetros
de forma interactiva.
Para pasar a modo interactivo puede interrumpirse la conexin
actual con Ctrl+C y asociar posteriormente una sesin cliente
(ATTACH):

EXIT_CLIENT. Salir de sesin


ejecutndose en el servidor.

START_JOB. Reiniciar el trabajo asociado.


STATUS. Mostrar informe del estado del trabajo asociado.
STOP_JOB [INMEDIATE]. Detener el trabajo asociado, puede
reiniciarse ms tarde. Con inmediate los procesos acaban al
instante, las tareas incompletas se volvern a realizar al reiniciarlo.

Permite aadir ficheros de volcado.


COPIAS DE SEGURIDAD

373

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

374

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP IMPORT.

DATA PUMP IMPORT.

Se emplea la utilidad impdp, indicando las caractersticas de la


importacin en la lnea de comandos o mediante un fichero de
parmetros. Slo pueden usarse en la importacin ficheros creados
con D.P. Export.
Los usuarios deben tener permiso READ en el objeto directorio
dond resida el fichero de volcado y de escritura donde se cree el
fichero de registro (log) y los SQL.
Modo ayuda en lnea: impdp HELP=y
Modo interactivo: impdp directory=<localizacin>
Modo fichero de parmetros: impdp PARFILE=<fichero_parametros>

Nota: Si no se indica ningn otro parmetro se usan los valores por defecto en la
exportacin: expdat.dmp e import.log -ficheros-, importacin total del fichero y trabajo
SYS_IMPORT_xx_01.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

contina

PARALLEL. Indicar grado paralelismo o nmero de trabajos.

ADD_FILE = <directorio:><nombre_fichero>, ...

Administracin y Ajuste de Oracle 10g

trabajo

KILL_JOB. Cancelar trabajo actual y desasociar las sesiones cliente


relacionadas.

Los parmetros que pueden usarse en modo interactivo son:

El

HELP. Ayuda en lnea.

/home/...> expdp attach=<nombre_trabajo>

Administracin y Ajuste de Oracle 10g

cliente.

COPIAS DE SEGURIDAD

375

Existen cinco modos de trabajar con datapump import:


- Full import (parmetro FULL). Se importa el fichero de volcado al
completo (modo por defecto). Necesario el rol IMP_FULL_DATABASE
si se hizo la exportacin con EXP_FULL_DATABASE.
- Esquema de usuario (parmetro SCHEMAS). Slo se cargan
objetos propiedad del usuario actual. Si se posee rol
IMP_FULL_DATABASE pueden cargarse esquemas diferentes al
propio.
- Tabla (parmetro TABLES). Para importar tablas no pertenecientes
al propio esquema es necesario el rol IMP_FULL_DATABASE.
- Tablespace (parmetro TABLESPACES).
- Transport Tablespace (parmetro TRANSPORT_TABLESPACES).
Permite importar metadatos para un conjunto de espacios de
almacenamiento. Es necesario el rol IMP_FULL_DATABASE.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

376

DATA PUMP IMPORT.


PARMETROS.

DATA PUMP IMPORT.


PARMETROS.

CONTENT =<ALL | DATA_ONLY | METADATA_ONLY>

Indica contenido a importar: datos -filas, no se crean objetos-,


metadatos -definiciones- o ambos.

Filtrar metadatos importados indicando objetos y tipos excluidos. Por


defecto ninguno. Es excluyente con el parmetro INCLUDE. No
puede usarse junto con CONTENT=DATA_ONLY.

DIRECTORY =<DATA_PUMP_DIR>

Por defecto DATA_PUMP_DIR para usuarios privilegiados, ninguno para


el resto. Localizacin para los ficheros de volcado y registro.

DUMPFILE = <directorio_objeto:>nombre_fichero

ESTIMATE = <BLOCKS | STATISTICS>

COPIAS DE SEGURIDAD

377

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

JOB_NAME

LOGFILE = <directorio_objeto:>nombre_fichero

NOLOGFILE = <Y | N>

PARALELL = n

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

REMAP_SCHEMA=esquema_fuente : esquema_destino
Carga objetos del esquema fuente al esquema destino. Debe tenerse el
rol IMP_FULL_DATABASE. Si el esquema destino no existe, se crea si
el fichero de volcado contiene la informacin necesaria (CREATE
USER) y se importa con suficientes privilegios (en caso contrario
debe crearse previamente).

Grado de paralelismo en la ejecucin (por defecto 1).

Administracin y Ajuste de Oracle 10g

REMAP_DATAFILE=fichero_fuente : fichero_destino
Cambia el nombre de fichero_fuente por el de fichero_destino en las
sentencias SQL donde se referencie la fuente (CREATE TABLESPACE,
CREATE LIBRARY y CREATE DIRECTORY). Debe tenerse el rol
IMP_FULL_DATABASE.

No crear fichero de registro.

QUERY =<nombre_esquema.><nombre_tabla:> <clusula>


Permite seleccionar filas a importar segn condiciones a cumplir. No
compatible
con
CONTENT=METADATA_ONLY,
SQLFILE
o
TRANSPORT_TABLESPACES.

Fichero de registro, por defecto import.log.

378

DATA PUMP IMPORT.


PARMETROS.

Especificar un nombre para el trabajo, job, de importacin; coincide


tambien con la tabla maestro usada para controlar la importacin.
Por defecto de las forma sys_import_<modo>_xx

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP IMPORT.


PARMETROS.

INCLUDE = tipo_objeto <:clusula>


Filtrar metadatos importados indicando objetos y tipos incluidos
(consultar
las
vistas
DATABASE_EXPORT_OBJECTS,
SCHEMA_EXPORT_OBJECTS y TABLE_EXPORT_OBJECTS). No puede
usarse junto con CONTENT=DATA_ONLY.

Mtodo de estimacin de espacio en disco necesario para cada tabla


(slo vlido si se indica tambin NETWORK_LINK).

Administracin y Ajuste de Oracle 10g

FULL = <N | Y>


Realizar una exportacin de la bd al completo, todo el fichero fuente se
importa. Si la operacin de exportacin que dio lugar al fichero se
hizo usando el rol EXP_FULL_DATABASE, es necesario el rol
IMP_FULL_DATABASE.

Fichero de volcado. Por defecto expdat.dmp

EXCLUDE = tipo_objeto <:clusula>

379

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

380

DATA PUMP IMPORT.


PARMETROS.

DATA PUMP IMPORT.


PARMETROS.

REMAP_TABLESPACE=tbsp_fuente : tbsp_destino

Carga todos los objetos, incluso el usuario, del esquema fuente en el


esquema destino.

Define un fichero en el que descargar todas las sentencias SQL tipo DDL
que se hubieran ejecutado al importar (no son ejecutadas). Si se
generan contraseas en el fichero, aparecen comentadas.
COPIAS DE SEGURIDAD

381

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

TABLES = <nombre_esquema.><nombre_tabla><:particin>, ...

TABLESPACES = <nombre_espacioalmac>, ...

382

TRANSPORT_DATAFILES
Conjunto de ficheros a importar en el destino en modo transport
tablespace.

Indica tbsp. a exportar en modo tablespace.

COPIAS DE SEGURIDAD

DATA PUMP IMPORT.


PARMETROS.

Indica exportacin en modo tabla (por defecto del propio esquema; para
tablas de otro esquema debe tenerse el rol IMP_FULL_DATABASE).

SKIP. Deja la tabla tal como est e importa siguiente objeto.


APPEND. Carga filas, el contenido anterior no se modifica.
TRUNCATE. Borra las filas existentes antes de cargar.
REPLACE. Borra la tabla y la carga al completo.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP IMPORT.


PARMETROS.

TABLE_EXISTS_ACTION = <SKIP | APPEND |TRUNCATE |REPLACE>


Indica qu hacer si la tabla a importar ya existe. Si se indica
CONTENT=DATA_ONLY la opcin por defecto es APPEND):

SQLFILE=<directorio_objeto:>nombre_fichero

Administracin y Ajuste de Oracle 10g

STATUS = nn
Frecuencia con que muestra el estado del trabajo junto a una
descripcin de la operacin actual y el porcentaje que falta para
acabar el trabajo (por defecto es cero).

SKIP_UNUSABLE_INDEXES=<Y | N>
Permite indicar que no se carguen tablas que tengan ndices en estado
no disponible.

Permite indicar que se realizar una importacin de esquemas. Por


defecto referencia el esquema de usuario, para otros es necesario el
rol IMP_FULL_DATABASE.

REUSE_DATAFILES=<Y | N>
Indica si la operacin de importacin debe reutilizar los ficheros de
datos existentes o no en la creacin de espacios de almacenamiento.

SCHEMAS =<lista de esquemas>

TRANSPORT_TABLESPACES = <nombre_espacioalmac>, ...


Realizar una importacin en modo transport tablespace y espacios de
almacenamiento a los que se aplica.

TRANSFORM=<SEGMENT_ATTRIBUTES|STORAGE>:<N|Y><:TABLE|:INDEX>
Permite modificar parmetros en la sentencia de creacin DDL a
importar:
SEGMENT_ATTRIBUTES. Atributos fsicos, storage,
tablespaces, logging.
STORAGE. Clusula storage.

Por defecto se aplica a todos los tipos de objetos.


Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

383

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

384

DATA PUMP IMPORT.


MODO INTERACTIVO.

DATA PUMP IMPORT.


MODO INTERACTIVO.

Al igual que con data pump export, tras iniciar un trabajo, ya


que es ejecutado en el servidor, es posible interrumpir la sesin
cliente y asociarse al trabajo posteriormente. Tambin es posible
modificar ciertos parmetros de forma interactiva.
Para pasar a modo interactivo puede interrumpirse la conexin
actual con Ctrl+C y asociar posteriormente una sesin cliente
(ATTACH):

HELP. Ayuda en lnea.


KILL_JOB. Cancelar trabajo actual y desasociar las sesiones cliente
relacionadas.
PARALLEL. Indicar grado paralelismo o nmero de trabajos.
START_JOB. Reiniciar el trabajo asociado.
STATUS. Mostrar informe del estado del trabajo asociado.

/home/...> impdp attach=<nombre_trabajo>

STOP_JOB [INMEDIATE]. Detener el trabajo asociado, puede


reiniciarse ms tarde. Con inmediate los procesos acaban al
instante, las tareas incompletas se volvern a realizar al reiniciarlo.

Los parmetros que pueden usarse en modo interactivo son:


CONTINUE_CLIENT. Salir de modo interactivo y entrar en modo
registro.
EXIT_CLIENT. Salir de sesin
ejecutndose en el servidor.

cliente.

Administracin y Ajuste de Oracle 10g

El

trabajo

COPIAS DE SEGURIDAD

contina
385

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

386

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP Y PARAMETROS.

Ciertos parmetros de inicializacin pueden afectar al


rendimiento de data pump. Puede probarse a usar las
siguientes asignaciones:
DISK_ASYNCH_IO = TRUE
DB_BLOCK_CHECKING = FALSE
DB_BLOCK_CHECKSUM = FALSE

Adems los parmetros siguientes deben tener valores lo


suficientemente altos como para permitir el mximo grado de
paralelismo:

COPIA LOGICA: EXPORT/IMPORT

PROCESSES
SESSIONS
PARALLEL_MAX_SERVERS

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

387

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

388

COPIA LGICA.
UTILIDADES EXPORT/IMPORT.

EXPORT/IMPORT vs. DATA PUMP


Data Pump trabaja con un grupo de ficheros de volcado (dump
file set), no con uno nico.
D.P. basa su funcionamiento en el servidor no en el cliente.
D.P. emplea ejecucin paralela.
D.P. almacena los metadatos como documentos XML no como
sentencias DDL.
D.P. se ajusta automticamente (no son necesarios parmetros
empleados en export/import originales como BUFFER y
RECORDLENGTH).
Usando D.P. no es posible realizar commit intermedio durante
una importacin (s con import original -parmetro COMMIT-).
Con D.P. no es posible comprimir extensiones al recrear tablas (s
con import original -parmetro COMPRESS-).
Al importar con D.P. en una tabla que ya existe, si una fila viola
una restriccin se interrumpe la operacin y no se carga ningn
dato. Con import original se registra el error y prosigue la carga.

Generalmente
se
recomienda
emplear
Data
Pump
export/import
y
no
usar
las
utilidades
originales
export/import; sin embargo estas son necesarias en los
siguientes casos:

Al importar ficheros creados con la utilidad export. Por


ejemplo, aquellos procedentes de bases de datos con
versiones anteriores a la 10g.

Si se desea exportar ficheros que sern importados con la


utilidad import. Por ejempo, si se van a transferir datos a
bases con una versin anterior a la 10g.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

389

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

390

UTILIDAD EXPORT.

Para usar la utilidad debe tenerse el privilegio CREATE


SESSION.

Para exportar objetos pertenecientes a otro esquema de


usuario debe tenerse asignado el rol EXP_FULL_DATABASE.

Como resultado se obtiene un fichero .dmp (fichero de


exportacin) y, opcionalmente, un fichero .log con el informe
de incidencias.

Es conveniente que todos los ficheros generados para usar en


la exportacin o como resultado de ella estn en un sistema
de ficheros independiente (p.ej. /export/<nombre_bd>).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

UTILIDAD EXPORT.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Existen cuatro modos de realizar export:


- Tabla. Cualquier usuario puede exportar tablas indicadas
del esquema de usuario.
- Usuario. Cualquier usuario puede exportar todos los
objetos del esquema.
- Tablespace. Permite mover tablespaces entre bases de
datos. Slo posible con el rol EXP_FULL_DATABASE.
- Full database. Exporta todos los objetos de la BD (no se
exportan disparadores pertenecientes al esquema SYS).
Slo posible con el rol EXP_FULL_DATABASE.

391

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

392

UTILIDAD EXPORT.

UTILIDAD EXPORT.

Aunque puede ejecutarse la utilidad e ir indicando en el


prompt diferentes opciones, se recomienda usar un fichero
de parmetros.

BUFFER

Sintaxis:

COMPRESS (Y/N)

Parmetro

Descripcin
Tamao bufer de datos (bytes). No tiene efecto al
usar direct path.
Incluir todos los datos en una extensin (no para
LOB).
Asegura la consistencia de los datos exportados
cuando pueden estar siendo actualizados (p.ej. con
la
bd
abierta).
Incompatible
con
copias
incrementales.

exp HELP=Y

Proporciona ayuda en lnea.

CONSISTENT
(Y/N)

exp

Modo interactivo (sin modo directo).

CONSTRAINTS
(Y/N)

Exportar o no las restricciones sobre tablas.

DIRECT (Y/N)

Modo directo o no -convencional- de exportacin.

FILE

Nombre del fichero


expdat.dmp.

FULL (Y/N)

Exportacin de la base de datos completa o no.

exp PARFILE=<fichero_parametros>

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

393

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

export,

por

defecto

COPIAS DE SEGURIDAD

UTILIDAD EXPORT.
Parmetro

Descripcin

Descripcin

GRANTS (Y/N)

Exportar o no privilegios sobre objetos.

TRIGGERS (Y/N)

Exportar o no disparadores.

INDEXES (Y/N)

Exportar o no ndices.

USERID

LOG

Indica fichero
mensajes.

Usuario y contrasea del usuario que realiza la


exportacin (Peligro!).

OWNER

Indica los usuarios de los que se realizara la


copia.

ROWS (Y/N)

Exportar o no los datos de las tablas.

TABLES

Relacin de tablas a exportar (modo tabla).

TABLESPACES

Lista de tablespaces a exportar.

TRANSPORT_TABLESPACE
(Y/N)

Permite exportacin de tablespaces.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

394

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

UTILIDAD EXPORT.
Parmetro

Administracin y Ajuste de Oracle 10g

de

donde

se

guardarn

los

395

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

396

EXPORT. MODO DIRECTO.

EXPORT. MODO DIRECTO.

Existen dos mtodos para realizar la exportacin:


Conventional path Export. Utiliza la sentencia SQL
SELECT para extraer datos de las tablas. Se leen los datos
desde disco a una buffer cache y, despus de ser
evaluados, se transfieren al cliente export, que los
escribe en el fichero de export.
Direct path Export. Extrae los datos de disco a la buffer
cache y las filas son transferidas directamente al cliente
export, que las escribe en el fichero de salida. Los datos
se hallan en el formato que export espera y no hay
conversin.
La extraccin de datos es mucho ms rpida.
Se debe especificar DIRECT=Y en el fichero de
parmetros.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

397

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Mediante el parmetro RECORDLENGTH se especifica en el


fichero de parmetros el tamao del buffer que se usa para
escribir en el fichero de export.

Se recomienda que RECORDLENGTH sea mltiplo del tamao


de bloque E/S y mltiplo de DB_BLOCK_SIZE, de forma que
cada lectura en tabla devuelva un bloque de datos. Si los
datos ledos no caben en el buffer, se harn mltiples
escrituras en el fichero de export para cada bloque.

En modo interactivo no puede usarse el modo directo de


exportacin.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

398

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

EXPORT. MODO DIRECTO.

CASOS PRACTICOS.

La utilidad export se aconseja en los siguientes casos:


- Realizacin de una copia de seguridad de la base de datos.
FILE=<nombre_bd>.dmp
FULL=Y
LOG=<nombre_bd>.log
- Copias de seguridad de esquema de usuario (al borrarlo y
necesitar guardar su esquema de forma temporal).
FILE=<nombre_esquema_bd>.dmp
OWNER=<propietario del esquema>
LOG=<nombre_esquema_bd>.log
COMPRESS=Y

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

399

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

400

CASOS PRACTICOS.

UTILIDAD IMPORT.

- Copias de seguridad de tablas antes de realizar


operaciones delicadas como borrado masivo de datos,
cargas de datos, actualizaciones,

La utilidad import es complementaria de export.

Los objetos se importan en el orden en que estn en el fichero


de exportacin:

FILE=<nombre_tabla>.dmp
TABLES=(<esquema>.<nombre_tabla>, )
LOG=<nombre_esquema_tabla>.log
COMPRESS=Y

Definicin de tipos.
Definiciones de tablas.
Datos de tablas.
ndices.
Restricciones de integridad, vistas, procedimientos
disparadores.
- ndices bitmap, funcionales y de dominio.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

401

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

Para usar la utilidad debe tenerse el privilegio CREATE


SESSION. Por supuesto, deben tenerse los privilegios
necesarios para crear o trabajar con los objetos a importar.

COPIAS DE SEGURIDAD

Existen cuatro modos de realizar import:

- Usuario. Cualquier usuario puede importar todos los


objetos del esquema.
- Tablespace. Permite mover tablespaces entre bases de
datos. Slo usuarios privilegiados.

Como resultado se obtiene un fichero .log con el informe de


incidencias.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

402

- Tabla. Cualquier usuario puede importar tablas indicadas


del esquema de usuario.

Un usuario puede importar un fichero de export no creado


por l. Si el fichero de exportacin fue creado con el privilegio
EXP_FULL_DATABASE, debe tenerse asignado el rol
IMP_FULL_DATABASE.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

UTILIDAD IMPORT.

En tablas que ya existen es aconsejable deshabilitar las


restricciones de integridad referenciales temporalmente.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

UTILIDAD IMPORT.

- Full
database.
Slo
IMP_FULL_DATABASE.

403

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

posible

con

el

privilegio

COPIAS DE SEGURIDAD

404

UTILIDAD IMPORT.

UTILIDAD IMPORT.

Aunque puede ejecutarse la utilidad e ir indicando en el


prompt diferentes opciones, se recomienda usar un fichero
de parmetros.

Parmetro

Sintaxis:
imp HELP=Y

Proporciona ayuda en lnea.

imp

Modo interactivo.

imp PARFILE=<fichero_parametros>

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

405

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

BUFFER

Tamao bufer de datos (bytes) usado en la


transferencia.

COMMIT (Y/N)

Hacer commit o no despus de cada insercin. til


para evitar que los segmentos de rollback crezcan
demasiado. Si ocurre un error y no hay clave nica
se producirn filas duplicadas.

CONSTRAINTS
(Y/N)

Importar o no las restricciones sobre tablas.

DESTROY (Y/N)

Indica si los ficheros de datos existentes debe ser o


no reutilizados.

FILE

Nombre del fichero de export a importar, por


defecto expdat.dmp.

FROMUSER

Lista de esquemas a importar (usado normalmente


con TOUSER).

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

UTILIDAD IMPORT.
Descripcin

Parmetro

Descripcin

FULL (Y/N)

Importar o no el fichero completo.

LOG

Indica fichero donde se guardaran los mensajes.

GRANTS (Y/N)

Importar o no privilegios sobre objetos.

ROWS (Y/N)

Incluir datos en la importacin.

SHOW (Y/N)

IGNORE (Y/N)

Indica la forma de tratar los errores


generados en la creacin de objetos. Si
IGNORE=Y se ignoran los errores de creacin
y se continua, en caso contrario se muestran.
En el caso de tablas, si IGNORE=Y se
importan los datos en las tablas existentes.
Si IGNORE=N se genera un error y no se
inserta.

Si SHOW=Y, el contenido del fichero de export se


lista pero no se importa.
Solo puede usarse con los parmetros FULL=Y,
FROMUSER, TOUSER, o TABLES.

TABLES

Lista de tablas a importar.

TABLESPACES

Lista de espacios de almacenamiento a importar.

TO_USER

Lista de esquemas donde importar. Se requiere


IMP_FULL_DATABASE.

TRANSPORT_TABL
ESPACE

Importar datos de espacios de almacenamiento.

INDEXES (Y/N)

Importar o no ndices.

INDEXFILE

Fichero de descarga para sentencias


creacin de ndices, no son creados.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

406

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

UTILIDAD IMPORT.
Parmetro

Descripcin

COPIAS DE SEGURIDAD

de

407

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

408

CASOS PRACTICOS.

CASOS PRACTICOS.
- Recuperacin de tablas tras un borrado accidental (si son
muy voluminosas emplear opcin COMMIT=Y). Es
aconsejable en este caso importar a un esquema diferente
a aquel al que pertenece la tabla y posteriormente hacer
un create table as select * from ; o un insert into
select * from ;.

Se har uso de la utilidad import en los casos:


- Recuperacin de la base de datos a un punto en el tiempo.
FILE=<nombre_fichero_export>.dmp
FULL=Y
LOG=<nombre_bd>.log

FILE=<nombre_fichero_export>.dmp
FROMUSER=<esquema_origen>
TOUSER=<esquema_destino>
TABLES=(<nombre_tabla1>, )
LOG=<nombre_esquema_tabla>.log

- Recuperacin de un esquema de usuario.


FILE=<nombre_fichero_export>.dmp
FROMUSER=<propietario del esquema>
TOUSER=<esquema_importacin>
LOG=<nombre_esquema_bd>.log
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

409

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

410

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CASOS PRACTICOS.

RENOMBRAR ESP. DE ALMACENAMIENTO.

- Recuperacin de procedimientos, disparadores y paquetes.


En este caso no es posible la importacin, es necesario
crear un fichero con el contenido del fichero de
exportacin, editarlo, seleccionar el texto buscado para
confeccionar el script adecuado y ejecutar este ultimo.

Util en casos donde se emplea la utilidad para transportar


esp. de almacenamiento (por ejemplo, recuperacin avanzada
TSPITR).
ALTER TABLESPACE user RENAME to u1;

FILE=<nombre_fichero_export>.dmp
FROMUSER=<esquema_origen>
SHOW=Y
GRANTS=N
ROWS=N
INDEXES=N
LOG=<nombre_esquema_tabla>.log

No puede renombrarse ni SYSTEM ni SYSAUX


Los esp. de almacenamiento y todos los ficheros de datos
asociados deben estar en lnea.
Pueden rebnombrarse tambin esp. alm. en slo lectura (READ
ONLY).

- En el caso de ndices se usa el parmetro INDEXFILE.


Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

411

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

412

SQL*LOADER. CARGA DE DATOS.

SQL*Loader carga datos que proceden de otro tipo de ficheros


distintos a tablas Oracle.

Tiene como entrada un fichero de control y uno o ms ficheros


de datos.

Su salida es una base de datos donde se cargan los datos, un


fichero de log, un fichero donde se guardan los registros
rechazados (bad file) y un fichero donde se almacenan los
registros descartados por no cumplir los criterios especificados
en el fichero de control (discard file).

SQL*LOADER

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

413

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

414

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SQL*LOADER.
FICHERO DE CONTROL.

SQL*LOADER.

Es un fichero de texto con instrucciones que indica donde


encontrar los datos a cargar y su formato, la configuracin del
SQL*Loader al cargar los datos y como analizar e interpretar
los datos.

Se considera dividido en tres secciones:


- Informacin de la sesin (opciones y clusula INFILE que
indica donde estn los datos).
- Uno o mas bloques "INTO TABLE" con informacin sobre la
tabla en la que cargar los datos (nombre y columnas).
- Datos de entrada, es opcional.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

415

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

416

SQL*LOADER.
FICHEROS DE DATOS.

SQL*LOADER.
EJEMPLOS.

Lee uno o ms ficheros de datos indicados en el fichero de


control.

Los datos se consideran organizados en registros.

Un fichero de datos puede estar en tres formatos:

-- Ejemplo 1 de fichero de control


load data
infile 'example.dat' "fix 10
into table example
fields terminated by ',' optionally enclosed by '"
(col1, col2)

Fixed-record. Cuando todos los registros tiene la misma


longitud.

example.dat:

Variable-record. Se indica la longitud del registro al


principio del mismo.

0001, abcd,
0002,fghi,
0003,klmn,

Stream-record. No se indica longitud, la marca un


terminador.
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

417

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

418

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SQL*LOADER.
EJEMPLOS.

SQL*LOADER.
EJECUCION.

-- Ejemplo 2 de fichero de control (incluye datos en el fichero)


load data
infile *
into table dept
fields terminated by ',' optionally enclosed by '"
(deptno, dname, loc)
begindata
12,research,"saratoga
10,"accounting",cleveland
11,"art",salem
13,finance,"boston
21,"sales",phila.
22,"sales",rochester
42,"int'l","san fran"
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

Desde la lnea de sentencias debe ejecutarse:


sqlldr userid=<usuario>/<contrasea>
control=<nombre_fichero_control>
log=<nombre_fichero_log>

419

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

420

VISTAS.

DBA_DATAPUMP_JOBS. Trabajos Data Pump activos.

DBA_DATAPUMP_SESSIONS.
asociadas a un trabajo.

DBA_DIRECTORIES. Directorios definidos en bd.

V$SESSION_LONGOPS. Informacin sobre desarrollo de


trabajos.

Administracin y Ajuste de Oracle 10g

Sesiones

de

Administracin y Ajuste Avanzados de


Oracle 10g

usuario

COPIAS DE SEGURIDAD

421

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMARIO

OBJETIVOS

Saber instalar Oracle10g (servidor y BD) sobre Linux.

Instalacin de Oracle10g.

Disear (memoria, CPU y disco) y crear una base de datos.

Diseo y creacin de una base de datos.

Estructuras de almacenamiento (bloque, fila, segmento).

Conocer el formato del bloque oracle, estructura de la fila, tipos de


segmentos y tipos de ndices (B-tree vs IOT).

Nuevas funcionalidades de monitorizacin y ajuste de Oracle


10g.

Conocer la nueva infraestructura, as como las nuevas herramientas


de monitorizacin y ajuste de Oracle 10g.

Monitorizacin y ajuste tradicional de Oracle en versiones


anteriores.

Oracle Net.

Conocer la infraestructura tradicional de Oracle para el ajuste y la


monitorizacin: vistas dinmicas de rendimiento, ajuste de
sharedpool, buffer cache, redo log, rollback, temporal (sort),
checkpoints, sql, cpu.

MTS.

Configurar el software de red (Oracle Net) en el servidor y en el


cliente.

Configuracin del archivado.

Saber activar y configurar MTS.

Backup.

Configurar el archivado de una BD Oracle10g.

Recovery.

Conocer las cuestiones avanzadas del backup de una BD.

Conocer las cuestiones avanzadas del recovery de una BD.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

423

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

424

TEMA 1.
INSTALACIN DE ORACLE10g

TEMA 1
INSTALACIN DE ORACLE10g

Administracin y Ajuste de Oracle 10g

425

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

TIPO DE BASE DE DATOS

Descargar SW de Oracle:

Manual de instalacin (primero ver Release Notes):

Mtodo de instalacin
Bsico. Para instalacin rpida: SW y permite crear BD de propsito
general (en base a una precreada). Mtodo de instalacin por
defecto.
Avanzado: para una instalacion personalizada del sw y/o de la BD.
Tipo de instalacin
Enterprise Edition
Standard Edition
Personalizada
Directorio raz (ORACLE_HOME)
Lista de productos a instalar
Comprobacin automtica de los requisitos del SO
Grupos del SO con privilegios (dba y/o oper)
Creacin de la BD: crear BD (ver DBCA) o Configurar ASM o Instalar
slo SW
Asistentes de configuracin (red con netca, BD con dbca, etc)
Scripts a ejecutar como root

http://www.oracle.com/technology/software/products/database/oracle10g/index

Uso General: transacciones cortas (OLTP) y tambin largas (procesos


batch). La BD creada incluye:
Parmetros de inicializacin usando spfile y gestin automtica de
UNDO.
Oracle Options e interMedia
Advanced Replication
Servidores Dedicados (no usa MTS)
NOARCHIVELOG

Procesamiento de Transacciones (OLTP: Online Transaction


Processing): muchas transacciones cortas concurrentes, consistentes

Almacn de Datos (Data Warehouse): consultas complejas sobre

Personalizada.
Slo Software: no crea BD ni configura sqlnet.

http://www.oracle.com/pls/db102/homepage

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

426

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESQUEMA DEL PROCESO DE


INSTALACIN

Esquema del proceso de instalacin.


Tipos de Bases de Datos.
Asistentes de Configuracin.
Requerimientos HW y SW.
Parmetros del Kernel LINUX. Ejemplo con FC3.
Paquetes necesarios. Ejemplo con FC3.
Preinstalacin.
Instalacin.
Postinstalacin.
Revisin de seguridad y comprobacin final.

INSTALACIN DE ORACLE10g

427

en consultas sencillas sobre pocos datos (tambin actualizaciones).


muchos datos (OnLine Analytical Processing).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INSTALACIN DE ORACLE10g

428

ASISTENTES DE
CONFIGURACIN

REQUERIMIENTOS HW Y SW
(Linux)
HW:

Database Configuration Assistant (dbca).

Permite copiar una BD preconfigurada o crear una personalizada.


Arranca automticamente una vez que se ha instalado el sw Oracle.
Oracle Net Configuration Assistant (netca): configura la red C/S de
Oracle en $ORACLE_HOME/network/admin.
Opciones Enterprise y Standard: configura listener.ora, sqlnet.ora y
tnsnames.ora.
Personalizada: permite configurar un servicio de directorio (LDAP),
crear listeners para conectar a la BD y seleccionar el mtodo de
resolucin de nombres. Configura, adems de los anteriores, el fichero
ldap.ora.
Cliente: permite configurar tnsnames.ora, sqlnet.ora y ldap.ora.
Database Upgrade Assistant (dbua): para actualizar una BD >=
8.1.7.4/9.0.1.4/9.2.0.4/10.1.0.2, despus de instalar el sw de Oracle10g.
Oracle Enterprise Manager Configuration Assistant: configura OMS y
crea (o actualiza) su repositorio (necesita BD).
Oracle Internet Directory Configuration Assistant: configura OID,
arrancando OID Server (necesita BD).

Administracin y Ajuste de Oracle 10g

INSTALACIN DE ORACLE10g

429

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RAM 1G (256M para el cliente): grep Mem /proc/meminfo


HD entre 1.5 y 3.5Gb para el sw, 1.2Gb para la bd y al menos
400Mb de /tmp: df
Swap 1.5 RAM (si <=2G), e igual a la RAM (si >2G):
/sbin/swapon -s.

En Linux, si tenemos mucha RAM, podemos configurar poco swap; ej:


RAM=4Gb y Swap=1Gb.

SW:
Certificacin:
http://www.oracle.com/technology/support/metalink/content.html
Ejemplo (Linux x86 + Database Server + Enterprise + 10gR2)

Suse 9 y 10
Red Hat Enterprise AS/ES 3 y 4 (CentOS es clnico)
Enterprise Linux 4
Asianux 2

Entorno grfico (Xwin): xclock


Acceso a los ejecutables: make, ar, ld, nm.
Parmetros del kernel (/etc/sysctl.conf)
Administracin y Ajuste de Oracle 10g

INSTALACIN DE ORACLE10g

430

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PARMETROS DEL KERNEL


Ejemplo con Linux FC3

PARMETROS DEL KERNEL


Valores mnimos (Linux)

(http://www.oracle-base.com/articles/10g/OracleDB10gR2InstallationOnFedora3.php)

SEMMNI = 100 (# mximo de conjuntos de semforos).


SEMMNS = 256 (# mximo de semforos, slo para la instalacin inicial).
SEMMNS = sum(processes) + max(processes) + 10*count(BBDD)
processes es el parmetro del init de cada BD.
SEMOPM = 100 (# mximo de operaciones por semop call).
SEMMSL = 100 (valor mnimo recomendado, slo para la instalacin inicial).
SHMMAX = 2147483648 (tamao mximo del segmento de memoria compartida
y por tanto de la SGA).
2 GB para kernel SMP. Se recomienda la mitad de la RAM.
Si queremos tener una SGA de ms de 2Gb tendremos q subir este valor.
SHMMIN = 1 (tamao mnimo de un segmento de memoria compartida).
SHMMNI = 4096 (# mximo de segmentos de memoria compartida).
SHMSEG = 4096 (# mximo de segmentos de memoria por proceso).
SHMVMX = 32767 (valor mximo de un semforo).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INSTALACIN DE ORACLE10g

431

Aadir las siguientes lneas al fichero /etc/sysctl.conf:


kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
Actualizar los parmetros en memoria con
# /sbin/sysctl -p
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INSTALACIN DE ORACLE10g

432

Paquetes necesarios
FEDORA CORE 3 Linux

PREINSTALACIN (Linux)

# De Fedora Core 3 Disk 1


cd /media/cdrom/Fedora/RPMS
rpm -Uvh setarch-1*
rpm -Uvh tcl-8*
rpm -Uvh compat-libstdc++-8*

/u01 (sw)
/u02 (datos), /u03 (ndices), /u04 (redo), /u05 (system), /u06 (temp) y
/u07 (rollback)

# De Fedora Core 3 Disk 2


cd /media/cdrom/Fedora/RPMS
rpm -Uvh xorg-x11-deprecated-libs-6*
rpm -Uvh openmotif-2*
rpm -Uvh compat-db-4*

# De Fedora Core 3 Disk 3


cd /media/cdrom/Fedora/RPMS
rpm -Uvh compat-libstdc++-devel-8*
rpm -Uvh compat-gcc-8*
rpm -Uvh compat-gcc-c++-8*
rpm -Uvh libaio-0*
Administracin y Ajuste de Oracle 10g

INSTALACIN DE ORACLE10g

433

Administracin y Ajuste de Oracle 10g

434

POSTINSTALACIN

Artculo de OTN sobre instalacin de Oracle 10g sobre Linux:

Montar CD desde el root:


# mount /mnt/cdrom
Como usuario oracle, lanzar script de instalacin desde fuera
del punto de montaje del CD (por ejemplo, desde el HOME del
usuario oracle).
Comprobar variables DISPLAY y ORACLE_BASE.
$ /mnt/cdrom/runInstaller
Nota. Se podra ejecutar en modo no interactivo con:
$ /mnt/cdrom/runInstaller -responsefile mirespfile
-silent
Cambiar CD: eject o umount /mnt/cdrom y luego
mount /mnt/cdrom.

http://www.oracle.com/technology/pub/articles/smiley_10gdb_install

INSTALACIN DE ORACLE10g

Incluir variables en .bash_profile del usuario oracle:


export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0.1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=mibd
Activar E/S asncrona:
El sw de Oracle 10g R2 ya la lleva activada. Se puede comprobar
con:

# ps -fe|grep dbw|grep -i curso50


oracle 22540
1 0 Jan08 ?
00:00:08 ora_dbw0_CURSO50
# lsof -p 22540|grep libaio
oracle 22540 oracle mem REG 253,0
2628 1966157 /usr/lib/libaio.so.1.0.1

Nota: el punto de montaje del CDROM no tiene por qu ser


/mnt/cdrom, puede ser otro (/media/cdrom, etc).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INSTALACIN DE ORACLE10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INSTALACIN

Administracin y Ajuste de Oracle 10g

Crear grupo dba: groupadd dba.


Crear grupo oinstall: groupadd oinstall.
Crear usuario oracle con grupo primario dba y secundario oinstall:
useradd -g dba -G oinstall oracle.
Crear directorio /u01/app/oracle (ORACLE_BASE) y /u02/oradata,
/u03/oradata, etc.
Variables de entorno del usuario oracle justo antes de instalar:
DISPLAY=workstation_name:0.0 (servidor Xwin)
ORACLE_BASE=/u01/app/oracle (el resto es opcional)
PATH debe incluir $ORACLE_HOME/bin, /usr/bin, /bin,
/usr/bin/X11/ y /usr/local/bin
ORACLE_HOME=$ORACLE_BASE/product/10.2.0.1
ORACLE_SID

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Crear puntos de montaje: uno para el sw y hasta seis para las bases
de datos:

435

Para activarla a nivel de una BD, asignar el parmetro del init:


filesystemio_options = setall
Ejecutar, si es necesario, el siguiente comando de
$ORACLE_HOME/rdbms/lib:
$ make -f ins_rdbms.mk asynch_on
Comprobar seguridad de la BD:

http://www.oracle.com/technology/deploy/security/pdf/twp_security_checklist_db_database.pdf

Comprobar parches de seguridad:


http://www.oracle.com/technology/deploy/security/index.html

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INSTALACIN DE ORACLE10g

436

REVISION DE SEGURIDAD

COMPROBACIN FINAL

Instalar slo aquellas opciones que sean necesarias (Java,


Intermedia, etc).
Bloquear cuentas de usuarios creados por defecto que no vayamos a
utilizar. DBCA bloquea todas menos SYS, SYSTEM, SCOTT y
DBSNMP, por ejemplo: outln, mdsys, wksys, ctxsys, ordsys, etc.
Cambiar claves de usuarios creados por defecto: SYS, SYSTEM, etc.
Proteger el DD con O7_DICTIONARY_ACCESSIBILITY = FALSE,
impidiendo acceso al DD a travs de privilegios ANY. As, por
ejemplo, usuarios con DROP ANY no podrn borrar el DD
Practicar el principio de los privilegios justos. Por ejemplo, para
conectar a la BD dar CREATE SESSION y no CONNECT.
Restringir los usuarios unix con acceso al servidor Oracle.
Restringir el acceso al servidor Oracle a travs de y desde la red.
Aplicar todos los parches de seguridad que vayan saliendo.
http://otn.oracle.com/deploy/security/alerts.html

Administracin y Ajuste de Oracle 10g

INSTALACIN DE ORACLE10g

437

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

En el directorio $ORACLE_BASE/oraInventory/logs podemos


revisar lo ocurrido durante la instalacin.
Comprobar que el SW y la BD (si hemos instalado una) funcionan.
Conectar a la BD usando Sql*Plus
$ sqlplus /nolog

SQL*Plus: Release 10.2.0.2.0 - Production on Tue Jan 2 12:59:46 2007


Copyright (c) 1982, 2005, Oracle. All Rights Reserved.

SQL> connect / as sysdba


Connected.

Comprobar el Listener Sql*Net


$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.2.0 - Production on 02-JAN-2007 13:00:42


Copyright (c) 1991, 2005, Oracle. All rights reserved.

...
Instance "MNCS", status READY, has 1 handler(s) for this service...
...
The command completed successfully

Oracle Enterprise Manger:


Arrancar el servidor web de OEM:
$ emctl start dbconsole

Acceder a http://host:1158/em
Administracin y Ajuste de Oracle 10g

INSTALACIN DE ORACLE10g

438

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PRACTICAS TEMA 1

1.1. Comprobar los requerimientos HW y SW para la instalacin


de Oracle10g sobre Linux.
1.2. Comprobar las tareas de preinstalacin.

1.3. Comprobar cunto ocupa el sw de Oracle10g.


1.4. Buscar el fichero de log de la instalacin y echarle un
vistazo.

1.5. Comprobar tareas de post instalacin relacionadas con la


seguridad de la BD.

1.6. Consulta el Simulador de Instalacin de Oracle10g.

1.7. Revisar alertas de seguridad en OTN.

1.8. Revisar el manual de instalacin de Oracle10g para Linux.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INSTALACIN DE ORACLE10g

TEMA 2
DISEO Y CREACIN DE UNA BASE DE
DATOS

439

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

440

TEMA 2.
DISEO Y CREACIN DE UNA BD

DISEO DE LA BASE DE DATOS


Contiendas en la E/S

Contiendas de E/S
Diccionario de Datos (tablespace SYSTEM).
Utilidades Oracle (tablespace SYSAUX en 10g, y antes
TOOLS).
Procesos (DBWR, LGWR, ARCH).
Tipos de segmentos (tablas, ndices, temp, rollback).
Datos estticos y dinmicos.
Dimensionar memoria: SGA (Shared Pool, Buffer Cache, Redo
Log).
Dimensionar CPU.
Dimensionar ficheros de la BD (Redo Log, System, Sysaux,
Temp, Rollback).
Creacin de la BD con CREATE DATABASE y OMF.
DataBase Configuration Assistant (DBCA).
Administracin y Ajuste de Oracle 10g

441

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

442

DIMENSIONAR MEMORIA EN 10G

Utilizar tablespaces locales (>=8i) con gestin automtica de


segmentos (>=9i).
Separar los ndices de los datos: se puede mover un ndice con "alter
index rebuild tablespace tsp_indices;".
Separar el UNDO (segmentos de rollback si <9i). Desde 9i, mejor la
gestin automtica de UNDO. Podemos tener un tablespace de UNDO
aparte, ms grande, para las transacciones largas de procesos
nocturnos. Si se opta por la manual, crear tablespace especial de
rollback para las transacciones grandes.
Separar los segmentos temporales en un tablespace temporal.
Adems, crear tablespaces temporales adicionales para cada usuario
que genere muchos segmentos temporales. Si las aplicaciones usan
tablas temporales globales, tambin deben residir en un tablespace
temporal independiente. Desde 10g, se puede definir un grupo de
tablespaces para el tablespace temporal por defecto de la BD.
Separar las vistas materializadas en un tablespace independiente.
Separar las tablas temporales de trabajo, como pueden ser las usadas
para cargar informacin desde ficheros (no hacerlo directamente en
las tablas a las que va dirigida finalmente la informacin).
En las tablas particionadas, separar las particiones en diferentes
tablespaces, al menos los datos vigentes de los histricos.

Administracin y Ajuste de Oracle 10g

DISEO Y CREACIN DE UNA BD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DISEO DE LA BASE DE DATOS


Organizacin de los tablespaces

Es muy importante tener en cuenta las posibles contiendas en la E/S:


Contienda entre el DD y los datos en s. En el tablespace SYSTEM
slo debe residir el DD y el segmento de rollback SYSTEM.
Entre las utilidades del tablespace SYSAUX (>=10g) y las
aplicaciones, o con el DD. Puede ser necesario un disco para el
SYSAUX.
Contienda entre procesos: DBWR, LGWR y ARCH. Discos
diferentes para redolog online y archivado; y el resto de la BD.
Contienda entre tipos de segmentos: datos, ndices, rollback,
temp. Separar segmentos de datos, ndices, rollback y temp.
Contienda entre datos estticos y dinmicos. Identificar los datos
estticos (tablas pequeas: pases, provincias, tipos de va, letras
del nif, sexos, etc). Se accedern con mucha frecuencia y slo en
lectura. Si no se detectan a priori, se pueden identificar usando la
auditora (p.e. las que no tengan insert/update/delete durante un
da representativo, o varios das).
Un tablespace para cada rea funcional o cada aplicacin (gestin
econmica, gestin de personal, gestin acadmica, gestin de
investigacin, etc).

DISEO Y CREACIN DE UNA BD

443

La RAM debe albergar no slo la SGA de nuestra BD, sino todos los
procesos de la misma (PGAs), ms aquellos procesos necesarios en
nuestro sistema (que no son de la BD). As como el ncleo de Oracle.
La SGA la dimensionamos con SGA_TARGET (nuevo en 10g, activa
ASMM si statistics_level vale ALL o TYPICAL), fijando el mximo con
SGA_MAX_SIZE.
http://cursos.atica.um.es/oradoc102/server.102/b14231/create.htm#st
Desde 9i podemos usar un pool compartido para las PGAs,
dimensionndolo con PGA_AGGREGATE_TARGET (mnimo 10M).
Memoria Oracle 10g = Ncleo Oracle + PGA_AGGREGATE_TARGET +
SGA_MAX_SIZE.
Memoria mxima para Oracle: 80% de la RAM (RAM * 0.8):
Mnimo de 40M para el ncleo:
$ size $ORACLE_HOME/bin/oracle
text
data
bss
dec
hex filename
74097968 288308 121304 74507580 470e53c /u01/app/oracle/product/10.2.0.1/bin/oracle

20% para PGA_AGGREGATE_TARGET: (RAM * 0.8 ncleo) * 0.2


80% para SGA_MAX_SIZE: (RAM * 0.8 ncleo) * 0.8
Ejemplo: supongamos RAM=1024M y ncleo=70M
PGA_AGGREGATE_TARGET = (1024 * 0.8 70) * 0.2 = 149M
SGA_MAX_SIZE = (1024 * 0.8 70) * 0.8 = 599M
En v$pga_target_advice, buscar 1 fila con ESTD_OVERALLOC_COUNT=0.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DISEO Y CREACIN DE UNA BD

444

DIMENSIONAR LA SGA
y Buffer-Cach
Shared-Pool
El tamao aproximado
de la SGA (SGA_TARGET

VER MEMORIA EN LINUX

siguiente:

La memoria libre (y la usada) la podemos ver con free -m.

$ free -m

total
Mem:
4041
-/+ buffers/cache:
Swap:
2047

used
3992
1353
373

free
49
2688
1673

shared
0

buffers
152

cached
2487

$ ipcs -m
---- Segmentos memoria compartida ---key
shmid
propietario perms
0x6abd8a34 5537793
oracle
660
...

bytes
102760448

nattch
13

estado

La memoria necesaria para el ejecutable de oracle, la podemos ver con


el comando unix size.

$ size $ORACLE_HOME/bin/oracle
text
data
bss
dec
hex filename
74097968 288308 121304 74507580 470e53c /u01/app/oracle/product/10.2.0.1/bin/oracle

La memoria asociada a cada servidor dedicado (uno por sesin):

ps v pid_proceso o ps -u usuario v
RSS -> Tamao de la parte residente del proceso en memoria real (en Kb).
%MEM -> Porcentaje de la memoria real (RAM) que ocupa la parte residente.
$ ps -u oracle v|grep -i local
PID TTY STAT TIME MAJFL
TRS
DRS
RSS %MEM COMMAND
14560 ?
Ss
0:00
0 72361 116542 13492 0.3 oracleCURSO70 (DESCRIPTION=(LOCAL=YES)
14594 ?
Ss
0:00
0 72361 117034 25832 0.6 oracleCURSO70 (DESCRIPTION=(LOCAL=YES)
14626 ?
Ss
0:00
1 72361 116510 15168 0.3 oracleCURSO70 (DESCRIPTION=(LOCAL=YES)

Administracin y Ajuste de Oracle 10g

DISEO Y CREACIN DE UNA BD

445

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DIMENSIONAR LA SGA
Shared Pool y Log Buffer

En 10g se simplifica mucho: SGA_MAX_SIZE y SGA_TARGET. Si


dejamos los dems a cero (db_cache_size, shared_pool_size,
large_pool_size, java_pool_size y streams_pool_size), Oracle reparte
sga_target automticamente entre ellos.
Si queremos fijar manualmente shared_pool_size y/o db_cache_size (
<=9i):
Memoria recomendada para todas las SGAs de un servidor:
Para servidores con RAM <= 1Gb: RAM * 0.55
Para servidores con RAM > 1Gb: RAM * (0.60 a 0.75)
Memoria recomendada por instancia: (RAM * 0.55) / ninstancias.
Shared pool = mem por instancia * 0.45
Buffer cache = mem por instancia *0.45
Se puede ver el overhead necesario en shared pool para el arranque en
V$SGAINFO (>=10g). En 10g el overhead resta de shared_pool_size
(en 9i no).
Recomendaciones de espacio para shared pool y buffer cach (>=9i):
V$SHARED_POOL_ADVICE
V$DB_CACHE_ADVICE (parmetro db_cache_advice=ON)
Administracin y Ajuste de Oracle 10g
DISEO Y CREACIN DE UNA BD
446
Nota: STATISTICS_LEVEL debe valer ALL o TYPICAL

Los segmentos de memoria compartida (SGAs) se ven con ipcs -m.

DIMENSIONAR LA CPU

V$SHARED_POOL_ADVICE. Ver si interesa redimensionar SharedPool.

SELECT
shared_pool_size_for_estimate
"Size
of
Shared
Pool
in
MB",
shared_pool_size_factor "Size Factor", estd_lc_time_saved "Time Saved in
sec" FROM v$shared_pool_advice;
Size of Shared Pool in MB Size Factor Time Saved in sec
------------------------- ----------- ----------------24
.5
525
48
1
525
72
1.5
525
96
2
526

V$SGA_DYNAMIC_COMPONENTS

dinmica.

V$SGA_RESIZE_OPS.

Ver

$ sar
18:20:00
18:30:00
18:40:00
Media:

gestin

select component, current_size, min_size, user_specified_size from


v$sga_dynamic_components;
RPAD(COMPONENT,30)
CURRENT_SIZE
MIN_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ ---------- ------------------shared pool
50331648
25165824
0
large pool
4194304
0
0
select rpad(component,28), oper_type, initial_size/1024/1024 "INITIAL",
FINAL_SIZE/1024/1024 "FINAL", status from v$sga_resize_ops;
RPAD(COMPONENT,28)
OPER_TYPE
INITIAL
FINAL STATUS
---------------------------- ------------- ---------- ---------- --------DEFAULT buffer cache
STATIC
44
40 COMPLETE
shared pool
GROW
40
44 COMPLETE

El parmetro del init LOCK_SGA=true evita que se haga swapping de


la SGA.
LOG_BUFFER no necesita ms de pocos cientos de Kb, incluso en un
sistema con mucha carga, 1MB posiblemente sea suficiente. Asignar
ms de 3Mb es intil ya que el LGWR escribe cuando el buffer se llena
1/3 o 1Mb.
Administracin
y Ajuste de Oracle 10g
DISEO Y CREACIN DE UNA BD
447

Si partimos de una sola CPU, podemos detectar que llega a su lmite de


uso si:
Porcentaje mximo de ocupacin de CPU = 90%.
Porcentaje mximo de procesamiento OS/usuario = 40/60%.
Nota: podemos usar los comandos Linux top y sar.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

si >=10g) es el

DB_CACHE_SIZE
+
[DB_KEEP_CACHE_SIZE
+
DB_RECYCLE_CACHE_SIZE
+
DB_nk_CACHE_SIZE] + SHARED_POOL_SIZE + [LARGE_POOL_SIZE + JAVA_POOL_SIZE +
STREAMS_POOL_SIZE] + LOG_BUFFERS + 1MB
Nota: streams_pool_size slo >=10g. Puede haber hasta cuatro DB_nk_CACHE_SIZE, con n
= 2, 4, 8, 16, 32k (uno de los tamaos de bloque es el que usa DB_CACHE_SIZE. )

CPU
all
all
all

%user
0,20
0,16
0,08

%nice
0,00
0,00
0,00

%system
0,06
0,17
0,05

%iowait
0,20
0,12
0,33

%idle
99,54
99,54
99,54

Si hay varias CPUs, la carga debe estar balanceada. Para una BD


mediana con una carga razonable, lo ideal sera disponer al menos de
2 CPUs.
Para una instancia con servidores dedicados (sin MTS), tendremos un
proceso servidor por cada sesin, adems de los procesos background.
Por ejemplo, para 100 usuarios simultneos tendremos un mnimo de
100 procesos nuevos en nuestro sistema. Probar con MTS si se
degrada el uso de CPU por muchas sesiones concurrentes (MTS es
mejor si hay muchas conexiones a la BD).
Parmetros que limitan el nmero de procesos y de sesiones:

PROCESSES. Nmero mximo de procesos en la instancia.


SESSIONS. Por defecto 1.1*PROCESSES; sin embargo si usamos MTS habr
que subirlo
MTS10g
se puede usar shared_server_sessions para limitar
Administracin
y Ajuste(con
de Oracle
DISEO Y CREACIN DE UNA BD
448
esas sesiones).
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DIMENSIONAR FICHEROS
Tempel y
System,
SYSTEM >=Sysaux,
260M. Activaremos
autoextend con next=10M.
SYSAUX.
Estimar
tamao
Rollback
$ORACLE_HOME/rdbms/admin/utlsyxsz.sql, o:

DIMENSIONAR FICHEROS
Redo Log
Redo = 50 a 100M (cada fichero).
El tamao ptimo se puede sacar de la columna
OPTIMAL_LOGFILE_SIZE de la vista V$INSTANCE_RECOVERY.
Al menos tres grupos y, si disponemos de discos, los multiplexaremos
en dos discos (dos miembros por grupo).
Empezaremos con ficheros de 50-100M, intentando que los log
switch sucedan cada 20-30 minutos.
Si queremos que los checkpoints coincidan con los log switch (y como
mximo cada 30 minutos), asignaremos los parmetros:

log_checkpoint_interval=0
log_checkpoint_timeout=1800 (30 minutos, pondremos 0 si queremos que
coincidan con el log switch, independientemente del tiempo transcurrido).
FAST_START_MTTR_TARGET=0 (desactiva fast recovery instance).
Nota: log_checkpoint_to_alert=true muestra checkpoints en fichero alert.log.
FAST_START_MTTR_TARGET es nuevo desde 9i, y permite indicar el n de
segundos que esperamos que (como mucho) tarde la recuperacin de la
instancia (despus de una cada). El valor mximo son 3600 segundos (1h).

Administracin y Ajuste de Oracle 10g

DISEO Y CREACIN DE UNA BD

449

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FICHERO DE PARMETROS

CREATE SPFILE [='nombre'] FROM PFILE [='nombre'];


Nota1. Si se omiten los nombres, toma los valores por defecto.
Nota2. La BD no podr abrir el nuevo spfile hasta el siguiente arranque.
Nota2. Se puede crear un init a partir de un spfile, invirtiendo la sintaxis.

Los parmetros del spfile se modifican con:


parmetro

valor

[SCOPE

MEMORY

Nota. Si queremos modificar el parmetro slo en el spfile, indicaremos SPFILE.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

500M, BD pequea (2 cpu, 10 sesiones activas, 500 objetos


(tablas/ndices).
2G para BD mediana (8 cpu, 20 sesiones, 5000 objetos).
5G para BD grande (32 cpu, 100 sesiones, 50000 objetos).
TEMP >= 100M. Tablespaces locales con uniform size 1M (si muchas
sesiones simultneas, 256K). Con pga_aggregate_target se ignora
*_area_size.
Los segmentos temporales ocupan espacio igual que una tabla:
para ordenar una tabla de 100M, por todas sus columnas,
necesitar 100M.
Operaciones que necesitan segmentos temporales: SELECT ORDER
BY, GROUP BY, DISTINCT, UNION, INTERSECT or MINUS, nonindexed joins, CREATE INDEX, CREATE/ENABLE PRIMARY/UNIQUE
KEY CONSTRAINT, temporary tables, Temporary LOBs, Statistics
collection.
RBS >= 100M. Usar modo auto (no permite set transaction). Si
usamos modo manual, crear un RS por cada 4 sesiones, y 20
extensiones iniciales cada uno. Optimal debe ser suficiente para 90%
de transacciones.
V$UNDOSTAT. Estadsticas de UNDO cada 10 minutos, incluyendo
bloques de undo y la consulta ms larga (en segundos).

SELECT TO_CHAR(BEGIN_TIME,'DD/MM/YYYY HH24:MI') "TIME", UNDOTSN, UNDOBLKS,


TXNCOUNT,MAXQUERYLEN FROM V$UNDOSTAT;
TIME
UNDOTSN
UNDOBLKS
TXNCOUNT MAXQUERYLEN
Administracin y Ajuste de Oracle 10g
DISEO Y----------CREACIN DE UNA BD
450
---------------- ---------- ---------- ---------18/01/2007
10:40y Francisco Fernndez
368
16
338516
6
Juan Luis
Serradilla Amarilla
Martnez 2008

EJEMPLO DE INIT.ORA

Para arrancar la instancia, el servidor Oracle tiene que leer el fichero


de parmetros de inicializacin (spfile o init), cuya ubicacin
predeterminada es $ORACLE_HOME/dbs.
El fichero de parmetros de inicializacin puede ser de dos tipos:
Init: se trata de un fichero de texto, editable, cuyo nombre sigue
el patrn init$ORACLE_SID.ora.
Spfile: es un fichero binario, no editable pero visualizable, cuyo
nombre sigue el patrn spfile$ORACLE_SID.ora.
Se crea, a partir de un init, con:

ALTER SYSTEM SET


SPFILE | BOTH]

con

DISEO Y CREACIN DE UNA BD

451

Suponemos RAM=1Gb, un mximo de 50 sesiones simultneas, checkpoints cada


30min, gestin automtica de PGAs (RAM*0.80*0.20, resto SGA):
db_name=CURSOxy # Nombre de la BD.
compatible = 10.2.0
background_dump_dest = /u01/app/oracle/admin/CURSOxy/bdump
core_dump_dest = /u01/app/oracle/admin/CURSOxy/cdump
user_dump_dest = /u01/app/oracle/admin/CURSOxy/udump
max_dump_file_size = 10240
# tamao mximo fichero traza de 5M
control_files = (/u02/oradata/CURSOxy/control1.ctl,
/u03/oradata/CURSOxy/control2.ctl)
undo_management = auto
# Gestin automtica de Rollback
undo_tablespace = undo_rbs
# Tablespace de undo
pga_aggregate_target=160M # Espacio mx todas las PGAs (fuera de SGA)
sga_max_size = 640M
# Tamao mximo de la SGA (RAM*0.8*0.8)
sga_target = 512M
# Gestin automtica del reparto del espacio de SGA
db_cache_size = 0
# Oracle asignar el tamao automticamente
shared_pool_size = 0 # Oracle asignar el tamao automticamente
large_pool_size = 0
java_pool_size = 0
log_buffer = 3145728
# Tamao, en bytes, de la cach de redo (3Mb)
log_checkpoint_interval = 0
# desactiva checkpoint interval
log_checkpoint_timeout = 1800 # checkpoint como mucho cada 30minutos.
processes = 50 # N mx. de procesos (background + sesiones)
remote_login_passwordfile=EXCLUSIVE
nls_territory=spain
nls_language=spanish
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DISEO Y CREACIN DE UNA BD

452

EJEMPLO CON CREATE


DATABASE

CREAR LA BASE DE DATOS

Para crear una BD necesitamos:

connect / as sysdba
startup nomount

Conectarnos al servidor Oracle como SYS AS SYSDBA, autenticndonos


contra el S.O. o usando un fichero de claves.
Suficiente memoria para arrancar la instancia y espacio en disco para
crear la BD.

CREATE DATABASE "CURSOxy"


maxdatafiles 254
maxinstances 1
maxlogfiles 32
character set WE8ISO8859P15
DATAFILE '/u02/oradata/CURSOxy/system01.dbf' SIZE 260M
AUTOEXTEND ON NEXT 10M
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u02/oaradata/CURSOxy/sysaux01.dbf' size 100M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
UNDO TABLESPACE UNDO_RBS
DATAFILE '/u03/oradata/CURSOxy/rbs01.dbf' SIZE 10M
DEFAULT TABLESPACE USERS
DATAFILE '/u02/oradata/CURSOxy/users01.dbf' SIZE 10M
DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE '/u03/oradata/CURSOxy/temp01.dbf' SIZE 10M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K
logfile '/u04/oradata/CURSOxy/redo01.log' SIZE 10M,
'/u04/oradata/CURSOxy/redo02.log' SIZE 10M,
'/u04/oradata/CURSOxy/redo03.log' SIZE 10M;

Para ubicar los ficheros que componen la BD:

Guardaremos, al menos, dos copias del fichero de control, en discos


separados.
Multiplexaremos los redolog en discos diferentes.
Separaremos los ficheros de datos que provoquen contencin en disco;
por ejemplo: datos, ndices, temp y rollback.

La BD la podemos crear con el asistente grfico (en Linux dbca) o


con el comando CREATE DATABASE:
Crearemos un fichero init.ora, y si queremos, un spfile.ora.
Arrancaremos las instancia con STARTUP NOMOUNT.
Crearemos la BD con el comando CREATE DATABASE.
Ejecutaremos los scripts catalog.sql, catproc.sql y catexp.sql que estn
en $ORACLE_HOME/rdbms/admin.
Desde 10g se puede borrar con DROP DATABASE; (slo montada).

Administracin y Ajuste de Oracle 10g

DISEO Y CREACIN DE UNA BD

453

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

OMF permite que Oracle se encargue de la creacin de los ficheros


que componen la BD, simplificando la administracin de la misma.
OMF se activa mediante dos parmetros de inicializacin:

Nota. Se pueden activar ambos parmetros o slo uno ellos.

Ejemplo para crear una BD, usando OMF, separando los ficheros
redolog y de control del resto:
Parmetros de inicializacin (indicando dos copias de redolog y control):
DB_CREATE_FILE_DEST='/u02/oradata/CURSOxy'
DB_CREATE_ONLINE_LOG_DEST_1='/u03/oradata/CURSOxy'
DB_CREATE_ONLINE_LOG_DEST_2='/u04/oradata/CURSOxy'

Creacin de la BD:
CREATE DATABASE DEFAULT TABLESPACE USERS
DEFAULT TEMPORARY TABLESPACE TEMP
UNDO TABLESPACE UNDO_RBS;
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DISEO Y CREACIN DE UNA BD

454

DBCA (DataBase Configuration


Assistant)

DB_CREATE_FILE_DEST. Define el directorio donde se ubicarn los


ficheros.
DB_CREATE_ONLINE_LOG_DEST_N. Establece los directorios donde se
guardarn (multiplexados) los ficheros redolog; donde N puede valer de 1
a 5.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ORACLE MANAGED FILES (OMF)

rem *** CREACION DE LAS VISTAS DEL DD ***


@$ORACLE_HOME/rdbms/admin/catalog.sql
@$ORACLE_HOME/rdbms/admin/catproc.sql

DISEO Y CREACIN DE UNA BD

455

En Unix/Linux se ejecuta con dbca. Se trata de un asistente grfico


que permite:
Crear una BD. A partir de plantillas predefinidas, que contienen:
Slo la estructura. Se pueden cambiar todos los parmetros
del init.
Tambin con ficheros: no se puede cambiar nada.
Aadir opciones a una BD existente (Java, Intermedia, Spatial,
OLAP, etc).
Borrar una BD.
Gestionar plantillas de BD: crear una plantilla a partir de otra, o a
partir de slo la estructura de una BD, o tambin incluyendo los
datos de la misma.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DISEO Y CREACIN DE UNA BD

456

VISTAS DEL DD

PRACTICAS TEMA 2

V$DATABASE (Base de datos).

V$INSTANCE (Instancia).

V$SGAINFO (SGA). Nuevo en 10g es V$SGAINFO.

V$SGA_DYNAMIC_COMPONENTS (Zonas dinmicas de la SGA).

V$SGASTAT (SGA detallada).

V$SHARED_POOL_ADVICE (Estimaciones de tamao de la SharedPool)

V$BUFFER_POOL (Buffers en la cach de datos)


V$DB_CACHE_ADVICE (Estimaciones db_cache_size)
V$PGA_TARGET_ADVICE (Estimaciones pga_aggregate_target)
V$SQLAREA (Sentencias SQL).

V$PROCESS (Procesos).

V$BGPROCESS (Procesos background).

V$DATAFILE (Ficheros de datos de la BD).

V$CONTROLFILE (Ficheros de control de la BD).

V$LOGFILE (Ficheros redo log de la BD).

Administracin y Ajuste de Oracle 10g

DISEO Y CREACIN DE UNA BD

457

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

2.1. Disear una BD teniendo en cuenta las contiendas de E/S y la


organizacin de los tablespaces bsicos. Suponer 4 discos: /u01 (SW)
y /u02, /u03, /u04 (BD).
2.2. Crear un init.ora, diseando requerimientos de memoria,
suponiendo 4Gb de RAM y 21 instancias con 10 usuarios cada una. Se
puede usar un mximo del 64% de la RAM para las SGAs de todas las
bases de datos. Los checkpoints sucedern cuando se llene el fichero
redolog y, como mximo, cada 30 minutos. La gestin de rollback ser
automtica. Tendremos dos copias del fichero de control en /u02 y
/u03.
2.3. Crear la BD que hemos diseado anteriormente, y para la que
tambin hemos creado un init.ora. Hacerlo manualmente con CREATE
DATABASE. El nombre de la BD ser ALUxy. Antes de lanzar el
comando de creacin, ponte de acuerdo con un compaero para que
no lo hagais a la vez.
2.4. Crear la misma BD usando OMF, y cambiando el nombre por
OMFxy.
2.5. Consultar el Simulador de DBCA.

Administracin y Ajuste de Oracle 10g

DISEO Y CREACIN DE UNA BD

458

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 3.
ESTRUCTURAS DE
ALMACENAMIENTO
Bloques, extensiones y segmentos.

TEMA 3
ESTRUCTURAS DE ALMACENAMIENTO

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

459

Varios tamaos de bloque en la misma BD.


Formato del bloque.
Generacin del espacio libre en un bloque.
Estructura de la fila.
Extensiones y su asignacin.
Segmentos.
Gestin automtica del espacio de los segmentos.
Comprimir los datos de un segmento.
Mtodos de acceso a datos: ndices B-tree y Bitmap.
RECYCLEBIN y drop table.
Envo de correo con UTL_MAIL.
Encolar y/o suspender la BD.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

460

BLOQUES, EXTENSIONES Y
SEGMENTOS

DIFERENTES TAMAOS DE
BLOQUE EN LA MISMA BD

La unidad mnima de asignacin de espacio


es el bloque de datos (mltiplo del bloque
del S.O.: 2, 4, 8, 16 y 32Kb); de modo que
un conjunto contiguo de bloques forman
una extensin. Y las extensiones forman
segmentos de una determinada estructura
de
datos
(tablas,
ndices,
rollback,
temporal, etc).
Oracle asigna espacio a un segmento en
unidades de una extensin. Todas las
extensiones de un mismo segmento residen
en el mismo tablespace.
Oracle pide espacio en mltiplos del bloque
de datos, cuyo tamao se indica con el
parmetro db_block_size.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

461

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

GENERACION DE ESPACIO LIBRE


Oracle recomienda el uso de la gestin automtica
EN(>=9i).
UN BLOQUE

FORMATO DEL BLOQUE

Aunque el parmetro db_block_size define el tamao del bloque estandar de


la BD, se pueden usar otros tamaos (>=9i) indicndolo a nivel de
tablespace, y definiendo la correspondiente cach de datos con el nuevo
tamao de bloque.
La Database Buffer Cache consta de tres cachs independientes:
DB_CACHE_SIZE. Dimensiona la cach por defecto, que siempre existe y
cuyo tamao no puede valer cero.
DB_KEEP_CACHE_SIZE. Dimensiona la cach donde se guardarn los
bloques de tablas que se usan con mucha frecuencia.
DB_RECYCLE_CACHE_SIZE. Dimensiona la cach que almacena los
bloques de las tablas que se usan muy poco.
El uso de una u otra cach lo indicaremos con el parmetro
BUFFER_POOL, de la clausula STORAGE de la tabla (a nivel de particin
no): keep, recycle o default.
DB_nK_CACHE_SIZE (>=9i). Dimensiona hasta 4 cachs con tamao de
bloque no estandar, con n=2,4,8,16,32.
Al crear un tablespace, con la clausula BLOCKSIZE, se puede especificar una
tamao de bloque no estandar. Para ello debe estar definido el parmetro
DB_CACHE_SIZE y, al menos, un DB_nK_CACHE_SIZE; de forma que n
coincida con el valor que acompaa a BLOCKSIZE. No se pueden indicar
tamao de bloque no estandar para tablespaces temporales.

Cabecera: informacin general del


bloque (direccin del bloque, tipo
de segmento, etc). 4 bytes.
Directorio de tabla: informacin
sobre la tabla. 4 bytes.
Directorio de filas: informacin
sobre las filas que actualmente
contiene el bloque (direcciones,
etc). 2 bytes por fila.
Overhead (es el conjunto de los
tres anteriores). Como media, su
tamao oscila entre 84 y 107 bytes.
Datos

Espacio libre: se usa para inserts y updates, y tambin para registrar las
transacciones (transaction entries, unos 23 bytes por cada una).
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

463

462

del espacio libre

Se hace al crear un tablespace con SEGMENT SPACE MANAGEMENT


AUTO.

Sentencias que generan espacio libre en un bloque: delete y update.


Dicho espacio quedar disponible para los inserts posteriores si:
El insert sucede en la misma transaccin que libera espacio.
Sucede en otra transaccin despus del commit de la primera.

El espacio libre no tiene por qu estar contiguo. Slo se compactar


si al hacer un insert/update hay suficiente espacio libre, pero no est
contiguo.
Row Chaining (y Migration). Si una nueva fila no cabe en un bloque,
ser almacenada en una cadena de bloques (dos o ms). Si se
trata de una fila que aumenta de tamao por un update, y no cabe
en el bloque, su contenido ser migrado a otro bloque,
manteniendo un puntero en el bloque original.
Se reservar, al menos, el espacio libre indicado por PCTFREE (%)
para actualizaciones. Cuando el espacio libre baje a pctfree, no se
permitirn ms inserciones (hasta que el espacio ocupado no baje de
PCUSED).
Nota:
Administracin
y Ajuste
de Oracle 10g con gestin automtica
los tablespaces
deDE
segmentos
ESTRUCTURAS
464
ALMACENAMIENTO
(>=9i) no necesitan PCTUSED.
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

EXTENSIONES Y SU
ASIGNACIN

ESTRUCTURA DE LA FILA

Estructura de la fila:
Cabecera: 3 bytes (de ellos un byte para ncolumnas).
Rowid: 6 bytes (1 para el fichero, 4 para el bloque y 1 para fila
dentro del bloque).
Cabecera de columna: 1byte (o 3bytes si columna>250bytes).
Columna: datos (si null, no ocupa espacio).
Cabecera de columna.
Columna ...
Longitud de las columnas:
char(n): n bytes.
varchar2(n): hasta n bytes.
Date: 8 bytes desde 9i (antes 7 bytes)
number(n,m): n/2(entero mayor), ms 1 byte. Por ejemplo:
number(9,2), 9/2=4.5, 5+1=6.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

Uniform Size. Puedes indicar el tamao de la extensin (al menos 5


bloques) o usar el valor por defecto (1M). Los tablespaces temporales
locales slo pueden usar este tipo de asignacin de extensiones.
Autoallocate. Puedes definir la extensin inicial y Oracle determina el
tamao ptimo para las siguientes (tamao mnimo 64Kb). Es el defecto
para tablespaces permanentes.
Si el tablespace se crea con gestin automtica de segmentos y
db_block_size>=16K, el tamao mnimo de la extensin ser 1M.

465

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

466

GESTION AUTOMATICA DEL


ESPACIO DE LOS SEGMENTOS

Un segmento es un conjunto de extensiones que contienen todos los


datos de una estructura lgica de almacenamiento especfica, dentro
de un tablespace (segmentos de datos, segmentos de ndice,
segmentos temporales, etc).
El primer bloque de un segmento (Header) contiene un directorio de
las extensiones que lo integran.
Segmento de datos: es una tabla normal, o una particin de una
particionada, o un cluster de tablas.
Segmento de ndices: ndice no particionado, o particin de uno
particionado. No tienen que estar en el mismo tablespace que las
tablas correspondientes.
Segmentos temporales: Oracle los usa para hacer ordenaciones, que
no caben en memoria: create index, select ... order by, select distinct,
select ... group by, select ... union, select ... intersect, select ... minus.
Tambin se usan para crear tablas temporales y sus ndices (son
tablas que contienen datos slo durante una transaccin o una sesin).
Se puede mejorar su rendimiento ajustando el parmetro
sort_area_size. Sin MTS, usar pga_aggregate_target para todas las
reas de sort de todas las sesiones (todas las PGAs).

Administracin y Ajuste de Oracle 10g

Para asignar una extensin a un segmento, en un tablespace local,


Oracle busca en el bitmap del fichero el nmero requerido de bloques
libres contiguos.
Las extensiones vacas no se devuelven al tablespace hasta que se
borra el objeto (drop table/cluster), a no ser que hagamos TRUNCATE
... DROP STORAGE; o ALTER TABLE ... DEALLOCATE UNUSED;.

Administracin y Ajuste de Oracle 10g

SEGMENTOS

Una extensin es una unidad lgica de almacenamiento compuesta por


un conjunto de bloques contiguos. Una o ms extensiones componen
un segmento.
Oracle recomienda usar tablespaces manejados localmente (>=8i),
con extensiones de tamao uniforme (uniform size) o variable
(autoallocate), donde ya no sirven los parmetros initial, next,
pctincrease, minextents, maxextents del default storage:

ESTRUCTURAS DE
ALMACENAMIENTO

467

Desde la versin 9i se incluye la posibilidad de gestionar el espacio de


los segmentos automticamente, siendo ms fcil, con mejor
utilizacin del espacio, y tambin mejor rendimiento en las operaciones
concurrentes de insercin.
Cada segmento contiene un bitmap que describe el estado de
ocupacin de cada bloque, y que se guarda en un conjunto
independiente de bloques.
Se puede activar slo para los tablespaces permanentes manejados
localmente, excepto el SYSTEM:
CREATE TABLESPACE TSP_CURSO
DATAFILE '/u02/oradata/CURSO/tsp_curso01.dbf' SIZE 10M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K
SEGMENT SPACE MANAGEMENT AUTO;
Se ignoran las clausulas PCTUSED, FREELISTS y FREELISTS GROUPS.

Una vez creado un tablespace local con gestin automtica del espacio
de los segmentos, no tiene vuelta atrs.
Oracle recomienda la gestin automtica porque obtiene mayor
rendimiento y es mucho ms fcil de mantener.
Ya no hace falta PCTUSED.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

468

COMPRESION DE LOS
SEGMENTOS DE DATOS

METODOS DE ACCESO A DATOS


B-TREE
Y BITMAP
INDICES
Usaremos ndices
B-tree,
en general, cuando

Podemos indicar la clausula COMPRESS al crear una tabla (por defecto


ser NOCOMPRESS), para que Oracle intente comprimir los datos
(excepto para tipos LOB y tablas IOT). Esto es muy til en entornos con
muy pocas actualizaciones (insert/update), como datawarehouse.
Se reduce el uso de disco y memoria (cach de datos) y se recomienda
para las operaciones de slo lectura.
Los datos se comprimen, en cada bloque, eliminando los valores
repetidos de una misma columna, que se guardan en una tabla. El
factor de compresin ser mayor en bloques con valores repetidos. Se
pueden reorganizar las filas agrupando valores repetidos de una
columna en el mismo bloque: create table as select order by,
ordenando por columnas con baja cardinalidad.
Al crear un tablespace, podemos indicar COMPRESS en la clausula
DEFAULT; para que por defecto, se compriman los datos en las tablas
que contenga.

vayamos a hacer
consultas que acceden frecuentemente a no ms del 10-15% de las
filas de la tabla.
Comprobar si un ndice se usa (>=9i):
ALTER INDEX nombre MONITORING USAGE; (activa seguimiento)
SELECT * FROM V$OBJECT_USAGE; (comprueba uso)
ALTER INDEX nombre MONITORING USAGE; (desactiva seguimiento)

Vistas donde ver estadsticas de ndices:


dba_indexes: dbms_stats.gather_index_stats('owner','indice');
index_stats: analyze index i_nombre validate structure;
v$segment_statistics (statistics_level=typical u all)
Falsos mitos sobre degradacin de ndices:
Con el tiempo el arbol b-tree puede perder el balanceo. NUNCA.
Con los borrados se va perdiendo espacio. NO, el espacio se
reutiliza.
Si los niveles del rbol llegan a 'x', el ndice se vuelve ineficiente.
NO.
En general no ser necesario, pero podemos reconstruir un ndice:
alter index i_nombre rebuild;
Indices Bitmap; muy tiles para accesos en slo lectura sobre
columnas de baja cardinalidad, en tablas muy grandes (aplicaciones
DSS). Muy eficientes para predicados OR. No usarlos si se hacen
updates con frecuencia (aplicaciones OLTP). Bloqueos a nivel de
segmento de bitmap (no de fila).
create bitmap index i_b_nombre on t_tabla (cols) tablespace tsp_nombre;

Las IOT son tablas almacenadas en un ndice B-tree. Son tiles para
tablas estaticas que se acceden con frecuencia por la clave primaria
(casi todas
susdecolumnas
forma parte de la PK), y que no van a tener
Administracin
y Ajuste
Oracle 10g
ESTRUCTURAS DE
470
ningn otro
ndice.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

469

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ENVIAR CORREO DESDE ORACLE


Paquete UTL_MAIL

RECYCLE BIN Y DROP TABLE

RECYCLE BIN (>=10g). Contenedor donde Oracle guarda las


tablas borradas (a no ser q se borre con la opcin PURGE).
DBA_RECYCLEBIN. Ver todas las tablas borradas. En
USER_RECYCLEBIN o RECYCLEBIN, slo las mas. Tb con SHOW
RECYCLEBIN (desde sql*plus).
Se puede desactivar con parmetro del init recyclebin = off
(por defecto on). Tb con ALTER SYSTEM | SESSION ....
Recuperar tabla borrada:
FLASHBACK TABLE tablaBorrada TO BEFORE DROP;
Borrar definitivamente:
PURGE TABLE tabla; (tb PURGE INDEX)

Slo van a RECYCLEBIN los ndices de las tablas borradas (no con
DROP INDEX)

PURGE RECYCLEBIN | DBA_RECYCLEBIN;


PURGE TABLESPACE nomtsp [USER usuario];
Borrar directamente sin pasar por RECYCLEBIN:
DROP TABLE tabla PURGE;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

ALMACENAMIENTO

471

El paquete UTL_MAIL (>=10g) no se instala por defecto por razones de


seguridad.
Instalar UTL_MAIL desde el SYS:
SQL> @$ORACLE_HOME/rdbms/admin/utlmail.sql
SQL> @$ORACLE_HOME/rdbms/admin/prvtmail.plb

Para poder usar UTL_MAIL hay que definir el parmetro


SMTP_OUT_SERVER, en el init:
smtp_out_server='miServidorDeCorreo.miDominio'

Una vez arrancada la BD con el nuevo parmetro, podremos enviar un


mensaje con utl_mail.send:
SQL> exec
utl_mail.send('remitente@dominio','destinatario@um.es',nu
ll,null,'Prueba desde Oracle 10g','La fecha actual es '||
to_char(sysdate,'dd/mm/yyyy hh24:mi:ss'))
PL/SQL procedure successfully completed.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

472

ENCOLAR Y SUSPENDER LA BD
Quiesce y Suspend

VISTAS DEL DD

Encolar la BD (>=9i). Util si el DBA necesita que no haya


transacciones ni consultas concurrentes a la suya. Espera a que
terminen
transacciones/consultas
(se
pueden
ver
en
V$BLOCKING_QUIESCE) e impide nuevas (excepto de SYS/SYSTEM).
Slo desde SYS/SYSTEM. V$INSTANCE.ACTIVE_STATE:
ALTER SYSTEM QUIESCE RESTRICTED;
ALTER SYSTEM UNQUIESCE;
Suspender la BD (>=9i). Util para copias de seguridad en caliente.
Suspende E/S a ficheros de datos y control (los tablespaces deben
estar en modo hot backup con ALTER TABLESPACE BEGIN BACKUP).
Slo SYS/SYSTEM. V$INSTANCE.DATABASE_STATUS. Ojo !!!, no
cerrar la sesin que hace el SUSPEND pues es la nica que puede
hacer RESUME:
ALTER TABLESPACE nomtsp BEGIN BACKUP;
...
ALTER SYSTEM SUSPEND;
// Copiamos ficheros de la BD (necesitar recuperar la
instancia, pues no se hace checkpoint).
ALTER SYSTEM RESUME;
ALTER TABLESPACE nomtsp END BACKUP;
...

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

473

DBA_EXTENTS (Extensiones que componen los segmentos).

DBA_FREE_SPACE (Extensiones libres en cada tablespace).

DBA_INDEXES (Indices creados sobre tablas de la BD, con


estadsticas).

INDEX_STATS (estadsticas de ndices)

V$SEGMENT_STISTICS (estadsticas de segmentos)

DBA_RECYCLEBIN (objetos borrados con DROP, sin indicar PURGE)

V$INSTANCE (Datos de la instancia, incluyendo si est encolada y/o


suspendida)

SELECT DBMS_METADATA.GET_DDL('TABLE','T1') FROM DUAL;


(muestra la sentencia DDL para crear la tabla T1).

SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT',
USUARIO'); (muestra las sentencias GRANT q otorgan al usuario los
privilegios que tiene. Adems de OBJECT_GRANT, se puede indicar
SYSTEM_GRANT y ROLE_GRANT).

Administracin y Ajuste de Oracle 10g

3.3. Crear una tabla TABLA01 en el tablespace anterior, con una


columna VARCHAR2(1000). Insertar tres filas de forma que
ocupe varias extensiones. Borrar todas las filas con delete y
comprobar las extensiones de la tabla. Hacer truncate table y
comprobar de nuevo el espacio ocupado por la tabla.
3.4. Crear una tabla TABLA02 con una sola columna
varchar2(100); y otra llamada TABLA02COMPRI igual que la
anterior, pero con compresin de datos. Insertar 1000 filas en
TABLA02 y, luego, esas mismas 1000 en TABLA02COMPRI.
Cuntos bloques necesita cada tabla para almacenar las mismas
filas?

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBA_SEGMENTS (Segmentos que hay en los tablespaces).

ESTRUCTURAS DE
ALMACENAMIENTO

474

PRACTICAS TEMA 3

3.1. Comprobar el tamao del bloque de la BD. Cuntas cachs


de datos hay definidas?. Definir la cach keep con 1M. Definir
tambin una cach para bloques de 4Kb, con 1M.
3.2. Crear un tablespace SEGAUTO con gestin automtica de
segmentos.

Administracin y Ajuste de Oracle 10g

DBA_TABLESPACES (Tablespaces de la BD).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PRACTICAS TEMA 3

ESTRUCTURAS DE
ALMACENAMIENTO

475

3.5. Crear tablespace TSP4K con tamao de bloque de 4Kb. Crear


una tabla TABLA03, igual que TABLA01, y comprobar cuantos
bloques ocupan las dos y comparar los datos.
3.6.
Comprobar
los
parmetros
pga_aggregate_target,
workarea_size_policy y sort_area_size. Se puede poner
pga_aggregate_target=0?
cmo
desactivar
pga_aggregate_target?
3.7. Crear una TABLA04 en el tablespace SEGAUTO, con cuatro
columnas: c1 char(2), c2 varchar2(10), c3 date y c4
number(10,2). Estimar el tamao medio de la fila, y el nmero
medio de filas por bloque. insertar 100 filas en la tabla , calcular
las estadsticas y comprobar los datos calculados (nmero de
filas, nmero de bloques y longitud media de la fila).
3.8. Instalar el paquete UTL_MAIL y configurar el parmetro del
init smtp_out_server. Hacer una prueba de envo de correo con
utl_mail.send.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE
ALMACENAMIENTO

476

TEMA 4.
NUEVAS FUNCIONALIDADES DE
MONITORIZACIN Y AJUSTE.

TEMA 4
NUEVAS FUNCIONALIDADES DE
MONITORIZACIN Y AJUSTE

Administracin y Ajuste de Oracle 10g

477

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

478

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUTOMATIC WORKLOAD
REPOSITORY (AWR)

NUEVA INFRAESTRUCTURA
Nueva infraestructura = AWR + Time Model + ASH (El parmetro
STATISTICS_LEVEL debe valer TYPICAL u ALL).
Automatic Workload Repository (AWR). Vistas v$ + volcado a disco,
por defecto cada 60min y mx 7 das (procesos MMON, MMNL). Mejor q
STATSPACK.
EXECUTE dbms_workload_repository.create_snapshot();
Active Session History (ASH). Recopila muestras cada segundo de las
sesiones activas de V$SESSION: V$ACTIVE_SESSION_HISTORY,
DBA_HIST_ACTIVE_SESS_HISTORY.
Nuevo Time Model: estadsticas y mtricas relativas al tiempo
consumido por las sesiones.
Time Model (DB time, DB CPU, etc): V$SYS_TIME_MODEL,
V$SESS_TIME_MODEL.
Wait Classes: V$SYSTEM_WAIT_CLASS, V$SESSION_WAIT_CLASS.
Metrics (cada 60seg): V$SYSMETRIC, V$SESSMETRIC,
V$FILEMETRIC, V$EVENTMETRIC, V$WAITCLASSMETRIC,
V$METRICNAME.
OS statistics. V$OSSTAT.
Automatic Database Diagnostic Monitor (ADDM). En base a los datos
recopilados por AWR y ASH, identifica problemas y sus posibles causas,
proporcionando recomendaciones e indicando los beneficios q se
obtendrn.
$ORACLE_HOME/rdbms/admin/addmrpt.sql
Administracin
y Ajuste de Oracle 10g
NUEVAS FUNCIONALIDADES DE

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Nueva infraestructura.
AWR (Automatic Workload Repository).
Vistas AWR.
ADDM (Automatic Database Diagnostic Monitor).
DBMS_ADVISOR.
SQL Tuning Advisor.
Segment Shrink.
Segment Advisor.
UNDO Advisor.

AJUSTE Y MONITORIZACION

479

Snapshots. Config en DBA_HIST_WR_CONTROL. Ej de cambio a intervalo de 30das cada


30min (expresado en minutos y si intervalo=0 no se calculan ms snapshots):
DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(43200,30);
DBMS_WORKLOAD_REPOSITORY.drop_snapshot_range (22, 32); -- Borra rango
Baselines. Pareja de snapshots (q ya no se borrarn).
DBMS_WORKLOAD_REPOSITORY.create_baseline (210, 220, 'batch baseline'); -Snapshots inicial y final, y nombre para el baseline
DBMS_WORKLOAD_REPOSITORY.drop_baseline ( 'batch baseline', 'FALSE); -- Si
TRUE, borra los snaphosts asociados
Informes AWR en $ORACLE_HOME/rdbms/admin (con salida en HTML o TEXTO):
awrrpt.sql, pedir formato salida (text o html), los snapshots inicial y final, y el nombre
del fichero del informe. Existe awrrpti.sql q permite seleccionar una instancia.
awrsqrpt.sql, muestra estadsticas de una sentencia SQL para un rango de snapshots.
awrddrpt.sql, compara atributos detallados de rendimiento y valores de configuracin
entre dos perodos de tiempo.
Informe ASH (V$ACTIVE_SESSION_HISTORY):
$ORACLE_HOME/rdbms/admin/ashrpt.sql.
OEM. Incluye las tareas del administracin del AWR. Acceso desde enlace
"Administracin", seguido de "Repositorio de Carga de Trabajo Automtica" bajo "Gestin
de Estadsticas". Permitiendo modificar la configuracin de AWR y gestionar los snapshots.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

480

AUTOMATIC DATABASE
DIAGNOSTIC MONITOR (ADDM)

VISTAS AWR

Se puede forzar la creacin de un snapshot, manualmente:


EXECUTE
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
Vistas AWR:
V$ACTIVE_SESSION_HISTORY. Muestras de sesiones activas recopiladas cada
segundo (ASH).
V$METRIC. Mtricas recopiladas.
V$METRICNAME. Tipos de mtricas y agrupaciones de las mismas.
V$METRIC_HISTORY. Histrico de mtricas recopiladas.
V$METRICGROUP. Grupos de mtricas.
DBA_HIST_ACTIVE_SESS_HISTORY. Histrico de ASH.
DBA_HIST_BASELINE. Baselines.
DBA_HIST_DATABASE_INSTANCE. Arranques de la BD.
DBA_HIST_SNAPSHOT. Snapshots recopiladas.
DBA_HIST_SQL_PLAN. Planes de ejecucin de sentencias SQL.
DBA_HIST_WR_CONTROL. Configuracin del AWR.

Ms informacin sobre AWR:


http://cursos.atica.um.es/oradoc102/server.102/b14211/autostat.htm#i27008
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

481

Se activa por defecto (statistics_level = TYPICAL u ALL; se desactiva con BASIC).


Informes. Entre dos snapshots del AWR. Da recomendaciones para reducir la estadstica
DB time (V$SYS_TIME_MODEL) o tiempo total acumulado por la BD para atender las
consultas/actualizaciones de las sesiones activas (
http://download.oracle.com/docs/cd/B19306_01/server.102/b28051/tdppt_method.htm#CIHCDGCI).
$ORACLE_HOME/rdbms/admin/addmrpt.sql. Tb usando el paquete
DBMS_ADVISOR.
Anlisis de resultados. El informe estructura los problemas de rendimiento encontrados en
FINDINGS, indicando el porcentaje de impacto; y para cada uno nos da recomendaciones,
indicando qu hacer (ACTION) y el por qu (RATIONALE).
Para el anlisis de E/S, por defecto, se toma un valor de 10000 microsegundos para la lectura
de un bloque de la BD. Si calculamos el valor real para nuestra BD, podemos cambiarlo con:
EXECUTE DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER(
'ADDM', 'DBIO_EXPECTED', 8000);
Vistas del DD:
DBA_ADVISOR_TASKS: ejecuciones de ADDM (tareas) con su identificacin.
DBA_ADVISOR_LOG: log de tareas ADDM (parece estar incluido en el anterior).
DBA_ADVISOR_RECOMMENDATIONS. Recomendaciones resultantes del anlisis.
Ordenar por RANK (importancia) y ver BENEFIT.
DBA_ADVISOR_FINDINGS. Problemas encontrados en el anlisis.
Ms informacin sobre ADDM:
http://cursos.atica.um.es/oradoc102/server.102/b14211/diagnsis.htm#sthref433

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

EJECUTAR ADDM CON


DBMS_ADVISOR
CREATE OR REPLACE FUNCTION run_addm(start_time IN DATE, end_time IN DATE )
RETURN VARCHAR2
IS
begin_snap
NUMBER;
end_snap
NUMBER;
tid
NUMBER;
-- Task ID
tname
VARCHAR2(30); -- Task Name
tdesc
VARCHAR2(256); -- Task Description
BEGIN
-- Busca los ids de los snapshots correspondientes al rango de fechas.
SELECT max(snap_id) INTO begin_snap FROM DBA_HIST_SNAPSHOT
WHERE trunc(end_interval_time, 'MI') <= start_time;
SELECT min(snap_id) INTO end_snap FROM DBA_HIST_SNAPSHOT
WHERE end_interval_time >= end_time;
-- Nombre de tarea = NULL y genera descripcion unica para la tarea.
tname := '';
tdesc := 'run_addm( ' || begin_snap || ', ' || end_snap || ' )';
-- Crea la tarea y la ejecuta.
DBMS_ADVISOR.CREATE_TASK('ADDM', tid, tname, tdesc );
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'START_SNAPSHOT', begin_snap );
DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'END_SNAPSHOT' , end_snap );
DBMS_ADVISOR.EXECUTE_TASK(tname);
Administracin
NUEVAS FUNCIONALIDADES DE
RETURN tname;y Ajuste de Oracle 10g
AJUSTE Y MONITORIZACION
END;
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

482

OBTENER INFORME ADDM CON


DBMS_ADVISOR
-- Configura variables y columnas SQL*Plus necesarias para el informe.
SET PAGESIZE 0 LONG 1000000 LONGCHUNKSIZE 1000;
COLUMN get_clob FORMAT a80;
-- Ejecuta run_addm() con parmetros 7pm y 9pm del dia 20 de Octubre.
VARIABLE task_name VARCHAR2(30);
BEGIN
:task_name := run_addm( TO_DATE('19:00:00 20/10', 'HH24:MI:SS DD/MM'),
TO_DATE('21:00:00 20/10', 'HH24:MI:SS DD/MM'));
END;
/
-- Ejecuta GET_TASK_REPORT para obtener el texto del informe.
SELECT DBMS_ADVISOR.GET_TASK_REPORT(:task_name)
FROM DBA_ADVISOR_TASKS t
WHERE t.task_name = :task_name
AND t.owner = SYS_CONTEXT( 'userenv', 'session_user' );

483

Nota: la variable LONG de SQL*Plus debe asignarse a un valor suficiente para mostrar el informe
completo de ADDM, ya que la funcin DBMS_ADVISOR.GET_TASK_REPORT devuelve un
Administracin
y Ajuste de Oracle 10g
NUEVAS FUNCIONALIDADES DE
CLOB.
484
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACION

SQL TUNNING ADVISOR


DBMS_SQLTUNE

SQL TUNING ADVISOR

Asesor de Ajustes SQL


http://cursos.atica.um.es/oradoc102/server.102/b14211/sql_tune.htm
Verifica la validez de las estadsticas y si es necesario genera
estadsticas auxiliares.
Determina si es necesario crear estructuras de acceso: ndices y/o
vistas materializadas.
OEM: Enlaces Relacionados (abajo) -> Central de Asesores ->
Asesor de Ajustes SQL (bajo Asesores).
Paquete DBMS_SQLTUNE (
http://cursos.atica.um.es/oradoc102/appdev.102/b14258/d_sqltun.htm#
).
Crear tarea de ajuste de SQL (DBMS_SQLTUNE.CREATE_TUNING_TASK)
Ejecutar tarea de ajuste de SQL
(DBSM_SQLTUNE.EXECUTE_TUNING_TASK)
Generar informe correspondiente a la tarea
(DBMS_SQLTUNE.REPORT_TUNING_TASK).
Generar script con las recomendaciones del informe
(DBMS_SQLTUNE.SCRIPT_TUNING_TASK).
Vistas relacionadas:
DBA_SQLTUNE_STATISTICS, DBA_SQLTUNE_BINDS,

Administracin
y Ajuste de Oracle 10g
DBA_SQLTUNE_PLANS.

NUEVAS FUNCIONALIDADES DE

AJUSTE Y MONITORIZACION
V$SQL, V$SQLAREA, V$SQLSTATS, V$SQL_BINDS.

485

Seleccionar sentencias SQL q ya se han ejecutado:


-- Sentencias sql con ms de 500 buffer gets.
SELECT sql_id, sql_text
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('buffer_gets > 500'))
ORDER BY sql_id;
-- Sentencias sql de miUsuario con ms de 500 buffer gets.
SELECT sql_id, sql_text
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('buffer_gets > 500 and
parsing_schema_name = ''miUsuario''')) ORDER BY sql_id;
-- Sentencias sql que tardaron ms de 5 segundos
SELECT sql_id, sql_text
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('elapsed_time > 5000000'))
ORDER BY sql_id;
-- Datos de una sentencia concreta.
SELECT *
FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('sql_id =
''4rm4183czbs7j'''));
Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SQL TUNNING ADVISOR


DBMS_SQLTUNE

SQL TUNNING ADVISOR


DBMS_SQLTUNE

Diferentes formas de crear tareas de ajuste SQL.

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

variable stmt_task VARCHAR2(64);

-- Ejecuto la tarea de ajuste.


EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:stmt_task);

-- Con el texto de la sentencia.


EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK( sql_text => 'select quantity_sold from sales s, times t where
s.time_id = t.time_id and s.time_id = TO_DATE(''29/01/07'')');

-- Compruebo si la tarea ha terminado.


SELECT status FROM USER_ADVISOR_TASKS WHERE task_name = :stmt_task;
-- Genero el informe.
SET LONG 1000000 LONGCHUNKSIZE 100000 LINESIZE 100 PAGESIZE 10000
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:stmt_task) FROM DUAL;

-- Con el identificador (Sql_id en cursor cache)


EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id =>
'ay1m3ssvtrh24');

-- Genero el script para aplicar las correcciones sugeridas por el


-- informe anterior.
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task) FROM DUAL;

-- Limitando el tiempo de ajuste a 10 minutos


EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id =>
'ay1m3ssvtrh24', time_limit => 600);
-- Indicando un intervalo de snapshots del AWR
EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(begin_snap => 1, end_snap => 2, sql_id => 'ay1m3ssvtrh24');

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

486

487

Nota: Desde sqlplus es necesario hacer set long 1000000 (puede q con
menos sea suficiente) para poder ver el clob completo devuelto por
dbms_sqltune.report_tuning_task y dbms_sqltune.script_tuning_task.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

488

SEGMENT ADVISOR
Segment SHRINK

SEGMENT ADVISOR
Ejecucin manual

Esta operacin compacta el contenido de un segmento y devuelve


extensiones libres.

Para ejecutarlo hacen falta los privilegios ADVISOR y CREATE JOB o


CREATE ANY JOB. Desde OEM: Enlaces relacionados (abajo) ->
Central de Asesores -> Asesor de segmentos (bajo Asesores).
Manualmente:

-- Para poder reorganizar las filas de una tabla hay q permitir q


-- puedan cambiar los rowids
ALTER TABLE mitabla ENABLE ROW MOVEMENT;
-- Reorganiza las filas de una tabla y todos sus segmentos (p.e. LOBS)
ALTER TABLE mitabla SHRINK SPACE CASCADE;
-- Reorganiza slo un LOB
ALTER TABLE mitabla MODIFY LOB (milob) (SHRINK SPACE);
-- Reorganiza una sola particin de una tabla particionada
ALTER TABLE mitablapart MODIFY PARTITION mipart1 SHRINK SPACE;
-- Reorganiza un IOT y el segmento de overflow
ALTER TABLE mitablaiot SHRINK SPACE CASCADE;
-- Reorganiza slo el segmento de overflow de un IOT
ALTER TABLE mitablaiot OVERFLOW SHRINK SPACE;
-- Libera las extensiones que estn vacas
ALTER TABLE mitabla DEALLOCATE UNUSED KEEP integer;
ALTER INDEX miindice DEALLOCATE UNUSED KEEP integer;
ALTER CLUSTER micluster DEALLOCATE UNUSED KEEP integer;
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

489

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SEGMENT ADVISOR
Ver resultados

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

490

UNDO ADVISOR
DBMS_UNDO_ADV

select af.task_name, ao.attr2 segname, ao.attr3 partition, ao.type,


af.message, af.more_info
from dba_advisor_findings af, dba_advisor_objects ao
where ao.task_id = af.task_id and ao.object_id = af.object_id and
af.task_id=:id;
(Genera la siguiente salida)
...
The free space in the object is less than 10MB.
Allocated Space:3145728: Used Space:3000902: Reclaimable Space :144826:

AUTOMATIC SEGMENT ADVISOR (ASA). Identifica segmentos


candidatos a shrink. No analiza todos los objetos de la BD. Examina
las estadsticas de la BD y muestras de segmentos, para seleccionar:
tablespaces que se acercan a los niveles crticos o de alerta, segmentos
con ms activiidad y segmentos que han crecido ms.
Intervalo de ejecucin de ASA: MAINTENANCE_WINDOW_GROUP (L-V
una vez a partir de las 22h y hasta 6h; y S una vez a partir de las 0h
hasta 0h del L)
Vistas del ASA:
DBA_AUTO_SEGADV_SUMMARY: ejecuciones de ASA.
DBA_AUTO_SEGADV_CTL: objetos seleccionados para ser analizados.
Ms info:
http://cursos.atica.um.es/oradoc102/server.102/b14231/schema.htm#CHDHBHAB
Administracin
y Ajuste de Oracle 10g
NUEVAS FUNCIONALIDADES DE

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

variable id number;
declare
name varchar2(100);
descr varchar2(500);
obj_id number;
begin
name:='miTablaSegAdv';
descr:='Ejemplo con Segment Advisor';
dbms_advisor.create_task (advisor_name => 'Segment Advisor', task_id
=> :id, task_name => name, task_desc => descr);
dbms_advisor.create_object (task_name => name, object_type =>
'TABLE', attr1 => 'miUsuario', attr2 => 'miTabla', attr3 => NULL,
attr4 => NULL, attr5 => NULL, object_id => obj_id);
dbms_advisor.set_task_parameter(name, 'recommend_all', 'TRUE');
dbms_advisor.set_task_parameter(name, 'verbose', 'TRUE');
dbms_advisor.execute_task(name);
end;
/
SELECT STATUS FROM DBA_ADVISOR_TASKS WHERE TASK_ID=:id;

AJUSTE Y MONITORIZACION

491

-- Algunas funciones del paquete DBMS_UNDO_ADV:


FUNCTION BEST_POSSIBLE_RETENTION RETURNS NUMBER --Con undo size actual
FUNCTION LONGEST_QUERY RETURNS NUMBER --Query q mas ha tardado, en s.
FUNCTION REQUIRED_RETENTION RETURNS NUMBER --Para query q mas tard
FUNCTION REQUIRED_UNDO_SIZE RETURNS NUMBER --Para actual undo_retention
Argument Name
Type
In/Out Default?
------------------------------ ----------------------- ------ -------RETENTION
NUMBER
IN
FUNCTION UNDO_HEALTH RETURNS NUMBER
PROBLEM
VARCHAR2
OUT
RECOMMENDATION
VARCHAR2
OUT
RATIONALE
VARCHAR2
OUT
RETENTION
NUMBER
OUT
UTBSIZE
NUMBER
OUT
FUNCTION UNDO_INFO RETURNS BOOLEAN
TABLE_SPACE_NAME
VARCHAR2
OUT
TABLE_SPACE_SIZE
NUMBER
OUT
AUTO_EXTEND
BOOLEAN
OUT
UNDO_RETENTION
NUMBER
OUT
RETENTION_GUARANTEE
BOOLEAN
OUT
Nota: la info obtenida se calcula con datos desde ltimo arranque.
Muchas funciones tienen versiones con parmetros fecha ini y fin.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

492

PRACTICAS TEMA 4

4.1. Consultar las principales vistas dinmicas de la 10g


relacionadas con el AWR: V$OSSTAT, V$SYS_TIME_MODEL,
V$SES_TIME_MODEL,
V$SYSMETRIC, V$SESSMETRIC,
V$FILEMETRIC, V$EVENTMETRIC, V$SYSTEM_WAIT_CLASS,
V$SESSION_WAIT_CLASS, V$WAITCLASSMETRIC.
4.2. Probar AWR.
4.3. Probar ASH.
4.4. Probar ADDM.
4.5. Probar SQL TUNING
4.6. Probar SEGMENT ADVISOR.
4.7. Probar UNDO ADVISOR.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

NUEVAS FUNCIONALIDADES DE
AJUSTE Y MONITORIZACION

TEMA 5
MONITORIZACIN Y AJUSTE TRADICIONAL

493

Administracin y Ajuste de Oracle 10g

TEMA 5.
MONITORIZACIN Y AJUSTE TRADICIONAL.

494

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

EVENTOS DE ESPERA

Eventos de espera.
Vistas dinmicas: informacin del sistema y de las sesiones.
Ajuste de la Shared-Pool.
Ajuste de la buffer cache.
Ajuste de los buffers redo log.
Ajuste del rollback.
Ajuste del tablespace temporal.
Ajuste de los checkpoints.
Ajuste de las sentencias SQL.
Ajuste de la CPU.
Utilidad STATSPACK.

V$EVENT_NAME. Lista de posibles esperas.


V$SYSTEM_EVENT. Esperas totales por evento desde arranque de BD.
V$SESSION_EVENT. La misma informacin anterior, por sesin.
V$SESSION_WAIT. Sesiones que estn esperando actualmente.

Eventos ms comunes:

Para recibir valores en WAIT_TIME poner TIMED_STATISTICS=TRUE.


free buffer waits: DBWR escribe poco a menudo (subir n de checkpoints).
latch free: contencin en latches (verificar V$LATCH).
buffer busy waits: hay contencin E/S (ajustar E/S o distribuir datos).
db file sequential read: hay contencin E/S (ajustar E/S o distribuir datos)
db file scattered read: igual anterior, pero multibloque (ajustar E/S o
distribuir datos).
db file parallel write: checkpoints muy espaciados (subir su nmero).
undo segment tx slot: faltan segmentos de rollback (aadir ms).
undo segment extension: demasiadas extensiones dinmicas (ampliaciones
y reducciones) de los segmentos de rollback (ajustar tamao).
Nota: la lista completa de eventos est en el manual Oracle10g Database
Reference.

http://cursos.atica.um.es/oradoc102/server.102/b14237/waitevents.htm#i968375
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

495

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

496

VISTAS DINAMICAS
INFORMACION DEL SISTEMA

VISTAS DINAMICAS
INFORMACION DEL SISTEMA

AWR (>=10g). Ver diapositivas anteriores, de este mismo tema.


Base de datos
V$SYSTEM_EVENT: esperas totales por evento.
V$SYSSTAT: estadsticas bsicas de la instancia.
V$SGASTAT: estado de uso de la SGA. Ver tb V$SGAINFO
(>=10g).
V$WAITSTAT: estadsticas de contencin.
V$PROCESS: procesos oracle.
V$SESSION: sesiones en curso.
V$SORT_SEGMENT: estado de uso de los segmentos temporales.
V$PGASTAT: estadsticas de uso de la PGA.
Memoria

V$BUFFER_POOL_STATISTICS: estadsticas de la cach de datos.


V$LIBRARYCACHE: Rendimiento de la Library Cach.
V$DB_OBJECT_CACHE: Objetos que hay en la Library Cach.
V$SQLAREA: Sentencias SQL y estadsticas asociadas.
V$ROWCACHE: Rendimiento de la Dictionary Cach.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

497

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

VISTAS DINAMICAS
INFORMACION DE SESIONES

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

498

Oracle guarda las sentencias SQL y los paquetes en la Shared-pool,


una cach que presenta los siguientes problemas:

La unidad de reserva de espacio no es constante, variando desde unos


cuantos bytes hasta muchos Kb.
No toda la memoria puede ser liberada cuando el usuario termina con ella;
ya que se trata de una cach que pretende maximizar la comparticin.
No dispone de una zona en disco para paginar.

Nota: la lista completa de vistas dinmicas est en el manual Oracle10g Database


Reference.
http://cursos.atica.um.es/oradoc102/server.102/b14237/toc.htm

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

AJUSTE DE LA SHARED-POOL
INTRODUCCION

Sesin (datos de las sesiones actualmente en curso)


V$SESSION: sesiones.
V$SESSTAT: estadsticas de cada sesin.
V$SESSION_EVENT: eventos de cada sesin.
V$SESSION_WAIT: esperas de cada sesin.
V$LOCK: bloqueos actuales y peticiones de bloqueo.
V$ACCESS: objetos bloqueados y las sesiones que los estn
usando.
V$TRANSACTION: transacciones en curso.
V$OPEN_CURSOR: cursores abiertos y compilados.
V$SORT_USAGE: segmentos temporales en uso
V$SESS_IO: estadsticas de E/S de cada sesin.

Administracin y Ajuste de Oracle 10g

E/S
V$FILESTAT: Estadsticas de E/S de los ficheros de datos.
V$TEMPSTAT: Estadsticas de E/S de los ficheros temporales.
Contencin
V$LATCH: Estadsticas de latches.
V$WAITSTAT: Estadsticas de contencin.
V$ROLLSTAT: Estadsticas de los segmentos de rollback.
V$UNDOSTAT: Estadsticas de undo.

499

Posibles sntomas de problemas de ajuste de la Shared Pool:


Contencin en los latches %library cache% (V$LATCH).
Contencin en el latch %shared pool% (V$LATCH).
Altos tiempos de CPU para compilar, parse time cpu
(V$SYSSTAT).
Muchas recargas (reloads) en V$LIBRARYCACHE.
Muchas llamadas de compilacin, parse count% (V$SYSSTAT).
Frecuentes errores ORA-04031, debidos a la fragmentacin.

Nota: los latches son microbloqueos necesarios para proteger las operaciones
en la SGA (SharedPool, LibraryCache, RedoBuffer, etc). Son puntos potenciales
de contencin.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

500

AJUSTE DE LA SHARED-POOL
SENTENCIAS SQL

AJUSTE DE LA SHARED-POOL
GENERALIDADES

La ejecucin de una sentencia SQL tiene varias fases: anlisis


sintctico y semntico (compilacin), y clculo del plan de ejecucin:
En la library cache se guardan las sentecias SQL ya compiladas.
En la sql area se guardan los planes de ejecucin de cada una de
ellas.
Al compilar una sentencia SQL, hay que distinguir entre hard y soft
parse:
Hard Parse: la sentencia SQL no existe en la SharedPool (Library
Cache). Es costoso en trminos de CPU y latches.
Soft Parse: la sentencia SQL ya existe en la SharedPool y puede
usar una versin de la misma.
Dos sentencias SQL son iguales si tienen el mismo texto (incluyendo
espacios en blanco y maysculas/minsculas); y adems:

Los nombres de objetos deben apuntar a los mismo objetos reales.


El modo del optimizador (optimizer goal) debe ser el mismo.
Los nombres, tipos y longitudes de las variables bind deben ser los mismos.
El entorno NLS (idioma y pas) debe ser el mismo.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

501

SELECT * FROM V$SGASTAT WHERE NAME = 'free memory' AND POOL = 'shared pool';
POOL
NAME
BYTES
----------- -------------------------- ---------shared pool free memory
693036

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

Usar DBMS_SHARED_POOL.KEEP (dbmspool.sql) para fijar paquetes


muy usados en la SharedPool (como SYS.STANDARD).
Haciendo flush se puede eliminar la fragmentacin (ora-4031):
alter system flush shared_pool;
Nota: puede bajar rendimiento hasta que objetos vuelven a la cach. No usar cuando
BD tiene mucha carga. No descarga paquetes fijados, ni sentencias ya compiladas de
sesiones en curso.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

502

AJUSTE DE LA SHARED-POOL
ROW CACHE

V$LIBRARYCACHE. Estadsticas de la Library Cach.


GETS (peticiones) Cada peticin de ejecutar una sentencia SQL
(est el SQL en memoria?).
PINS (ejecuciones) Cada peticin de metadatos de un SQL (est
el SQL ya compilado?, si lo est se ejecuta). PINHITRATIO debe ser
casi 1.
RELOADS (recompilaciones) Cada peticin de metadatos (PIN)
que no los encuentra en memoria pq los ha sacado el algoritmo LRU
(ejecuciones que requieren recompilar sentencia). Debe ser casi 0.
Los NAMESPACE que se corresponden con sentencias SQL y PL/SQL
son: SQL AREA, TABLE/PROCEDURE, BODY y TRIGGER.
Para hacer que RELOADS sea casi 0, podemos subir shared_pool_size,
pero adems, para aprovechar dicho incremento, subiremos tambin
open_cursors.
Si RELOADS es casi 0 y siempre tenemos una cantidad significativa de
la SharedPool libre, bajaremos shared_pool_size.

Administracin y Ajuste de Oracle 10g

En la library cache, el pinhitratio >= 95% (V$LIBRARYCACHE) y lo ms


cercano a 1 (100%). Reloads debe ser casi 0.
En la row cache (V$ROWCACHE) el ratio getmisses/gets <=15%.
Las aplicaciones OLTP deben usar bind variables (no para DSS).
Nota: en DSS es mejor darle mucha informacin al CBO q compartir el cdigo.

AJUSTE DE LA SHARED-POOL
LIBRARY CACHE

Que siempre haya espacio libre en la SharedPool, puede significar que


sobra; y que haya poco o nada no supone un problema si el
rendimiento es bueno:

503

V$ROWCACHE. Estadsticas de la Row Cach (Diccionario de Datos).

PARAMETER: tipo de peticin.


GETS: peticiones a la cach, del tipo en cuestin.
GETMISSES: peticiones fallidas que generan E/S.
MODIFICATIONS: actualizaciones de la cach.

SELECT parameter, sum(gets), sum(getmisses)


, 100*sum(gets - getmisses) / sum(gets) pct_succ_gets
, sum(modifications) updates
FROM V$ROWCACHE WHERE gets > 0 GROUP BY parameter;
PARAMETER
SUM(GETS) SUM(GETMISSES) PCT_SUCC_GETS
UPDATES
------------------- ---------- -------------- ------------- ---------dc_object_ids
16942
537
96.8303624
173
dc_objects
7534
966
87.1781258
414
...

Debemos procurar que ratios >= 85%.


Podemos ver el ratio general con:
SELECT (SUM(GETS - GETMISSES - FIXED)) / SUM(GETS) "ROWCACHE" FROM V$ROWCACHE;
ROWCACHE
---------.982133497

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

504

AJUSTE DE LA SHARED-POOL
RESTO DE VISTAS DINAMICAS

AJUSTE DE LA SHARED-POOL
COMPARTIR CODIGO SQL

En V$SHARED_POOL_ADVICE podemos ver si nos interesa


redimensionar la SharedPool (el parmetro STATISTICS_LEVEL debe valer
ALL o TYPICAL, no BASIC).
select SHARED_POOL_SIZE_FOR_ESTIMATE SIZE_ESTIMATE,
SHARED_POOL_SIZE_FACTOR SIZE_FACTOR,
ESTD_LC_TIME_SAVED_FACTOR PARSE_SAVED_FACTOR
from v$shared_pool_advice;
SIZE_ESTIMATE SIZE_FACTOR PARSE_SAVED_FACTOR
------------- ----------- -----------------4
.5
.9806
8
1
1
16
2
1.0194

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

Nos fijaremos el objetivo compilar una vez y ejecutar muchas.


Detectar sentencias similares que usan literales (V$SQLAREA):
SELECT substr(sql_text,1,40) "SQL", count(*), sum(executions) "TotExecs"
FROM v$sqlarea
WHERE executions < 5
GROUP BY substr(sql_text,1,40) HAVING count(*) > 30 ORDER BY 2;

Nota: los valores 5, 40 y 30 son ejemplo para detectar sentencias que se


ejecutan poco (<5), cuyos 40 primeros caracteres son iguales en muchos casos
(>30). Luego veramos si es posible convertirlas en una o en unas pocas.

V$SGASTAT. Detalle de cada una de las partes de la SharedPool.


V$SQLAREA. Estadsticas sobre todos los cursores compartidos,
incluyendo el texto inicial (1000 caracteres) de cada sentencia. El uso
de esta vista consume muchos latches (V$SQL no).
V$SQLTEXT. Texto completo de las sentencias, en varias lneas (filas).
V$DB_OBJECT_CACHE. Objetos en cach, incluyendo paquetes,
funciones, procedimientos, tablas, ndices, sinnimos, secuencias,
vistas, triggers, etc.

Administracin y Ajuste de Oracle 10g

505

Desde 9i, con CURSOR_SHARING=SIMILAR (antes slo FORCE), Oracle


determina qu literales puede sustituir por variables bind sin afectar el
plan de ejecucin. Si afectase al plan de ejecucin no se hace el
cambio (si se usa FORCE s).
Cach privada sesin (SharedPool): al compilar una sentencia primero
se busca en ella. Empezar con SESSION_CACHED_CURSORS=50 (valor
alto puede provocar ora-4031, comprobar % de uso). Util con Oracle
Forms cuando los forms se abren y cierran con frecuencia.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE DE LA SHARED POOL


LATCHES DE LA LIBRARY CACHE

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

506

AJUSTE DE LA SHARED POOL


ESPERAS POR LATCHES

Si alguno de los latches est provocando la mayora de sleeps, entonces


hay un problema. Hay que tener en cuenta que estos datos se acumulan
desde el arranque de la BD, y por tanto no muestran problemas
intermitentes.
select name,gets,misses,sleeps from v$latch
where name like 'library%';

Consultando V$SESSION_WAIT durante un periodo de lentitud, se


puede determinar si hay un problema con latches y, en tal caso, con
qu latch concreto. Si hay ms de 3 4 procesos esperando , puede
haber un problema.

NAME
GETS
MISSES
SLEEPS
----------------------------------------------- ---------- ---------- ---------library cache
97155739
42902
12272
library cache load lock
11705
0
0

select count(*) number_of_waiters


from v$session_wait w, v$latch l
where w.wait_time = 0 and w.event = 'latch free' and
w.p2 = l.latch# and l.name like 'library%';

misses son fallos al intentar coger un latch, y sleeps son aquellos fallos que provocan que
la sesin correspondiente se ponga a dormir (lo cual implica una espera).

Tambin es interesante mirar slo en v$session_wait para ver si hay


alguna otra causa de lentitud.

Para detectar el proceso en cuestin (slo saldr algo si lo pillamos en el


momento):

select * from v$session_wait


where event != 'rdbms ipc message' and
event not like '%Net%' and sid > 5;

select a.name,pid from v$latch a , V$latchholder b


where a.addr=b.laddr and a.name = 'library cache%';
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

507

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

508

AJUSTE DE LA BUFFER CACHE


GENERALIDADES

AJUSTE DE LA BUFFER CACHE


HIT RATIO

Oracle guarda copias de los bloques de datos en la buffer cach


(cach de datos). Puede haber copias de diferentes puntos del tiempo
y tambin bloques dirty (modificados pero que no se han llevado a
disco).
Cuando la cach se llena, Oracle mover parte de sus bloques a disco
(usa algoritmo LRU sobre la lista, o listas, de bloques no dirty), de
modo que si posteriormente son accedidos tendrn que volver a
recuperarse del disco.
El latch cache buffers lru chain serializa operaciones sobre la(s)
lista(s) LRU.
El proceso DBWR es el responsable de llevar los bloques dirty a disco.
Cualquier sesin puede leer los bloques de la cach.
Podemos calcular el ratio de eficiencia (hit ratio) de la cach de datos
consultando V$SYSSTAT. Se recomienda que sea >80% para
aplicaciones OLTP; pero esto no asegura un buen rendimiento (tb es
muy importante el uso de ndices selectivos).
En aplicaciones DSS (datawarehouse) se pueden tener ratios mucho
menores.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

509

select 100*(1 - (f1 - f2 - f3)/(r1 + r2 - f2 -f3)) HitRatio


from (select value f1 from v$sysstat where name='physical reads'),
(select value f2 from v$sysstat where name='physical reads direct'),
(select value f3 from v$sysstat where name='physical reads direct (lob)'),
(select value r1 from v$sysstat where name='consistent gets'),
(select value r2 from v$sysstat where name='db block gets');

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

partir

de

NAME
SIZE_FOR_ESTIMATE SIZE_FACTOR ESTD_PHYSICAL_READ_FACTOR
-------------------- ----------------- ----------- ------------------------DEFAULT
4
1
1
DEFAULT
8
2
.3228

Administracin y Ajuste de Oracle 10g

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

510

AJUSTE DEL REDO LOG BUFFER


GENERALIDADES

Factores que puede mejorar el rendimiento del DBWR:


Atributos de los discos fsicos (stripe size, velocidad, etc).
Raw devices vs File Systems.
Distribuir las escrituras sobre ms discos/ficheros.
Usar E/S asncrona cuando est disponible. Adems, si es necesario
arrancar varios procesos DBWR con DB_WRITER_PROCESSES (al
menos uno para cada 8 cpus o grupo de cpus).
Si no hay E/S asncrona, paralelizar E/S del DBWR con
DBWR_IO_SLAVES.
Usar las diferentes cachs (keep, recycle, etc).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

etc),

select name,size_for_estimate,size_factor,ESTD_PHYSICAL_READ_FACTOR
from v$db_cache_advice;

Hay que evitar lo siguiente:

Administracin y Ajuste de Oracle 10g

recycle,

Si
activamos
DB_CACHE_ADVICE,
podremos
consultar
en
V$DB_CACHE_ADVICE posibles estimaciones para la buffer cach.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Bsicamente las lecturas innecesarias, pues llevan bloques a la cach y, por


tanto, provocan la salida de otros (que luego tendrn q volver a leerse de
disco). Cuidado con los ndices poco o nada selectivos y los full scan de
tablas.
Contencin en el latch 'cache buffers lru chain' (V$LATCH).
Mucho tiempo empleado en la espera "write complete waits"
(V$BUFFER_POOL_STATISTICS).
Mucho
tiempo
empleado
en
la
espera
"free
buffer
waits"
(V$BUFFER_POOL_STATISTICS).

Si usamos varias cachs (keep,


V$BUFFER_POOL_STATISTICS:

SELECT name,
100*(1-(physical_reads / (consistent_gets + db_block_gets))) HIT_RATIO
FROM V$BUFFER_POOL_STATISTICS
WHERE ( consistent_gets + db_block_gets ) !=0;

AJUSTE DE LA BUFFER CACHE


OBJETIVOS

Consultando V$SYSSTAT:

511

La Cach de Redo (Redo Log Buffer) es un buffer circular en la SGA,


que guarda informacin (redo entries) sobre todos los cambios hechos
en la BD, que se utilizar slo para recuperar la BD, si es necesario.
Las redo entries van ocupando espacio contiguo, de forma
secuencial, en la Cach de Redo.
El LGWR es el encargado de escribir las redo entries de la cache de
redo, en el fichero (o grupo) redo log activo. Una vez hecho sto, el
proceso de usuario puede reutilizar dichas entradas.
Hay determinadas operaciones en las que resulta interesante
desactivar el redo, ya que se pueden reconstruir fcilmente; como
son crear un ndice o crear una tabla as select. La opcin a usar en
estos casos es NOLOGGIN.
Dimensionar la Cach de Redo (log_buffer) por encima de 3M, no sirve
de nada; ya que el LGWR vuelca la cach a disco cuando sta se llena
1/3 mximo 1M.
El tamao ptimo se puede sacar de la columna
OPTIMAL_LOGFILE_SIZE de la vista V$INSTANCE_RECOVERY.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

512

AJUSTE DEL REDO LOG BUFFER


DETECTAR PROBLEMAS

AJUSTE DEL ROLLBACK


GENERALIDADES

Contencin en latches (V$LATCH) de redo. Si el ratio de MISSES/GETS


o el de IMMEDIATE_MISSES/(IMMEDIATE_GETS+IMMEDIATE_MISSES)
> 1% es porque hay contencin:

SELECT name, gets, misses, immediate_gets, immediate_misses


FROM v$latch
WHERE name in ('redo allocation', 'redo copy');
Si hay contencin en redo allocation, reduciremos uso de redo (NOLOGIN) o
subiremos el tamao de la Cach de Redo (log_buffer). Si CPUs>16 se
puede subir LOG_PARALLELISM (de 2 a 8).
Si es en redo copy, y CPUs > 1, se puede subir _log_simultaneous_copies
(oculto).

Contencin en peticiones de espacio de redo en disco. Se refiere a la


estadstica redo log space requests" de la vista V$SYSSTAT, que
refleja el n de esperas al escribir el redo a disco, pq se ha llenado el
fichero redolog. Ese valor debe ser (casi) cero. Si, por el contrario,
dicho n va incrementndose continuamente, habr que comprobar
checkpoints y log_switchs. Se debe hacer q los checkpoints coincidan
con los log switchs (cada 15-30 minutos aprox.).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

513

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

514

AJUSTE DE SEGMENTOS DE
SORT
GENERALIDADES

El tamao de los RS depende directamente de la actividad de las TR.


Nos debemos fijar en la actividad normal de la BD para ajustar.
Calcular un segmento de rollback por cada 4 transacciones
concurrentes, con extensiones del mismo tamao (un mnimo de 20
por RS).
Fijar optimal de modo q el 90% de las transacciones quepan en un
RS sin extenderse. Una vez fijado optimal, dejar espacio libre en el
tablespace para que, adems, se pueda atender a la transaccin ms
grande.
Para prevenir ORA-1555 Snapshot too old (lo provocan las grandes
consultas), cuantos ms RS mejor (y no slo ms grandes) y del
mismo tamao, y que las transacciones sean lo ms cortas posibles. Si
no hay updates a la vez que grandes selects, no hay ora-1555.
Comprobar la contencin en RS consultando V$WAITSTAT.
SELECT CLASS, COUNT FROM V$WAITSTAT
WHERE CLASS like '%undo%';
Si hay en undo header, es q no hay bastantes RS (crear ms).

Administracin y Ajuste de Oracle 10g

Para cada RS, debemos asegurarnos de q la cabeza no alcance a la cola muy


rpido, pues har q el RS se extienda.

Administracin y Ajuste de Oracle 10g

AJUSTE DEL ROLLBACK


OPTIMIZACION

Si usamos undo automtico (>=9i), podemos consultar V$UNDOSTAT:


una fila cada 10 minutos. La columna SSOLDERRCNT muestra los
errores ORA-1555.
En los segmentos de rollback (RS) se guardan las imgenes de los
datos, anteriores a las actualizaciones, por si es necesario deshacer las
transacciones (TR) en cuestin; y para mantener la consistencia en
lectura. Oracle va asignando los RS mediante round robin.
Cada TR slo puede usar un RS para almacenar sus registros de undo.
Varias TR pueden escribir en la misma extensin.
Un RS se organiza en forma de anillo, de forma que la cabeza del RS
nunca machacar una extensin ocupada por la cola del mismo.
Las extensiones de un RS se usarn en orden. Si no puede usar la
siguiente, reservar una nueva y la insertar en el anillo (reduce el
rendimiento).
Son importantes tanto el tamao como la duracin de una TR. Una TR
q slo modifica 1 byte durante largo tiempo, puede provocar q un RS
se extienda si dicha extensin se necesita ms adelante.

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

515

Cuando ocurre una ordenacin, Oracle reserva tantas extensiones


como necesite. Finalizada la ordenacin, las extensiones se marcan
como libres, pero no se liberan.
Un mismo segmento de sort puede ser compartido por varias
ordenaciones.
La primera ordenacin crea el segmento (si no exista) y las dems
aadirn extensiones si lo necesitan.
Se utiliza una zona de la SGA, fuera de la Shared Pool, llamada Sort
Extent Pool; sincronizada usando el latch sort extent pool (V$LATCH).
Si tiene contencin, subir el tamao de la extensin por defecto del
tablespace.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

516

AJUSTE DE SEGMENTOS DE
SORT
OPTIMIZACION

AJUSTE DE LOS CHECKPOINTS

Si hay contencin en el latch sort extent pool (V$LATCH), subiremos


el tamao de la extensin por defecto del tablespace.
Si adems, tambin se producen esperas pq hay muchas ordenaciones
concurrentes, se debe incrementar el parmetro SORT_AREA_SIZE, de
forma que una mayor cantidad de ordenaciones se hagan en memoria.
El tamao de la extensin debe ser igual a SORT_AREA_SIZE (o
mltiplo).
Desde Oracle9i, usando el parmetro PGA_AGGREGATE_TARGET, me
olvido de sort_area_size (sesiones con servidores dedicados).
PGA_AGGREGATE_TARGET indica el tamao mximo que sumarn las
PGAs (mnimo 10M).
Podemos monitorizar los segmentos de sort con:

V$SORT_SEGMENT muestra los segmentos temporales. Si las columnas


ADDED_EXTENTS y FREED_EXTENTS muestran mucha actividad,
aadiremos ms espacio al tablespace. Si MAX_SORT_SIZE indica
ordenaciones de gran tamao, es posible q necesitemos un tablespace
dedicado para ellas (slo para las grandes).
V$SORT_USAGE muestra el uso actual de los segmentos temporales.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

log_checkpoint_interval=0
log_checkpoint_timeout=0.
FAST_START_MTTR_TARGET=0 (desactiva fast recovery instance).

517

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE DE LAS CONSULTAS SQL

Un checkpoint es el evento que sincroniza los bloques de datos en


memoria con los ficheros de datos en disco (los escribe el DBWR).
Indicaciones de ajuste:
El proceso CKPT puede mejorar significativamente el rendimiento.
Asignando el parmetro LOG_CHECKPOINTS_TO_ALERT a TRUE
podremos ver en el fichero alert.log los tiempos de comienzo y fin
de los checkpoints.
Si el valor de LOG_CHECKPOINT_INTERVAL es mayor que el
tamao del fichero redolog, los checkpoints ocurrirn cuando Oracle
haga un log switch.
Lo ideal es que los checkpoints slo sucedan cuando se hace log
switch:

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

518

AJUSTE DE LA CPU

Si observamos que nuestras consultas SQL van lentas, debemos


comprobar:
El valor de OPTIMIZER_MODE. Ej: si CHOOSE, probar RULE.

ALTER SYSTEM SET OPTIMIZER_MODE=RULE | FIRST_ROWS | ALL_ROWS | CHOOSE;

Estn los ndices de las tablas afectadas en estado valid?


SELECT * FROM DBA_OBJECTS WHERE OBJECT_TYPE='INDEX' AND STATUS!='VALID';

Hay alguna otra consulta SQL pesada en ejecucin?

Si, adems, estamos usando el optimizador por costes (CBO):

Estn calculadas las estadsticas para las tablas y los ndices en cuestin?
ANALYZE TABLE | INDEX nombre COMPUTE | ESTIMATE STATISTICS;
Para tablas grandes Estimate 30% suele ser casi igual a compute.
Si hay estadsticas, se generaron con compute o con estimate?

Para el ajuste
herramientas:

de

sentencias

SQL

utilizaremos

las

siguientes

AUTOTRACE de Sql*Plus:

Porcentaje mximo de ocupacin de CPU = 90%.


Porcentaje mximo de procesamiento OS/usuario = 40/60%.
Si hay varias CPUs, la carga debe estar balanceada.
Probar con MTS si se degrada el uso de CPU por muchas sesiones
concurrentes (MTS es mejor si hay muchas conexiones a la BD).
Parmetros que limitan el nmero de procesos y de sesiones:
PROCESSES. Nmero mximo de procesos en la instancia.
SESSIONS. Por defecto 1.1*PROCESSES; sin embargo si usamos MTS habr
que subirlo.

SQL> SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

TKPROF sobre un fichero de traza:


SQL> alter session set sql_trace=true;
SQL> Select ... ;
SQL> alter session set sql_trace=false;
$ tkprof tracefile outputfile [explain=usu/pw] [sys=no]
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

519

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

520

UTILIDAD STATSPACK

INSTALAR STATSPACK

Desde 10g, con la introduccin del AWR no es necesario usar


STATSPACK.
STATSPACK es una utilidad para recoger estadsticas que permiten
detectar problemas de rendimiento. Adems, mejora la utilidad que
haba anteriormente, UTLBSTAT/UTLESTAT.
Se trata de un conjunto de scripts SQL y PL/SQL. El script de
instalacin de la herramienta crea un usuario, PERFSTAT. Los datos
recopilados por statspack se guardarn en tablas.
La
documentacin
de
la
herramienta
estn
en
$ORACLE_HOME/rdbms/admin/spdoc.txt.
STATSPACK trabaja con el concepto snapshot para identificar una
coleccin de datos recopilados en un momento del tiempo, a los que
asocia un identificador nico, snap_id. Es necesario recopilar datos en
forma de snapshots antes de poder obtener un informe de rendimiento.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

521

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECOGIENDO DATOS CON


STATSPACK

Al crear un snapshot, con STATSPACK.SNAP, se pueden indicar


parmetros para, por ejemplo, indicar el nivel de detalle de las
estadsticas (i_snap_level), e incluso una sesin sobre la que recabar
estadsticas adicionales (i_session_id). Para establecer un snapshot
inicial (baseline) se recomienda i_snap_level=10.
Podemos borrar un rango de snapshots con sppurge.sql. Si queremos
borrar todos los snapshots, podemos hacerlo con sptrunc.sql (ojo!,
que lo borrar todo, puede ser interesante hacer un export previo del
usuario PERFSTAT).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

522

OBTENIENDO INFORMES CON


STATSPACK

La forma ms sencilla de crear un snapshot es conectando como


usuario PERFSTAT y ejecutando el procedimiento STATSPACK.SNAP.
Previamente es conveniente activar el parmetro time_statistics
(TRUE). Este primer snapshot nos servir de base comparativa para los
prximos snapshots que tomemos.

Administracin y Ajuste de Oracle 10g

Necesita un tablespace con al menos 100Mb, a ser posible manejado


localmente.
La instalacin crea un usuario PERFSTAT que ser el propietario de
todos los objetos y el cdigo pl/sql que se cree. Debemos asegurarnos
que el tablespace por defecto de este usuario es el que hemos creado,
y tener cuidado con su tablespace temporal por defecto (no sera mala
idea asignarle uno especial).
Para la instalacin debemos conectarnos a la BD como SYSDBA, y
lanzar el script $ORACLE_HOME/rdbms/admin/spcreate.sql, que nos
pedir la clave para el nuevo usuario, as como el tablespace por
defecto y el tablespace temporal. Este script, de forma automtica,
llama a otros tres: spcusr.sql, spctab.sql, spcpkg.sql. Debemos
comprobar si se producen errores en los ficheros spcusr.lis, spctab.lis,
spcpkg.lis.
Si hay errores y tenemos que repetir la instalacin, primero
desinstalaremos con el script spdrop.sql.

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

523

Podemos obtener un informe sobre el rendimiento general de la


instancia con spreport.sql (desde el usuario PERFSTAT). Nos pedir el
intervalo de snapshots (inicial y final) y el nombre del fichero de salida.

Si
localizamos
una
sentencia
SQL
por
su
hash_value
(V$SQLAREA.HASH_VALUE), podemos generar un informe sobre ella
con el script sprepsql.sql; que nos pedir el intervalo de snapshots y el
hash_value de la sentencia.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

524

RESUMEN DE SCRIPTS
STATSPACK

VISTAS DEL DD

Instalacin (como usuario SYSDBA):

spcreate.sql -> Instala STATSPACK ejecutando a su vez los scripts:


spcusr.sql -> Crea el usuario PERFSTAT
spctab.sql -> Crea las tablas
spcpkg.sql -> Crea el paquete statspack

spdrop.sql -> Desinstala STATSPACK ejecutando a su vez los scripts:


spdtab.sql -> Borra las tablas
spdusr.sql -> Borra el usuario PERFSTAT

Informes (como usuario PERFSTAT):

spreport.sql -> Genera un informe general del rendimiento de la instancia


sprepins.sql -> Genera un informe para la BD y la instancia indicados
sprepsql.sql -> Genera un informe para la sentencia SQL cuyo Hash Value se
indique
spauto.sql -> Permite automatizar la recoleccin de estadsticas (usando
dbms_job)

Mantenimiento (como usuario PERFSTAT):

sppurge.sql -> Permite borrar un rango de snapshots


sptrunc.sql -> Vaca (con truncate) todas las tablas, borrando todos los
snapshots
spuexp.par -> Es un fichero de parmetros para exportar el usuario PERFSTAT

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

525

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PRACTICAS TEMA 5

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

526

PRACTICAS TEMA 5

5.1. Revisar eventos del sistema y comprobar los ms significativos.


Comprobar evento latch free por sesiones. Comprobar sesiones
esperando por el evento db file sequential read. Comprueba el
parmetro TIMED_STATISTICS.
5.2. Revisa las estadsticas del sistema ms significativas. Comprueba
el tamao medio de la PGA de cada sesin. Revisa las lecturas lgicas
y fsicas y calcula el ratio de E/S. Comparar el uso de CPU para SQL
del sistema (acceso al DD) sobre el total.
5.3. Ver el eatado de ocupacin de las partes ms significativas de la
Shared Pool.
5.4. Comprobar la contencin en latches de la Shared Pool y Library
Cache.
5.5. Comprobar el pinhitratio de la Library Cach, asi como los
reloads. Verificar el espacio libre de la Shared Pool, y el valor de
open_cursors.
5.6. Ver el ratio de la Row Cache.
5.7. Comprobar si el sistema recomienda ampliar la SharedPool.

Administracin y Ajuste de Oracle 10g

V$SYSSTAT: estadsticas generales del sistema.


V$SGASTAT: estado de uso de las diferentes partes de la SGA.
V$SYSTEM_EVENT: estadsticas de eventos de espera a nivel de sistema.
V$SESSION_WAIT: sesiones que estn en espera actualmente.
V$SESSION_EVENT: estadsticas de eventos de espera por sesin.
V$SESSTAT: estadsticas generales por sesin.
V$LIBRARYCACHE: ratios de la Library Cach (Sentencias SQL y PL/SQL).
V$ROWCACHE: ratios de la Row Cach (Diccionario de Datos).
V$PGASTAT: estado de la PGA.
V$BUFFER_POOL_STATISTICS: estadsticas de la cach de datos.
V$DB_OBJECT_CACHE: objetos que hay en la Library Cach.
V$LATCH: latches.
V$ROLLSTAT: estadsticas de uso de los segmentos de rollback.
V$UNDOSTAT: estadsticas de uso de los segmentos de rollback.
V$FILESTAT: estadsticas de E/S a nivel de fichero.
V$SESS_IO: estadsticas de E/S a nivel de sesin.
V$SORT_SEGMENT: estadsticas de uso de los segmentos temporales.
V$SORT_USAGE: reas de sort actualmente en uso.
Obtener IP: Select SYS_CONTEXT('USERENV','IP_ADDRESS') FROM DUAL;

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

527

5.8. Detectar sentencias similares que usan literales. Verificar el


parmetros cursor_sharing y session_cached_cursors. Asignar
cursor_sharing=similar.
5.9. Instalar el paquete DBMS_SHARED_POOL. Comprobar paquetes
que se pueden fijar en la SharedPool y hacerlo.
5.10. Comprobar sentencias que ocupan mucha memoria (>=10% de
SharedPool).
5.11. Calcular el ratio de eficiencia de la Cach de Datos. Comprobar
el parmetro db_cache_advice. Consultar si Oracle recomienda
incrementar la Cach de Datos. Comprobar si hay contencin en el
latch cache buffers lru chain. Ver si hay esperas del tipo write
complete waits o free buffer waits.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

528

PRACTICAS TEMA 5

5.12. Comprobar el tamao de la Cache de Redo. Ver si hay


contencin en los latches de redo. Verificar la estadstica redo log
space requests.
5.13. Comprobar los segmentos de rollback ONLINE. Verificar las
extensiones que tiene cada uno, as como el espacio total y libre del
tablespace que los contiene. Ver si hay contencin en segmentos de
rollback.
5.14. Instalar la utilidad STATSPACK. Crear snapshots y generar
informe.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE Y MONITORIZACIN DE
LA INSTANCIA

TEMA 6.
NET.

529

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

530

TEMA 6. NET.

ORACLE NET SERVICES.


ORACLE NET.
ORACLE NET. CLIENTE/SERVIDOR.
ORACLE NET. WEB y APP. SERVER.
ORACLE NET. WEB SIN APP. SERVER.
ORACLE NET. CONNECTION POOLING.
LISTENER.
ORACLE CONNECTION MANAGER.
OTROS COMPONENTES
CONCEPTOS.
SERVICIO.
INSTANCIA.
REGISTRO DE SERVICIO.
CONECTOR.
MAPEOS.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 6. NET.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

531

CONFIGURACION. MODELOS. MODELO LOCAL.


TNSNAMES.ORA
LISTENER.ORA
SECCION PROTOCOLO.
SECCION REGISTRO SERVICIO.
PARAMETROS DE CONTROL.
LISTENER.ORA Y JSERVER.
CONTROL DEL LISTENER.
SQLNET.ORA
CONFIGURACION BASICA NET.
DATABASE LINK.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

532

ORACLE NET SERVICES.

ORACLE NET.

Oracle Net Services proporciona soluciones de


conectividad para entornos distribuidos y heterogneos.
Est integrado por:

Es el sw que permite establecer y mantener una sesin


de red desde una aplicacin cliente a un servidor de bd;
as como del intercambio de mensajes entre ambos.
Es capaz de hacerlo al estar localizado en cada
ordenador de la red.

Oracle Net.
Listener.

Existen distintas tipologas de conexin:

Oracle Connection Manager.

Conexiones cliente/servidor (C/S).

Herramientas de comunicaciones.

Conexiones web cliente.

Oracle Net Configuration Assistant.

Conexiones web cliente sin uso de servidor de aplicaciones


(Application Server).

Oracle Net Manager.


Oracle Enterprise Manager.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

533

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Oracle Net reside en el cliente y en el servidor. Se sita en la


capa ms alta de protocolos de red, que indica como las
aplicaciones acceden a la red y como los datos se dividen en
paquetes para su transmisin. Oracle Net interacta con el
protocolo TCP/IP -con o sin SSL- pero tambin puede trabajar
con el protocolo SDP (redes Infiniband).

Oracle Net se compone a su vez de Oracle Net foundation


layer (establece y mantiene la conexin) y Oracle protocol
support (mapea a protocolos estandar desde la tecnologa
Oracle Net).

Las aplicaciones cliente Java acceden a la bd Oracle


empleando adems JDBC (Java Database Connectivity
Driver). Oracle ofrece dos manejadores JDBC OCI -clientes
con instalacin local Oracle- y JDBC Thin Driver -clientes
sin instalacin local Oracle, por ejemplo applets-.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

534

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ORACLE NET. CLIENTE/SERVIDOR.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

ORACLE NET. CLIENTE/SERVIDOR.

535

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

536

ORACLE NET. CLIENTE/SERVIDOR.

ORACLE NET. CLIENTE/SERVIDOR.

OCI: Oracle Call Interface. SW usado por el cliente para interactuar con el servidor
de bd (interfaz entre la aplicacin cliente y el lenguaje SQL que comprende el
servidor).

TTC: Two-Task Common.

OPI: Oracle Program Interface.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

537

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ORACLE NET. CLIENTE/SERVIDOR.

El manejador JDBC OCI emplea un esquema de comunicaciones similar al estndar C/S.

JDBC Thin driver emplea una implementacin Java del Oracle Net Foundation Layer
llamada JavaNet y una implementacin Java de TTC llamada JavaTTC.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

538

ORACLE NET. WEB y APP. SERVER.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

539

La conexin de aplicaciones web cliente (con o sin Web


Application Server) a una bd es similar al caso C/S.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

540

ORACLE NET. WEB y APP. SERVER.

El protocolo HTTP, Hypertext Transport Protocol permite


comunicar entre los navegadores web y los servidores de
aplicaciones, estos gestionan datos, controlan el acceso a los
mismos y sirven las peticiones de los navegadores.

Un servidor de aplicaciones puede soportar aplicaciones Java y


servlets tambin.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

ORACLE NET. WEB y APP. SERVER.

541

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

542

ORACLE NET. CONNECTION POOLING.

Es posible acceder desde los clientes web directamente a la


bd, sin servidor de aplicaciones, como al usar Java applet.
Adems la bd puede aceptar conexiones con protocolos como
HTTP, FTP o WebDAV (conexiones a Oracle XML DB).

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ORACLE NET. WEB SIN APP. SERVER.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

543

Si se ejecutan mltiples aplicaciones web interactivas, algunas


de ellas pueden, en un momento dado, estar inactivas.
Connection pooling permite a la bd interrumpir a nivel
fsico una sesin inactiva, la sesin lgica permanece abierta,
y restablecer la conexin fsica cuando haya alguna peticin.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

544

LISTENER.

ORACLE CONNECTION MANAGER.

En la bd recibe la conexin inicial. Est configurado con una


direccin de protocolo, aquellos clientes configurados con esta
direccin pueden enviar peticiones al listener. Una vez
establecida la conexin, el cliente y la bd comunican
directamente entre ellos.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

545

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Permite que mltiples sesiones cliente sean multiplexadas a


travs de una sola conexin a una bd.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

546

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

OTROS COMPONENTES
Oracle Net Configuration Assistant.
Permite configurar los componentes bsicos de red
despus de realizar la instalacin de bd.
Oracle Universal Installer lanza esta herramienta durante
la instalacin del sistema gestor de bd.
En UNIX debe ejecutarse $ORACLE_HOME/bin/netca

CONCEPTOS BASICOS

Oracle Net Manager.


Proporciona un entorno integrado de configuracin y
gestin de Oracle Net Services.
En UNIX debe ejecutarse $ORACLE_HOME/bin/netmgr
En Oracle 10g, muchas funcionalidades de Net Manager estn integradas
en Oracle Enterprise Manager.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

547

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

548

CONCEPTOS. SERVICIO.

CONCEPTOS. SERVICIO.

Una bd es un servicio desde el punto de vista de


clientes.

El servicio est identificado por un nombre de servicio que


viene determinado por el parmetro de inicializacin
SERVICE_NAMES. Por defecto es el nombre global
database, compuesto por el nombre de bd (parmetro
DB_NAME) y el nombre de dominio (DB_DOMAIN). Los
clientes usan el nombre de servicio para identificar la bd a la
que acceden.

Este parmetro tambin puede ser modificado dinmicamente


mediante ALTER SYSTEM.

Administracin y Ajuste de Oracle 10g

los

COMUNICACIONES

549

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

550

CONCEPTOS. INSTANCIA.

La informacin necesaria para una conexin se almacena en


un repositorio (local o centralizado -LDAP-).

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CONCEPTOS. SERVICIO.

La bd puede tener uno o ms servicios asociados; as puede


ser identificada de distintas formas por clientes diferentes, y
un administrador puede limitar recursos del sistema.

COMUNICACIONES

551

Una base de datos tiene al menos una instancia integrada


por un rea de memoria llamada System Global Area (SGA)
y por procesos Oracle.

El nombre de la instancia viene indicado por el parmetro de


inicializacin INSTANCE_NAME. Por defecto se refiere al Oracle
System Identifier (SID) de la instancia.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

552

CONCEPTOS. REGISTRO DE SERVICIO.

CONCEPTOS. REGISTRO DE SERVICIO.

Service registration es una utilidad por la que el proceso


PMON automticamente proporciona informacin al listener,
de forma que listener.ora no precisa ser configurado con
informacin esttica tal como:

SERVICE_NAMES, para el nombre de servicio de la bd

Nombres de servicio para cada instancia de la bd.


Nombres de instancia de la bd.

INSTANCE_NAME, para el nombre de la instancia

Manejadores de servicio (dispatcher


disponible para cada instancia.

servidor

dedicado)

Dispatcher, instancia e informacin node load que permite al


listener
determinar
qu
dispatcher
puede
manejar
adecuadamente una peticin cliente. Si todos los dispatchers
estn bloqueados, el listener puede habilitar un servidor
dedicado para la conexin.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

553

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

service_register. Recepcin de informacin de instancia


por el listener.

554

service_died. El listener ha perdido su conexin con el


PMON. Se descarta cualquier informacin de registro para
la instancia, los clientes no podrn conectarse a la istancia
hasta un nuevo registro del PMON.

Tambin puede indicarse la conexin a una instancia especfica (Real


Application Clusters):
(DESCRIPTION= ... (INSTANCE_NAME=<nombre_instancia>)))

COMUNICACIONES

Un cliente usa un descriptor de conexin que indica la


localizacin de la bd y el nombre del servicio de bd.
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=<nombre_host/direccionIP>)
(PORT=1521))
(CONNECT_DATA= (SERVICE_NAME=<nombre_de_servicio>)))

service_update. Recepcin de informacin actualizada de


una instancia por parte del listener.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

CONCEPTOS. CONECTOR.

Los eventos relacionados con el registro de servicio se


almacenan en el fichero listener.log:

Administracin y Ajuste de Oracle 10g

El valor del parmetro SERVICE_NAMES se considera antes


que el global database name (compuesto por DB_NAME y
DB_DOMAIN) y el valor de INSTANCE_NAME se considera
antes que el SID indicado durante la instalacin o creacin de
la bd.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CONCEPTOS. REGISTRO DE SERVICIO.

Para asegurar que el registro de servicio funciona


correctamentem el fichero de parmetros de inicializacin
debera contener los parmetros:

555

Los manejadores de servicio en el servidor pueden ser un


dispatcher (modo servidor compartido) o un proceso
servidor dedicado.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

556

CONCEPTOS. CONECTOR.

CONCEPTOS. MAPEOS.

Puede suceder que un cliente desee usar un manejador de


servicio particular, en este caso debe indicarse en el conector:

(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=nombre_servicio)
(SERVER=shared/dedicated)))

El establecimiento de la correspondencia entre el nombre de


servicio y su conector es posible mediante repositorios de
informacin que permiten dicho mapeo a travs de una
naming method:
Local Naming. Usa el fichero tnsnames.ora.
Directory Naming. Emplea un sistema de directorios LDAP.
Easy Connect Naming. No requiere configuracin. Permite a los
clientes conectar a la bd usando una cadena TCP/IP que incluye el
nombre de servidor, un puerto y un nombre de servicio:

Si no se indica el valor para el parmetro SERVER se asume


por defecto la configuracin shared server. Si no hay
dispatchers disponibles, se usarn servidores dedicados.

CONNECT username/password@host[:port][/service_name]
External Naming. Emplea un sistema no Oracle.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

557

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

558

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CONFIGURACION. MODELOS.

Existen dos modelos de configuracin de Oracle Net:


Localizado o no centralizado: la informacin se almacena en un
fichero tnsnames.ora local a cada mquina en la red.
Centralizado: la informacin se guarda en un directorio central
(LDAP).

TIPOS DE CONFIGURACION

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

559

En la exposicin se considera un modelo de configuracin no


centralizado, donde la informacin sobre direcciones de red
se almacena en el fichero tnsnames.ora de cada sistema.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

560

CONFIGURACION. MODELO LOCAL.

CONFIGURACION. MODELO LOCAL.

Existen los siguientes ficheros de configuracin:

Los ficheros de configuracin residen generalmente en


$ORACLE_HOME/network/admin,
aunque
pueden
hacerlo en otros lugares.

El orden de bsqueda para sqlnet.ora es:

cman.ora ... Residente en la mquina donde se ejecuta


Oracle Connection Manager.
listener.ora ... En el servidor de bd. Con infomacin sobre
protocolo , direccin de escucha, servicios para los que se
escucha y parmetros de control.

El directorio indicado por la variable TNS_ADMIN


El directorio $ORACLE_HOME/network/admin

sqlnet.ora ... En el cliente y en el servidor bd. Puede


contener ruta de conexiones, parmetros de control de
acceso a bd, parmetros de Oracle Advanced Security, ...

COMUNICACIONES

para

cman.ora,

listener.ora

El directorio indicado por la variable TNS_ADMIN


En UNIX, el directorio global de configuracin (global
configuration directory).
El directorio $ORACLE_HOME/network/admin

tnsnames.ora ... En los clientes. Contiene net service


names -nombre de servicio asociado a un descriptor de
conexin-. Usado en los mapeos.

Administracin y Ajuste de Oracle 10g

El orden de bsqueda
tnsnames.ora es:

561

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

562

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TNSNAMES.ORA

TNSNAMES.ORA

Contiene nombres de servicio de red, usados al establecer una


conexin, de red mapeados a descriptores de conexin.
Dichos descriptores contienen la localizacin de un listener a
travs de una direccin de protocolo y el nombre de servicio
de la bd al que conecta.

Por
defecto,
tnsnames.ora
reside
en
$ORACLE_HOME/network/admin aunque tambin puede estar
en el directorio indicado por la variable de entorno
TNS_ADMIN o el global configuration directory. Su sintaxis
bsica es:
nombre_servicio=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521))
(CONNECT_DATA= (SERVICE_NAME=nombre_servicio)))

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

563

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

564

TNSNAMES.ORA
nombre_servicio=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(protocol_address_information))
(ADDRESS=(protocol_address_information))
(ADDRESS=(protocol_address_information))
(CONNECT_DATA= (SERVICE_NAME=service_name)))
(DESCRIPTION=
(ADDRESS=(protocol_address_information))
(ADDRESS=(protocol_address_information))
(ADDRESS=(protocol_address_information))
(CONNECT_DATA= (SERVICE_NAME=service_name))))

donde ADDRESS define la localizacin de


CONNECT_DATA define el servicio al cual conectar.
Administracin y Ajuste de Oracle 10g

LISTENER.ORA

listener

COMUNICACIONES

565

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

El listener es un proceso que corre en la bd. Recibe


peticiones de conexin de los clientes y gestiona el trfico de
dichas peticiones a la bd. Su configuracin se almacena en un
fichero llamado listener.ora y sus mensajes se generan en el
fichero listener.log

Dado que todos los parmetros de configuracin tienen


valores por defecto, es posible arrancar y usar el listener sin
configurar. El listener se llama por defecto LISTENER, no
soporta servicios hasta el arranque de la bd, y escucha
atendiendo a los siguientes valores:
(ADDRESS=(PROTOCOL=tcp)(HOST=host_name)(PORT=1521))

Cada listener est configurado con una o varias direcciones de protocolo,


los clientes configurados con una de estas direcciones pueden enviarle
peticiones. Una vez recibida la peticin, el listener elige un manejador de
servicio apropiado para servir la peticin y redirige la misma hacia l.

El puerto por defecto para conexin al listener es el 1521


(aunque en futuras versiones puede cambiar al 2483, TCP/IP,
y 2484, TCP/IP con SSL). Puertos inferiores a 1024 estn
reservados para su uso por procesos privilegiados.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

566

LISTENER.ORA

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

LISTENER.ORA

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

567

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

568

LISTENER.ORA

LISTENER.ORA

El listener determina si un servicio de la bd y sus manejadores


de servicio estn disponibles mediante el registro del
servicio. Durante el mismo, el proceso PMON proporciona al
listener informacin sobre:
Nombres de los servicios de bd disponibles.

Si el listener no se est ejecutando cuando arranca la


instancia, PMON no puede registrar la informacin de servicio.
PMON intenta conectar peridicamente, no obstante, pueden
pasar hasta 60 segundos antes de que PMON registre la
informacin tras el arranque del listener. Para iniciar el
registro de informacin inmediatamente tras el arranque del
listener debe emplearse la sentencia SQL:
ALTER SYSTEM REGISTER;

Nombre de la instancia asociada con los servicios.


Manejadores de servicio (dispatchers y servidores
dedicados) disponibles para la instancia -tipo, direccin de
protocolo y carga actual y mxima-.

El listener rechaza las peticiones previas al registro. Si la


instancia est en modo restringido, PMON ordena al listener
bloquear las conexiones y los clientes reciben un error:
ORA-12526: TNS:listener: all appropriate instances are in restricted mode
ORA-12527: TNS:listener: all appropriate instances are in restricted mode or
blocking new connections
ORA-12528: TNS:listener: all appropriate instances are blocking new
connections

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

569

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

LISTENER.ORA

Por defecto, PMON registra informacin del servicio referente


al puerto TCP/IP nmero 1521. Para poder usar un puerto
distinto debe configurarse el parmetro de inicializacin
LOCAL_LISTENER
En un entorno shared server puede emplearse el atributo
LISTENER del parmetro DISPATCHERS en el fichero de
inicializacin. Como LOCAL_LISTENER y el atributo LISTENER
permiten a PMON registrar informacin del dispatcher con el
listener, no es preciso especificar ambos si los valores del
listener son los mismos.
Por ejemplo, para configurar el listener en el puerto 1421:

El registro dinmico de servicios


configuracin del fichero listener.ora

El listener emplea la informacin dinmica adquirida


mediante el registro dinmico antes de usar la informacin
configurada estticamente en el fichero listener.ora.

Durante la instalacin de la bd, Oracle Universal Installer


ejecuta el Oracle Net Configuration Assistant; este permite
configurar el listener con un nombre y una direccin
concreta.

Tambin se crea una entrada para escucha del protocolo IPC


que se configura de forma automtica y sirve a
procedimientos externos (escritos en un 3GL que pueden ser
llamados desde el cdigo PL/SQL -slo C-).

LOCAL_LISTENER=listener1
DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener1)"
En el tnsnames.ora:
listener1=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=
host)(PORT=1421)))
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

570

COMUNICACIONES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

LISTENER.ORA

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

571

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

no

requiere

COMUNICACIONES

ninguna

572

LISTENER.ORA.
SECCION PROTOCOLO.

LISTENER.ORA

En la configuracin del listener se indica:

Nombre.
Direccin que acepta peticiones.
Servicios para los que escucha (la configuracin esttica es
necesaria si se usa Oracle Enterprise Manager).
Parmetros de control.

SID_NAME
(valor
del
parmetro
de
inicializacin
INSTANCE_NAME),
GLOBAL_DBNAME
(servicio
de
bd,
generalmente en versiones 8.x -combinacin de DB_NAME y
DB_DOMAIN-) y ORACLE_HOME son parmetros estticos
definibles en listener.ora

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

573

LISTENER_NOMBRE = (DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)
(RECV_BUF_SIZE=11784))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)(RECV_BUF_SIZE=11784)))

Mediante SEND_BUF_SIZE puede indicarse, en bytes, el tamao


del buffer para enviar operaciones de sesiones (en TCP/IP,
TCP/IP with SSL, y SDP). Su valor depende del s.o.
LISTENER_NOMBRE=(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)
(SEND_BUF_SIZE=11280))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)(SEND_BUF_SIZE=11280))))

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

que

el

listener

acepta

El parmetro QUEUESIZE permite indicar el nmero de


peticiones concurrentes que puede aceptar el listener via
TCP/IP o IPC. Su valor por defecto depende del s.o..

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

574

LISTENER.ORA.
SECCION REGISTRO SERVICIO.

El parmetro RECV_BUF_SIZE permite indicar, en bytes, el


tamao del buffer para recibir operaciones de sesiones (en
TCP/IP, TCP/IP with SSL, y SDP). Su valor depende del s.o.

Administracin y Ajuste de Oracle 10g

las

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

LISTENER.ORA.
SECCION PROTOCOLO.

de

LISTENER_NOMBRE=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)
(PORT=1521)(QUEUESIZE=20)))

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

direcciones

LISTENER_NOMBRE=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

Pueden configurarse mltiples listener, con distintos


nombres, en un fichero listener.ora. Sin embargo, se
recomienda ejecutar slo uno por nodo en la mayora de
entornos.

Define las
peticiones.

COMUNICACIONES

575

La seccin SID_LIST se usa para configurar estticamente el


listener. Requerida por compatibilidad con bbdd Oracle8.0,
procedimientos externos y ciertas herramientas de gestin
(Oracle Enterprise Manager). En versiones 9i u 8i est
infomacin se registra dinmicamente al arrancar la instancia.
SID_LIST_<nombre_listener>=
(SID_LIST=
(SID_DESC=
(SDU=2085)
(GLOBAL_DBNAME=sales.us.acme.com)
(ORACLE_HOME=/oracle9i)
(SID_NAME=sales))
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/oracle9i)
(PROGRAM=extproc)))

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

576

LISTENER.ORA
SECCION REGISTRO SERVICIO.

LISTENER.ORA. PARAMETROS DE CONTROL.


LOG_DIRECTORY_<nombre_listener> indica el directorio de
destino del fichero de log del listener. Por defecto el directorio
$ORACLE_HOME/network/log

Donde:
SID_LIST ... lista de descripciones.
SID_DESC ... informacin de servicio.

LOG_FILE_<nombre_listener> indica el nombre del fichero de


log para el listener. Por defecto listener.log

SDU ... Optimizar la transferencia de datos usando un tamao


indicado de session data unit (SDU).

TRACE_DIRECTORY_<nombre_listener> indica el directorio


de destino de los ficheros de traza del listener. Por defecto
$ORACLE_HOME/network/trace

GLOBAL_DBNAME ... Global database name de la bd (el listener


comprueba la igualdad entre el valor de este parmetro y el del
parmetro SERVICE_NAME en el descriptor de conexin del
cliente). Permite identificar el servicio de bd.

TRACE_FILE_<nombre_listener> indica el nombre del fichero


de traza del listener. Por defecto listener.trc

ORACLE_HOME ... localizacin del servicio (opcional en UNIX).

TRACE_LEVEL_<n_listener>. Nivel de detalle de la traza (0, sin


traza, a 16, mximo nivel de traza).

PROGRAM ... Nombre del programa de servicio ejecutable.

TRACE_FILELEN_<n_listener>. Tamao de los ficheros de


traza (KB). Al alcanzarlo, traza se escribe en el siguiente fichero.

SID_NAME ... SID de la instancia (parmetro INSTANCE_NAME).

TRACE_FILENO_<n_listener>. Nmero de ficheros de traza.


Administracin y Ajuste de Oracle 10g

COMUNICACIONES

577

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

La utilidad para control del listener (Listener Control Utility)


permite administrar este componente. La sintaxis es:
S.O.> LSNRCTL <sentencia> [nombre_listener]

listener=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales1server)(PORT=2481))
(PROTOCOL_STACK=
(PRESENTATION=giop)
(SESSION=raw))))

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

578

CONTROL DEL LISTENER.

Clientes acceden a aplicaciones Enterprise JavaBeans (EJBs) y


Common Object Request Broker Architecture (CORBA), opcin
Oracle Jserver, en una bd Oracle8i sobre una conexin InterOrb Protocol (IIOP). IIOP es una implementacin de General
Inter-Orb Protocol (GIOP) sobre TCP/IP. Debe configurarse el
puerto 2481 para TCP/IP o 2482 para TCP/IP con SSL.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

LISTENER.ORA Y JSERVER.

Administracin y Ajuste de Oracle 10g

Si no se indica nombre, hace referencia al listener de


nombre listener. Para arrancar el listener lsnr:
LSNRCTL START lsnr

Tambin pueden ejecutarse sentencias en el prompt


LSNRCTL (se obtiene tecleando lsnrctl sin argumentos).
S.O.> lsnrctl
LSNRCTL> START lsnr

579

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

580

CONTROL DEL LISTENER.

CONTROL DEL LISTENER.

Pueden combinarse distintas rdenes en un fichero de texto y


ejecutarlas de la forma:

Mediante la orden SERVICES se obtiene informacin


sobre los servicios e instancias registradas, y los
manejadores asociados a cada instancia.

lsnrctl @file_name

Para parar el listener lsnr: LSNRCTL STOP lsnr

Para obtener informacin: LSNRCTL STATUS lsnr

Para comprobar los valores actuales: LSNRCTL SHOW

Para activar la traza: lsnrctl trace <nivel> <lsnr>

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

LSNRCTL SERVICES lsnr

581

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

582

COMUNICACIONES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SQLNET.ORA

Los parmetros de configuracin para cliente y servidor, perfil,


que permiten especificar preferencias de Oracle Net se
almacenan en el fichero sqlnet.ora

Sus mensajes se generan en el fichero sqlnet.log

Permite realizar acciones como:


Priorizar
modelos
(NAMES.DIRECTORY_PATH).

SQLNET.ORA

de

localizacin

Permitir o no el acceso a ciertos clientes.

Acceso denegado.
TCP.EXCLUDED_NODES=(<dir_IP>|<servidor>)
Acceso permitido:
TCP.INVITED_NODES=(<dir_IP>|<servidor>)
Comprobar valores anteriores .
TCP.VALIDNODE_CHECKING = yes/no

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

583

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

584

SQLNET.ORA

SQLNET.ORA

Indicar el intervalo, en segundos, que media para el envio


de una confirmacin para verificar que la conexin est
activa.

Indicar el intervalo, en segundos, para completar una


operacin de envio a los clientes tras el establecimiento de
la conexin (recomendable en entornos donde las
conexiones con los clientes suelen verse interrumpidas):

SQLNET.EXPIRE_TIME
Un valor mayor que 0 asegura que no permanecen
sesiones abiertas indefinidamente. Si la confirmacin
encuentra una sesin que ha terminado o que no est en
uso, devuelve un error y fuerza al proceso servidor a
terminar.

SQLNET.SEND_TIMEOUT
Si el servidor no puede completar el envo en dicho
tiempo, se generan en el fichero sqlnet.log los errores:
ORA-12535: TNS:operation timed out y
ORA-12608: TNS: Send timeout occurred

Indicar un dominio por defecto. Este se aade


automticamente a cualquier nombre de servicio dado en
la cadena de conexin y comparado con los nombres de
servicio de tnsnames.ora
NAMES.DEFAULT_DOMAIN=<nombre_dominio>
Administracin y Ajuste de Oracle 10g

COMUNICACIONES

585

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

586

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SQLNET.ORA

SQLNET.ORA

Indicar el intervalo, en segundos, para el servidor espera


por datos de un cliente tras el establecimiento de la
conexin (recomendable en entornos donde las conexiones
con los clientes suelen verse interrumpidas):

Indicar parmetros de control del log:


LOG_DIRECTORY_CLIENT. Directorio de destino para el
fichero de log (por defecto el directorio de trabajo actual).
LOG_FILE_CLIENT. Nombre del fichero de log para el
cliente (por defecto sqlnet.log).

SQLNET.RECV_TIMEOUT

LOG_DIRECTORY_SERVER. Directorio destino para ficheros


de log del servidor (por defecto
$ORACLE_HOME/network/log).

Si un cliente no enva datos se generan en el fichero


sqlnet.log los errores:

LOG_FILE_SERVER. No aplicable. Hace referencia al fichero


de log del servidor: sqlnet.log

ORA-12535: TNS:operation timed out y


ORA-12609: TNS: Receive timeout occurred

Indicar parmetros de traza:


TRACE_DIRECTORY_CLIENT. Directorio destino para trazas
del cliente, por defecto $ORACLE_HOME/network/trace

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

587

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

588

SQLNET.ORA

SQLNET.ORA

TRACE_DIRECTORY_SERVER. Directorio destino para trazas


del servidor, por defecto $ORACLE_HOME/network/trace
TRACE_FILE_CLIENT. Nombre del fichero de traza cliente.
Por defecto sqlnet.trc
TRACE_FILE_SERVER. Nombre del fichero de traza servidor.
Por defecto svr_pid.trc
TRACE_FILELEN_CLIENT. Tamao de los ficheros traza
cliente (KB). Al alcanzar el tamao, la traza se escribe al
fichero siguiente. El nmero de ficheros se indica con
TRACE_FILENO_CLIENT
TRACE_FILELEN_SERVER. Tamao de los ficheros traza
servidor (KB). Al alcanzar el tamao, la traza se escribe al
fichero siguiente. El nmero de ficheros se indica con
TRACE_FILENO_SERVER
TRACE_LEVEL_CLIENT. Nivel de detalle de la traza (0, sin
traza, a 16, nivel mximo de traza).
TRACE_LEVEL_SERVER. Nivel de detalle de la traza (0, sin
traza, a 16, nivel mximo de traza).
Administracin y Ajuste de Oracle 10g

COMUNICACIONES

Para configurar un modelo local o no centralizado, el


parmetro
NAMES.DIRECTORY_PATH
del
fichero
sqlnet.ora -indica el orden de los mtodos de configuracin
que Oracle Net emplea para resolver los identificadores- debe
contener en primer lugar el valor tnsnames.
NAMES.DIRECTORY_PATH=(tnsnames)

Easy connect naming se configura automticamente en la


instalacin, es neceasrio que venga especificado EZCONNECT
en NAMES.DIRECTORY_PATH
NAMES.DIRECTORY_PATH=(ezconnect, tnsnames)

589

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

590

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CONFIGURACION BASICA NET.


Se muestra la forma de intercomunicar una aplicacin
cliente con una bd a travs de una red TCP/IP.
Se asume que:
Servidor BD y cliente en la misma red.

CONFIGURACION BASICA NET

Servidor BD: Instalada bd y TCP/IP. Configurado un


listener.
Cliente: Instalado Oracle Client y TCP/IP.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

591

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

592

CONFIGURACION BASICA NET.

CONFIGURACION BASICA NET.

1.- Confirmar conexin de red.

2.- Arrancar ellistener y la bd.

Realizar un loopback test para comprobar que el


servidor de bd puede comunicar con si mismo

Desde s.o.:
lsnrctl
LSNRCTL> start <nombre_listener>

ping <nombre_maquina> o ping <direccion_IP>

Nombre_listener debe estar definido en el fichero


listener.ora. Debe aparecer un mensaje indicando que el
listener ha arrancado.

Comprobar que existe comunicacin entre el cliente y la


bd (por ejemplo, con ping).

Arrancar la bd.
sqlplus /nolog
SQL> CONNECT / as sysdba
SQL> STARTUP
Administracin y Ajuste de Oracle 10g

COMUNICACIONES

593

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

594

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CONFIGURACION BASICA NET.

Administracin y Ajuste de Oracle 10g

CONFIGURACION BASICA NET. SERVICIOS.

Comprobar que el service registration de la bd ha tenido


lugar de forma correcta:
LSNRCTL> SERVICES [nombre_listener]

La sentencia SERVICES muestra los servicios soportados por


la bd y los manejadores de servicio disponibles, al menos uno.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

595

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

596

CONFIGURACION BASICA NET. SERVICIOS.

CONFIGURACION BASICA NET. SERVICIOS.


Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=net)))
Services Summary...
Service "sales.us.acme.com" has 1 instance(s).
Instance "sales", status READY, has 3 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready LOCAL SERVER
"D000" established:0 refused:0 current:0 max:10000 state:ready
DISPATCHER <machine: sales-server, pid: 1689>
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=52414))
...
Service "hr.us.acme.com" has 1 instance(s).
Instance "hr", status READY, has 2 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready LOCAL SERVER
"D000" established:0 refused:0 current:0 max:10000 state:ready
DISPATCHER <machine: sales-server, pid: 11326>
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=58361))
The command completed successfully

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

597

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

598

CONFIGURACION BASICA NET.

3.- Configurar el cliente para usar un nombre de servicio


de red (net service name). El nombre de servicio se
define durante la creacin de la bd.

El descriptor de conexin contiene:


La ruta de red hacia la bd, incluyendo la localizacin del
listener a travs de un protocolo -seccin ADDRESS-.

Se trata de un nombre para el servicio asociado a un


descriptor de conexin. El cliente, para conectarse, indicar un
nombre de usuario, una contrasea y una cadena de conexin
o nombre de servicio (reside en el fichero tnsnames.ora
-modificable
manualmente,
con
NetManager,
o
con
NetCAssistant-). Por ejemplo:

Nombre de servicio (service name) - a partir de bd versin


8i o 9i-.

Puede indicarse una instancia con INSTANCE_NAME.


sales=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
(CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com)
(INSTANCE_NAME=sales)))

sales=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
(CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com)))

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CONFIGURACION BASICA NET.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

599

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

600

CONFIGURACION BASICA NET.

CONFIGURACION BASICA NET.

El mtodo easy connect naming hace innecesaria la definicin de


servicios en tnsnames.ora, al permitir indicar directamente al cliente
un puerto y nombre de servicio de conexin (Por defecto, el nombre
de servicio usado es ORCL):

4.- Conectar a bd.


Desde el cliente:

CONNECT username/password@[//]host[:port][/service_name]

Por
ejemplo:
CONNECT
:1521/sales.us.acme.com

username/password@sales-server

Arrancar SQL*Plus: sqlplus


Conectar a bd:

Este cadena se convierte en el descriptor:


(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com)))

CONNECT username/password@nombre_servicio_red

Para conexiones URL o JDBC:


CONNECT username/password@[//][host][:port][/service_name]

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

601

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

602

COMUNICACIONES

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATABASE LINK.

DATABASE LINK

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

603

Es una conexin entre dos bbdd que permite acceder a ellas


como una nica bd; as como acceder de forma remota.
Define una va de comunicacin unidireccional, en un solo
sentido, cuya definicin se almacena en diccionario de datos.

Pueden ser pblicos o privados.

Generalmente tienen el mismo nombre que


database name de la bd remota que referencia.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

el

global

604

TEMA 7. SHARED SERVER.


MANEJADORES DE SERVICIO.
SERVIDOR DEDICADO.
SERVIDOR COMPARTIDO. DISPATCHER.
VENTAJAS SHARED SERVER.
DISPATCHER.

TEMA 7.

ARQUITECTURA
SHARED SERVER.

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

605

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

606

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 7. SHARED SERVER.

NUMERO DE DISPATCHER.
CONFIGURACION DE DISPATCHER.
PROCESOS SERVIDOR COMPARTIDOS.
AJUSTE DEL NUMERO SHARED SERVER.
OTROS PARAMETROS.
CONNECTION POOLING.
SERVICIOS Y DISPATCHER.
AJUSTE DEL NUMERO DISPATCHERS.
REDUCIR CONTENCION. DISPATCHERS.
DISPATCHERS. CLAUSULA INDEX.

MANEJADORES DE SERVICIO.

VERIFICAR CONFIGURACION.
PARAR DISPATCHERS.
FORZAR CONFIGURACION. COMPARTIDA. DEDICADA.
DESHABILITAR MODO SERVIDOR COMPARTIDO.
VISTAS.

Para cada instancia existen unos manejadores de servicio o


puntos de conexin a la bd.

Estos pueden ser:


Un servidor dedicado, o
Un dispatcher, caso de servidor compartido.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

607

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

608

MANEJADORES DE SERVICIO.

SERVIDOR DEDICADO.

El tipo de configuracin se determinar en el servidor de bd.

Respecto al cliente puede suceder que este desee usar un


manejador de servicio particular, en este caso el tipo a utilizar
se indicara en el conector:

El listener arranca un proceso dedicado exclusivo para cada


peticin cliente, que permanece hasta la finalizacin de la
misma.

Pueden darse dos opciones

(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=nombre_servicio)
(SERVER=shared/dedicated)))

El servidor dedicado hereda la peticin de conexin del


listener.
El servidor dedicado informa al listener sobre su
direccin de escucha, esta se pasa al cliente. Se cierra la
conexin con el listener y el cliente se conecta al servidor
dedicado directamente.

Si no se indica el valor para el parmetro SERVER se asume


por defecto la configuracin shared server. Si no hay
dispatchers disponibles, se usarn servidores dedicados.

Administracin y Ajuste de Oracle 10g

COMUNICACIONES

609

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

610

SHARED SERVER.

612

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SERVIDOR DEDICADO.

Administracin y Ajuste de Oracle 10g

(seleccionada en funcin del S.O. y el

protocolo):

SERVIDOR DEDICADO.

SHARED SERVER.

611

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SERVIDOR DEDICADO.

SERVIDOR COMPARTIDO.

En ciertas situaciones es preciso conectar obligatoriamente


usando servidores dedicados y ha de indicarse de forma
explcita:
Trabajos batch (en general aquellos en los que no es
posible ningn tiempo de espera).

La arquitectura de servidor compartido usa uno o varios


procesos dispatcher para redirigir las conexiones cliente a
una cola de peticiones comn. Un proceso servidor compartido
desocupado extrae la peticin de esta cola.

Permite que un pequeo nmero de procesos servidor atienda


un gran nmero de clientes, reduciendo as los recursos de
sistema necesarios respecto a cuando se usan servidores
dedicados.
La
configuracin
servidor
compartido
es
recomendable cuando existan una gran nmero de conexiones
puesto que reduce las necesidades de memoria.

El proceso listener redirige las peticiones al dispatcher. Al


llegar una peticin, el listener la conduce al dispatcher, o
indica al cliente la direccin de protocolo del dispatcher -el
cliente termina la sesin con el listener y establece una con
el dispatcher-.

Al usar Recovery Manager (RMAN) para hacer copias,


restaurar o recuperar una bd.

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

613

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

614

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SERVIDOR COMPARTIDO.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

SERVIDOR COMPARTIDO: DISPATCHER.

SHARED SERVER.

615

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

616

SERVIDOR COMPARTIDO: DISPATCHER.

Administracin y Ajuste de Oracle 10g

SERVIDOR COMPARTIDO: DISPATCHER.

Un dispatcher admite mltiples


conexiones cliente a la vez.
Cada una de ellas se asocia a
un
circuito
virtual,
una
porcin de memoria compartida
usada por el dispatcher para
las peticiones y respuestas a
los clientes.

SHARED SERVER.

617

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Permite maximizar el uso de los recursos del sistema y


mejorar el rendimiento, incrementando el nmero de clientes
que simultneamente pueden estar conectados a la bd.

Reduce el nmero de procesos que corren sobre la instancia.

Incrementa el nmero de posibles usuarios.

Disminuye el nmero de procesos servidor ociosos.

Reduce el uso de memoria y la sobrecarga del sistema.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

618

DISPATCHER.

La configuracin en modo compartido resulta adecuada en


sistemas con muchos usuarios OLTP realizando transacciones
intermitentes o aquellos sistemas con una alta tasa de
conexin a la bd (siempre hay un proceso dispatcher listo
para gestionar la peticin entrante).

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

VENTAJAS SHARED SERVER.

La configuracin en servidor
compartido es compatible con
otras soluciones aportadas por
Oracle Net y conjuntamente
permiten reducir la sobrecarga
de los servidores de bd (como,
por ejemplo, Oracle Connection
Manager).

SHARED SERVER.

El nmero de procesos dispatcher arrancados con la


instancia se controla con el parmetro de inicializacin
DISPATCHERS. Este nmero depende de la bd, del lmite
impuesto por s.o., del nmero de conexiones para cada
proceso y del nmero de conexiones requeridas para cada
protocolo.

Los procesos dispatcher y servidores compartidos pueden


arrancarse adems con la sentencia ALTER SYSTEM sin
necesidad de rearrancar la instancia.

Un dispatcher se crea automticamente, para TCP/IP,


cuando
se
elige
el
modo
servidor
compartido
(SHARED_SERVERS mayor que 0) sin especificar el
parmetro dispatchers, es equivalente a tener en el fichero
de inicializacion:
dispatchers="(PROTOCOL=tcp)"

619

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

620

NUMERO DE DISPATCHER.

CONFIGURACION DE DISPATCHER.

Una vez conocido el nmero de posibles conexiones por


proceso de s.o. puede calcularse el nmero inicial de
dispatchers a crear en el arranque:

DISPATCHERS="(PROTOCOL=TCP) (DISPATCHERS=2)
DISPATCHERS=(PROTOCOL=IPC) (DISPATCHERS=1)"

Nmero de dispatchers =
CEIL ( n mx. sesiones concurrentes / conexiones por
dispatcher )

Configuracin Tpica.

Forzar los puertos usados.


DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5000))"
DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5001))"

Es necesario tener en cuenta que tras arrancar la instancia


pueden arrancarse ms procesos si son necesarios. Configurar
demasiados dispatcher puede afectar a la productividad de
la bd.

Forzar las direcciones IP usadas (las direcciones IP deben ser


direcciones vlidas para el host donde est la instancia).
DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(HOST=144.25.
16.201))(DISPATCHERS=2)"

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

621

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

622

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PROCESOS SERVIDOR COMPARTIDOS.

Administracin y Ajuste de Oracle 10g

PROCESOS SERVIDOR COMPARTIDOS.

La configuracin de servidor compartido se habilita


asignando
al
parmetro
de
inicializacin
SHARED_SERVERS un valor mayor que cero o
asignndole un valor con ALTER SYSTEM. No es necesario
ajustar ningn otro parmetro.

Como esta configuracin requiere al menos un dispatcher,


se crea uno. Por compatibilidad, si se incluye el parmetro
DISPATCHERS y se le da un valor, se habilita
SHARED_SERVERS -con un valor por defecto de 1-.

El valor indicado por SHARED_SERVERS es el mnimo a crear


cuando arranca la instancia, tras el arranque la gestin de su
nmero es dinmica y la lleva a cabo Oracle

Si la carga del sistema decrece, se mantiene este mnimo por


lo que no debe asignarse un valor demasiado alto.

Tanto
el
nmero
de
DISPATCHERS
como
de
SHARED_SERVERS pueden modificarse dinmicamente. Es
necesario el privilegio ALTER SYSTEM.

SHARED_SERVERS = <nmero>
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

623

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

624

PROCESOS SERVIDOR COMPARTIDOS.

El nmero de shared servers en un momento determinado


de la operacin de la bd no puede fijarse -slo el mximo y el
mnimo son definibles-.

Los shared servers se crean dinmicamente bajo el control


automtico de la arquitectura shared server de la instancia
Oracle. As, no se necesita ni se puede configurar el nmero
de ellos en ningn momento.

AJUSTE DEL NUMERO SHARED SERVER.

Conforme la carga se incrementa, por ejemplo al aumentar el


nmero de consultas/DDLs/DMLs que los clientes ejecutan, la
instancia Oracle incrementa el nmero de shared servers
tambin -hasta el lmite fijado por MAX_SHARED_SERVERS-.
En el caso de que la carga descienda, los shared servers son
eliminados automticamente por la instancia.

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

El incremento de tiempos de espera en las respuestas indica


contencin para los shared servers. La vista V$QUEUE
contiene estadsticas sobre la actividad de la cola de
peticiones a los shared servers (vista accesible slo a SYS y
usuarios con el privilegio SELECT ANY TABLE como SYSTEM).

En particular, la columna WAIT


muestra el tiempo total
de espera, en centsimas de segundo, para las peticiones que
han estado en cola y TOTALQ muestra el nmero total de
peticiones que han estado alguna vez en cola.

Para monitorizar sus valores puede emplearse la sentencia:


SELECT DECODE(TOTALQ, 0, 'No Requests', WAIT/TOTALQ || '
CENTESIMAS SEGUNDO') "TIEMPO MEDIO DE ESPERA POR
PETICION" FROM V$QUEUE WHERE TYPE = 'COMMON';

625

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

Tambin puede determinarse cuntos shared servers estn


ejecutndose en un instante:

Si se detecta contencin en los shared servers, debe en


primer lugar comprobarse que no hay contencin en memoria
-examinando la shared pool y la large pool-. En ltima
instancia podran aadirse ms recursos actuando sobre los
parmetros:
MAX_DISPATCHERS
MAX_SHARED_SERVERS
DISPATCHERS
SHARED_SERVERS

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

626

CAMBIAR NUMERO SHARED SERVER.

Tras arrancar la instancia, puede modificarse el nmero


mnimo de procesos shared server mediante la sentencia
ALTER SYSTEM. Oracle elimina los servidores desocupados
cuando hay ms que el lmite mnimo especificado.

Si SHARED_SERVERS es 0, Oracle elimina todos los servidores


actuales cuando se desocupan y no arranca ninguno hasta que
se incrementa el valor de SHARED_SERVERS.

Por ejemplo, para fijar el mnimo de procesos shared server


a cuatro:

SELECT COUNT(*) "PROCESOS SHARED SERVER FROM


V$SHARED_SERVER WHERE STATUS != 'QUIT';

SHARED SERVER.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE DEL NUMERO SHARED SERVER.

ALTER SYSTEM SET SHARED_SERVERS = 4;

SHARED SERVER.

627

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

628

OTROS PARAMETROS.

OTROS PARAMETROS.

SHARED_SERVER_SESSIONS. Parmetro modificable con


ALTER SYSTEM que indica el nmero total de sesiones
concurrentes de usuario permitidas en arquitectura shared
server. Si se indica, su valor debe ser menor que SESSIONS.
Parmetros que tambin pueden requerir ajuste son:

Un circuito virtual es una porcin de memoria compartida


usada por el dispatcher para las conexiones cliente
(peticiones/respuestas). El dispatcher coloca un circuito
virtual en una cola comn cuando llega una peticin; un
servidor compartido ocioso coge dicho circuito, sirve la
peticin, y enlaza el circuito antes de intentar recuperar otro.

LARGE_POOL_SIZE. Tamao en bytes de la pila large


pool, mnimo de 300k. Es modificable con ALTER SYSTEM.
SESSIONS. Parmetro esttico, especifica el nmero
mximo de sesiones que es posible crear en el sistema;
dado que cada conexin requiere una sesin, este
parmetro determina el nmero mximo de usuarios
concurrentes en la bd.
Administracin y Ajuste de Oracle 10g

SHARED SERVER.

CIRCUITS. Parmetro modificable con ALTER SYSTEM que


indica nmero total de circuitos virtuales disponibles para
sesiones de red. Est relacionado con los requerimientos de
SGA y no es necesario indicarlo a menos que se quiera limitar
el nmero de circuitos.

629

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

OTROS PARAMETROS.

CONNECTION POOLING.

MAX_DISPATCHERS (obsoleto). Parmetro modificable con


ALTER SYSTEM que indica el mximo nmero de procesos
dispatcher permitidos a la vez. Su valor debe ser mayor o
igual que el nmero de dispachers indicados por
DISPATCHERS y menor que el nmero de procesos indicados
por PROCESSES.
Se mantiene por compatibilidad con
versiones anteriores.

SHARED SERVER.

Esta utilidad permite reducir el nmero de conexiones fsicas


de red a un dispatcher al compartir un conjunto de
conexiones entre los procesos cliente.

Se configura usando el atributo POOL del parmetro


DISPATCHERS y los atributos opcionales CONNECTIONS
(CON o CONN), SESSIONS (SES o SESS) y TICKS (TIC o
TICK).

630

CONNECTIONS ... Mximo nmero de conexiones de red


permitidas por dispatcher. Valor por defecto dependiente del s.o.

MAX_SHARED_SERVERS. Parmetro modificable con ALTER


SYSTEM que indica el nmero mximo de procesos de servidor
compatido (shared server) simultneos. Si ocurren con
demasiada frecuencia deadlocks, debe incrementarse. Su
valor debe ser mayor o igual que el nmero de dispachers
indicados por SHARED_SERVERS y menor que el nmero de
procesos indicados por PROCESSES.

TICKS ... Duracin de network tick en segundos (por defecto 1).


Es un timeout del Connection Pool.
POOL ... Activa Connection Pooling (valores YES -activado-, NO
-desactivado-, IN -conexiones entrantes- y OUT -conexiones
salientes-). Por defecto no est activado.
SESSIONS ... Nmero mximo de sesiones de red permitidas por
dispatcher (valor por defecto dependente del s.o.).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

631

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

632

CONNECTION POOLING.

SERVICIOS Y DISPATCHER.

Suponiendo un sistema que puede soportar hasta 950 conexiones


por proceso y que existen 4000 usuarios conectados al tiempo a
travs de SSL y 2500 sesiones concurrentes a travs de TCP/IP con
SSL, seran necesarios 5 dispatchers para TCP/IP y 3 ms para
TCP/IP con SSL:

Dado que una bd puede estar representada por mltiples nombres


de servicio, un conjunto de dispatchers pueden habilitarse para
servir exclusivamente peticiones a un servicio particular (e incluso
asignar mayores recursos a las mismas).
SERVICE_NAMES=CURSOxx
INSTANCE_NAME=CURSOxx
DISPATCHERS="(PROTOCOL=tcp)"
DISPATCHERS="(PROTOCOL=tcp)(SERVICE=ADMINCURSO)"

DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=5)"
DISPATCHERS="(PROTOCOL=tcps)(DISPATCHERS=3)"

Si los clientes estn frecuentemente inactivos y un dispatcher


puede gestionar 4000 sesiones TCP/IP o 2500 sesiones TCP/IP con
SSL, podra optarse por la configuracin:
DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=1)(POOL=on)(TICK=1)
(CONNECTIONS=950)(SESSIONS=4000)"
DISPATCHERS="(PROTOCOL=tcps)(DISPATCHERS=1)(POOL=on)(TICK=1)
(CONNECTIONS=950)(SESSIONS=2500)"

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

633

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

V$DISPATCHER proporciona informacin general sobre los


procesos dispatcher. V$DISPATCHER_RATE muestra
estadsticas y contiene los valores actuales (prefijo CUR_),
medios (prefijo AVG_) y mximos (prefijo MAX_).

Es necesario comparar los valores actuales con los mximos,


si aquellos se acercan a los valores medios (AVG_), estn
alejados de los mximos (MAX_) y el sistema proporciona
una respuesta adecuada en tiempo el ajuste es el correcto.

Si las tasas actuales y medias estn alejadas de los mximos,


habr que reducir el nmero de dispatchers. Si aquellas
estn cerca de los mximos, se podran aadir dispatchers.

V$DISPATCHER_RATE debera examinarse durante periodos


de carga mxima y mnima del sistema para obtener
informacin exhaustiva a partir de la cual realizar el ajuste.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

En el ejemplo anterior hay dos dispatchers, el primero sirve


peticiones para clientes accediendo al servicio CURSOxx, el otro
slo para clientes accediendo al servicio ADMINCURSO.

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

634

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE DEL NUMERO DISPATCHERS.

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

REDUCIR CONTENCION. DISPATCHERS.

Si se determina que la carga de los procesos dispatcher es


baja, debe reducirse el nmero de procesos. Si la carga es
alta, puede mejorarse la productividad de varias formas:
Habilitar Connection Pooling.
Habiltar multiplexado (Connection Manager).
Arrancar ms procesos dispatcher. Para modificar el
nmero de procesos se usa la sentencia ALTER SYSTEM. Es
importante
observar
que
su
nmero
NO
vara
dinmicamente. Cuando se reduce, puede hacerse hasta
el nmero indicado en DISPATCHERS.
ALTER SYSTEM
SET DISPATCHERS =
'(PROTOCOL=TCP)(DISPATCHERS=5)',
'(PROTOCOL=TCPS)(DISPATCHERS=2)';

635

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

636

DISPATCHERS. CLAUSULA INDEX.

DISPATCHERS. CLAUSULA INDEX.

INDEX. Este parmetro se usa en ALTER SYSTEM SET


DISPATCHERS
para
indicar
que
dispatcher
quiere
modificarse (se ignora si se indica en el fichero de
parmetros). Seala el orden en el que se inicializaron, su
rango oscila entre 0 (el primer proceso dispatcher) a uno
menos al nmero total de dispatchers definidos.
Por ejemplo, si se indican 3 dispatchers en el fichero de
parametros, para modificar el tercero debe indicarse INDEX=2
en la sentencia ALTER SYSTEM (consultar vistas v$dispatcher,
observar la columna conf_indx, y v$dispatcher_config).

Service "v9205" has 2 instance(s).


Instance "v9205", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Instance "v9205", status READY, has 3 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
"D001" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER <machine: INDL040AD, pid: 840>
(ADDRESS=(PROTOCOL=tcp)(HOST=indl040ad.idc.oracle.com)(PORT=248
0))
"D000" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER <machine: INDL040AD, pid: 2280>
(ADDRESS=(PROTOCOL=tcp)(HOST=indl040ad.idc.oracle.com)(PO
RT=5100))
The command completed successfully

Si en el fichero de inicializacin se indica:

dispatchers = "(ADDRESS=(PROTOCOL=TCP) (host=host)(port=5100))"


dispatchers = "(ADDRESS=(PROTOCOL=TCP) (host=host)(port=2480))"

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

637

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

638

SQL> alter system set DISPATCHERS='(ADDRESS=


PROTOCOL=TCP)(HOST=indl040ad)(PORT= 3500))(INDEX = 0)';
System altered.
SQL> alter system register;
System altered.
Nota: Indicando REGISTER, el PMON registra la instancia con los
listeners inmediatamente; en caso contrario los clientes pueden no
acceder a los servicios temporalmente.
Nota: Tambin podra aadirse un dispatcher con ALTER SYSTEM
indicando INDEX=3.
SHARED SERVER.

Ejecutando lsnrctl services de nuevo:


Service "v9205" has 2 instance(s).
Instance "v9205", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
Instance "v9205", status READY, has 3 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
LOCAL SERVER
"D001" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER <machine: INDL040AD, pid: 840>
(ADDRESS=(PROTOCOL=tcp)(HOST=indl040ad.idc.oracle.com)(PORT=248
0))
"D000" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER <machine: INDL040AD, pid: 2280>
(ADDRESS=(PROTOCOL=tcp)(HOST=indl040ad.idc.oracle.com)(PO
RT=3500))
The command completed successfully

SQL> alter system shutdown immediate 'D000';


System altered.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

DISPATCHERS. CLAUSULA INDEX.

Asignemos ahora el puerto 3500 al dispatcher D000's:

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DISPATCHERS. CLAUSULA INDEX.

Ejecutando lsnrctl services (lsnrctl services listener_v9205):

639

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

640

VERIFICAR CONFIGURACION.

PARAR DISPATCHERS.

Al usar shared server, debe arrancarse en primer lugar el


listener y despus la bd. Puede verificarse el estado del
dispatcher ejecutando:

SELECT NAME, NETWORK FROM V$DISPATCHER;

lsnrctl services

Es posible parar procesos especficos al estar identificados por


un nombre de la forma Dnnn -los procesos background
correspondientes se identifican de la forma Dnnn-.

NAME NETWORK
------------------------------------------------------------------------D000 (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=3499))
D001 (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=3531))
D002 (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=3532))

Para verificar que las conexiones realizadas estn usando


servidores compartidos debe consultarse la vista V$CIRCUIT
(habr una entrada por cada conexin de servidor
compartido).
Select dispatcher, circuit, server, status from v$circuit;

Para parar el dispatcher D002:


ALTER SYSTEM SHUTDOWN IMMEDIATE 'D002';

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

641

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

642

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PARAR DISPATCHERS.

Administracin y Ajuste de Oracle 10g

FORZAR CONFIGURACION COMPARTIDA.

La clasula IMMEDIATE permite parar el dispatcher, no


aceptando nuevas conexiones y terminando inmediatamente
las existentes. Posteriormente el proceso acaba.
Si no se indica IMMEDIATE, el proceso dispatcher espera
hasta que todos sus usuarios se desconecten antes de
finalizar.

Si est configurado shared server y llega una conexin


cuando no hay dispatcher registrados, las peticiones pueden
ser manejadas por un proceso servidor dedicado (configurado
en listener.ora). Si se desea que un cierto cliente use siempre
un dispatcher, debe indicarse (server=shared) en el
descriptor de conexin. Si no hay un dispatcher disponible,
se rechaza la conexin del cliente.
sales=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=servicio)
(SERVER=shared)))

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

643

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

644

FORZAR CONFIGURACION DEDICADA.

FORZAR CONFIGURACION DEDICADA.

En ciertas ocasiones, interesa que un cliente se conecte a una


instancia usando un servidor dedicado -como al ejecutar un
trabajo batch, o al usar Recovery Manager para copiar,
recuperar o restaurar una bd-.
Debe hacerse una conexin mediante un servicio de red
configurado como servidor dedicado:

Bien el fichero sqlnet.ora del cliente debe contener la


variable
USE_DEDICATED_SERVER=on
-aade
(server=dedicated) a la seccin CONNECT_DATA del
descriptor que el cliente use, el valor es sobreescrito,
incluso si est configurado el modo servidor compartido-.

Bien el servicio contiene la clausula SERVER=DEDICATED.


sales=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=servicio)(SERVER=dedicated)))

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

645

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

646

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DESHABILITAR MODO SERVIDOR


COMPARTIDO.

FORZAR CONFIGURACION.

La instancia Oracle slo proporciona la forma de limitar el


nmero total de sesiones que pueden establecerse, como un
conjunto, pero no deja limitar de forma especfica sesiones
dedicadas o sesiones compartidas como tales.

Para limitar el nmero total de sesiones que pueden


establecerse, puede usarse el parmetro SESSIONS en el
fichero de parmetros de inicializacin.

Puede hacerse asignando un valor cero a SHARED_SERVERS.


Ningn cliente ms se conecta, sin embargo Oracle retiene
algunos servidores compartidos hasta que todas las
conexiones en este modo se cierran (en cantidad igual al
menor
de
los
parmetros
SHARED_SERVERS
o
MAX_SHARED_SERVERS).

Si SHARED_SERVERS y MAX_SHARED_SERVERS son ambos


puestos a cero, todos los servidores compartidos finalizan y
las peticiones de clientes sern encoladas hasta que el valor
de cualquiera de dichos parmetros se eleve de nuevo.

Una vez todos los clientes hayan desconectado, para eliminar


los dispatchers debe indicarse:
ALTER SYSTEM SET DISPATCHERS = '';

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

647

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

648

VISTAS.

V$CIRCUIT ... Circuitos virtuales -conexiones de usuario a la


bd a traves de dispatchers y servidores.
V$DISPATCHER ... Informacin sobre los procesos
dispatcher (nombre,estado, estadsticas,...).
V$DISPATCHER_CONFIG ... Configuracin de los procesos
dispatcher.
V$DISPATCHER_RATE ... Estadsticas para dispatcher.
V$QUEUE ... Informacin sobre las colas de mensaje de los
servidores compartidos.
V$SHARED_SERVER ... Informacin de procesos sharedserver.
V$SHARED_SERVER_MONITOR ... Informacin para ajuste
de shared server.
V$SGA ... Informacin sobre system global area (SGA).
V$SGASTAT ... Informacin estadstica de la SGA.
V$SHARED_POOL_RESERVED

Administracin y Ajuste de Oracle 10g

SHARED SERVER.

TEMA 8.
ARCHIVADO DE BASE DE DATOS.

649

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

650

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 8. ARCHIVADO.

TEMA 8. ARCHIVADO.

MODOS DE FUNCIONAMIENTO DE LA BD.

INFORMACION PROCESO ARCHIVADO.

MODOS NOARCHIVELOG Y ARCHIVELOG.

FLASH RECOVERY AREA Y ARCHIVELOG.

REDO LOG ARCHIVADO.

CAMBIO A MODO NOARCHIVELOG.

INFORMACION DE ARCHIVADO.

VISTAS.

MODO DE ARCHIVADO INICIAL.


CAMBIO A MODO ARCHIVELOG.
ARCHIVELOG.
ARCHIVADO MANUAL.
DESTINO DE ARCHIVADO. FALLOS EN DESTINO.
CONTROL DE PROCESOS ARCn.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

651

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

652

MODOS DE FUNCIONAMIENTO DE BD.

MODO NOARCHIVELOG.

La bd puede funcionar en dos modos distintos: modo


noarchivelog y modo archivelog.

En este modo la bd est protegida contra el fallo de


instancia; pero si se produce un fallo en disco o en
fichero, slo puede recuperarse hasta la copia completa,
y consistente, ms reciente.

Ambos se distinguen por el manejo que se hace de los


redo log en lnea cuando se completa el llenado de un
grupo y se produce el log switch.

Est desactivado el archivado de los redo log en lnea.


Cuando se completa el llenado de un grupo y se
produce el log switch, este es reutilizado por el LGWR.

La eleccin de uno u otro modo depende de las


exigencias en cuanto a disponibilidad y capacidad
de recuperacin necesarias en nuestra operacin
diaria de la bd. Si no se puede permitir la prdida de
datos en caso de fallo en disco o fichero y es necesaria
una actividad continua de la bd, servicio 24x7, es
aconsejable el funcionamiento en modo archivelog.
Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

Deben hacerse peridica y frecuentemente copias


completas y coherentes de la bd (con la bd cerrada
consistentemente).

653

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

654

ARCHIVADO DE BASE DE DATOS

656

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

MODO ARCHIVELOG.

MODO ARCHIVELOG.

Se archivan los redo log en lnea. Cuando se completa


el llenado de un grupo, este NO es reutilizado por el
LGWR hasta que se archiva.
Pueden usarse copias realizadas mientras la base de
datos est abierta y en funcionamiento.
Permite recuperar todas las transacciones validadas
(commit) en caso de fallo en disco o de sistema
operativo -se recupera la bd al momento actual-.
Es aconsejable en el caso de no poder permitir ningn
tipo de prdida de datos.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

655

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

REDO LOG ARCHIVADO.

REDO LOG ARCHIVADO.

Se llama redo log archivado al conjunto de ficheros de


redo log archivados, que son copia de ficheros
pertenecientes a un grupo de redo log -escritos estos al
completo y en lnea- de la base de datos. Este conjunto de
ficheros archivados se escribe en un destino fuera de lnea.

Una instancia puede tener hasta diez procesos ARCn (de ARC0
a ARC9). EL proceso log writer (LGWR) arranca un nuevo
proceso ARCn cuando el nmero de procesos de archivado es
insuficiente, este hecho se registra en el fichero de alertas
(alert).

Al proceso de copia se le denomina proceso de archivado y


se ocupa del mismo el proceso archiver (ARCn). Este
proceso copia los ficheros de redo log a un dispositivo
determinado tras cada log switch.

La copia incluye las entradas de redo del fichero en lnea y


mantiene el nmero de secuencia nico de log del grupo.

El proceso descrito slo tiene lugar si la bd est en modo


ARCHIVELOG y el modo de archivado automtico est
activado.

El proceso log writer (LGWR) no puede reutilizar ni


sobreescribir un grupo de redo log hasta que ha sido
archivado.

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

657

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

658

MODO DE ARCHIVADO INICIAL.

La orden de SQL*Plus ARCHIVE LOG LIST se emplea,


entre otras cosas, para mostrar informacin de
archivado para una determinada instancia.

Indicado al crear la base de datos mediante la sentencia


CREATE DATABASE. Por defecto es NOARCHIVELOG.
CREATE DATABASE [database]
{USER SYS IDENTIFIED BY ...|USER SYSTEM IDENTIFIED BY ...
| CONTROLFILE REUSE
| LOGFILE [GROUP integer] redo_log_file_spec
[, [GROUP integer] redo_log_file_spec]...
| MAXLOGFILES integer | MAXLOGMEMBERS integer
| MAXLOGHISTORY integer | MAXDATAFILES integer
| MAXINSTANCES integer | { ARCHIVELOG | NOARCHIVELOG }
| FORCE LOGGING | CHARACTER SET charset| NATIONAL
CHARACTER SET charset
| DATAFILE datafile_tempfile_spec [, datafile_tempfile_spec]...
| default_temp_tablespace | undo_tablespace_clause
| set_time_zone_clause }...;

Modo de operacin: ARCHIVELOG o NOARCHIVELOG.


Estado de archivado automtico (habilitado o no).
Destino de archivado.
Nmero de secuencia para el ms antiguo redo log
en lnea lleno.
Idem para el prximo a archivar.
Idem para el actual.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INFORMACION DE ARCHIVADO.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

659

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

660

CAMBIO A MODO ARCHIVELOG.

CAMBIO A MODO ARCHIVELOG.


Parar la instancia de base de datos:
shutdown
Realizar una copia de seguridad de la bd.
Modificar el fichero de parmetros de inicializacin.
Arrancar una instancia y montar la bd:
startup mount
Modificar el modo de archivado y abrir la bd:
alter database archivelog;
alter database open;
Comprobar el modo (archive log list;), archivar los redo
log (archive log all;) y parar la instancia:
shutdown immediate
Realizar una copia de seguridad de la bd en el nuevo
modo.

Si no se ha establecido el modo ARCHIVELOG durante la


creacin de la bd puede hacerse posteriormente
empleando la sentencia ALTER DATABASE. Es preciso
estar conectado a la bd con privilegios de
administrador.
Pueden utilizarse las clasulas NOARCHIVELOG y
ARCHIVELOG (es preciso que la bd est montada pero
no abierta y Real Application Clusters -RACdeshabilitado).
La clasula ARCHIVELOG slo puede usarse tras parar
la instancia normalmente o de forma inmediata sin
errores (de forma coherente).

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

661

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

662

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CAMBIO A MODO ARCHIVELOG.

ARCHIVELOG. ARCHIVADO MANUAL.

El cambio de modo actualiza el fichero de control. Tras


cambiarlo, debe realizarse una copia todos los ficheros
de la base de datos.

Normalmente el archivado de redo log se realiza de


forma automtica, por mayor comodidad y seguridad.
Si se desea archivar de forma manual, al cambiar a
modo archivelog, en el paso donde se modifica el
modo de archivado y se abre la bd, debe indicarse:

Cualquier copia anterior puede desecharse pues se ha


realizado en modo NOARCHIVELOG (a menos que haya
algn problema al cambiar a modo ARCHIVELOG y sea
necesario volver al modo NOARCHIVELOG inicial).

alter database archivelog manual;


alter database open;.

Si est activo el archivado manual debemos


explcitamente archivar los redo log o la bd
suspender su funcionamiento. No es conveniente
trabajar de forma manual.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

663

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

664

ARCHIVELOG. ARCHIVADO MANUAL.

ARCHIVELOG. DESTINO DE ARCHIVADO.

Para realizar el archivado manual es necesario estar


conectado AS SYSDBA o tener el privilegio ALTER
SYSTEM. La sentencia:

Puede ser nico o mltiple, en este caso se guardan en


ms de una localizacin.
El parmetro de inicializacin LOG_ARCHIVE_DEST_n
-siendo n un entero entre 1 y 10- permite especificar
hasta diez destinos de archivado. El caso ms comn es
el archivado local -en la propia maquina-, lo que se
indica:

alter system archive log all;


guarda todos los ficheros an no archivados.

LOG_ARCHIVE_DEST_1='LOCATION=/u06/oradata/CURSOxx'

Mediante alter system archive log current; se fuerza a


cambiar de log y archivar el que se est usando as
como el resto de no archivados (util para copias
online). Esta sentencia puede usarse aun cuando se
est trabajando en modo automtico de archivado.

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

Es
incompatible
con
el
parmetro
LOG_ARCHIVE_DEST (este parmetro junto con
LOG_ARCHIVE_DUPLEX_DEST permite especificar un
mximo de dos destinos de archivado).
665

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARCHIVELOG. DESTINO DE ARCHIVADO.

LOG_ARCHIVE_DEST_1 = 'LOCATION =
/u06/oradata/CURSOxx'
LOG_ARCHIVE_DEST_2 = 'LOCATION =
/u07/oradata/CURSOxx' ...
Indicar el valor del parmetro LOG_ARCHIVE_FORMAT.
Permite indicar el formato de nombre que se aplicar a los
ficheros de archivado.

ARCHIVADO DE BASE DE DATOS

El nombre de los archivados se compone de una cadena de


caracteres combinada con variables:

Indicar en fichero de parmetros destinos de archivado.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

666

ARCHIVELOG. DESTINO DE ARCHIVADO.

Para especificar el destino de archivado debe pararse la


instancia de base de datos -shutdown- e:

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

667

%s ... Nmero de secuencia de log.


%t ... Nmero de thread.
%a ... Identificacin de activacin.
%d ... Identificacin de bd.
%r ... Identificacin de resetlog (permite asegurar
nombres nicos para los ficheros de archivado a travs de
mltiples encarnaciones de la bd, estas cambian al abrir
la bd con la opcin resetlogs).

Si se emplean maysculas (por ejemplo, %S o %T) el valor


pasa a ser de longitud fija y se completa con ceros a la
izquierda.
Un
ejemplo
de
nombre
puede
ser:
LOG_ARCHIVE_FORMAT = "LOG%t_%s_%r.ARC"

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

668

ARCHIVELOG. DESTINO DE ARCHIVADO.

ARCHIVELOG. DESTINO DE ARCHIVADO.

Los valores de dichos parmetros pueden encontrarse en:

La ruta completa de localizacin se forma concatenando


ambas
variables
(LOG_ARCHIVE_DEST_n
y
LOG_ARCHIVE_FORMAT). As, segn el ejemplo
anterior se generan ficheros de la forma:

Nmero de secuencia de log (%s ): Vista V$ARCHIVED_LOG,


columna SEQUENCE#
Nmero de thread (%t). Vista V$ARCHIVED_LOG, columna
THREAD#

/u06/oradata/CURSOxx/LOGxxx_yyy_zzz.ARC
/u07/oradata/CURSOxx/LOGxxx_yyy_zzz.ARC

Identificacin de activacin (%a). Es el nmero asignado a la


instancia de bd. Vista V$DATABASE, columna ACTIVATION#

Cada destino tiene una serie de caractersticas que


determinan su estado (ver vista v$ARCHIVE_DEST):

Identificacin de bd (%d). Vista V$DATABASE, columna DBID


Identificacin de resetlog (%r). Vista V$ARCHIVED_LOG,
columna RESETLOGS_ID

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

Valid/Invalid ... destino especificado y validez


Enabled/Disabled ... estado de disponibilidad y usabilidad
(por defecto un destino tiene valor enabled).
Active/Inactive ... si hay problemas accediendo al destino
669

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

670

ARCHIVELOG. FALLOS DESTINO ARCHIVADO.

Mediante el fichero de parmetros de inicializacin


LOG_ARCHIVE_DEST_STATE_n, parmetro dinmico
modificable con ALTER SESSION o ALTER SYSTEM, es
posible controlar el estado de un determinado destino
de archivado:

Mediante
LOG_ARCHIVE_MIN_SUCCEED_DEST=n
(modificable dinmicamente con ALTER SESSION o
ALTER SYSTEM) se determina el mnimo nmero de
destinos de archivado a los que debe poder escribirse
satisfactoriamente antes de reutilizar el redo log en
lnea. Su valor por defecto es 1.

Enabled (por defecto). Destino vlido y que puede usarse.


Defer. Destino excluido temporalmente hasta que sea
habilitado.

Con
LOG_ARCHIVE_DEST_n
(modificable
dinmicamente) puede indicarse si un destino tiene
como atributo OPTIONAL -el archivado no se requiere
para poder usar el redo log-, por-, valor por defecto, o
MANDATORY -el archivado debe tener xito antes de
poder reutilizar el redo log-.

Alternate. No habilitado pero puede llegar a estarlo si el


resto de destinos fallan.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVELOG. DESTINO DE ARCHIVADO.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

671

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

672

ARCHIVELOG. FALLOS DESTINO ARCHIVADO.


Con LOG_ARCHIVE_DEST_n puede especificarse el
mnimo nmero de segundos antes de que el proceso
ARCn intente acceder a un destino que ha fallado
(opcin REOPEN). El valor por defecto es de 300
segundos; con un valor de cero, ARCn no intentar
reescribir tras un fallo. Si no se indica REOPEN, ARCn
nunca intentar escribir tras un error.

Los procesos de archivado (ARCn) son creados


conforme se necesitan.
Puede indicarse el nmero de procesos creados en el
arranque de la instancia (ARC0 a ARC9), aadiendo en
el fichero de parmetros:
LOG_ARCHIVE_MAX_PROCESSES=<numero>;

Si se indica REOPEN con un destino de tipo OPTIONAL,


la bd puede sobreescribir los redo en lnea si hay un
error. Si se indica para un destino tipo MANDATORY y
no puede archivarse puede verse perjudicado el
funcionamiento de la bd (en este caso, deber
archivarse manualmente, cambiar el destino -DEFER,
OPTIONAL, ...- o definirlo como OPTIONAL).
Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

ARCHIVELOG. CONTROL DE PROCESOS ARCn.

No pudiendose crear ms de los indicados. Su valor por


defecto es 2.
Generalmente no es necesario indicar nada pues la bd
arranca tantos procesos ARCn como sean necesarios
para asegurar un correcto funcionamiento.
673

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

674

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVELOG. CONTROL DE PROCESOS ARCn.

ARCHIVELOG. CONTROL DE PROCESOS ARCn.

Este parmetro puede modificarse dinmicamente con


la sentencia (la bd debe estar montada pero no
abierta):
ALTER SYSTEM SET
LOG_ARCHIVE_MAX_PROCESSES=<numero>;

Cada proceso ARCn trabaja slo con un log inactivo


cada vez, pero debe escribir a cada unos de los destinos
indicados.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

675

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

676

INFORMACION PROCESO ARCHIVADO.

INFORMACION PROCESO ARCHIVADO.


32: Track archivelog destination parameter modifications
64: Track ARCn process state activity
128: Track FAL (fetch archived log) server related
activities
256: Track RFS Logical Client
512: Track LGWR redo shipping network activity
1024: Track RFS Physical Client
2048: Track RFS/ARCn Ping Heartbeat
4096: Track Real Time Apply
8192: Track Redo Apply (Media Recovery or Physical
Standby)

La informacin qe se genera y guarda en los ficheros de


traza sobre el archivado puede controlarse mediante el
parmetro
-modificable
con
ALTER
SYSTEMLOG_ARCHIVE_TRACE. Valores vlidos para el nivel
de traza son:

0: Disable archivelog tracing (valor por defecto)


1: Track archival of redo log file
2: Track archival status of each archivelog destination
4: Track archival operational phase
8: Track archivelog destination activity
16: Track detailed archivelog destination activity
32: Track archivelog destination parameter modifications
64: Track ARCn process state activity
128: Track FAL (fetch archived log) server related
activities

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

Pueden combinarse distintos niveles indicando un valor


resultado de la suma de dos de ellos (por ejemplo, el
valor 3 hace referencia a 1 y a 2).

677

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INFORMACION PROCESO ARCHIVADO.

FLASH RECOVERY AREA.

Aun cuando se fije el valor por defecto, cero, Oracle


continuar generando entradas en el fichero de alert y
trazas en respuesta a condiciones de error.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

Al fijar el valor por defecto, cero, Oracle continuar


ARCHIVADO
DE DATOS
generando entradas en el fichero de
alertDEyBASE
trazas
en 678
respuesta
a condiciones
de2008
error.
Juan Luis Serradilla
Amarilla y Francisco
Fernndez Martnez
Administracin y Ajuste de Oracle 10g

679

Lugar centralizado para ficheros de copia y recuperacin


(directorio gestionado por Oracle, sistema de ficheros o disco
automatic storage management) tales como redo
archivado, RMAN, ...

La bd sera recuperable usando los ficheros almacenados en el


rea flash (ficheros de control, redo en lnea, redo
archivado, flashback, copias de ficheros de datos, ...).

Se define una cantidad de espacio que puede Oracle usar en


la flash recovery area. Oracle and RMAN escriben en el rea
hasta alcanzar el lmite; al llegar al mismo, Oracle elimina el
mnimo conjunto de ficheros existente que sean obsoletos,
copias redundantes o volcados a otro dispositivo.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

680

FLASH RECOVERY AREA.

FLASH RECOVERY AREA Y ARCHIVELOG.

Se recomienda que el rea de flash recovery sea la suma del


tamao de la bd, del tamao de las copias incrementales y el
tamao de todos los archivados no copiados a otro dispositivo
de seguridad. Su tamao mnimo debe ser al menos suficiente
para contener los archivados no copiados a un dispositivo de
seguridad.
El rea de flash
inicializacin:

se

define

con

los

parmetros

Es recomendable usar el rea Flash Recovery para


almacenar los archivados. Pueden darse varios casos, de ms
a menos recomendable:
Slo realizar el archivado en el rea de flash recovery y usar
discos espejo para copiar redundantemente los archivados.

de

Realizar el archivado en el rea de flash recovery y fijar otros


destinos de archivado (LOG_ARCHIVE_DEST_n) externos al rea.

DB_RECOVERY_FILE_DEST_SIZE ... Cantidad mxima

No usar el rea flash recovery para archivar.

total, en bytes, del rea (este parmetro debe indicarse antes de


DB_RECOVERY_FILE_DEST).

DB_RECOVERY_FILE_DEST

... Localizacin (directorio,


sistema de ficheros o disco automatic storage management
-ASM-), NO puede ser sistema de ficheros raw.

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

681

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Si se configura un rea de flash y no se indican destinos de


archivado
(LOG_ARCHIVE_DEST_n),
entonces
LOG_ARCHIVE_DEST_10 implcitamente apunta al rea (a
menos que se le asigne la cadena vaca).

Si se asigna alguna localizacin para LOG_ARCHIVE_DEST_n,


los archivados se almacenan slo en la misma y no en el rea
de flash. Si esta est configurada es necesario indicar
explicitamente el rea como uno de los destinos

Parar la instancia de base de datos:


shutdown
Realizar una copia de seguridad de la bd.
Modificar el fichero de parmetros de inicializacin.
Arrancar una instancia y montar la bd:
startup mount
Modificar el modo de archivado:
alter database noarchivelog;
alter database open;
Comprobar el modo (archive log list) y parar la instancia:
shutdown immediate
Realizar una copia de seguridad de la bd.

Los nombres de fichero para los archivados en el rea de


flash no vienen determinados por LOG_ARCHIVE_FORMAT y
son Oracle Managed Filenames.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

682

CAMBIO A MODO NOARCHIVELOG.

LOG_ARCHIVE_DEST_1 =
'LOCATION=<USE_DB_RECOVERY_FILE_DEST>'

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FLASH RECOVERY AREA Y ARCHIVELOG.

Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

683

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARCHIVADO DE BASE DE DATOS

684

VISTAS.
V$DATABASE. Consulta del modo de la bd ARCHIVELOG
o NOARCHIVELOG.
V$ARCHIVED_LOG.
Informacin
histrica
sobre
archivado a partir del fichero de control.
V$ARCHIVE_DEST. Informacin sobre destino de
archivado.
V$ARCHIVE_PROCESSES. Informacin sobre el estado
de los procesos de archivado.
V$BACKUP_REDOLOG. Informacin sobre backups de
los logs archivados.
V$LOG. Informacin sobre grupos de redo en lnea indica tambin cual necesita archivarse-.
V$LOG_HISTORY. Informacin histrica de log.
Administracin y Ajuste de Oracle 10g

ARCHIVADO DE BASE DE DATOS

685

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIA Y RECUPERACION: METODOS.


COPIAS FISICAS/LOGICAS.
ESTRATEGIAS DE COPIA. CONSIDERACIONES.
FLASH RECOVERY AREA. ARCHIVADO.
COPIAS COMPLETAS/PARCIALES.

ESTRATEGIA MANUAL DE COPIA.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

686

TEMA 9. COPIAS DE SEGURIDAD.


COPIA OTROS FICHEROS.
COPIA MODO SUSPEND.

COPIAS DE SEGURIDAD

RESTAURACION DE COPIAS.
DBVERIFY. VALIDACION FICHEROS Y SEGMENTOS.

FLASHBACK DATABASE

OBTENCION DE INFORMACION DE COPIA.


COPIA COMPLETA BD. PROCESO.
COPIA TBSP FUERA LINEA. PROCESO.
COPIA TBSP LECTURA/ESCRITURA EN LINEA. PROCESO.
COPIA TBSP LECTURA/ESCRITURA EN LINEA. PROBLEMAS EN LA
COPIA.
COPIA TBSP SOLO LECTURA EN LINEA. PROCESO.
COPIA FICHERO CONTROL.
COPIA REDO ARCHIVADO.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 9. COPIAS DE SEGURIDAD.

Administracin y Ajuste de Oracle 10g

TEMA 9.

PUNTOS RESTAURACION.
ACTIVAR FLASHBACK DATABASE.
VENTANA FLASHBACK DATABASE.
MONITORIZACION FLASHBACK DB

COPIA LGICA. DATA PUMP EXPORT/IMPORT.

TABLESPACES TRANSPORTABLES.
LIMITACIONES.
COMPATIBILIDAD.
PROCESO.

687

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

688

COPIA Y RECUPERACION: METODOS.

COPIA Y RECUPERACION: METODOS.

Para realizar la copia y recuperacin fsicas Oracle proporciona


dos soluciones:

No obstante, los mtodos manuales tambin son tiles


y diferentes circunstancias pueden justificar el uso de
los mismos:

Recovery Manager, una herramienta propia de Oracle


que puede gestionarse a travs de un interfaz lnea de
comandos o grfica.

Migracin de bd a una versin actualizada


conservando an los script de copia actuales.

Coexistencia de bbdd tipo Oracle7 junto a otras ms


recientes, y la necesidad de coherencia en el manejo de
todas ellas (RMAN slo soporta bd versin 8.0 o superior).
Algo que debera ser inusual actualmente.

Copia y recuperacin gestionada por usuario, que


emplea una mezcla de rdenes de s.o. y SQL*Plus.

pero

Se recomienda usar Recovery Manager al poderse realizar los


mismos tipos de copias y recuperaciones que manualmente,
adems de proporcionar un interfaz estndar sobre distintos
sistemas operativos.

Prdida de las copias realizadas con RMAN, y necesidad de


restaurar copias manuales y recuperar con la orden
SQL*Plus RECOVER.
Nota: La exposicin estar basada en el empleo de mtodos manuales de copia y
recuperacin.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

689

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

Debe permitir, en caso de prdida de los datos


originales, recuperarlos.

Fsicas. Copias de los ficheros que integran la bd, ficheros

de control y ficheros archive log hechas con utilidades


del gestor de bd -Recovery Manager, RMAN- o del s.o..

Recuperacin de la bd Point-in-Time. Se recupera un


tbsp. o la bd al completo a un momento concreto.
Importacin desde copia lgica.

Lgicas. Exportacin a fichero binario mediante las


utilidades de exportacin (DATA PUMP EXPORT o EXPORT).

La copia fsica es la base del sistema de copia y


recuperacin, aunque ambas son complementarias.
COPIAS DE SEGURIDAD

Frente a errores de usuario.


Flashback Database. Permite devolver la bd al completo a
un estado anterior sin necesidad de restaurar, tomando
como referncia un SCN o creando los puntos de
restauracin, restore points, necesarios. Debe estar
configurada una flash recovery area.

Pueden clasificarse en:

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

690

ESTRATEGIAS DE COPIA.
CONSIDERACIONES.

COPIAS FISICAS/LOGICAS.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Frente a fallos de mquina (media failure).


El tipo de fallo (fallo fsico, sobreescritura, borrado o
corrupcin de un fichero de bd, ...) determina la tcnica
de recuperacin a usar.

691

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

692

ESTRATEGIAS DE COPIA.
CONSIDERACIONES.

ESTRATEGIAS DE COPIA.
CONSIDERACIONES.

Ciertamente, es necesario, adems de disponer de un plan de


copia y recuperacin, anticiparse a posible problemas.

Un aspecto bsico es tener mltiples copias de los ficheros de


redo en lnea as como de los ficheros de control y del redo
archivado y que estas copias residan cada una en un disco
fsico diferente.

Si un fallo daa una de las copias de redo en lnea, la bd puede


continuar sin interrupcin. Si no se dispone de copias y se daa el
redo, a bd se detiene y pueden perderse datos.
Si se daa cualquier fichero de control, est o no multiplexado, la
bd se detiene cuando se intenta leer o escribir en dicho fichero.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

693

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Conjunto de Redundancia.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

694

COPIAS DE SEGURIDAD

Hacer copias espejo de los fiheros de datos si es posible para


evitar la realizacin de media recovery debido a un fallo de
disco.

Copia en modo ARCHIVELOG.


Disponer de mltiples destinos de archivado (entre ellos puede
figurar la flash recovery area).
Copiar la bd al completo tras su creacin o paso a modo
ARCHIVELOG.
Realizar copias de los tbsp con la bd abierta o cerrada. En
particular de aquellos de uso intensivo deben hacerse copias
frecuentes (para reducir el tiempo de recuperacin).
Copiar el fichero de control cada vez que se realice un cambio
estructural en la bd (ALTER DATABASE BACKUP CONTROLFILE).
Copiar los redo log archivados frecuentemente. Es conveniente
realizar copias a varios soportes (cinta, disco, ...).

Es aconsejable hacer copias espejo del fichero de control. Es


necesario que todas las copias del fichero de control estn
accesibles o caera la instancia.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

ESTRATEGIAS DE COPIA.
CONSIDERACIONES.

Est integrado por los ficheros necesarios para recuperar la


bd: Copia del fichero de control y de todos los ficheros de
datos (datafiles), redo log archivado, duplicado de los
redo log en lnea y del fichero de control actual y ficheros de
configuracin (fichero de parmetros, tnsnames.ora y
listener.ora). El conjunto de redundancia debe estar en discos
distintos de aquellos que contienen ficheros de datos, redo
en lnea y ficheros de control. Tambin se aconseja mantener
distintas copias del conjunto.

Nombre, fabrica y modelo de la mquina donde reside la bd.


Versin del s.o.
Nmero de discos y controladoras
Capacidad de disco y espacio libre.
Nombre de todos los ficheros de datos.
Nombre y versin del sw de gestin de almacenamiento.
Nombre de la instancia (SID).
Identificador de la bd (DBID).
Versin y parche del servidor Oracle.
Versin y parche del sw de comunicaciones.
Mtodo y frecuencia de las copias as como de la recuperacin

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRATEGIAS DE COPIA.
CONSIDERACIONES.

Es necesario anotar la configuracin hw y sw del servidor.

695

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

696

ESTRATEGIAS DE COPIA.
CONSIDERACIONES.

ESTRATEGIAS DE COPIA.
CONSIDERACIONES.

Realizar copias de manera frecuente y regular (ms frecuencia


a mayor nmero de operaciones DML).

Realizar copias antes y despus de cambios en la estructura


de la bd (creado/borrado de tbsp, adicin/renombrado de
fichero de datos, adicin, renombrado o borrado de redo log
en lnea, ...).

Realizar copia despus de operaciones con la opcin


NOLOGGING, creacin de tablas e ndices, puesto que la bd no
genera redo para dichos objetos y no podran recuperarse
desde las copias existentes.

Realizar copia completa despus de abrir la bd con la opcin


RESETLOGS.

Guardar las copias antiguas de la bd.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Realizar copias lgicas de la bd, como complemento a las


copias fsicas, puesto que no son sustitutivos de las mismas.

Evitar la copia de redo log en lnea pues accidentalmente


pueden ser restaurados y corromper la bd.
La mejor forma de protegerlos es tener mltiples
miembros en cada grupo, y en diferentes discos.
Si la bd est en modo ARCHIVELOG, el proceso ARC
guarda los redo que se han llenado. Si la bd est en
modo NOARCHIVELOG, el nico tipo de copias vlido es el
realizado con la bd cerrada, consistente y completo; los
ficheros en este tipo de copia son todos consistentes y no
necesitan recuperacin ni, por tanto, los redo en lnea.
Pueden restaurarse, por error, copias de los redo log en
lnea y corromper la bd.

697

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

698

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FLASH RECOVERY AREA.

FLASH RECOVERY AREA

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

699

Se trata de un lugar en disco donde la bd puede crear y


gestionar fciheros relacionados con copia y recuperacin.
Debe determinarse su localizacin (directorio o grupo de
discos ASM -Automatic Storage Management-) y una cuota de
espacio, cantidad de espacio mximo a usar, para la misma
(para averiguar la cuota de disco y uso de disco del rea flash
debe consultarse V$RECOVERY_FILE_DEST).

Este rea debe estar separada de aquel lugar donde residan


los ficheros de la estructura de la bd (ficheros de datos, de
control y redo en lnea). El rea flash est relacionada con
OMF -Oracle Managed Files- y ASM -Automatic Storage
Management-.

Para habilitar el rea flash debe darse valor a los


parmetros
de
inicializacin
DB_RECOVERY_FILE_DEST_SIZE (cuota de disco) y
DB_RECOVERY_FILE_DEST (localizacin).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

700

FLASH RECOVERY AREA.

FLASH RECOVERY AREA. ARCHIVADO.

Las
vistas
V$RECOVERY_FILE_DEST
y
V$FLASH_RECOVERY_AREA_USAGE ayudan a determinar
si se ha reservado suficiente espacio para el rea flash.

Por defecto, LOG_ARCHIVE_DEST_10 seala al rea flash.


Los nombres generados para el log archivado no siguen la
pauta fijada por LOG_ARCHIVE_FORMAT.

V$RECOVERY_FILE_DEST permite averiguar la localizacin,


cuota, espacio en uso y espacio recuperable mediante el
borrado de ficheros y nmero de ficheros en el rea flash.

Tambin puede indicarse que cualquier otro destino de


archivado seala dicha rea:
LOG_ARCHIVE_DEST_1 = 'LOCATION=/...'
LOG_ARCHIVE_DEST_2 =
'LOCATION=USE_DB_RECOVERY_FILE_DEST'

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

V$FLASH_RECOVERY_AREA_USAGE permite averiguar el


porcentaje de disco usado por los diferentes tipos de ficheros
y espacio recuperable mediante el borrado de ficheros
obsoletos, redundantes o ya almacenados en otro soporte.
SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

701

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

702

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS COMPLETAS/PARCIALES.
Completas. Incluyen ficheros de control y de datos. Es
independiente del modo de operacin de la bd.

TIPOLOGIA DE COPIAS

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

703

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

704

COPIAS COMPLETAS/PARCIALES.

COPIAS COMPLETAS/PARCIALES.

Una copia completa puede ser:

Slo pueden efectuarse copias consistentes tras un


shutdown limpio de la bd, esta no debe abrirse hasta
finalizar la misma.
Una copia completa y consistente es la nica opcin vlida
para bd en modo NOARCHIVELOG.

Consistente. Puede abrirse con la opcin RESETLOGS sin


realizar media recovery, o sea, sin aplicar redo a los
ficheros de datos. Todos los ficheros de datos deben:
Tener el mismo system change number (SCN) en sus
cabeceras, a menos que los tbsp correspondientes esten en
slo lectura u offline normal.
No contienen cambios tras el SCN.
Concuerdan con la informacin de checkpoint almacenada en
el fichero de control.

Inconsistente. Copia donde algun fichero contiene cambios


hechos despus del checkpoint de los ficheros. Necesita
recuperacin antes de ser consistente.
Normalmente se hacen con la bd abierta mientras se
realiza la copia. Pero tambin si la copia se hace sobre una
bd cerrada justo despus de caer una instancia o de cerrar
la bd con SHUTDOWN ABORT.
Slo son vlidos si la bd est en modo archivelog.

Nota: Un "system change number" (SCN) es una marca de tiempo,


"timestamp", interna para una versin validada de la bd. La bd emplea el
valor de reloj SCN para garantizar la consistencia de las transacciones. Por
ejemplo, cuando un usuario valida una transaccin, Oracle graba un SCN
para esta validacin en el "redo log" en lnea.
Oracle tambin emplea SCNs para coordinar transacciones distribuidas
entre distintas bbdd
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

705

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Durante las copias realizadas en lnea pueden producirse


inconsistencias en los datos que se intenta copiar (por
ejemplo, la lectura de bloques fracturados -con datos
antiguos y nuevos al estar modificndose-).
Para evitarlo, el tbsp. debe ponerse en modo backup con
la sentencia alter tablespace begin backup (no puede
indicarse para un tbsp de slo lectura ni un tbsp temporal
gestionado localmente). Mientras dura la copia no puede
ponerse fuera de lnea, parar la instancia o comenzar otra
copia del tbsp.
Mediante alter tablespace end backup se indica que la
copia del tbsp. ha acabado. Se recomienda usarla tan
pronto como sea posible, pues si sucede un fallo de
instancia o shutdown abort, Oracle piensa que se
necesita media recovery en el siguiente arranque (quiz
con redo log archivado).

Copias de los ficheros de un tablespace. Slo son


vlidos si la bd est en modo archivelog (en modo
noarchivelog slo cuando est en modo slo lectura u
offline normal).
Pueden hacerse con RMAN o mediante el s.o..
Copia de un fichero de datos. Vlido en modo archivelog
(en modo noarchivelog cuando est en modo slo lectura u
offline normal, o cuando todo fichero de un tbsp. se
copia). Pueden hacerse con RMAN o mediante el s.o..
Copia de fichero de control. Mediante RMAN, o la
sentencia alter database backup controlfile -a binario-.
Copias de redo log archivados. Fundamentales para
recuperar una copia inconsistente. Deben copiarse todos
los producidos durante una copia inconsistente.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

706

COPIAS COMPLETAS/PARCIALES.

Parciales.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS COMPLETAS/PARCIALES.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

707

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

708

ESTRATEGIA MANUAL DE COPIA.


Se realizan copias peridicas de los ficheros de datos y redo
archivado usando rdenes de s.o.. Es necesario relacionar las
copias realizadas con los originales (por ejemplo, adoptando
nombres derivados del original.

Objeto

ESTRATEGIA MANUAL DE COPIA

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

709

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

cp <nombre_fichero> <nombre_fichero.fecha>

F.redo archivado

cp <nombre_fichero> <nombre_fichero.fecha>

F. control

alter database backup controlfile to <nombre_fichero>

F. parmetros

create pfile= <init.ora.fecha> from spfile;

F. red

cp tnsnames.ora tnsnames.ora.fecha

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

710

OBTENCION DE INFORMACION DE COPIA.

Identificar los ficheros a copiar.

Se consultan las vistas V$DATAFILE -ficheros de datos-,


V$TABLESPACES -tbsp-, V$LOGFILE -redo en lnea- y
V$CONTROLFILE -f.control-. Al hacer copia de un fichero
de
control
con
ALTER
DATABASE
BACKUP
CONTROLFILE
TO
<fichero>;
debe
guardarse
informacin sobre los f.datos y f.redo en lnea existentes
junto con la copia del fichero de control (la estructura de la
bd en el momento de hacer la copia puede ser distinta a la
existente en el momento de recuperar).

Ficheros de datos

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

OBTENCION DE INFORMACION DE COPIA.

Actuacin

La vista V$BACKUP es til con la bd abierta y tambin tras


un fallo de instancia pues muestra el estado de copia de los
ficheros en el instante del fallo y permite determinar si algn
tbsp. ha quedado en modo copia.
SQL> SELECT t.name AS "TBSP", d.file# as "DF#", d.name AS
"DF_NAME", b.status FROM V$DATAFILE d, V$TABLESPACE t,
V$BACKUP b WHERE d.TS#=t.TS# AND b.FILE#=d.FILE# AND
b.STATUS='ACTIVE';

Determinar el estado de copia (vista V$BACKUP).


Muestra si un f.datos en lnea forma parte de una copia
actual el valor ACTIVE de la columna status indica
en copia- (til con bd abierta y con f.control no recuperado
ni nuevo -en este caso, contendra informacin
desactualizada-).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

711

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

712

COPIA COMPLETA BD.

COPIA COMPLETA BD. PROCESO.

Es posible realizarla tras cerrar la bd, shutdown, con las


opciones: Normal, immediate o transactional.

Puede realizarse en modo archivelog o noarchivelog.

Puede restaurarse sin hacer recuperacin (en modo


archivelog puede recuperarse posteriormente para llevar la
bd a un momento ms actual).

Cerrar la bd.

SQL> SHUTDOWN NORMAL / IMMEDIATE / TRANSACTIONAL

No debera realizarse copia de la bd si ha sido parada de


forma anormal (shutdown abort o cada debido a un fallo).

Copiar los ficheros apropiados (datos, control, inicializacin,


configuracin -buscar todos los ficheros .ora comenzando por
el $ORACLE_HOME-, ...).

Rearrancar la bd.

En modo archivelog se recomienda hacer copia del f.control


con:
ALTER DATABASE BACKUP CONTROLFILE TO <fichero>;

SQL> STARTUP
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

713

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

COPIA TBSP FUERA LINEA.

Puede realizarse la copia de todos o parte de los f.datos que


integran un tbsp cuando est fuera de lnea (para ponerlo
fuera de lnea debe tenerse el privilegio DBA o MANAGE
TABLESPACE).

Realizar copia de los f.datos (cp).


Poner el tbsp en lnea (ALTER TABLESPACE <nombre_tbsp>

ONLINE;).

COPIAS DE SEGURIDAD

Poner el tbsp fuera de lnea con prioridad normal (ALTER

TABLESPACE <nombre_tbsp> OFFLINE NORMAL;).

Si el tbsp fuera de lnea contiene ndices al intentar acceder a


estos se generan errores. El problema se pondr de manifiesto
cuando el mtodo de acceso elegido por el optimizador
requiera usar los ndices.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Identificar los ficheros de datos correspondientes a los tbsp a


copiar (DBA_DATA_FILES).
SQL> SELECT TABLESPACE_NAME, FILE_NAME
FROM SYS.DBA_DATA_FILES
WHERE TABLESPACE_NAME = '...';

No puede ponerse fuera de lnea el tbsp SYSTEM o un tbsp


con segmentos de rollback activos.

Administracin y Ajuste de Oracle 10g

714

COPIA TBSP FUERA LINEA. PROCESO.

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

715

Forzar el archivado de redo, de forma que aquel necesario


para recuperar la copia del tbsp est disponible (ALTER
SYSTEM ARCHIVE LOG CURRENT;).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

716

COPIA TBSP LECTURA/ESCRITURA


EN LINEA. PROCESO.

COPIA TBSP LECTURA/ESCRITURA


EN LINEA. PROCESO.

Cualquier tbsp a copiar debe ser puesto en modo copia


(backup mode) mediante la sentencia ALTER TABLESPACE
... BEGIN BACKUP. Tras la copia, debe abandonarse el modo
copia con ALTER TABLESPACE ... END BACKUP o ALTER
DATABASE END BACKUP. Al recuperar la bd se preguntar
por los ficheros de redo necesarios para aplicar.

Realizar la copia (cp).

Indicar fin de copia:

Identificar los f.datos que pertenecen al tbsp.

SQL> ALTER TABLESPACE <NOMBRE_TBSP> END BACKUP;

SQL> SELECT TABLESPACE_NAME, FILE_NAME


FROM SYS.DBA_DATA_FILES
WHERE TABLESPACE_NAME = '...';

Forzar el archivado de redo, de forma que aquel necesario


para recuperar la copia est disponible:
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

Indicar el comienzo de copia:

SQL> ALTER TABLESPACE <NOMBRE_TBSP> BEGIN BACKUP;


Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

717

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

718

COPIA TBSP LECTURA/ESCRITURA


EN LINEA.

Si el proceso de copia involucra a varios tbsp, pueden


copiarse de forma paralela o en serie (en ambos casos se
fuerza el archivado al final del proceso, cuando sobre todos
los tbsp se haya hecho el end backup). Es necesario tener
en cuenta que hacerlo de forma paralela puede hacer que se
generan grandes cantidades de redo si hay gran actividad
en los tbsp. involucrados y debera existir redo suficiente.

En la opcin paralela en lugar de realizar un ALTER


TABLESPACE ... BEGIN BACKUP; para cada tbsp, si se estn
copiando todos ellos puede indicarse:
SQL> ALTER DATABASE BEGIN BACKUP;

Y en lugar de usar ALTER TABLESPACE ... END BACKUP; puede


utilizarse:

Paralela.

SQL> ALTER DATABASE END BACKUP;

Se ponen simultneamente todos los tbsp en modo begin


backup -implica un gran crecimiento de redo en lnea al
actualizarlos-. Se realiza la copia y se hace end backup.

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIA TBSP LECTURA/ESCRITURA


EN LINEA.

Administracin y Ajuste de Oracle 10g

Serie (Opcin recomendada).


Repetir el proceso begin backup-copia-end backup para
cada tbsp. minimiza el tiempo begin-end para un tbsp.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

719

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

720

COPIA TBSP LECTURA/ESCRITURA EN


LINEA. PROBLEMAS EN LA COPIA.

COPIA TBSP LECTURA/ESCRITURA EN


LINEA. PROBLEMAS EN LA COPIA.

Una copia de tbsp puede fallar y no completarse cuando:

Abandonar el modo de copia (slo si se est seguro de que los


ficheros estn en la fecha actual).

La copia ha terminado pero no se indica su fin (end backup).

Montar la bd (STARTUP MOUNT).


Consultar en V$BACKUP tbsp en copia (status='ACTIVE').
Ejecutar ALTER DATABASE END BACKUP; (slo si la bd
montada y no se ha restaurado ningun fichero implicado, en
de que est abierta debe emplearse ALTER TABLESPACE ...
BACKUP o ALTER DATABASE DATAFILE ... END BACKUP para
tbsp o fichero implicado).
Abrir la bd.

Se interrumpe la copia debido a un fallo de instancia o la


realizacin de un shutdown abort.
En caso de un crash recovery si un fichero est en modo copia
y se intenta abrir, Oracle interpreta que es una copia a recuperar
y no se abre la bd hasta la recuperacin o hasta abandonar el
modo copia (se generan los ORA-01113 y ORA-01110).

ORA-01113: file xx needs media recovery


ORA-01110: data file xx: '/.../.../....dbf'

est
caso
END
cada

Recuperacin (caso de no estar seguro de haber restaurado


copia).
Montar la bd (STARTUP MOUNT).
Recuperar la bd (RECOVER DATABASE) y comprobar
V$BACKUP que no hay tbsp en copia (status='ACTIVE').
Abrir la bd.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

721

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIA FICHERO CONTROL.

Consultar DBA_TABLESPACES para determinar qu tbsp estn


en modo slo lectura (SELECT TABLESPACE_NAME, STATUS
FROM DBA_TABLESPACES WHERE STATUS = 'READ ONLY';)
Identificar los ficheros asociados a los tbsp consultando
DBA_DATA_FILES.
Copiar los ficheros correspondientes.
Al restaurar la copia, debe ponerse fuera de lnea el tbsp, copiar
los ficheros y ponerlo en lnea.
La copia es vlida incluso si se cambia a lectura/escritura tras la
copia -necesitar recuperacin-.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

En una bd en modo archivelog debe copiarse tras realizar un


cambio estructural. Se requiere el privilegio ALTER
DATABASE.
Puede copiarse a un fichero binario (preferible al contener
informacin sobre historia de redo archivado, tbsp. fuera de
lnea o slo lectura, ...) o a un fichero de traza. En ambos
casos (copia a fichero binario o de traza) las entradas para los
ficheros TEMP no son incluidas.

Fichero binario.

No es necesario poner el tbsp en modo copia pues la bd no


permite cambios en el mismo, simplemente copiar los f.datos
correspondientes. Si el conjunto de tbsp es autocontenido
puede adems realizarse la exportacin del tbsp con vistas a
realizar posteriormente un transporte de tbsp.

Administracin y Ajuste de Oracle 10g

722

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIA TBSP SOLO LECTURA EN


LINEA. PROCESO.

Administracin y Ajuste de Oracle 10g

en

Realizar el cambio deseado a la bd.


ALTER
DATABASE
BACKUP
CONTROLFILE
'/.../copia/fcontrol.bak' REUSE;

TO

La opcin REUSE permite sobreescribir un f.control existente


723

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

724

COPIA FICHERO CONTROL.

COPIA REDO ARCHIVADO.

Fichero de traza.
Se generan sentencias SQL de creacin del fichero de
control en un fichero de traza (arrancan la bd, recrean el
f.control, y recuperan y abren la bd).
Debe montarse o abrirse la bd y ejecutar la sentencia:

Los ficheros de redo archivado generados pueden copiarse a


cinta u otro dispositivo y, de esta forma, ahorrar espacio
donde este localizada la bd.

Para realizar la copia, se averiguan los ficheros de redo


archivado que la bd ha generado:
SQL> SELECT THREAD#,SEQUENCE#,NAME
FROM V$ARCHIVED_LOG;

ALTER DATABASE BACKUP CONTROLFILE TO


TRACE;
Si no se indica RESETLOGS ni NORESETLOGS en la
sentencia, el fichero de traza contiene versiones del fichero
para ambas opciones. Las entradas de ficheros temporales
se incluyen en la salida usando sentencias "ALTER
TABLESPACE... ADD TEMPFILE.
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

725

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

Existen herramientas que permiten hacer copias espejo o


duplicados exactos y desvincular la copia del original de forma
que puedan usarse independientemente.

Con la funcionalidad SUSPEND/RESUME puede suspenderse


la entrada/salida de la bd, desvincular la copia espejo y
hacer una copia de la misma. En este estado no puede
ejecutarse
SHUTDOWN
IMMEDIATE,
NORMAL
o
TRANSACTIONAL; ejecutar SHUTDOWN ABORT reactiva la bd.
En una configuracin RAC no debe arrancarse una nueva
instancia mientras los nodos originales estn en suspenso.

La sentencia ALTER SYSTEM SUSPEND permite suspender


la bd, todas las operaciones E/S se completan pero cualquier
nueva operacin se guarda en cola. Se recomienda que se
preceda con una sentencia begin backup (inicio de copia).

Tras la copia se ejecuta la sentencia ALTER SYSTEM


RESUME.

La forma ms sencilla de localizarlos es realizar una bsqueda


automtica desde $ORACLE_HOME de todos los ficheros
acabados en .ora (orden find de s.o. UNIX).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

726

COPIA MODO SUSPEND.

Como norma general, cada vez que se modifiquen deben


copiarse adems el fichero de parmetros de inicializacin, los
de interconexin y el de contraseas.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIA OTROS FICHEROS.

Se realiza una copia de cada nmero de secuencia de log


(en caso de guardar mltiples copias, slo es necesario una
por nmero de secuencia).

COPIAS DE SEGURIDAD

727

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

728

COPIA MODO SUSPEND.

Poner los tbsp en modo copia:


ALTER TABLESPACE <nombre> BEGIN BACKUP; o
ALTER DATABASE BEGIN BACKUP;

Suspender la bd: ALTER SYSTEM SUSPEND;

Comprobar el cambio de estado (consultar V$INSTANCE, campo


DATABASE_STATUS: SELECT DATABASE_STATUS FROM V$INSTANCE;

Realizar la copia espejo.

Finalizar la suspensin de la bd: ALTER SYSTEM RESUME;

Comprobar que la bd est activa (consultar V$INSTANCE, campo


DATABASE_STATUS).

Poner tbsp modo no copia: ALTER TABLESPACE users END BACKUP;

Copiar el f.control y archivar los redo en lnea.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

METODOS DE VERIFICACION DE
COPIA:
RESTAURACION DE COPIAS
DBVERIFY

729

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Peridicamente deben verificarse las copias realizadas para


asegurar que son tiles para la recuperacin.

La mejor forma de hacerlo es restaurar las copias en otra


mquina e intentar abrir la bd, realizando recuperacin si es
necesario.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

730

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBVERIFY:
DATABASE VERIFICATION UTILITY.

RESTAURACION DE COPIAS.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

731

Es una utilidad que hace un chequeo de integridad de la


estructura de datos fsica de una base de datos en lnea o
fuera de lnea.

Puede usarse en ficheros de copia (backup) y ficheros en


lnea (o unidades menores). Generalmente se intenta
asegurar as que una copia es vlida antes de restaurarla, o
como herramienta de diagnstico cuando se encuentran
problemas de corrupcin de datos.

Al ejecutarse sobre una bd fuera de lnea, los chequeos son


mucho ms rpidos. Estos se limitan a bloques de datos -no a
ficheros de control ni redo logs.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

732

DBVERIFY. VALIDACION FICHEROS.

DBVERIFY. VALIDACION FICHEROS.

Se verifican uno o ms bloques de disco pertenecientes a un


fichero de datos y se realizan chequeos de pgina. Si el
fichero es del tipo Automatic Storage Management (ASM)
debe indicarse un USERID.

USERID ... Nombre de usuario y contrasea. Slo en el caso de


ficheros ASM.

dbv USERID = <usuario> | FILE =<nombre_de_fichero>


| { START = <direccin_bloque> | END =
<direccin_bloque> }
| BLOCKSIZE = integer
| LOGFILE = <nombre_de_fichero>
| FEEDBACK = integer
| HELP = { Y | N }
| PARFILE = <nombre_de_fichero>

FILE ... Nombre del fichero de bd a verificar.


START ... Direccin inicial del bloque Oracle a verificar (por
defecto, el primero del fichero).
END ... Direccin del ltimo bloque a verificar (por defecto el
ltimo en el fichero).
BLOCKSIZE ... Necesario si el fichero no tiene un tamao de
bloque de 2 KB. Si es as y no se indica se genera el error DBV00103.

Por ejemplo, dbv FILE=nomina.dbf FEEDBACK=100


Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

733

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

734

DBVERIFY. VALIDACION FICHEROS.


/home/oracle> dbv file=/u02/.../.../users01.dbf feedback=100

LOGFILE ... Fichero donde se guarda informacin (por defecto el


terminal).

...
DBVERIFY - Verification starting : FILE = users01.dbf
.....................
DBVERIFY - Verification complete
Total Pages Examined
: 2048
Total Pages Processed (Data) : 0
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing (Index): 0
Total Pages Failing (Seg) : 0
Total Pages Empty
: 2016
Total Pages Marked Corrupt : 0
Total Pages Influx
:0

FEEDBACK ... Informe de progreso de la verificacin enviado al


terminal. Un punto (.) por cada n nmero de pgina verificadas. Si
n = 0, no hay informe.
HELP ... Ayuda en lnea.
PARFILE ... Fichero de parmetros.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBVERIFY. VALIDACION FICHEROS.

Administracin y Ajuste de Oracle 10g

Los parmetros tienen el siguiente significado:

COPIAS DE SEGURIDAD

735

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

736

DBVERIFY. VALIDACION FICHEROS.

DBVERIFY. VALIDACION SEGMENTOS.

Pages = bloques

Permite indicar un segmento de tabla o ndice a verificar.

Requiere la conexin a la bd con privilegios de SYSDBA, e


indicar el segmento concreto a validar.

Durante la comprobacin, el segmento es bloqueado. Si se


trata de un segmento de ndice, la tabla padre es bloqueada
asimismo (algunos ndices como los index-organized table
-IOT-, donde se mantiene las filas de la tabla en un ndice
construido en la clave primaria, no tienen tabla padre).

Total Pages Examined = nmero de bloques en el fichero


Total Pages Processed = nmero de bloques que se verificaron
(formatted blocks)
Total Pages Failing (Data) = nmero de bloques que fallaron la rutina
de chequeo de bloque de datos.
Total Pages Failing (Index) = idem para bloque de ndices.
Total Pages Marked Corrupt = nmero de bloques para los que la
cabecera de cach no es vlida, haciendo que fuera imposible
determinar el tipo de bloque para DBVERIFY.
Total Pages Influx = nmero de bloques que estan siendo leidos y
escritos en el mismo tiempo. Si la bd est abierta, se leen los bloques
mltiples veces para generar una imagen consistente. Por esta misma
razn, pueden haber bloques leidos y escritos a la vez (INFLUX) para
los que no se puede obtener una imagen consistente.
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

737

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FEEDBACK ... Informe de progreso de la verificacin enviado al


terminal. Un punto (.) por cada n nmero de pgina verificadas. Si
n = 0, no hay informe.
HELP ... Ayuda en lnea.
PARFILE ... Fichero de parmetros.

SQL> select a.name tablespace, a.ts# numero_tbsp,


b.SEGMENT_NAME segmento, b.HEADER_FILE cabecera,
b.HEADER_BLOCK bloque from v$tablespace a, dba_segments b
where a.name=b.TABLESPACE_NAME and
b.tablespace_name='USERS' and b.owner='SCOTT' order by
b.SEGMENT_NAME;

Los parmetros tienen el siguiente significado:


SEGMENT_ID ... Segmento a verificar. Compuesto por nmero de
tbsp (tsn), segment header file number (segfile) y segment
header block number (segblock). El nmero de tbsp puede
obtenerse de v$tablespace, campo ts#, y segfile y segblock de
dba_segments. Tambin puede consultarse SYS_USER_SEGS
(necesario el privilegio SYSDBA).

...
USERS
DEPT
...

LOGFILE ... Fichero donde se guarda informacin (por defecto el


terminal).
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

738

DBVERIFY. VALIDACION SEGMENTOS.

dbv USERID = usuario/contrasea


| SEGMENT_ID = tsn.segfile.segblock
| LOGFILE = <nombre_fichero>
| FEEDBACK = integer
| HELP = { Y | N }
| PARFILE = <nombre_fichero>

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBVERIFY. VALIDACION SEGMENTOS.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

739

0
1

57341

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

740

DBVERIFY. VALIDACION SEGMENTOS.


/home/oracle> dbv userid=system/systxxxx segment_id=0.1.57341
...
DBVERIFY - Verification starting : SEGMENT_ID = 0.1.57341
DBVERIFY - Verification complete
Total Pages Examined

:2

Total Pages Processed (Data) : 1


Total Pages Failing

(Data) : 0

Total Pages Processed (Index): 0


Total Pages Failing

FLASHBACK DATABASE

(Index): 0

Total Pages Processed (Other): 0


Total Pages Processed (Seg) : 1
Total Pages Failing
Total Pages Empty

(Seg) : 0
:0

Total Pages Marked Corrupt


Total Pages Influx

:0

:0

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

741

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FLASHBACK DATABASE.

FLASHBACK DATABASE.

Flashback Database permite retroceder la bd al completo y


deshacer los efectos de cambios no deseados en la bd. El resultado
es muy similar a realizar una recuperacin point-in-time aunque
ms rpida pues mo es preciso restaurar ficheros desde un soporte
y resquiere aplicar menos cambios desde el redo archivado.

Los puntos de restauracin garantizada (restore points) permiten


seleccionar un SCN y asegurar que flashback database podr
usarse en dicho SCN -aunque no necesariamente en los SCN entre
el punto de chequeo y el momento actual- (incluso operaciones
NOLOGGING u operaciones OPEN RESETLOGS).

Restore points y Flashback Database pueden usarse


independientemente o combinados. En cualquier caso, la sentencia
RMAN FLASHBACK DATABASE o la SQL*Plus FLASHBACK
DATABASE se emplean para devolver la bd al SCN indicado:
FLASHBACK DATABASE TO RESTORE POINT before_upgrade;
FLASHBACK DATABASE TO SCN 202381;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

743

COPIAS DE SEGURIDAD

742

Flashback Database emplea su propio mecanismo de log, se


crean los flashback logs que se almacenan en el rea flash
(proceso flashback writer -RVWR-). Para habilitar esta
caracterstica debe crearse un rea flash e indicar un flashback
retention target o margen temporal en el que se podr
recuperar hacia el pasado.

Definido ese punto, la bd copia a intervalos regulares imgenes de


cada bloque modificado en cada fichero de datos en los log de
flashback. Estas copias se reconstruyen los ficheros de datos.

El rango de SCNs o ventana para los que hay suficientes datos


flashback log como para realizar un FLASHBACK DATABASE
depende del espacio en el rea flash. Operaciones como el
borrado de un tbsp. no son reversibles con este mtodo (la
ventana empezara a continuacin de los mismos). El uso de
puntos de restauracin garantizada es la nica forma de asegurar
el regreso a un SCN concreto o ancho de ventana de flashback.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

744

FLASHBACK DATABASE.

PUNTOS RESTAURACION.

Si se habilita Flashback Database y uno o ms puntos de


restauracin garantizada, la bd guarda los log de flashback, lo que
puede generar cierta sobrecarga en el funcionamiento de la bd y
uso de espacio del rea flash.

Se retienen los log necesarios para permitir retroceder al punto de


restauracin ms antiguo y los log no se borran si se necesitan
para garantizar este extremo. Es conveniente monitorizar el
espacio en el rea flash.

Para crearlos se usa la sentencia SQL*Plus CREATE RESTORE


POINT indicando un nombre para el mismo y si se trata de un
punto garantizado o normal (por defecto). La bd puede estar
abierta o montada, siempre que en este ltimo caso haya sido
parada coherentemente.
SQL> CREATE RESTORE POINT <nombre>;
SQL> CREATE RESTORE POINT <nombre> GUARANTEE FLASHBACK
DATABASE;

Para borrar un punto de restauracin se usa la sentencia SQL*Plus


DROP RESTORE POINT:
SQL> DROP RESTORE POINT <nombre>;

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

745

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

747

permite

ver

los

puntos

de

Para ver aquellos puntos garantizados solamente:


SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE
FROM V$RESTORE_POINT
WHERE GUARANTEE_FLASHBACK_DATABASE='YES';

COPIAS DE SEGURIDAD

La vista V$RESTORE_POINT
restauracin definidos:

SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,


GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
FROM V$RESTORE_POINT;

Los puntos de control garantizados siempre permanecen hasta que


se borran explcitamente. Al definir este tipo de puntos, debe
monitorizarse el espacio usado en el rea flash (vistas
V$RECOVERY_FILE_DEST y V$FLASH_RECOVERY_AREA_USAGE).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

746

PUNTOS RESTAURACION.

Los puntos normales pueden ser descartados aunque no se borren.


As sucede que los 2048 puntos ms recientes se guardan en el
fichero de control independientemente de su edad y cualquier
punto
ms
reciente
que
el
valor
de
CONTROL_FILE_RECORD_KEEP_TIME
se
retiene
independientemente de cuantos puntos haya definidos. Cualquier
punto normal que no cumpla ninguna de las dos condiciones
mencionadas puede desaparecer del fichero de control.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PUNTOS RESTAURACION.

Administracin y Ajuste de Oracle 10g

Para puntos de restauracin normales STORAGE_SIZE es cero.


Para los garantizados STORAGE_SIZE indica la cantidad de espacio
en el rea flash usada para retener log necesarios para
garantizar el regreso a dicho punto con FLASHBACK DATABASE.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

748

ACTIVAR FLASHBACK DATABASE.

ACTIVAR FLASHBACK DATABASE.

Debe fijarse un valor para el parmetro de inicializacin, dinmico,


DB_FLASHBACK_RETENTION_TARGET
(ventana
de
recuperacin) y ejecutarse ALTER DATABASE FLASHBACK ON.
En grandes bd es conveniente fijar el parmetro LOG_BUFFER a
un valor de, al menos, 8Mb.

DB_FLASHBACK_RETENTION_TARGET determina indirectamente


cuanto log se retendr. V$FLASHBACK_DATABASE_LOG ayuda
a estimar cunto espacio es necesario para log de flashback.
SQL> SELECT ESTIMATED_FLASHBACK_SIZE FROM
V$FLASHBACK_DATABASE_LOG;

SQL> ALTER DATABASE FLASHBACK ON;

Nota: Debe aadirse el espacio indicado en ESTIMATED_FLASHBACK_SIZE al


rea de flash.

Para desactivar flashback: SQL> ALTER DATABASE FLASHBACK OFF;


749

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME


FROM V$FLASHBACK_DATABASE_LOG;

750

Existen varias formas de monitorizacin:


Realizacin de estadsticas usando Oracle Statspack.
Consultar
la
vista
V$FLASHBACK_DATABASE_STAT
(columnas FLASHBACK_DATA, REDO_DATA y DB_DATA).

El SCN ms reciente puede obtenerse:


SQL> SELECT CURRENT_SCN FROM V$DATABASE;

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

MONITORIZACION FLASHBACK DB.

El SCN ms antiguo puede determinarse de la forma siguiente:

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

VENTANA FLASHBACK DATABASE.

tbsp.

3.- Activar Flashback Database para la bd al completo.

para

Si se deshabilita Flashback para un tbsp., deben ponerse fuera de


lnea sus ficheros de datos antes de ejecutar FLASHBACK
DATABASE.

SQL> ALTER SYSTEM SET


DB_FLASHBACK_RETENTION_TARGET=4320;

COPIAS DE SEGURIDAD

flashback

2.- Indicar ventana de recuperacin (por defecto 1440 minutos -24h-).

Administracin y Ajuste de Oracle 10g

el

SQL> ALTER TABLESPACE <nombre_tbsp> FLASHBACK ON/OFF;

1.- Montar la bd
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;

Puede habilitarse/deshabilitarse
especficos

COPIAS DE SEGURIDAD

Consultar la vista V$SYSSTAT (columnas physical write I/O


request, physical read I/O request, redo writes y
flashback log writes).

751

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

752

COPIA LGICA.
DATA PUMP EXPORT/IMPORT.

COPIA LOGICA

Son utilidades integradas en la bd que permiten cargas y


descargas de informacin a gran velocidad. Todo el proceso de
exportacin/importacin se lleva a cabo en el servidor.

No son compatibles con el export/import originales.

Consta de los siguientes componentes:


Clientes
expdp
e
impdp.
Usan
los
procedimientos
proporcionados por el paquete DBMS_DATAPUMP.
Paquete DBMS_DATAPUMP. Conocido como Data Pump API,
permite crear y monitorizar los trabajos implicados.
Paquete DBMS_METADATA. Conocido como Metadata API,
proporciona la definicin de los objetos de la bd a Data Pump.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

753

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP. EJECUCIN.

DATA PUMP. EJECUCIN.

En cada exportacin o importacin se crea un proceso maestro que


controla la misma, incluyendo la comunicacin con los clientes, la
creacin y control del conjunto de procesos de trabajo necesarios y
la realizacin de las operaciones de conexin.

Esta tabla maestro tambin se emplea para reiniciar un trabajo.

El destino final de la tabla maestro es diverso:

Si el trabajo se para, usando la sentencia STOP_JOB, se retiene para


poder reiniciarlo.
Si el trabajo se elimina, usando la sentencia KILL_JOB, la tabla se
elimina y el trabajo no puede reiniciar.

Durante la exportacin la tabla registra la localizacin de los objetos en


el conjunto de ficheros de descarga (dump file set). Al finalizar, el
contenido de la tabla se escribe a fichero.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

755

754

Si el trabajo finaliza correctamente, la tabla se borra.

En la transferencia de datos y metadatos, se emplea un tabla


maestro, que se crea en el esquema del usuario que realiza la
exportacin/importacin y tiene el nombre del trabajo -job- que
realiza la operacin, para realizar el seguimiento del proceso:

Durante la importacin la tabla maestro se carga desde el conjunto de


ficheros de descarga y se emplea para controlar la secuencia de
localizacin de los ficheros a importar.

COPIAS DE SEGURIDAD

Si un trabajo termina inesperadamente, se mantiene la tabla. Puede


borrarse si no hay intencin de reiniciar el trabajo.

El progreso de un trabajo y los errores producidos pueden


registrarse en un fichero de log. El estado del mismo, en tiempo
real, puede obtenerse usando la sentencia STATUS en modo
interactivo de Data Pump.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

756

DATA PUMP. INFORMACIN.

DATA PUMP. FICHEROS.

Puede obtenerse informacin en las siguientes vistas:

Existen tres tipos de ficheros gestionados por Data Pump:

DBA_DATAPUMP_SESSIONS. Identifica sesiones de usuario asociadas a


un trabajo.

Ficheros de volcado (dump). Contienen datos y metadatos.


Durante una exportacin pueden indicarse al definir el trabajo as
como posteriormente (por ejemplo, pueden aadirse ficheros de
volcado con ADD_FILE).
Durante un importacin, todos los ficheros de volcado deben
especificarse al definir el trabajo.

V$SESSION_LONGOPS. Informacin sobre el progreso del trabajo.

Ficheros log. Contienen mensajes sobre la operacin realizada.

DBA_DATAPUMP_JOBS y USER_DATAPUMP_JOBS. Identifican trabajos


Data Pump activos.

Ficheros SQL. Registran la salida de una operacin SQLFILE (parmetro


SQLFILE) consistente en el volcado de todas las sentencias DDL que se
hubieran ejecutado durante una importacin a un fichero.
Nota: Los ficheros de log y SQL pueden sobreescribirse si ya
existen. Nunca se sobreescriben ficheros de volcado si ya existen, se
genera un error.
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

757

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

758

DATA PUMP.
LOCALIZACION DE FICHEROS.

Es necesario crear objetos tipo directorio (asocia un nombre a un


directorio o sistema de ficheros) por un usuario administrador o
con el privilegio CREATE ANY DIRECTORY. Al exportar/importar se
indica mediante el parmetro DIRECTORY.

El orden de precedencia usado para determinar la localizacin es:


1.- Objeto directorio formando parte de la especificacin de un
nombre de fichero (DUMPFILE=<localizacin>:<fichero>.dmp).

SQL> CREATE DIRECTORY DPUMP_VOLCADO AS '/datapump/ficheros';

2.- Objeto directorio indicado en el parmetro DIRECTORY.

Por defecto se asigna el valor para DATA_PUMP_DIR:

3.- Valor de la variable de entorno DATA_PUMP_DIR (definida en


el entorno del cliente):

SQL> CREATE DIRECTORY DATA_PUMP_DIR AS '/datapump/ficheros';

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP.
LOCALIZACION DE FICHEROS.

Administracin y Ajuste de Oracle 10g

Tras la creacin de un directorio, su creador debe conceder el


permiso de lectura (READ) o escritura (WRITE) a otros usuarios.
SQL> GRANT READ, WRITE ON DIRECTORY <directorio> TO <usuario>;
Nota: Implica tener acceso a travs de bd pero no el poder acceder a
travs de s.o.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

759

SQL> CREATE DIRECTORY DUMP_FICHERO AS


'/DATAPUMP/FICHEROS';
# EXPORT DATA_PUMP_DIR=<VARIABLE_FICHERO_VOLCADO>

4.- Si es un usuario privilegiado se emplea el valor por defecto en


bd del directorio DATA_PUMP_DIR (que debe estar previamente
creado). No confundir con la variable de entorno.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

760

DATA PUMP EXPORT.

DATA PUMP EXPORT.

Se emplea la utilidad expdp, indicando las caractersticas de la


exportacin en la lnea de comandos o mediante un fichero de
parmetros. Los ficheros resultantes de una exportacin slo
pueden importarse con D.P. Import.
Cualquier usuario puede exportar objetos de su propiedad o su
esquema al completo.
Los usuarios no privilegiados deben tener permiso WRITE en el
objeto directorio y deben indicar ste en el parmetro DIRECTORY
o junto al nombre de fichero de volcado.

- Full export (parmetro FULL). Se exporta toda la bd. Es


necesario el rol EXP_FULL_DATABASE.
- Esquema de usuario (parmetro SCHEMAS). Si no se posee rol
EXP_FULL_DATABASE slo es posible exportar el esquema propio.
- Tabla
(parmetro
TABLES). Para
exportar
tablas
pertenecientes al propio esquema es necesario el
EXP_FULL_DATABASE.

Modo ayuda en lnea: expdp HELP=y

Modo fichero de parmetros: expdp PARFILE=<fichero_parametros>

- Transport Tablespace (parmetro TRANSPORT_TABLESPACES).


Permite exportar metadatos para tablas y objetos dependientes
pertenecientes a un conjunto de espacios de almacenamiento. Es
necesario el rol EXP_FULL_DATABASE.

Nota: Si no se indica ningn otro parmetro se usan los valores por defecto en la
exportacin: expdat.dmp y export.log -ficheros-, exportacin a nivel de esquema,
SYS_EXPORT_SCHEMA_01 -trabajo- y se exportan datos y metadatos.
COPIAS DE SEGURIDAD

761

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Modo ayuda en lnea: impdp HELP=y


Modo interactivo: impdp directory=<localizacin>
Modo fichero de parmetros: impdp PARFILE=<fichero_parametros>
Nota: Si no se indica ningn otro parmetro se usan los valores por defecto en la
exportacin: expdat.dmp e import.log -ficheros-, importacin total del fichero y trabajo
SYS_IMPORT_xx_01.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

762

DATA PUMP IMPORT.

Se emplea la utilidad impdp, indicando las caractersticas de la


importacin en la lnea de comandos o mediante un fichero de
parmetros. Slo pueden usarse en la importacin ficheros creados
con D.P. Export.
Los usuarios deben tener permiso READ en el objeto directorio
dond resida el fichero de volcado y de escritura donde se cree el
fichero de registro (log) y los SQL.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP IMPORT.

no
rol

- Tablespace (parmetro TABLESPACES). Debe tenerse el rol


EXP_FULL_DATABASE.

Modo interactivo: expdp directory=<localizacin>

Administracin y Ajuste de Oracle 10g

Existen cinco modos de trabajar con datapump export:

COPIAS DE SEGURIDAD

763

Existen cinco modos de trabajar con datapump import:


- Full import (parmetro FULL). Se importa el fichero de volcado al
completo (modo por defecto). Necesario el rol IMP_FULL_DATABASE
si se hizo la exportacin con EXP_FULL_DATABASE.
- Esquema de usuario (parmetro SCHEMAS). Slo se cargan
objetos propiedad del usuario actual. Si se posee rol
IMP_FULL_DATABASE pueden cargarse esquemas diferentes al
propio.
- Tabla (parmetro TABLES). Para importar tablas no pertenecientes
al propio esquema es necesario el rol IMP_FULL_DATABASE.
- Tablespace (parmetro TABLESPACES).
- Transport Tablespace (parmetro TRANSPORT_TABLESPACES).
Permite importar metadatos para un conjunto de espacios de
almacenamiento. Es necesario el rol IMP_FULL_DATABASE.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

764

TABLESPACES TRANSPORTABLES.

Permite trasladar un conjunto de espacios de almacenamiento


desde una bd a otra (slo entre bd con el mismo juego de
caracteres -character set- y sobre plataformas compatibles).

Los tbsp transportados pueden ser gestionados localmente o


no. No necesitan ser del mismo tamao de bloque que el
tamao de bloque estndar de la bd destino.
Es util, por ejemplo, para:

TBSP TRANSPORTABLES

Realizar una recuperacin a un punto en el tiempo


Tablespace Point-in-Time Recovery (TSPITR).
Archivo de datos histricos.
Copia de tbsp. de slo lectura en mltiples bd.
Migracin de bd entre distintas plataformas (SQL> SELECT *
FROM V$TRANSPORTABLE_PLATFORM;).
Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

765

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

No puede transportarse un tbsp a una bd destino en el cual


exista un tbsp con el mismo nombre (alguno de los dos debe
renombrarse).

Los tbsp transportables no soportan:


Vistas materializadas
Tablas particionadas
Migracin del tbsp SYSTEM u objetos de SYS
...

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

766

TBSP TRANSPORTABLES. COMPATIBILIDAD.

Ambas bbdd deben usar el mismo juego de caracteres


-character set- y el mismo juego de caracteres nacional
-national character set-.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TBSP TRANSPORTABLES. LIMITACIONES.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

767

Al definir un conjunto transportable, Oracle calcula el ms


bajo nivel de compatibilidad al cual la bd destino debe
trabajar. A partir de Oracle 10g, un tbsp. puede transportarse
a una bd con el mismo o superior nivel de compatibilidad.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

768

TBSP TRANSPORTABLES.
PROCESO 1/6.

TBSP TRANSPORTABLES.
PROCESO 2/6.

Determinar la compatibilidad de las plataformas.

Seleccionar un conjunto de tbsp autocontenidos.

Slo es necesario si se trabaja con plataformas origen y


destino diferentes. Debe ejecutarse la sentencia:

No deben haber dependencias entre objetos del conjunto de


tbsp transportables y aquellos que no sean del mismo. Se
incumple si, por ejemplo, existe:
Un ndice dentro del conjunto est definido para una tabla
fuera del mismo (s puede existir un ndice fuera del
conjunto definido para una tabla del mismo).
Una tabla particionada parcialmente contenida en el
conjunto.
Una constraint de integridad referencial apuntando a una
tabla (al transportar tbsp pueden incluirse restricciones de
integridad o no).
Una tabla con una columna LOB que referencia LOBS fuera
del conjunto.

SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT


FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

769

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DBMS_TTS.TRANSPORT_SET_CHECK (
ts_list
IN CLOB,
incl_constraints IN BOOLEAN DEFAULT FALSE,
full_check
IN BOOLEAN DEFAULT FALSE);

COPIAS DE SEGURIDAD

Para una aplicacin estricta, el parmetro FULL_CHECK debe


tener el valor TRUE (por ejemplo, Tablespace Point-in-Time
Recovery -TSPITR-).

Todas las excepciones producidas pueden verse a travs de la


vista TRANSPORT_SET_VIOLATIONS. Si la vista est
vaca, el conjunto de tbsp es autocontenido.
SQLPLUS> EXECUTE
DBMS_TTS.TRANSPORT_SET_CHECK('NOMINA,PAGOS', TRUE);

ts_list ... Lista de tbsp, separados por coma.


incl_constraints ... TRUE para considerar las restricciones de
integridad referencial en el anlisis (valor por defecto).
full_closure ... Por defecto FALSE. Determinar o no si est
autocontenido estrictamente (dependencias desde-hacia). Para
TSPITR debe ser puesto a TRUE.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

770

TBSP TRANSPORTABLES. DBMS_TTS.

Para determinar si un conjunto de tbsp es autocontenido se


emplea el procedimiento
TRANSPORT_SET_CHECK del
paquete
DBMS_TTS
(debe
poseerse
el
rol
EXECUTE_CATALOG_ROLE).

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TBSP TRANSPORTABLES. DBMS_TTS.

Administracin y Ajuste de Oracle 10g

SQLPLUS> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

771

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

772

TBSP TRANSPORTABLES.
PROCESO 3/6.

TBSP TRANSPORTABLES.
PROCESO 3/6.

Generar un conjunto de tbsp. transportables.

Si el autocontenido debe ser estricto:


DUMPFILE = expdat.dmp
DIRECTORY = dpump_dir
TRANSPORT_TABLESPACES = (NOMINA, PAGOS)
TRANSPORT_FULL_CHECK=Y

Cambiar el estado de los tbsp a slo lectura.


ALTER TABLESPACE <nombre_tbsp> READ ONLY;

Realizar la exportacin de metadatos de los tbsp a migrar


(slo se exportan metadatos) -conexin con privilegio
SYSDBA-. Debe poseerse el rol EXP_FULL_DATABASE
para realizar la exportacin.
DUMPFILE = expdat.dmp
DIRECTORY = dpump_dir
TRANSPORT_TABLESPACES = (NOMINA, PAGOS)

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

773

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRANSPORT_FULL_CHECK es un parmetro que verifica


que un conjunto de tbsp a recuperar no tiene dependencias
(hacia/desde).

Si el conjunto de tbsp no es autocontenido, la exportacin


falla.

Administracin y Ajuste de Oracle 10g

COPIAS DE SEGURIDAD

774

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TBSP TRANSPORTABLES.
PROCESO 3/6.

TBSP TRANSPORTABLES.
PROCESO 4/6.

Si la codificacin entre las plataformas es distinta, deben


convertirse los ficheros de datos empleando la orden
CONVERT de RMAN.
$ RMAN TARGET /
Recovery Manager: Release 10.1.0.0.0
Copyright (c) 1995, 2003, Oracle Corporation. All rights
connected to target database: xxxx (DBID=...)

Copiar los ficheros de datos correspondientes a los tbsp a


transportar al lugar de destino. Hacer igual con el fichero
resultado de la exportacin.

Puede hacerse de distintas formas como, por ejemplo,


cualquier utilidad que permita copiar ficheros -ftp, copia de
s.o.-, el paquete DBMS_FILE_TRANSFER, ...

RMAN> CONVERT TABLESPACE sales_1,sales_2


2> TO PLATFORM 'Microsoft Windows NT'
3> FORMAT '/temp/%U';
Starting backup at 08-APR-03
...
Finished backup at 08-APR-03
RMAN> exit
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

775

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

776

TBSP TRANSPORTABLES.
PROCESO 5/6.

TBSP TRANSPORTABLES.
PROCESO 6/6.

Integrar el conjunto de tbsp transportados.

Comprobar si se han generado errores en el proceso de


importacin.

Si todo ha ido bien, los tbsp se habrn copiado en modo slo


lectura. Cambiar el espacio al estado de lectura/escritura.

Importar la informacin relativa a los tbsp.


IMPDP system/password DUMPFILE=expdat.dmp
DIRECTORY=dpump_dir
TRANSPORT_DATAFILES= /salesdb/sales_101.dbf
REMAP_SCHEMA=(dcranney:smith)
REMAP_SCHEMA=(jfee:williams)

TRANSPORT_DATAFILES
identifica
correspondientes a los tbsp a importar

REMAP_SCHEMA cambia los propietarios de los objetos de bd. Si no


se indica se crean en el mismo esquema que el origen y dichos
esquemas deben existir en el destino o, en caso contario, generan un
error.

Administracin y Ajuste de Oracle 10g

los

ficheros

ALTER TABLESPACE <nombre_tbsp>READ WRITE;

de

datos

COPIAS DE SEGURIDAD

777

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

778

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TBSP TRANSPORTABLES.
PROCESO 6/6.

Administracin y Ajuste de Oracle 10g

TBSP TRANSPORTABLES. RESUMEN.

Si se migran tbsp de una tamao de bloque distinto al tamao


de bloque estnsar de la bd destino, en esta debe aadirse el
parmetro de inicializacin DB_nK_CACHE_SIZE.

Proceso.
Cambiar los espacios de almacenamiento al estado de slo
lectura.

DB_nK_CACHE_SIZE (donde n = 2, 4, 8, 16, 32) es un


parmetro dinmico (modificable con ALTER SYSTEM) que
permite especificar el tamao de la cach para nK buffers.

Trasladar la informacin almacenada en el diccionario


(exportacin de metadatos) a la bd destino.

Por ejemplo, si el tbsp a migrar tiene 8K de tamao de bloque


y la bd destino 4K, debe incluirse DB_8K_CACHE_SIZE como
parmetro.

Copiar los ficheros de datos correspondientes a dichos


espacios de almacenamiento en el destino.
Integrar la informacin en la bd destino (importacin).
Cambiar el espacio al estado de lectura/escritura.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

779

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

780

VISTAS.

V$DATAFILE

V$TABLESPACES

V$LOGFILE

V$CONTROLFILE

V$BACKUP

V$INSTANCE

V$ARCHIVED_LOG

Administracin y Ajuste de Oracle 10g

TEMA 10.
RECUPERACION.

COPIAS DE SEGURIDAD

781

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION.

ESTRUCTURAS DE RECUPERACION.

PRINCIPIOS DE RECUPERACION.

TIPOS DE RECUPERACION.
COMPLETA.
INCOMPLETA.
FLASHBACK.

ESTRATEGIAS DE RECUPERACION.

RECUPERACION

TEMA 10. RECUPERACION.

RECUPERAR F. CONTROL.
PERDIDA DE MIEMBRO MULTIPLEXADO.
PERDIDA DE TODOS MIEMBROS.
PERDIDA DE MIEMBROS Y COPIAS.

RECUPERACION COMPLETA
BD CERRADA.
BD ABIERTA.

RESTAURACION DE FICHEROS.
FICHEROS DE COPIA.
REDO ARCHIVADO.

RECUPERACION INCOMPLETA.
CANCEL BASED.
TIME BASED.
CHANGE BASED.

RECUPERACION PARALELA.

RESTAURAR Y RECREAR F. CONTROL.

APERTURA BD TRAS RECUPERACION.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

782

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 10. RECUPERACION.

Administracin y Ajuste de Oracle 10g

RECUPERACION

783

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

784

TEMA 10. RECUPERACION.

TSPITR (Tbsp. Point in time recovery).


PRELIMINARES.
CREACION BD AUXILIAR.
TRANSPORTAR TBSP. OPERACIONES BD AUXILIAR.
TRANSPORTAR TBSP. OPERACIONES BD EN USO.

VISTAS.

RECUPERACION Y ESTRUCTURAS

Administracin y Ajuste de Oracle 10g

785

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Fallo de proceso. P.ej. desconexin anormal. PMON lo


detecta, hace rollback de transaccion y libera recursos.
Fallo de instancia. Debido a problemas de mquina, un
fallo de s.o. ... Oracle realiza sin intervencin del usuario
la recuperacin de la instancia (crash recovery).
Fallo en disco (media failure). Es necesaria la
intervencin del administrador y la recuperacin (media
recovery). Deben restaurarse ficheros desde copia fsica
usando sentencias de s.o. y realizar recuperacin con la
sentencia SQL*Plus RECOVER (modo ARCHIVELOG).
Media recovery puede ser completa -todo redo
generado se aplica- o incompleta -no se aplica todo el
redo generado y se obtiene una versin anterior de la
bd- (en ambos casos la recuperacin afecta a la bd en su
totalidad, al completo). TSPITR, tablespace point-in-time
recovery, permite realizar una recuperacin incompleta de
un tbsp concreto.

Existen distintos tipos de fallos que pueden hacer necesario o


no la intervencin del administrador de bd y la recuperacin:
Error de usuario. Por ejemplo, el borrado de una tabla
(puede recuperarse de una copia lgica previa o mediante
el uso de flashback). Es necesaria la intervencin del
administrador y la recuperacin.
Fallo de una sentencia. Se deshace cualquier cambio
automticamente y se devuelve el control al usuario.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

786

RECUPERACION.

La posibilidad de un fallo de sistema o de mquina siempre


existe. Si ocurre y afecta a la bd, esta debe recuperarse. El
objetivo es asegurar que los efectos de las transacciones
validadas se reflejen en la bd recuperada y la vuelta a una
operacin normal de la bd lo antes posible.

Administracin y Ajuste de Oracle 10g

RECUPERACION

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION.

Administracin y Ajuste de Oracle 10g

RECUPERACION

787

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

788

ESTRUCTURAS DE RECUPERACION.

ESTRUCTURAS DE RECUPERACION.

Ficheros de datos (datafiles) y bloques de datos.

Redo Log.

La bd se estructura en unidades lgicas llamadas


tablespaces, las cuales se asocian con uno o ms ficheros de
datos, datafiles. La bd gestiona el espacio en dichos ficheros
en unidades llamadas bloques de datos (la mnima unidad de
almacenamiento que puede manejar la bd).

Conjunto de ficheros que registran todos los datos


modificados en memoria que aun no han sido escritos a los
ficheros de datos. Cada bd necesita al menos dos grupos de
redo en lnea con un miembro de redo.
Este redo en lnea debe guardarse y da lugar al llamado
redo log archivado (modo archivelog de la bd).

Los datos nuevos o modificados no se escriben a los


datafiles de forma inmediata sino que se almacenan en
memoria y se escriben a intervalos. Si surge un fallo que hace
caer la bd habrn cambios guardados en memoria que no han
sido aplicados.

En modo ARCHIVELOG la bd puede recuperarse


completamente de fallos de instancia y de disco. Tambin
puede hacerse copia mientras est abierta y en uso.
En modo NOARCHIVELOG, la bd puede ser recuperada de
un fallo de instancia pero no de disco. La bd slo puede
copiarse si est cerrada de forma consistente.

La copia fsica de los datafiles es fundamental en cualquier


estrategia de copia y recuperacin.
Administracin y Ajuste de Oracle 10g

RECUPERACION

789

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

790

ESTRUCTURAS DE RECUPERACION.

Registros de undo.

Informacin sobre redo log en lnea actual.


Registros de log (log sequence numbers, SCN en cada log)
Informacin sobre bloques de ficheros de datos corruptos.

Almacenados en espacios de almacenamiento de undo o en


rollback segments (inusual en este caso). Contienen las
imagenes anteriores de aquellos datos que han sido
modificados y se emplean para deshacer las transacciones
no validadas tras la aplicacin de todo el redo log.

RECUPERACION

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURAS DE RECUPERACION.

Administracin y Ajuste de Oracle 10g

Copias de bd (backups).
Realizadas mediante Recovery Manager o con utilidades s.o..

Ficheros de control.
Guardan informacin de las estructuras fsicas de la bd y su
estado:
Informacin sobre la bd (RESETLOGS SCN y time stamp) usada
en la recuperacin.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

791

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

792

PRINCIPIOS DE RECUPERACION.

PRINCIPIOS Y TIPOS
DE
RECUPERACION

Administracin y Ajuste de Oracle 10g

RECUPERACION

Se aborda a lo largo del tema la recuperacin asumiendo que


la bd se encuentra en modo ARCHIVELOG y usando mtodos
de recuperacin manuales.

La recuperacin bsicamente implica dos acciones:


Restaurar el/los fichero/s daados desde el dispositivo
de copia preciso (cinta, disco, ...) y hacerlo accesible al
servidor de bd (permisos, ...).
Recuperacin o aplicar los cambios al fichero/s
daado/s empleando el redo archivado y en lnea
hasta que la bd se encuentre en el SCN deseado
(generalmente el momento previo al fallo que oblig a la
recuperacin).

793

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

RECUPERACION

794

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PRINCIPIOS DE RECUPERACION.

TIPOS DE RECUPERACION: COMPLETA.

Completa.
Se emplean datos de redo combinados con una copia de la
bd, tbsp., o fichero de datos para actualizarlo al punto ms
actual posible. Se aplican todos los cambios anotados en el
redo.
Si se pretende recuperar la bd en su conjunto, debe:
Montarse la bd.
Asegurarse de que todos los ficheros a recuperar estn en
lnea.
Restaurar una copia de la bd o ficheros a recuperar.
Aplicar redo (en lnea, archivado o ambos).

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

795

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

796

TIPOS DE RECUPERACION: COMPLETA.

TIPOS DE RECUPERACION: INCOMPLETA.

Si se pretende recuperar un tbsp o fichero de datos, debe:

Incompleta.
Se emplea una copia de la bd para generar una versin no
actual de la bd. No se aplican todos los cambios posteriores a
la ltima copia.
Se puede realizar sobre la bd en su conjunto: DBPITR -db
point-in-time recovery-. En los siguientes casos:

Si la bd est abierta, poner el tbsp o fichero fuera de lnea.


Restaurar una copia de los ficheros a recuperar.
Aplicar redo (en lnea, archivado o ambos).

Un fallo en disco destroza algunos o todos los redo en


lnea.
Se ha producido una prdida de datos, por ejemplo el
borrado de una tabla (conveniente tener copia lgica,
aunque en este punto tambin puede usarse flashback).
No puede realizarse una recuperacin completa pues se
han perdido redo archivados.
Se han perdido los ficheros de control y debe usarse una
copia para abrir la bd.
Administracin y Ajuste de Oracle 10g

RECUPERACION

797

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

Existen inconvenientes en la recuperacin completa o


incompleta sealadas anteriormente (en general en el pointin-time recovery):
No pueden devolverse objetos concretos a un estado anterior, slo
la bd en su conjunto (en casos concretos puede realizarse un
tablespace point-in-time recovery -TSPITR-).
La bd no est disponible durante el proceso de point-in-time
recovery.
Point-in-time recovery puede ser pesado dado que todos los
ficheros de datos deben restaurarse y despus recuperar la bd.

Un caso particular es la recuperacin de un tbsp point in


time (TSPITR). Permite recuperar uno o ms tbsp. a un
momento en el tiempo distinto del resto de la bd.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

798

INCONVENIENTES RECUPERACION
TRADICIONAL

Para realizarla deben recuperarse todos los ficheros de datos


precisos de copias anteriores a aquel momento al que se
pretenda restaurar y abrir la bd con la opcin RESETLOGS.
Al indicar alter database open resetlogs; se reinicia el
nmero de secuencia de log actual -nmero 1- y se desecha
cualquier informacin de redo no aplicada durante la
recuperacin, pone a cero.
Es conveniente realizar una copia completa de la bd si se ha
producido cualquier prdida de archivados.

Administracin y Ajuste de Oracle 10g

RECUPERACION

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TIPOS DE RECUPERACION: INCOMPLETA.

Administracin y Ajuste de Oracle 10g

799

Las utilidades flashback proporcionadas por Oracle son ms


eficientes que la recuperacin tradicional en la mayora de los
casos.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

800

TIPOS DE RECUPERACION: FLASHBACK.

Flashback proporciona un conjunto de caractersticas que


permiten evitar la restauracin de la bd y la realizacin de
recuperacin point-in-time.

La mayora de estas caractersticas se desarrollan a un nivel


lgico, como son:

TIPOS DE RECUPERACION: FLASHBACK.

A nivel fsico, Oracle Flashback Database permite en el


caso de tener ficheros de datos en los que se desea deshacer
cambios volver a su estado anterior. Esta forma de trabajo es
mucho ms rpida pues no necesita de la restauracin de
ficheros ni de la aplicacin de todo el conjunto del redo
archivado. Es necesario configurar un rea de memoria flash
recovery area y habilitar el flashback logging pues no lo
est por defecto.

El proceso implica:

Oracle Flashback Query. Consultar contenido de bd en un


tiempo anterior.

Oracle Flashback Version Query. Ver estados anteriores


de datos.

Oracle Flashback Transaction Query. Ver transacciones

Averiguar SCN al que retornar, o determinar el punto de retorno


apropiado. Consultar CURRENT_SCN en V$DATABASE y la vista
V$FLASHBACK_DATABASE_LOG:

que afectan a un tabla a lo largo del tiempo.

Oracle Flashback Table. Devolver tablas a un estado previo.


Oracle Flashback Drop. Deshace el efecto de drop table.

SQL> SELECT CURRENT_SCN FROM V$DATABASE;


SQL> SELECT OLDEST_FLASHBACK_SCN,
OLDEST_FLASHBACK_TIME FROM
V$FLASHBACK_DATABASE_LOG;

Fl. Table, Fl. Query, Fl. Trans. Query y Fl. Version Query estn
relacionadas con undo. Fl. Drop se basa en el recycle bin.

Administracin y Ajuste de Oracle 10g

RECUPERACION

801

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

RECUPERACION

802

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TIPOS DE RECUPERACION: FLASHBACK.


Usar, en su caso, el resto de funcionalidades flashback para
identificar el SCN en que se produjeron los cambios a deshacer.
Ejecutar Fl.Database
FLASHBACK DATABASE TO SCN 46963;
FLASHBACK DATABASE TO TIMESTAMP (SYSDATE-1/24);
FLASHBACK DATABASE TO TIMESTAMP timestamp '2007-19-02
14:00:00';
FLASHBACK DATABASE TO TIMESTAMP to_timestamp ('200719-02 19:30:00', 'YYYY-MM-DD HH24:MI:SS');

ESTRATEGIAS
DE
RECUPERACION

Abrir la bd en modo slo lectura y comprobar el resultado. Si es


necesario realizar flashback de nuevo a un SCN distinto, debe
usarse RECOVER DATABASE para volver al presente y hacer de
nuevo flashback.
Si el resultado de flashback database es correcto, abrir la bd con
la opcin RESETLOGS.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

803

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

804

ESTRATEGIAS DE RECUPERACION.

ESTRATEGIAS DE RECUPERACION.

Frente a errores de usuario.

Si la bd est en modo NOARCHIVELOG y hay un fallo en


disco, media failure, se debe restaurar la copia completa y
consistente ms reciente y abrir la bd (si se quisiera la bd
actualizada hasta el momento del fallo, habra que introducir
todos los cambios manualmente imposible!).

Si la bd est en modo ARCHIVELOG y los redo estn


disponibles, puede emplearse una recuperacin completa o
incompleta para reconstruir la bd.

Flashback Database. Permite devolver la bd al completo a


un estado anterior sin necesidad de restaurar, tomando
como referncia un SCN o creando los puntos de
restauracin, restore points, necesarios. Debe estar
configurada una flash recovery area.
Recuperacin de la bd Point-in-Time. Se recupera un
tbsp. o la bd al completo a un momento concreto.
Importacin desde copia lgica.

Frente a fallos de mquina (media failure).


El tipo de fallo (fallo fsico, sobreescritura, borrado o
corrupcin de un fichero de bd, ...) determina la tcnica
de recuperacin a usar.

Administracin y Ajuste de Oracle 10g

RECUPERACION

805

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

RECUPERACION

806

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRATEGIAS DE RECUPERACION.

Probar los mecanismos de copia y recuperacin en un entorno


apropiado.

Planificar la respuesta a los distintos tipos de incidentes. Se


atender al siguiente procedimiento general:

RESTAURACION
Y
RECUPERACION

Determinar la informacin que se necesita recuperar y


restaurar.
Restaurar copia de los ficheros y cualquier fichero de
redo archivado que sea necesario (a nivel de s.o.).
Recuperar los ficheros.
Abrir la bd. Si se hace una recuperacin incompleta o se
ha restaurado una copia del fichero de control, debe
abrirse con la opcin RESETLOGS.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

807

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

808

RESTAURACION DE FICHEROS.

RESTAURAR FICHEROS DE COPIA.

Restaurar un fichero es reemplazarlo por una copia previa del


mismo. Se trata de una operacin previa a la recuperacin de
cualquier fichero daado.
Es necesario, por tanto, guardar la localizacin de los ficheros
de datos, control, redo en lnea, redo archivado,
inicializacin, comunicaciones y contraseas.

Localizacin datos, control y redo en lnea.

SELECT NAME, VALUE FROM V$PARAMETER


WHERE NAME LIKE log_archive_dest%
AND VALUE IS NOT NULL ;

RECUPERACION

809

Administracin y Ajuste de Oracle 10g

SELECT * FROM V$RECOVER_FILE;

El redo archivado debe ser accesible durante la


recuperacin en el lugar definido como primer destino de
archivado (log_archive_dest_1).

Si es necesario indicar una localizacin alternativa puede


hacerse e indicarlo mediante el parmetro LOGSOURCE
-orden SET de SqlPlus o el parmetro RECOVER ... FROM de
la sentencia ALTER DATABASE de forma previa a la
recuperacin-. Tambin especificando el nuevo destino:
RECOVER AUTOMATIC TABLESPACE <tbsp> FROM
\...\...;

Para averiguar que ficheros de redo son necesarios, se


consultan las vistas:

Nota:La vista no es util si el fichero de control en uso es una copia restaurada


o uno nuevo creado tras el fallo en disco (media failure), pues, en este caso,
no contiene la informacin necesaria para actualizar v$recover_file.

De V$DATAFILE y V$TABLESPACE pueden obtenerse


nombres de fichero y de tablespaces de aquellos ficheros
que necesitan recuperacin.
SELECT r.FILE#, d.NAME, t.NAME, d.STATUS, r.ERROR,
r.CHANGE#, r.TIME FROM V$RECOVER_FILE r,
V$DATAFILE d, V$TABLESPACE t WHERE t.TS# = d.TS#
AND d.FILE# = r.FILE#

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

810

RESTAURAR REDO ARCHIVADO.

La vista V$RECOVER_FILE muestra el estado de los ficheros


que necesitan recuperacin, el motivo, el SCN donde debe
comenzar, ...

Administracin y Ajuste de Oracle 10g

RECUPERACION

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FICHEROS A RESTAURAR.

Listado de redo archivado.


SELECT NAME FROM V$ARCHIVED_LOG;

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Formato de redo archivado.


SHOW PARAMETER LOG_ARCHIVE_FORMAT

SELECT NAME FROM V$DATAFILE


UNION ALL
SELECT MEMBER FROM V$LOGFILE
UNION ALL
SELECT NAME FROM V$CONTROLFILE;

Administracin y Ajuste de Oracle 10g

Localizacin redo archivado.

RECUPERACION

V$ARCHIVED_LOG ... Nombres de todos los ficheros de


redo archivado.
811

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

812

RESTAURAR REDO ARCHIVADO.

RESTAURAR FICHEROS DE COPIA.

V$RECOVERY_LOG ... redo archivado necesario para


la recuperacin (slo contiene informacin en caso de
necesitarse recuperacin para un fichero de datos, no si
se trata de una recuperacin planificada por un fallo de
usuario).

Determinar los ficheros de datos a recuperar.

Si la bd est abierta, poner los tablespaces a recuperar


fuera de lnea:
ALTER TABLESPACE users OFFLINE IMMEDIATE;

Restaurar copias de los ficheros daados a su misma


localizacin:
cp /copia/tbs_24.bak /u02/.../tbs_24.f

Recuperar (RECOVER) y poner el tbsp. recuperado en lnea:


RECOVER TABLESPACE <tbsp>;
ALTER TABLESPACE <tbsp> ONLINE;

Administracin y Ajuste de Oracle 10g

RECUPERACION

813

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

814

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERAR F. CONTROL.
PERDIDA DE MIEMBRO MULTIPLEXADO.

RESTAURAR Y RECREAR F. CONTROL.

Administracin y Ajuste de Oracle 10g

Si un fallo de disco, media failure, afecta a los ficheros de


control (multiplexados o no), la bd sigue trabajando hasta la
primera vez que un proceso background necesita acceder a
los
mismos;
en
este
instante
la
bd
se
cierra
automaticamente.

En el caso de que un fallo haya daado uno o ms ficheros de


control y, al menos, exista un f.control no daado.

Suponiendo que el disco y el sistema de ficheros donde reside


el fichero daado funcionan correctamente:
Parar la bd: SHUTDOWN ABORT
Corregir el problema hw.
Copiar un fichero de control intacto sobre el/los ficheros/s
de control daado/s

Si el fallo es temporal y la bd todava no se ha cerrado,


puede intentarse corregir el fallo. Si la bd cierra, puede
arrancarse tras corregir el problema y restaurar el acceso a
los ficheros de control.

cp /u02/.../control01.ctl /u03/.../control02.ctl
Arrancar la bd: STARTUP

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

815

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

816

RECUPERAR F. CONTROL.
PERDIDA DE MIEMBRO MULTIPLEXADO.

RECUPERAR F. CONTROL.
PERDIDA DE TODOS MIEMBROS.

Si el disco y el sistema de ficheros donde reside el fichero


daado NO funcionan correctamente:

Parar la bd: SHUTDOWN ABORT


Copiar el fichero de control intacto a una localizacin
alternativa: cp /u02/.../control01.ctl /u05/.../control02.ctl
Editar el fichero de parmetros de inicializacin y
modificar la variable CONTROL_FILES de forma que
contenga SOLO las localizaciones actuales de los ficheros
de control vlidos (se excluyen el resto).
CONTROL_FILES
=
'/u05/.../control02.ctl'

RECUPERACION

817

Suponiendo que el disco y el sistema de ficheros donde reside


el fichero daado funcionan correctamente:

Administracin y Ajuste de Oracle 10g

RECUPERACION

818

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERAR F. CONTROL.
PERDIDA DE TODOS MIEMBROS.

RECUPERAR F. CONTROL.
PERDIDA DE TODOS MIEMBROS.

Restaurar la copia del fichero de control a todos los


destinos indicados en el parmetro de inicializacin
CONTROL_FILES (orden cp).
Montar la bd: STARTUP MOUNT
Recuperar, sentencia RECOVER con la clasula USING
BACKUP CONTROLFILE. Indicar UNTIL CANCEL si se est
realizando una recuperacin incompleta:

ORA-00279: change 55636 generated at 06/08/2000 16:59:47 needed


for thread 1
ORA-00289: suggestion : /oracle/work/arc_dest/arcr_1_111.arc
ORA-00280: change 55636 for thread 1 is in sequence #111
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

Puede indicarse el nombre de un log en lnea y


pulsarse retorno de carro:
/oracle/dbs/t1_log1.f
Log applied.
Media recovery complete.

RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL


CANCEL

Si los redo en lnea no estn accesibles, puede


cancelarse la recuperacin sin aplicarlos. En este caso
debe recrearse el fichero de control si los cambios en los
redo en lnea son necesarios.

Aplicar los log archivados. Si se recibe un mensaje


indicando que alguno no existe, probablemente significa
que la informacin necesaria est en los redo en lnea
-cambios no archivados al suceder el problema-.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Si se tiene copia del fichero de control.

Parar la bd: SHUTDOWN ABORT


Corregir el problema hw.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

'/u02/.../control01.ctl',

Arrancar la bd: STARTUP


Administracin y Ajuste de Oracle 10g

No puede montarse ni abrirse la bd hasta tener un fichero de


control accesible. Si se intenta montar la bd, se produce el
error ORA-00205: error in identifying controlfile, check alert
log for more info.
Al restaurar una copia del fichero de control, debe abrirse la
bd con la opcin RESETLOGS.

RECUPERACION

Abrir la bd con la opcin RESETLOGS: ALTER DATABASE


OPEN RESETLOGS;
Realizar una copia completa de la bd.
819

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

820

RECUPERAR F. CONTROL.
PERDIDA DE TODOS MIEMBROS.

Si no puede restaurarse el fichero de control a su localizacin


original; debe indicarse una nueva localizacin en el fichero
de parmetros, variable CONTROL_FILES.

La restauracin es idntica al caso en que se restaure a la


localizacin por defecto, salvo que debe modificarse el fichero
de parmetros de forma previa a la misma y al montaje de la
bd.

RECUPERAR F. CONTROL.
PERDIDA DE MIEMBROS Y COPIAS.

Si los ficheros de control se han daado pero el redo en


lnea permanece, puede recuperarse la bd tras crear un
fichero de control. No se requiere abrir la bd, en este caso,
con la opcin RESETLOGS. Para crear u fichero de control:
Arrancar la bd , no montar: STARTUP NOMOUNT
Crear el fichero de control, indicando la
NORESETLOGS. Por ejemplo:

opcin

CREATE CONTROLFILE REUSE DATABASE SALES NORESETLOGS ARCHIVELOG


...

Tras crear el fichero de control, Oracle monta la bd.


Recuperar la bd: RECOVER DATABASE
Abrir la bd: ALTER DATABASE OPEN;
Realizar copia del fichero de control: ALTER DATABASE
BACKUP CONTROLFILE TO '/.../copia_fcontrol' REUSE;

Administracin y Ajuste de Oracle 10g

RECUPERACION

821

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

822

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERAR F. CONTROL.
PERDIDA DE MIEMBROS Y COPIAS.

Administracin y Ajuste de Oracle 10g

RECUPERAR F. CONTROL.
PERDIDA DE MIEMBROS Y COPIAS.

Existen distintas opciones para crear el fichero de control:

Si no existe copia del fichero de control, debe crearse


manualmente (sentencia CREATE CONTROLFILE).

En el caso de haber ejecutado un ALTER DATABASE


BACKUP CONTROLFILE TO TRACE NORESETLOGS tras el
ltimo cambio estructural, o antes de haber realizado este
cambio; puede usarse el fichero de traza generado (en
caso de no reflejar los ltimos cambios, debe editarse y
aadirlos).
Si se ha realizado una copia a fichero binario, ALTER
DATABASE BACKUP CONTROLFILE TO fichero;, debe
copiarse el fichero, crear una instancia temporal, montar
la bd -STARTUP MOUNT- y realizar una copia a traza
-ALTER DATABASE BACKUP CONTROLFILE TO TRACE
NORESETLOGS-. Se edita, si es necesario, y se realizan
los cambios oportunos.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

823

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

824

CONDICIONES RECUPERACION.

CONDICIONES RECUPERACION.

Para realizar cualquier tipo de media recovery debe tenerse


en cuenta que:

Deben tenerse privilegios de administrador.


Una sesin no puede comenzar una recuperacin
completa mientras otra realiza una recuperacin tipo
incompleta.
No puede realizarse media recovery si se est conectado
a la bd a travs de un proceso servidor compartido
(shared server).

Ejecutando SET AUTORECOVERY ON antes de RECOVER.


Startup mount
Set autorecovery on
Recover database
alter database open;

Debe usarse la sentencia SQL*Plus RECOVER, y realizar una


recuperacin automtica; as no se interroga al aplicar cada
log archivado. Los nombres de estos, se obtienen
concatenando
LOG_ARCHIVE_FORMAT
y
LOG_ARCHIVE_DEST_n, siendo n el mayor valor entre los
destinos habilitados.

Administracin y Ajuste de Oracle 10g

RECUPERACION

Hay dos formas de automatizar la aplicacin de los redo


necesarios en la recuperacin:

Indicando la clasula AUTOMATIC como opcin de la


sentencia RECOVER.
Startup mount
Recover automatic database
alter database open;
825

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

RECUPERACION

826

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION COMPLETA.
BD CERRADA.

RECUPERACION COMPLETA.

1.- Preliminares.

Se recuperan las copias al SCN actual; bien la bd al


completo, o tbsp o ficheros de datos individuales.

No es necesario abrir la bd con RESETLOGS, de forma que


pueden recuperarse ciertos ficheros de datos en un momento
y los restantes posteriormente.

Cerrar la bd: SHUTDOWN ABORT.


Intentar corregir el fallo que origina el error (puede que el
fallo sea temporal y los datos no hayan sido daados).
2.- Restaurar copias de los ficheros daados o perdidos.
Determinar los ficheros de datos a recuperar.
Identificar la copia ms reciente de los ficheros daados
(no restaurar ficheros de datos no afectados ni redo en
lnea).
Restaurar los ficheros.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

827

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

828

RECUPERACION COMPLETA.
BD CERRADA.

RECUPERACION COMPLETA.
BD CERRADA.

3.- Recuperar la bd.

En una recuperacin automatizada, esta contina hasta que


todo el redo archivado y en lnea se ha aplicado y aparece
el mensaje: media recovery complete.

Montar la bd: STARTUP MOUNT.


Obtener los nombres de los ficheros de datos y su estado:
SELECT NAME,STATUS FROM V$DATAFILE;
Asegurarse de que todos los f.datos de la bd estn en
lnea (a menos que forme parte de un tbsp. de slo
lectura o se hubiera puesto fuera de lnea normalmente):
ALTER DATABASE DATAFILE '/.../tbs.dbf' ONLINE;
Ejecutar la sentencia paa recuperar la bd -todos los
ficheros daados- , un tbsp. concreto o un fichero de
datos (puede indicarse recuperacin automtica):

Abrir la bd: ALTER DATABASE OPEN;

RECOVER DATABASE;
RECOVER TABLESPACE users;
RECOVER DATAFILE '/.../tbs.dbf';
Administracin y Ajuste de Oracle 10g

RECUPERACION

829

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

El proceso no es aplicable si se daan los ficheros del tbsp.


SYSTEM, en este caso se cierra la bd automticamente.

1.- Preliminares.
Poner los tbsp que contienen los ficheros daados fuera
de lnea: ALTER TABLESPACE users OFFLINE TEMPORARY;
Intentar corregir, si es posible, el fallo mquina que
origina el error.

ERROR at line 1:
ORA-01116: error in opening database file 11
ORA-01110: data file 11: '/oracle/dbs/tbs_32.f'
ORA-27041: unable to open file
SVR4 Error: 2: No such file or directory
Additional information: 3

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

830

RECUPERACION COMPLETA.
BD ABIERTA.

Puede ocurrir un fallo con la bd abierta, dejando los ficheros


no daados en lnea y en condiciones de
uso. Oracle
automaticamente pone los ficheros daados fuera de lnea
-no sus tablespaces- si el DBWR no puede escribir en ellos.
Las consultas que no pueden leer en dichos ficheros
generan errores, pero Oracle no los pone fuera de lnea por
esta razn:

Administracin y Ajuste de Oracle 10g

RECUPERACION

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION COMPLETA.
BD ABIERTA.

Administracin y Ajuste de Oracle 10g

2.- Restaurar copias de los ficheros daados o perdidos.


No deben restaurarse copias de ficheros no daados,
redo en lnea o ficheros de control. Si se han restaurado
a una localizacin alternativa, deben renombrarse los
ficheros de datos: ALTER DATABASE RENAME FILE
'/.../tbs1.dbf' TO '/.../tbs1.dbf';
831

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

832

RECUPERACION COMPLETA.
BD ABIERTA.

RECUPERACION INCOMPLETA.

3.- Recuperar los tbsp. fuera de lnea.


Conectar con privilegios de administrador.
Recuperar todos los
automticamente):

tbsp.

afectados

(aconsejable

Al no recuperar la bd al momento ms actual, debe indicarse


cuando terminar la recuperacin (point in tine recovery).
Existen diversas opciones:
Time-based ... Recupera datos hasta un instante concreto.

RECOVER TABLESPACE users, sales

Cancel-based ... Recupera hasta el empleo de la sentencia


CANCEL.

La recuperacin contina hasta que todo el redo


archivado y en lnea se ha aplicado.

Change-based ... Recupera hasta un SCN especfico.


Tras una recuperacin incompleta siempre debe abrirse la bd
con resetlogs.

Poner los tbsp. en lnea:


ALTER TABLESPACE users ONLINE;
ALTER TABLESPACE sales ONLINE;
Administracin y Ajuste de Oracle 10g

RECUPERACION

833

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION INCOMPLETA.

1.- Preliminares.

Montar la bd:
STARTUP MOUNT

Realizar una copia completa de la bd como medida de


precaucin ante errores durante la recuperacin.
Cerrar la bd, si est abierta: SHUTDOWN ABORT
Intentar corregir el fallo que origina el error.

Si algn fichero fue restaurado


alternativa anteriormente, indicarlo:

una

localizacin

Obtener el nombre y estado de todos ficheros de datos:


SELECT NAME,STATUS FROM V$DATAFILE;

Si el fichero de control actual no refleja la estructura de la


bd en el tiempo al que se quiere recuperar, debe
restaurarse una copia del mismo que lo haga.
Restaurar copias de todos los ficheros de datos de la bd
(previas al momento al que se quiere recuperar).
Abrir una sesin Sqlplus como administrador.
RECUPERACION

ALTER DATABASE RENAME FILE '/.../df2.dbf' TO


'/.../df2.dbf';

2.- Restaurar una copia completa de la bd.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

834

RECUPERACION

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION INCOMPLETA.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

Asegurarse de que todos los ficheros de la bd estn en


lnea (a menos que un tbsp se hubiera puesto fuera de
lnea normalmente -opcin NORMAL- o sea de slo
lectura):
ALTER DATABASE DATAFILE '/..../tbs.dbf' ONLINE;
835

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

836

RECUPERACION INCOMPLETA.
CANCEL BASED.

La recuperacin finaliza al indicar CANCEL en lugar de un


nombre de fichero redo archivado, o cuando todos estos
han sido aplicados. Permite controlar el proceso de
recuperacin.

Deben seguirse los siguientes pasos:

RECUPERACION INCOMPLETA.
CANCEL BASED.
Continuar aplicando redo hasta llegar al ltimo y
cancelar ejecutando: CANCEL. Si el fichero de control es
una copia deber indicarse tambin los nombres del
redo en lnea si desean aplicarse.
Oracle devuelve un mensaje indicando si la recuperacin
fue exitosa. Si se cancela una recuperacin antes de que
todos los ficheros esten en un SCN consistente y se
intenta abrir la bd, se recibe un ORA-1113 en caso de ser
necesaria ms recuperacin. Puede consultarse la vista
V$RECOVER_FILE para determinar si es as, o si una copia
de algn fichero no fue restaurada antes de comenzar la
recuperacin.

Conectarse a Sqlplus con privilegios de administrador:


sqlplus '/ AS SYSDBA'
Montar la bd: STARTUP MOUNT
Comenzar la recuperacin: RECOVER DATABASE UNTIL
CANCEL
Si se est usando una copia del f.de control debe
indicarse: RECOVER DATABASE UNTIL CANCEL USING
BACKUP CONTROLFILE

Abrir la bd en modo RESETLOGS. Siempre deben


reiniciarse los log en lnea despus de una recuperacin
incompleta o con una copia del fichero de control:
ALTER DATABASE OPEN RESETLOGS;

Administracin y Ajuste de Oracle 10g

RECUPERACION

837

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

RECUPERACION

838

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION INCOMPLETA.
TIME BASED.

RECUPERACION INCOMPLETA.
CHANGE BASED.

Ejecutar RECOVER DATABASE UNTIL TIME para


comenzar. El tiempo siempre se indica usando el formato:
'YYYY-MM-DD:HH24:MI:SS'. Por ejemplo:

Indicar el SCN de terminacin. Por ejemplo:

RECOVER DATABASE UNTIL TIME '2004-12-31:12:47:30'

Aplicar redo archivado. Si el fichero de control es una


copia, tras aplicar redo archivado debe indicarse el
redo en lnea. Finaliza automticamente la recuperacin
al alcanzar el SCN indicado y se devuelve un mensaje
indicando si es correcta.

RECOVER DATABASE UNTIL CHANGE 10000;

Si se usa una copia del fichero de control, restaurada:


RECOVER DATABASE UNTIL TIME '2004-12-31:12:47:30'
USING BACKUP CONTROLFILE
Aplicar redo archivado. Si el fichero de control es una
copia, tras aplicar redo archivado debe indicarse el
redo en lnea. Finaliza automticamente la recuperacin
al alcanzar el tiempo indicado y se devuelve un mensaje
indicando si es correcta.

Abrir bd en modo RESETLOGS: ALTER DATABASE OPEN


RESETLOGS;

Abrir bd en modo RESETLOGS: ALTER DATABASE OPEN


RESETLOGS;
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

839

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

840

RECUPERACION PARALELA.

APERTURA BD TRAS RECUPERACION.

Por defecto se emplea recuperacin paralela, lo que


incrementa la productividad. El grado de paralelismo es igual
al nmero de UCPs disponibles, relacionado con el
parmetro de inicializacin CPU_COUNT.

Si se indica RECOVER PARALLEL o RECOVER PARALLEL 0


se evita este comportamiento.

Administracin y Ajuste de Oracle 10g

RECUPERACION

841

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Siempre que se realiza una recuperacin incompleta o


recuperacin con una copia del fichero de control, debe
reinicializarse los logs al abrir la bd. La nueva versin de bd
se llama incarnation. Todos los redo archivados
generados tras el punto de RESETLOGS en la antigua
incarnation son no vlidos en la nueva.

Al realizar una recuperacin completa, no tiene que abrirse la


bd con la opcin RESETLOGS. Todos las copias y redo
archivado creados durante la vida de esta incarnation de la
bd son vlidos.

Administracin y Ajuste de Oracle 10g

RECUPERACION

842

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

APERTURA BD TRAS RECUPERACION.

Administracin y Ajuste de Oracle 10g

RECUPERACION

APERTURA BD TRAS RECUPERACION.

843

Al abrir la bd con RESETLOGS, todos los f.datos obtienen un


nuevo RESETLOGS SCN y fecha, y la secuencia de log se
reinicia a 1.
El log archivado contiene asmismo esos dos valores en la
cabecera. Como Oracle no aplica un log archivado a un
fichero de datos a menos que RESETLOGS SCN y fecha
coincidan, esta operacin evita que se corrompan con log
archivados que no son de encarnaciones padres directas de
a actual.

Reinicializar los logs permite:


Descartar para siempre cualquier informacin no aplicada
durante la recuperacin.
Reinicializar la informacin en el fichero de control sobre
redo en lnea y redo threads.
Crear los ficheros de redo en lnea si no existan.
Reinicializar el nmero de secuencia de log a 1.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

844

APERTURA BD TRAS RECUPERACION.

APERTURA BD TRAS RECUPERACION.

Archiva redo en lnea, si est accesible, y borra su


contenido.
Actualizar todos los ficheros de datos y redo en lnea y,
por tanto, el redo archivado que se produzca con un
nuevo RESETLOG SCN y time stamp.

Administracin y Ajuste de Oracle 10g

RECUPERACION

Tras un RESETLOGS, es aconsejable:

Realizar una copia completa de la bd, cerrndola en modo normal


(permite recuperar cambios hechos tras la reinicializacin).
Comprobar que en el alert_SID.log no existen entradas que reflejen
inconsistencias detectadas entre el dicconario de datos y el fichero de
control (p.ej. Fich. datos que no aparecen en el fich. de control).

845

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

RECUPERACION

846

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TSPITR (Tbsp. Point in time recovery).

Recuperar tras un borrado de tabla. Idem si est corrupta


(es conveniente tener copia lgica!).
Recuperar tras sentencias que han afectado a una parte de
la bd (DML).
Recuperar un esquema (si es independiente y reside en un
tbsp aparte) a un punto diferente del resto.
Recuperar un tbsp en una gran bd (VLDB -very large
database-) cuando es ms eficiente que recuperar la bd al
completo.

TSPITR

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Junto con la funcionalidad de transporte de tbsp., permite


recuperar uno o ms tbsp. (distintos al SYSTEM) a un
momento en el tiempo anterior al resto de la bd. Es util para:

RECUPERACION

847

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

848

TSPITR.

TSPITR. PRELIMINARES.

El desarrollo bsico de un TSPITR consta de varios pasos:

1.- Debe comprobarse que se poseen las copias necesarias


previas al instante al que se desea el TSPITR; as como una
copia del fichero de control realizada con ALTER DATABASE
BACKUP CONTROLFILE TO '<fichero>';
Igualmente que hay suficiente espacio en disco y memoria
para poder recuperar y arrancar la bd auxiliar.

Operaciones preliminares y puesta fuera de lnea de


aquellos tbsp. que requieren recuperacin.
Creacin de una bd auxiliar (duplicado de la bd en uso
restaurada desde copia) y su recuperacin hasta el
momento necesario en el tiempo.
La bd auxiliar puede residir en la misma mquina que la
bd en uso o en otra distinta. Se aconseja esta ltima
opcin por su mayor facilidad de manejo y menor
probabilidad de dao.

Si el tbsp. a recuperar se ha renombrado debe asegurarse


que el SCN para el TSPITR es posterior al momento en que
fue renombrado (no puede hacerse en caso contrario, aunque
puede realizarse un DBPITR a un SCN previo al renombrado
-vuelve a su nombre anterior-).
2.- Obtener informacin de la bd en uso.

Borrado de los tbsp que requieran TSPITR (bd en uso).

- Ficheros de datos, control y redo en lnea (SELECT NAME


FROM V$DATAFILE UNION ALL SELECT MEMBER FROM V$LOGFILE
UNION ALL SELECT NAME FROM V$CONTROLFILE;).

Transporte del conjunto de tbsp. desde la bd auxiliar


hasta la bd en uso.
Administracin y Ajuste de Oracle 10g

RECUPERACION

849

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

850

TSPITR. PRELIMINARES.

- Ficheros de datos del tbsp SYSTEM y del conjunto de


recuperacin (tbsp a recuperar).

3.- Determinar los objetos que se perdern en el TSPITR.


Cualquier objeto creado tras el instante al que se desea
recuperar se pierde. Para averiguar cules son , debe
consultarse la vista TS_PITR_OBJECTS_TO_BE_DROPPED en
la bd en uso.
Por ejemplo, si se quiere recuperar ventas1 y ventas2 al
instante '2000-06-02:07:03:11':

SELECT t.NAME AS "reco_tbs", d.NAME AS "dbf_name"


FROM V$DATAFILE d, V$TABLESPACE t
WHERE t.TS# = d.TS#
AND t.NAME IN ('SYSTEM', 'RECO_TBS_1', 'RECO_TBS_2');

- Ficheros de datos del tbsp de UNDO.

SELECT OWNER, NAME, TABLESPACE_NAME,


TO_CHAR(CREATION_TIME, 'YYYY-MM-DD:HH24:MI:SS')
FROM SYS.TS_PITR_OBJECTS_TO_BE_DROPPED
WHERE TABLESPACE_NAME IN ('VENTAS1','VENTAS2')
AND CREATION_TIME > TO_DATE('00-JUN-02:07:03:11','YY-MONDD:HH24:MI:SS')
ORDER BY TABLESPACE_NAME, CREATION_TIME;

SELECT r.TABLESPACE_NAME AS "rbs_tbs", d.FILE_NAME AS


"dbf_name" FROM DBA_ROLLBACK_SEGS r, DBA_DATA_FILES d
WHERE r.TABLESPACE_NAME=d.TABLESPACE_NAME;
SELECT u.TABLESPACE_NAME AS "undo_tbs", d.FILE_NAME AS
"dbf_name" FROM DBA_UNDO_EXTENTS u, DBA_DATA_FILES d
WHERE u.TABLESPACE_NAME=d.TABLESPACE_NAME;

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TSPITR. PRELIMINARES.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g

RECUPERACION

851

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

852

TSPITR. PRELIMINARES.

TSPITR. CREACION BD AUXILIAR.

4.- Configurar la conexin a la bd auxiliar (Net) y, en su caso,


crear el fichero de claves.

5.- Crear un fichero de parmetros de inicializacin para la bd


auxiliar.
Contendr parmetros como: DB_NAME, CONTROL_FILES,
LOG_ARCHIVE_DEST_1,
LOG_ARCHIVE_FORMAT,
DB_UNIQUE_NAME,
DB_FILE_NAME_CONVERT,
LOG_FILE_NAME_CONVERT.
Parmetros de memoria como DB_CACHE_SIZE ,
SHARED_POOL_SIZE
y LARGE_POOL_SIZE
deben
mantenerse a un valor bajo.

Administracin y Ajuste de Oracle 10g

RECUPERACION

Se asume que se crear en una mquina distinta a aquella en


que reside la bd en uso, y se usarn los mismos nombres de
ruta (path names) para los ficheros.

1.- Restaurar los ficheros de la bd auxiliar (ficheros de control,


undo y system), junto con el conjunto de recuperacin
-tbsp a recuperar-.
2.- Arrancar la bd auxiliar -sin montar-. Si es necesario indicar
cul es el fichero de parmetros de inicializacin.
STARTUP NOMOUNT PFILE = /.../.

853

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

RECUPERACION

854

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TSPITR. CREACION BD AUXILIAR.

TSPITR. CREACION BD AUXILIAR.

3.- Montar la bd auxiliar usando la clasula CLONE (pone todos


los ficheros de datos offline de forma automtica).

5.- Poner todos los ficheros de datos en lnea.


ALTER
ALTER
ALTER
ALTER

ALTER DATABASE MOUNT CLONE DATABASE;


4.- Ejecutar la consulta siguiente para descartar cualquier error
en el nombre de los ficheros de datos:

DATABASE
DATABASE
DATABASE
DATABASE

DATAFILE
DATAFILE
DATAFILE
DATAFILE

/u02/.../system.dbf ONLINE;
/u02/.../ventas1.dbf ONLINE;
/u02/.../ventas2.dbf ONLINE;
/.../undo.dbf ONLINE;

TSPITR no funcionar si todos los ficheros del cjto. de


recuperacin no estn en lnea. En este momento la bd auxiliar
est lista para recuperacin.

SELECT NAME FROM V$DATAFILE UNION ALL


SELECT MEMBER FROM V$LOGFILE UNION ALL
SELECT NAME FROM V$CONTROLFILE;

6.- Recuperar la bd a un instante concreto con la opcin USING


BACKUP CONTROLFILE. Por ejemplo:
RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE

En caso de haber algn error debern renombrarse (si no se ha


usado DB_FILE_NAME_CONVERT y LOG_FILE_NAME_CONVERT).

7.- Abrir la bd auxiliar con la opcin RESETLOGS.


ALTER DATABASE OPEN RESETLOGS;

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

855

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

856

TSPITR. TRANSPORTAR TBSP.


OPERACIONES BD AUXILIAR.

TSPITR. TRANSPORTAR TBSP.


OPERACIONES BD EN USO.

1.- Colocar los tbsp en modo slo lectura.

1.- Borrar los tbsp. del conjunto de recuperacin.


DROP TABLESPACE ventas1 INCLUDING CONTENTS;
DROP TABLESPACE ventas2 INCLUDING CONTENTS;

ALTER TABLESPACE ventas1 READ ONLY;


ALTER TABLESPACE ventas2 READ ONLY;

2.- Copiar los ficheros de datos de la bd auxiliar a la bd en uso,


igual con el fichero resultado de la exportacin (orden cp).

2.- Comprobar que el conjunto es autocontenido.


EXECUTE
SYS.DBMS_TTS.TRANSPORT_SET_CHECK('ventas1,ventas2',TRUE,TRUE);

3.- Importar el conjunto transportado (utilidad Data Pump


import).

SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;

4.- Cambiar modo de los tbsp. transportados a lectura/escritura.


3.- Generar el conjunto transportable (utilidad Data Pump Export).
ALTER TABLESPACE ventas1 READ WRITE;
ALTER TABLESPACE ventas2 READ WRITE;
Administracin y Ajuste de Oracle 10g

RECUPERACION

857

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

RECUPERACION

858

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TSPITR. TRANSPORTAR TBSP.


OPERACIONES BD EN USO.

VISTAS.

5.- Realizar una copia de los tbsp. recuperados.


Debe realizarse copia pues de otra forma podran perderse.
Si, por ejemplo, ocurre un fallo de disco, y se intenta
recuperar desde una copia anterior al TSPITR, esta falla.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

859

V$ARCHIVED_LOG

V$RECOVER_FILE ... Muestra el estado de los ficheros que


precisan media recovery.

V$RECOVERY_LOG

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

860

APENDICE A.
Recursos Oracle en Internet.

APENDICE B.
Novedades Oracle 9i

www.orafaq.org (Underground Oracle FAQs)

undo tablespace y gestin automtica de undo

otn.oracle.com (Oracle Tecnology Network)

database default temporary tablespace

otn.oracle.com/oramag (Oracle Magazine)

drop
tablespace
DATAFILES;

www.oracle.com (Web de Oracle)

SGA dinmica: sga_max_size, db_cache_size

metalink.oracle.com (Soporte Tcnico Oracle)

asktom.oracle.com (Gur de Oracle)

db_nk_cache_size (cachs con tamao de bloque no


estndard)

www.oracle-base.com (Web de Tim Hall)

www.puschitz.com (Web de Werner Puschitz)

www.dbazine.com (Revista electrnica)

www.ixora.com.au (Otro gur)

Sitio no oficial sobre Oracle (FAQs, foros, artculos, scripts, etc).


Descargas de sw, documentacin, foros, artculos, scripts, etc. Registro
gratuito.
Revista Oracle Magazine.
Portal oficial de Oracle.

Soporte tcnico para usuarios con contrato de mantenimiento.

Artculos muy interesantes sobre Oracle 10g (incluida instalacin)

spfile (fichero de parmetros binario, mantenido con


alter system set ...)

Revista electrnica mensual especializada en Oracle

OMF

Para mejorar el rendimiento de Oracle sobre Unix

tablespaces con gestin automtica de segmentos


861

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

862

APENDICE C.
Arquitectura Oracle

Tablespace SYSAUX (permite dejar en el SYSTEM slo el DD)


alter tablespace nombre1 RENAME TO nombre2;
create BIGFILE tablespace tsbig1 ... size 50G; (hasta 8Eb)
SGA_TARGET (gestin automtica del tamao de las partes de la SGA)
alter table t1 SHRINK SPACE CASCADE; (antes alter table t1 enable row
movement;)
"create temporary tablespace ts1 ... TABLESPACE GROUP g1;" y "alter
tablespace t2 TABLESPACE GROUP g1;.
Data Pump (exp/imp todava existen): expdp/impdp muy eficiente para grandes
cantidades de datos
Flashback
Database
(db_recovery_file_dest,
db_recovery_file_dest_size,
db_flashback_retention_size). Muy til para auditora: ALTER DATABASE
FLASHBACK on; ALTER TABLESPACE nombre FLASHBACK ON; FLASHBACK
TABLE nombre TO SCN numero; FLASHBACK TABLE nombre TO TIMESTAMP
'2006-03-03 12:05:00';;
DROP DATABASE; (slo montada)
ALTER DATABASE DEFAULT TABLESPACE nombre;
ALTER SYSTEM FLUSH BUFFER_CACHE;
Automatic Storage Management
ALTER SYSTEM QUIESCE RESTRICTED | UNQUIESCE (tb SUSPEND y RESUME).
DROP TABLE nombre PURGE; (DBA_RECYCLEBIN, recyclebin=on, SHOW
RECYCLEBIN, FLASHBACK TABLE nombreTablaBorrada TO BEFORE DROP; PURGE
TABLE NombreTabla;)
ADDM. DBA_OUTSTANDING_ALERTS, DBA_ALERT_HISTORY, V$ALERT_TYPES.
Script $ORACLE_HOME/rdbms/admin/addmrpt.sql.

Administracin y Ajuste de Oracle 10g

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

APENDICE B.
Novedades Oracle 10g

AND

Artculos muy buenos sobre instalacin de Oracle sobre Linux

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CONTENTS

desaparece connect internal, ahora es connect / as


sysdba

Artculos y preguntas a uno de los gurs de Oracle

Administracin y Ajuste de Oracle 10g

INCLUDING

863

Servidor Oracle
Instancia
Procesos Background
DBWR
LGWR
SMON
PMON
CKPT
Opcionales: RECO, ARCH,
Dispatchers, Servers, etc.
Nuevos 10g: MMAN, MMON, MMNL,
PSP0.
System Global Area (SGA)
Shared Pool
Library Cache
Dictionary Cache
Database Buffer Cache
Redo Log Buffer
Java Pool y Large Pool.
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Base de datos
Ficheros de datos
Ficheros redo log
Ficheros de control

864

APENDICE C.
Arquitectura Oracle

APENDICE D.
Estructura Fsica/Lgica de la BD

Estructura lgica de la BD

Estructura fsica de la BD
Ficheros de datos
Bloques del SO

Tablespaces
Segmentos
Extensiones
Bloques Oracle

Administracin y Ajuste de Oracle 10g

865

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

APENDICE D.
Estructura Fsica/Lgica de la BD

APENDICE E.
Conexin a la BD y consulta
1. El proceso de usuario enva la
sentencia
SQL
al
proceso
servidor.
2. El proceso servidor busca la
sentencia SQL en la Shared
Pool. Si no la encuentra, la
compila y la guarda en la
Shared Pool.
3. El proceso servidor accede a los
datos en la Database Buffer
Cache. Si no los encuentra,
accede
directamente
a
los
ficheros de datos, llevando los
datos a la Database Buffer
Cache.
4. El proceso servidor devuelve los
datos al proceso de usuario q
inici la conexin.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

866

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

867

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

3
1

2
4

1
3
868

APENDICE F.
Actualizacin de datos
En primer lugar se repiten las fases 1
(envo
de
la
sentencia),
2
(compilacin) y 3 (acceso a los datos)
vistas en el proceso de consulta.
4. Se guarda una copia del dato (antes
del cambio) en un segmento de
Rollback (por si se deshace la
transaccin).
5. Se modifican los bloques de datos en
la Database Buffer Cach. El DBWR
(de forma asncrona) los llevara a los
ficheros de datos cuando suceda un
checkpoint.
6. Se guardan en la cach de Redo las
"redo entries" (vector de cambios de
cada bloque modificado) necesarias
para registrar el cambio q se va a
hacer (el LGWR vuelca el buffer al
fichero redo log activo, cuando se
hace commit o cada 3 segundos).
7. El proceso servidor devuelve el
nmero de filas actualizadas al
proceso de usuario.

APENDICE G.
SOPORTE DE GLOBALIZACIN
4

3
1

Conjunto de caracteres para la base de datos.


Lenguaje y territorio. Variable de entorno NLS_LANG.
Parmetros NLS. NLS_SESSION_PARAMETERS.
NLS_TERRITORY
NLS_LANGUAGE
NLS_DATE_LANGUAGE

2
7

6
1

Administracin y Ajuste de Oracle 10g

869

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

El conjunto de caracteres para la BD a utilizar en Espaa, es


el WE8ISO8859P15 (que incluye el smbolo del euro).
La variable de entorno NLS_LANG, permite indicar (desde la
aplicacin cliente que accede a Oracle) tanto el juego de
caracteres a utilizar, como el pas y el idioma:
export NLS_LANG=SPANISH_SPAIN.WE8ISO8859P15

Administracin y Ajuste de Oracle 10g

870

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

APENDICE H.
NLS_TERRITORY Y
NLS_LANGUAGE

APENDICE H.
NLS_SESSION_PARAMETERS
Para consultar las variables NLS asociadas a una sesin:

El pas (NLS_TERRITORY) lleva asociado un formato de fecha, y el lenguaje


(NLS_LANGUAGE) se refiere al idioma en que nos responde Oracle.

SQL> select * from nls_session_parameters;


PARAMETER
VALUE
------------------------------ ---------------------------------NLS_LANGUAGE
AMERICAN
NLS_TERRITORY
AMERICA
NLS_CURRENCY
$
NLS_ISO_CURRENCY
AMERICA
NLS_NUMERIC_CHARACTERS
P
.,
NLS_CALENDAR
GREGORIAN
NLS_DATE_FORMAT
DD-MON-RR
NLS_DATE_LANGUAGE
AMERICAN
NLS_SORT
BINARY
NLS_TIME_FORMAT
HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT
DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT
HH.MI.SSXFF AM TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT
DD-MON-RR HH.MI.SSXFF AM TZH:TZM
NLS_DUAL_CURRENCY
$
NLS_COMP
BINARY

SQL> SELECT SYSDATE FROM DUAL;


SYSDATE
--------30-MAR-05
SQL> ALTER SESSION SET NLS_TERRITORY=SPAIN;
Session altered.
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------30/03/05
SQL> ALTER SESSION SET NLS_LANGUAGE=SPANISH;
Sesion modificada.

Se pueden cambiar con ALTER SESSION SET variable=valor;


Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

871

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

872

APENDICE H.
NLS_DATE_LANGUAGE

APENDICE I
INTRODUCCION A ORACLE RAC

Podemos modificar el idioma de la fecha con NLS_DATE_LANGUAGE:

Dos (o ms) instancias accediendo a la misma BD.

Cada
instancia
reside
en
un
servidor
independiente,
manteniendo una conexin de alta velocidad a los discos
compartidos.

La BD reside en los discos compartdos, y cada instancia


mantiene (en dichos discos) sus propios ficheros de control y
redo online.

Un usuario es conectado a la BD mediante una de las intancias, y


si sta cae, ser reconectado automticamente mediante otra
instancia del cluster.

RAC provee alta disponibilidad (si no puedes perder ms de 30


minutos de cada, seguramente necesitas RAC), y tambin,
escalabilidad.

Ms SO y ms trfico de red.

SQL> SELECT TO_CHAR(SYSDATE,


'DD/MON/YYYY','NLS_DATE_LANGUAGE=SPANISH') FROM DUAL;
TO_CHAR(SYS
----------20/DIC/2004
SQL> SELECT
TO_CHAR(SYSDATE,'DD/MON/YYYY','NLS_DATE_LANGUAGE=AMERICAN') FROM
DUAL;
TO_CHAR(SYS
----------20/DEC/2004

Administracin y Ajuste de Oracle 10g

873

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

ARQUITECTURA RAC.

Acceso a los discos compartidos (Oracle recomienda ASM o


Automatic Storage Management).

Dos tarjetas de red. Una IP privada y otra pblica (Oracle


proporciona VIPCA o Virtual IP Configuration Assistant).
Soporte para TCP/IP y un sw de interconexin soportado por
Oracle (Oracle proporciona Oracle Clusterware).
Cada instancia tiene su propio init (pueden tener diferentes
tamaos de sga, etc), y su propio UNDO y redolog online. Un
mismo spfile permite configurar varias intancias:
alter system set shared_pool_size=400M sid='INST01';
Cache fusion: la primera instancia q arranca es lock master
(LM), no configurable (es as Oracle6 Parallel Server). LM sabe
qu bloques tiene cada instancia en su cach (global cache
table). Si LM cae, otra instancia se convertir en LM.
Podemos monitorizar una instancia (V$SESSION) o las dos a la
vez (GV$SESSION).
Misma versin de SO, Oracle y arquitectura (32 64 bits).

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

874

REQUISITOS DE LOS NODOS

Administracin y Ajuste de Oracle 10g

INTRODUCCIN A ORACLE RAC

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INTRODUCCIN A ORACLE RAC

875

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INTRODUCCIN A ORACLE RAC

876

CLUSTER-READY SERVICES
(CRS)

ORACLE CLUSTERWARE.
Oracle Clusterware, OCW, requiere dos componentes,
residentes ambos en un almacenamiento compartido:

CRS es el sw de cluster (clusterware) de Oracle. Soporta nodos


de multitud de SSOO (Sun, HP, Tru64, AIX, Windows, Linux,
etc). Todos los nodos deben tener el mismo SO y arquitectura
(32 64 bits)

Un disco, voting disk, donde se recoge informacin


sobre los nodos miembros. Permite determinar las
instancias miembros del cluster y debe residir en un
disco compartido. Se recomienda disponer de varios discos
de este tipo para garantizar una alta disponibilidad (en
nmero impar).

CRS tiene 3 componentes principales, en forma de demonios


lanzados desde el inittab (Unix) o como servicios (Win): 1
como root y 2 oracle (fatal=si falla reinicia nodo, respawn=si
falla reinicia proceso):
Ocssd (oracle, fatal): cluster synchronization services
daemon
Crsd (root, respawn): mantiene la disponibilidad de los
recursos
Evmd (oracle, respawn): event logger daemon
En /etc/init.d estan: init.crs, init.crsd, init.cssd, init.evmd. CRS
se arranca/para con /etc/init.d/init.crs start|stop (desde root).

Administracin y Ajuste de Oracle 10g

INTRODUCCIN A ORACLE RAC

Oracle
Cluster
Registry
(OCR)
para
registrar
informacin sobre configuracin del cluster, as como
sobre cualquier bd en cluster y sobre los procesos que
OCW controla. Debe residir en un disco compartido
accesible a los nodos. Se recomienda que este
multiplexado para garantizar una alta disponibilidad.
877

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

INTRODUCCIN A ORACLE RAC

878

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMPONENTES CLUSTERWARE. PROCESOS.

COMPONENTES CLUSTERWARE. PROCESOS.

Cluster Synchronizaton Services (CSS) -proceso ocssd-.


Controla quienes son miembros del cluster y avisa a los
nodos cuando alguno de ellos abandona o ingresa en el
mismo.

RACG. Extensin que ejecuta scripts cuando ocurren eventos


FAN.
Process Monitor Daemon (OPROCD) -proceso oprocd-. Proceso
residente en memoria para monitorizar el cluster, su fallo
provoca el rearranque del nodo.

Cluster Ready Services (CRS) -proceso crsd-. Programa


principal para gestionar la alta disponibilidad en un cluster.
Gestiona los recursos del cluster basndose en la
informacin almacenada en el OCR (por ejemplo arranque,
parada, monitorizacion y otras operaciones). CRS monitoriza
la instancia, el listener... y automticamente reinicia dichos
componentes cuando ocurre un fallo (por defecto lo intenta
cinco veces como mximo).
Event
Management
(EVM) -proceso
evmd-.
background que publica los eventos que crea CRS.

Proceso

Oracle Notification Service (ONS). Servicio para comunicar


eventos FAN (Fast Application Notification).
Administracin y Ajuste de Oracle 10g
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INTRODUCCIN A ORACLE RAC

879

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INTRODUCCIN A ORACLE RAC

880

COMPONENTES CLUSTERWARE. PROCESOS.

COMPONENTES CLUSTERWARE. PROCESOS.

Para asegurar que cada instancia del RAC obtiene el bloque


necesario para satisfacer una peticin, las instancias RAC usan
los procesos Global Cache Service (GCS) y Global Enqueue
Service (GES).

A lograr el
funcionamiento anteriormente mencionado
contribuyen el Global Resource Directory (GRD) y los procesos
especficos de RAC:

Estos procesos mantienen registros de los estados de cada


fichero de datos y cada bloque usando el Global Resource
Directory (GRD), el cual est distribuido a travs de todas las
instancias activas.

Despus de que una instancia accede a datos, cualquier otra


instancia en el cluster puede realizar una imagen del bloque
desde otras instancia en la bd (Cache Fusion) lo que es ms
rpido que volver a leer en disco.

Administracin y Ajuste de Oracle 10g

INTRODUCCIN A ORACLE RAC

881

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

INTRODUCCIN A ORACLE RAC

882

INTALAR RAC

La primera instancia en arrancar se convierte en Lock Master


(LM). Si esta cae, otra ser la nueva LM (cul?).
INSTA: hola LM, quiero leer el bloque 625
LM: nadie lo tiene, lelo de disco
LM actualiza su tabla, ya sabe q INSTA tiene el bloque
INSTA lee el bloque
INSTB: hola LM, quiero leer el bloque 625
LM: espera, INSTA lo tiene, ahora le digo q te lo enve
LM sabe q INSTA e INSTB tienen el bloque
INSTA enva el bloque a INSTB
INSTB: hola LM, quiero modificar el bloque 625
LM informa a INSTA q su versin del bloque 625 queda
invalidada
LM sabe q INSTB tiene el bloque 625 (vlido)
LM: haz tu modificacin
Este mecanismo consume CPU y trfico de red. Por otro lado, es
ms rpido leer un bloque de la red q del disco.

VIPs (Virtual IP Addresses). Cada nodo, adems de su ip


esttica, tiene una ip virtual, en la q escuchar el listener de
cada nodo, y a la q accedern los clientes. Si un nodo falla, su
VIP ser levantada por otro nodo, no con el objetivo de q se
sigan conectando los clientes a travs de dicha VIP, sino q la
respuesta ser q no hay instancia activa en dicha VIP, para q
el cliente intente conectarse a otra.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CACHE FUSION

LMS, proceso Global Cache Service


LMD, proceso Global Enqueue Service
LMON, proceso Global Enqueue Service Monitor
LCK0, proceso Instance Enqueue

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INTRODUCCIN A ORACLE RAC

Puedes montar RAC hasta con 4 nodos con 1 CPU, o hasta 2


nodos con 2 CPUs, con la licencia Oracle Database Standard
Edition. Si quieres ms hay q pasar a la licencia Oracle Database
Enterprise Edition.

Primer paso: usar OUI (Oracle Universal Installer) para instalar


CRS (Cluster Ready Services). Lo proporciona Oracle 10g para la
gestin del cluster. Con CRS se puede:

883

Definir servicios para distribuir la carga entre nodos.


AWR recoge estadsticas sobre estos servicios.
Segundo paso: instalar el software del servidor de BD Oracle con
RAC (usando OUI), en un ORACLE_HOME diferente al de CRS.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INTRODUCCIN A ORACLE RAC

884

RECUPERACIN DE LA
INSTANCIA

PARADAS POR MANTENIMIENTO

Cada instancia tiene su propio UNDO tablespace y redolog


online.

Si una instancia cae la otra se encarga de recuperarla (leer y


aplicar redolog online).

Si las dos instancias caen, la primera q arranque har el


recovery de todas las transacciones.

Actualizaciones del SO: cero parada (si las aplicaciones soportan


RAC, claro). Se procede nodo a nodo, de modo q el cluster no se
para.

Actualizaciones de Oracle:

Administracin y Ajuste de Oracle 10g

INTRODUCCIN A ORACLE RAC

885

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Administracin y Ajuste de Oracle 10g

4 nodos Blade HP G2:

Cpu BL20p (2cpus hiperthreading)


RAM 5Gb
4 tarjetas de red gigabit, en dos grupos (se usan dos para las
redes pblica y privada del cluster, y hay otras dos q les dan
alta disponibilidad).
SAN EVA 5000 de HP
Conexin de fibra al cluster.
150Gb para la BD y 200Gb para el rea de Flash (incluye
backups)
SO Linux Red Hat Advanced Server 3 (van a migrar a RHEL4).
Todos los nodos deben tener el mismo.

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

886

EJEMPLO DE INSTALACION
ORACLE RAC

La flash recovery area (FRA) ser la misma para todas las


instancias del RAC. Para ello la situaremos en los discos
compartidos,
y
asignaremos
los
parmetros
DB_RECOVERY_FILE_DEST y DB_RECOVERY_FILE_DEST_SIZE
con los mismo valores, en todas las instancias.

Administracin y Ajuste de Oracle 10g

INTRODUCCIN A ORACLE RAC

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FLASH RECOVERY AREA

Critical Patch Update: cero parada (esto ser as para


cualquier parche q slo actualice el sw, y no el DD de la BD).
Patchsets (10.2.0.2 a 10.2.0.3) y releases (10g R1 a R2).
Hay q parar todos los nodos, pues hay q actualizar el DD de
la BD. En este caso el tiempo de parada puede ser mayor q
sin RAC, puesto q hay q parar igualmente, y actualizar el sw
en todos los nodos.
De nada sirve RAC si no hay redundancia tambin a nivel del
servidor de aplicaciones, as como de la red q lo conecta al RAC.

INTRODUCCIN A ORACLE RAC

887

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INTRODUCCIN A ORACLE RAC

888

EJEMPLO DE INSTALACION
ORACLE RAC

Oracle 10g R1 (10.1.0.5) y estn migrando a 10g R2 (10.2.0.3)

sga_target=800M
sga_max_size=3G
pga_aggregate_target (por defecto, para ellos, son 228M)
Spfile en ASM
Processes=600 (han medido un mximo de 1200 en total,
unos 300 por nodo).
ASM (la versin q se corresponde con el Kernel).
/etc/init.d/oracleasm listdisk. ASM necesita RMAN para
backups. Ver manual ASM best practices. Instancias ASM con
pfiles (init).
OCR y Voting Disk en rawdevices (/etc/sysconfig/rawdevices).
Copias de seguridad con dd.
OEM Grid Control con una agente en cada nodo.

Administracin y Ajuste de Oracle 10g


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

INTRODUCCIN A ORACLE RAC

889

También podría gustarte