Вы находитесь на странице: 1из 223

TEMARIO

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

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. Administracin y Ajuste de Oracle 10g

Francisco Fernndez Martnez (pacof@um.es) Juan Luis Serradilla Amarilla (juanlu@um.es)

Universidad de Murcia
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.
3
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 Instancia Conexin a la Base de datos Memoria: SGA (Automatic Shared Memory Management >=10g) y PGA Procesos: procesos de usuario, servidores y background Estructura lgica: tablespaces, segmentos, extensiones, bloques Arquitectura OFA Usuarios administradores de la BD: sys y system Fichero de autenticacin (orapw)
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SERVIDOR ORACLE
Servidor Oracle:
Instancia Oracle Base de datos Oracle

Instancia Oracle:
System Global Area (SGA) Procesos Background

Base de datos Oracle:



5

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

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

INSTANCIA
La integran los procesos background y la SGA Abre una y slo una BDO, y permite acceder a ella.
Nota: con Oracle Real Application Cluster (RAC), ms de una instancia usarn la misma BD.

CONEXIN A LA BD
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:
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

CONEXIN A LA BD: procesos


Conexin con Servidor Compartido (MTS) Conexin con Servidor Dedicado

SGA (System Global Area)

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.
9
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

10

SGA (System Global Area) y ASMM


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
ARQUITECTURA DE LA BD

SGA: Shared Pool


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: 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).
ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;

SQL AREA

PL/SQL AREA

LIBRARY CACHE DICTIONARY CACHE

SHARED POOL (shared_pool_size)

Administracin y Ajuste de Oracle 10g

11

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

ARQUITECTURA DE LA BD

12

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SGA: Shared Pool


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.

SGA: Database Buffer Cache


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)): Se pueden definir varias cachs de datos independientes:
ALTER SYSTEM SET DB_CACHE_SIZE = 96M; 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.

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
DD.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARQUITECTURA DE LA BD

13

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

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);

SGA: Redo Log Buffer Cache


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).

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).
15
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARQUITECTURA DE LA BD

LGWR

DML USERS

Administracin y Ajuste de Oracle 10g

ARQUITECTURA DE LA BD

16

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SGA: Java Pool


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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARQUITECTURA DE LA BD

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.
17
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARQUITECTURA DE LA BD

18

Program Global Area (PGA)

Estructura de procesos
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.
19
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARQUITECTURA DE LA BD

PILA SESION

PILA

PGA
(servidor compartido)

PGA
(servidor dedicado) SQL SQL

SHARED POOL
SESION

SHARED POOL

LARGE POOL

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

SGA
ARQUITECTURA DE LA BD

20

Procesos background

(DBWR)

Procesos background

(LGWR, SMON)

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).

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.
ARQUITECTURA DE LA BD

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

21

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

ARQUITECTURA DE LA BD

22

Procesos background (PMON, CKPT, ARCH)


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.
ARQUITECTURA DE LA BD

ESTRUCTURA LGICA
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.
ARQUITECTURA DE LA BD

Administracin y Ajuste de Oracle 10g

23

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

24

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESTRUCTURA LGICA
Base de Datos, Tablespaces, Segmentos, Extensiones y Bloques

ARQUITECTURA OFA
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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ARQUITECTURA DE LA BD

25

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

ARQUITECTURA DE LA BD

26

USUARIOS ADMINISTRADORES DE LA BD
Cuando creamos una BDO se crean automticamente
los usuarios SYS y SYSTEM, ambos con el rol DBA.

FICHERO DE AUTENTICACIN

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

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
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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARQUITECTURA DE LA BD

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):
GRANT SYSDBA TO usuario; Nota: en V$PWFILE_USERS estn los usuarios con SYSDBA y/o SYSOPER.

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

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


CONNECT usuario/clave AS SYSDBA 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.
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

PROCESO DE ACTUALIZACIN
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
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

4 3 1 7 2 7

3 1 4 2 4

6 1 3
ARQUITECTURA DE LA BD

1 3
ARQUITECTURA DE LA BD

29

30

VISTAS DEL DD
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).
ARQUITECTURA DE LA BD

PRACTICAS TEMA 1
1.1. Comprobar la asignacin de variables de entorno necesarias para conectarnos a la BD:
echo echo echo echo $ORACLE_HOME $ORACLE_SID $LD_LIBRARY_PATH $PATH

1.2. Identificar los procesos que componen instancia:

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

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'; 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'); 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

1.4. Comprobar valores de parmetros del init relacionados con el tamao de la SGA:

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

31

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:
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;

PRACTICAS TEMA 1.

1.7. Consultar informacin sobre la base de datos (v$database) y la instancia (v$instance).


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;

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;

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

ARQUITECTURA DE LA BD

33

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

ARQUITECTURA DE LA BD

34

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; select namespace,gethitratio, gethitratio from v$librarycache;

1.10. Ver la actividad de la Library Cache (v$librarycache). 1.11. Ver las sentencias SQL que guarda la Shared-Pool (v$sqlarea).
select sql_text from v$sqlarea;

TEMA 2 ARRANQUE Y PARADA DE LA BASE DE DATOS

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


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 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 Fichero alertSID.Log Trazas de los procesos background Trazas de los procesos de usuario Diccionario de datos Automatic Storage Managment (ASM)
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARRANQUE Y PARADA DE LA BD

FICHEROS DE PARMETROS DE INICIALIZACIN I



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:
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. Nota3. Se puede crear un init a partir de un spfile, invirtiendo la sintaxis.

Los parmetros del spfile se modifican con:

ALTER SYSTEM SET parametro = valor [SCOPE = MEMORY | SPFILE | BOTH]


Nota. Si slo queremos modificar el parmetro en el spfile, indicaremos SPFILE. Para hacer el cambio solo en memoria, especificar MEMORY.

37

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

ARRANQUE Y PARADA DE LA BD

38

FICHEROS DE PARMETROS DE INICIALIZACIN II


EJEMPLO DE INIT.ORA
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

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.
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).

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

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


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 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

CREAR LA BASE DE DATOS y borrarla


Para crear una BD necesitamos:
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. 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.

Para ubicar los ficheros que componen la BD:

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 y catproc.sql que estn en $ORACLE_HOME/rdbms/admin. Desde 10g se puede borrar con DROP DATABASE; (slo montada).

41

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

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

ARRANQUE Y PARADA DE LA BD

42

EJEMPLO DE CREACION DE BASE DE DATOS


connect / as sysdba startup nomount

ORACLE MANAGED FILES (OMF)


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.

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;
rem *** CREACION DE LAS VISTAS DEL DD *** @$ORACLE_HOME/rdbms/admin/catalog.sql @$ORACLE_HOME/rdbms/admin/catproc.sql Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARRANQUE Y PARADA DE LA BD

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;

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



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.
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.

COMANDO STARTUP
Arranca la instancia y abre la BD. Permite parar el
proceso de arranque de la BD en cualquiera de sus fases (NOMOUNT, MOUNT). parmetros por defecto).

STARTUP (abre la base de datos con el fichero de STARTUP PFILE=/home/CURSO/cursoXY/miinit.ora STARTUP NOMOUNT (para crear la base de datos). STARTUP MOUNT (para renombrar datafiles, activar
ARCHIVELOG o hacer una recuperacin completa de la BD). usuarios con el privilegio RESTRICTED SESION). BD).

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.
ARRANQUE Y PARADA DE LA BD

STARTUP RESTRICT (slo permite la conexin de STARTUP FORCE (hace SHUTDOWN ABORT y arranca la
45
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARRANQUE Y PARADA DE LA BD

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

46

COMANDO ALTER DATABASE Y ENCOLAR Y SUSPENDER LA BD

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.
ALTER DATABASE {MOUNT | OPEN} ALTER DATABASE OPEN [READ WRITE | READ ONLY]

PARAR LA BASE DE DATOS


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).
ARRANQUE Y PARADA DE LA BD

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

ARRANQUE Y PARADA DE LA BD

47

Administracin y Ajuste de Oracle 10g

48

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMANDO SHUTDOWN
Sintaxis:
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT]

FICHERO alert.log
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 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).

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:

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

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

IMMEDIATE N N S S S S

ABORT N N N N N S
49

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

ARRANQUE Y PARADA DE LA BD

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

ARRANQUE Y PARADA DE LA BD

50

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 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

FICHEROS DE TRAZA DE LOS PROCESOS BACKGROUND


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

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARRANQUE Y PARADA DE LA BD

51

52

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

DICCIONARIO DE DATOS (DD)


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.
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).

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
ARRANQUE Y PARADA DE LA BD

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.
ARRANQUE Y PARADA DE LA BD

Administracin y Ajuste de Oracle 10g sys=no

53

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

54

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

VISTAS DEL DICCIONARIO DE DATOS


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.
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.

AUTOMATIC STORAGE MANAGEMENT (ASM) - I


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

Ejemplos de vistas del DD:

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

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

55

ARRANQUE Y PARADA DE LA BD

56

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUTOMATIC STORAGE MANAGEMENT (ASM) - II

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

VISTAS DEL DD
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
ARRANQUE Y PARADA DE LA BD

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
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

57

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

58

PRACTICAS TEMA 2.
2.1. Fichero init.ora. Arranque y parada de la BD.

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

PRACTICAS TEMA 2.
2.2. Arranque de la BD (STARTUP). Comprobar las diferentes fases en el arranque 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)); 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;

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

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.
SHUTDOWN immediate STARTUP pfile=init01xy.ora show parameter processes STARTUP show parameter processes cp $ORACLE_HOME/dbs/init$ORACLE_SID.ora init01xy.ora echo processes=17 >> init01xy.ora tail init01xy.ora more $ORACLE_HOME/dbs/init$ORACLE_SID.ora grep processes $ORACLE_HOME/dbs/init$ORACLE_SID.ora

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

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 ARRANQUE Y PARADA DE LA BD SHUTDOWN

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

59

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.
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.
STARTUP RESTRICT (si la BD est parada) ALTER SYSTEM ENABLE RESTRICTED SESSION; (sila BD estaba arrancada) ALTER SYSTEM DISABLE RESTRICTED SESSION;

PRACTICAS TEMA 2.
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
61
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARRANQUE Y PARADA DE LA BD

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;
ARRANQUE Y PARADA DE LA BD

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

62

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

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

AADIR COPIAS Y BACKUP DEL FICHERO DE CONTROL


Para aadir una copia del fichero de control:
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

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:

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.
FICHERO DE CONTROL

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

65

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

66

ALTER DATABASE BACKUP CONTROLFILE TO TRACE


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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 FICHERO DE CONTROL

VISTAS DEL DD

V$CONTROLFILE V$CONTROLFILE_RECORD_SECTION V$PARAMETER

67

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

FICHERO DE CONTROL

68

PRACTICAS TEMA 3
3.1.Localizar el fichero de control desde el SO y desde la BD. ls -lt /u0?/oradata/$ORACLE_SID/*.ctl 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. select * from v$database; alter system checkpoint; select * from v$controlfile_record_section;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 FICHERO DE CONTROL

PRACTICAS TEMA 3
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.
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;

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;
69
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 FICHERO DE CONTROL

70

TEMA 4. GESTION DEL REDO LOG

Ficheros redo log

TEMA 4 GESTION DEL REDO LOG

Funcionamiento 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

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTION DEL REDO LOG

FUNCIONAMIENTO DEL REDO LOG


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.
GESTION DEL REDO LOG

73

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

74

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:


ALTER DATABASE ADD LOGFILE GROUP 3 (/u04/oradata/CURSOxy/redo03a.log, /u03/oradata/CURSOxy/redo03b.log) SIZE 1M;

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).

Elminar miembros Redo Log Online:


ALTER DATABASE DROP LOGFILE MEMBER /u03/oradata/CURSOxy/redo03b.log;

Aadir miembros Redo Log Online :


ALTER DATABASE ADD LOGFILE MEMBER /u03/oradata/CURSOxy/redo01b.log TO GROUP 1, /u03/oradata/CURSOxy/redo02b.log TO GROUP 2;

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.
75
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTION DEL REDO LOG

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


Vaciado (por ejemplo si todos los miembros de un grupo estn corruptos):
ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE /u02/oradata/CURSOxy/redo02a.log;

MODO ARCHIVELOG
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). 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
GESTION DEL REDO 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.
GESTION DEL REDO LOG

Nota. Se puede ver el estado del archivado con el comando archive log list del sqlplus.

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

77

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

78

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.
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;

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

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. 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.

PRACTICAS TEMA 4

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
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;

alter database add logfile group 4

('/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 alter database drop logfile member

'/u04/oradata/CURSOxy/redo01.log'; '/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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTION DEL REDO LOG

81

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

GESTION DEL REDO LOG

82

TEMA 5. TABLESPACES

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

TEMA 5 TABLESPACES

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
TABLESPACES

83

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

84

QUE ES UN TABLESPACE
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.

TABLESPACES

Administracin y Ajuste de Oracle 10g

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).
TABLESPACES

85

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

TABLESPACES

86

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES SYSTEM Y SYSAUX


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

CREAR UN TABLESPACE
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])

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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 TABLESPACES

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

87

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.
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.

TABLESPACES UNDO
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).
CREATE UNDO TABLESPACE undo01 DATAFILE /u03/oradata/CURSOxy/undo01.dbf SIZE 100M;

Tablespaces gestionados a travs del DD (a extinguir):

Administracin y Ajuste de Oracle 10g

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

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.
TABLESPACES

89

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

90

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TABLESPACES TEMPORALES Y GRUPOS


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: 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).
CREATE TEMPORARY TABLESPACE temp TEMPFILE /u03/oradata/CURSOxy/temp01.dbf SIZE 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M;

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

(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: 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;
TABLESPACES

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE nombre_tablespace; Nota: nombre_tablespace podra ser un nombre de grupo.

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;
TABLESPACES

Administracin y Ajuste de Oracle 10g

91

Administracin y Ajuste de Oracle 10g

92

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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.

TABLESPCE READ-ONLY Y BIGFILE

Administracin y Ajuste de Oracle 10g

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;
TABLESPACES

Sintaxis ALTER TABLESPACE nombre ONLINE | OFFLINE;

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;

93

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

TABLESPACES

94

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

BORRAR UN TABLESPACE
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.
DROP TABLESPACE nombre_tablespace [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]];
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 TABLESPACES

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.
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. 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).

Una opcin interesante es programar el crecimiento del fichero que compone el tablespace:

Slo un tablespace BIGFILE se puede redimensionar con ALTER TABLESPACE, sin indicar DATAFILE (>=10g): Podemos borrar fichero vaco de tablespace, con ms de uno (>=10g):
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

ALTER TABLESPACE bigtbs RESIZE 60G;

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. Parar la BD. Montar la BD (startup mount). Mover el fichero desde el S.O. ALTER DATABASE RENAME FILE /path2/fichero2; Abrir la BD.

El segundo requiere que la BD est slo montada, y es la nica forma de mover el tablespace SYSTEM:

/path1/fichero1

TO

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

TABLESPACES

97

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

TABLESPACES

98

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)

ADDM (AUTOMATIC DATABASE DIAGNOSTIC MONITOR)


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:
TABLESPACES

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

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

99

http://cursos.atica.um.es/oradoc102/server.102/b14211/diagnsis.htm#sthref4 Administracin y Ajuste de Oracle 10g


100
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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


Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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

TABLESPACES

102

PRACTICAS TEMA 5

PRACTICAS TEMA 5
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?
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

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

TABLESPACES

103

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

104

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.
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);

PRACTICAS TEMA 5

5.5. Crea el tablespace INDCURSOxy de 1M con el fichero /u02/oradata/CURSOxy/indcursoxy01.dbf. Muvelo al directorio /u03/oradata/CURSOxy.
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);
TABLESPACES

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

105

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

TABLESPACES

106

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. ESPACIO DE UNDO.

Gestin de Espacio de UNDO (DESHACER).


Parmetros obsoletos.

Modo automtico 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.
108

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

ESPACIO DE UNDO

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

TEMA 6. ESPACIO DE UNDO.


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.

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. 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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

ESPACIO DE UNDO

109

ESPACIO DE UNDO

110

ESPACIO DE UNDO (DESHACER).


Espacio de undo: Conjunto de registros que guardan informacin, relativa a acciones realizadas por una transaccin, necesaria para:
Recuperacin de la base de datos. Proporcionar consistencia en lectura (imagen de los datos). Retroceder transacciones (rollback).

ESPACIO DE UNDO Y CADAS DEL SISTEMA.


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. 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. 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

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

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

113

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

ESPACIO DE UNDO

114

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

ESPACIO DE UNDO Y CONSISTENCIA EN LECTURA.

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.


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. Generalmente se produce si existe una gran actividad que fuerza a que se sobrescriban datos necesarios para lograr la consistencia. Se genera el error: ORA-01555 snapshot too old: rollback segment number string with name "string" too small La solucin es disponer de ms espacio de undo.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

ESPACIO DE UNDO Y RETROCESO DE TRANSACCION.


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:
Se aplican todos los cambios almacenados en orden inverso hasta llegar al dato original. Se libera cualquier bloqueo de datos efectuado por la transaccin. Finaliza la transaccin.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

117

ESPACIO DE UNDO

118

GESTION DE ESPACIO DE UNDO (DESHACER).


Existen dos formas de gestionar el espacio de undo:
- 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. - Usando segmentos de rollback (modo manual). A desaparecer.

PARAMETROS OBSOLETOS.
Existen distintos parmetros usados en versiones anteriores, relacionados con undo -manual y automtico-, que han quedado obsoletos:
UNDO_SUPPRESS_ERRORS MAX_ROLLBACK_SEGMENTS

ROW_LOCKING

SERIALIZABLE

Ambas formas NO pueden simultanearse. 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

TRANSACTION_AUDITING

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

MODO AUTOMATICO DE UNDO

Al arrancar se busca un espacio de almacenamiento (tablespace) de undo (existente desde la creacin de la bd o creado posteriormente), el primero disponible. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

121

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

ESPACIO DE UNDO

122

MODO AUTOMATICO UNDO. PARAMETROS INICIALIZACION.


Otros parametros de inicializacin relacionados son:
- 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:

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!.

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.


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). 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. Si no hay ningn espacio de undo se emplea el segmento de rollback SYSTEM. Error!.

MODO AUTOMATICO UNDO. ESPACIO DE ALMACENAMIENTO.


Distintas operaciones pueden llevarse a cabo con este espacio de almacenamiento:
- Creacin.
-

- Modificacin.
-

- Borrado.
-

- Intercambio entre distintos espacios de undo.


-

- Modificar la clausula de retencin.

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

ESPACIO DE UNDO

125

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

ESPACIO DE UNDO

126

MODO AUTOMATICO UNDO. CREACION DE ESPACIO UNDO.


Al crear la base de datos, mediante la clausula UNDO TABLESPACE de la sentencia CREATE DATABASE:
CREATE DATABASE CURSO25 ... UNDO TABLESPACE undotbs_01 DATAFILE '/u03/oradata/CURSO25/undo01.dbf';

MODO AUTOMATICO UNDO. CREACION DE ESPACIO UNDO.


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

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.


Mediante la sentencia ALTER TABLESPACE. Se permite:
- Aadir un fichero de datos. ALTER TABLESPACE UNDOTBS ADD DATAFILE '/u03/oradata/CURSO25/undo02.dbf' AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED; - Redimensionar 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

MODO AUTOMATICO UNDO. MODIFICACION ESPACIO UNDO.


ALTER DATABASE DATAFILE '/u03/oradata/CURSO25/undo01.dbf' RESIZE 100M; - Renombrar un fichero de datos. ALTER DATABASE RENAME FILE '/u03/oradata/CURSO25/undo01.dbf' TO '/u03/oradata/CURSO25/tbsp_undo01.dbf'; - Poner en lnea o fuera de lnea un fichero de datos. ALTER DATABASE DATAFILE '/u03/oradata/CURSO25/undo01.dbf' ONLINE/OFFLINE;
129
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

130

MODO AUTOMATICO UNDO. MODIFICACION ESPACIO UNDO.


- Modificar clasula RETENTION.

MODO AUTOMATICO UNDO. BORRADO ESPACIO UNDO.


Se emplea la sentencia DROP TABLESPACE:
DROP TABLESPACE <nombre_tbsp>;

NO preservar los datos de undo que son aun vlidos.

ALTER TABLESPACE UNDOTBS RETENTION NOGUARANTEE;

Slo es posible borrar si el espacio de undo no est en uso. Al borrar se elimina todo su contenido.

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.


Se usa la sentencia ALTER SYSTEM SET para asignar un nuevo espacio de undo, que sustituye al que anteriormente se utilizaba:
ALTER SYSTEM SET UNDO_TABLESPACE=<nombre_tbsp>;

MODO AUTOMATICO UNDO. INTERCAMBIO ESPACIO UNDO.


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. En el estado PENDING OFFLINE, un espacio de undo no puede borrarse. Una vez finalizadas todas las transacciones pasa al estado OFFLINE. Si se indica ALTER SYSTEM SET UNDO_TABLESPACE=''; se deasigna el espacio de undo actual y se pasa al siguiente disponible.

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

133

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

ESPACIO DE UNDO

134

MODO AUTOMATICO UNDO. VISTAS.

MODO AUTOMATICO UNDO. DIMENSIONANDO EL ESPACIO UNDO.


Puede dimensionarse de tres formas:
Empleando esp. de almacenamiento autoextensibles, de forma que incrementa su tamao conforme es necesario (clasula AUTOEXTEND). Clculo usando mtodo manual. Clculo usando mtodo automtico: Undo Advisor.

V$UNDOSTAT. Estadsticas para monitorizar y ajustar el espacio de undo. V$ROLLSTAT. Informa sobre el comportamiento segmentos undo en el espacio de undo. de los

V$TRANSACTION. Transacciones activas en el sistema. DBA_TABLESPACES. 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).
ESPACIO DE UNDO

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

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 para retener la determinado

MODO AUTOMATICO UNDO. DIMENSIONADO AUTOMATICO.


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:
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). 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;
137
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

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). Es preciso aadir al valor obtenido entre un 10% y un 20% de forma que pueda hacerse frente a situaciones inesperadas.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

138

MODO AUTOMATICO UNDO. DIMENSIONADO AUTOMATICO.


b) Invocar Undo Advisor mediante el siguiente bloque para determinar el nmero de tarea.
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; /
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

MODO AUTOMATICO UNDO. DIMENSIONADO AUTOMATICO.


c) Consultar la vista DBA_ADVISOR_FINDINGS para averiguar las recomendaciones. 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

139

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.


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. 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. Esta caracterstica est activada por defecto (arquitectura) y NO puede desactivarse. El valor calculado ser tal que permita evita el error snapshot too old.

MODO AUTOMATICO UNDO. PERIODO DE PERMANENCIA UNDO.


En el clculo, automtico, del periodo de permanencia es necesario considerar:
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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

141

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

ESPACIO DE UNDO

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. 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.

MODO AUTOMATICO UNDO. PERIODO DE PERMANENCIA UNDO.


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;
BEGIN_TIME ------------------04-FEB-06 00:01 ... 07-FEB-06 23:21 ... END_TIME ------------------04-FEB-06 00:11 07-FEB-06 23:31 TUNED_UNDORETENTION -----------------------------12100 86700

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.
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).

El valor de tuned_undoretention se muestra en segundos.

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

ESPACIO DE UNDO

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).
ESPACIO DE UNDO

MODO MANUAL DE UNDO

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

145

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

ESPACIO DE UNDO

146

MODO MANUAL UNDO. PARAMETROS INICIALIZACION.


El parmetro de inicializacin UNDO_MANAGEMENT debe tener el valor MANUAL, o bien no indicarse (es el valor por defecto).
UNDO_MANAGEMENT = MANUAL

MODO MANUAL UNDO. PARAMETROS INICIALIZACION.


Parametros de inicializacin relacionados son:
- 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. - 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. Contiene/n los valores antiguos de datos modificados por cada transaccin. 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. Estas entradas modifican los bloques del segmento de rollback y Oracle almacena todos los cambios hechos en la bitcora (redo log).
ESPACIO DE UNDO

Segmento: Un conjunto de extensiones que contiene todos los datos para una estructura lgica de almacenamiento especifica en un tablespace. Tipos de segmentos:
- Segmentos de datos. - Segmentos de ndices. - Segmentos temporales. - Segmentos de rollback.

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

149

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

ESPACIO DE UNDO

150

TRANSACCIONES Y SEGMENTOS DE ROLLBACK.


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 asignacin. Al comienzo de la transaccin puede indicarse el segmento de rollback apropiado a usar (SET TRANSACTION USE ROLLBACK SEGMENT ).

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. 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. 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

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.


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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

ESCRITURA EN UN SEGMENTO DE ROLLBACK.

153

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

ESPACIO DE UNDO

154

ESCRITURA EN UN SEGMENTO DE ROLLBACK.

ESCRITURA EN UN SEGMENTO DE ROLLBACK.

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

ESPACIO DE UNDO

155

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

ESPACIO DE UNDO

156

SEGMENTO ROLLBACK SYSTEM.

SEGMENTOS DE ROLLBACK PBLICOS Y PRIVADOS.


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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

158

RECOMENDACIONES.

CREACIN.
Debe poseerse el privilegio create rollback segment.

Se recomienda crear un espacio de almacenamiento exclusivo que albergue a los segmentos de rollback. Ventajas:
- Puede ser mantenido en lnea de forma permanente. - No impide que otros espacios de almacenamiento sean puestos fuera de lnea.

El espacio de almacenamiento destino debe estar en lnea. Sintaxis:


CREATE <PUBLIC> ROLLBACK SEGMENT <NOMBRE> TABLESPACE <NOMBRE_TBSP> STORAGE (INITIAL <XX> NEXT <XX> MINEXTENTS <XX> MAXEXTENTS <XX> OPTIMAL <XX> );
159
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

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

ESPACIO DE UNDO

160

CREACIN. RECOMENDACIONES.

CREACIN. PARMETRO OPTIMAL.


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. 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). Su valor no puede ser menor que el espacio asignado inicialmente, especificado por los parmetros initial, next y el numero mnimo de extensiones.

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. No debe fijarse MAXEXTENTS=UNLIMITED. Se evita as que se extienda de forma ilimitada debido a un error de programacin.

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

ESPACIO DE UNDO

161

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

ESPACIO DE UNDO

162

CREACIN. PARMETRO OPTIMAL.


Las estadsticas generadas en la vista V$ROLLSTAT (valores SHRINKS, AVESHRINK, AVEACTIVE y OPTSIZE) dan idea de lo adecuado o no del parmetro OPTIMAL.
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. SHRINKS (alto) y AVESHRINK (alto): Aumentar OPTIMAL hasta que SHRINKS disminuya.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

TAMAO SEGMENTO ROLLBACK.


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.

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).
163
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ESPACIO DE UNDO

164

TAMAO SEGMENTO ROLLBACK.


Se recomienda que cada segmento tpico tenga un 10% del tamao de la mayor tabla de la bd.

PUESTA EN/FUERA DE LNEA.


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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ESPACIO DE UNDO

165

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

ESPACIO DE UNDO

166

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

DECREMENTO.
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

BORRADO.

ASIGNACIN EXPLICITA A UNA TRANSACCIN.

Debe poseerse el privilegio drop rollback segment. El segmento debe estar fuera de lnea. Sintaxis:
DROP ROLLBACK SEGMENT <NOMBRE>;

El segmento debe estar en lnea y usarse como primera sentencia de la transaccin:


SET TRANSACTION USE ROLLBACK SEGMENT <NOMBRE>;

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.

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

ESPACIO DE UNDO

169

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

ESPACIO DE UNDO

170

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

V$ROLLSTAT. Estadsticas sobre segmentos de rollback. V$TRANSACTION. Transacciones activas en el sistema. DBA_ROLLBACK_SEGS.
rollback de la bd. Informacin sobre segmentos de

TEMA 7. 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.


Usuarios y su autentificacin. Creacin, modificacin y borrado de usuarios. Grupos de espacios temporales. Espacio de almacenamiento SYSAUX. Perfiles. Parmetros. Funcin de verificacin. Creacin, modificacin, asignacin y borrado de perfiles. Privilegios. Privilegios de sistema y sobre objetos. Privilegios de sistema. Otorgar y revocar. Restricciones.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 7. GESTIN DE USUARIOS Y RECURSOS.


Privilegios sobre objetos. Otorgar y revocar privilegios sobre objetos. Roles. Beneficios de los roles. Roles predefinidos. Creacin, modificacin, asignacin y deasignacin de roles a usuarios. Parmetro max_enabled_roles. Borrado de roles. Roles por defecto. Activacin y desactivacin de roles. Vistas.
173
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

GESTIN DE USUARIOS Y RECURSOS

174

USUARIOS Y SU AUTENTIFICACIN.

USUARIOS

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. 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.
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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

CREACIN DE USUARIOS.
Necesario el privilegio de sistema CREATE USER. Normalmente slo lo tiene el usuario administrador. No es posible la conexin del usuario creado a menos que posea el privilegio de sistema CREATE SESSION. 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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

178

CREACIN DE USUARIOS.
Nombre de usuario.
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.

CREACIN DE USUARIOS.
DEFAULT TABLESPACE.
Indica aquel espacio de almacenamiento donde se crearn los objetos del esquema del usuario cuando al hacerlo no se indica ninguno en particular.
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.
Un usuario autentificado de forma externa se ha de crear con la clusula IDENTIFIED EXTERNALLY.

TEMPORARY TABLESPACE.
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.
QUOTA.
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. El creador del usuario puede indicar cuota sobre espacios de almacenamiento aunque l no las posea. 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). 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

CREACIN DE USUARIOS.
PROFILE.
Indica el perfil a asignar al usuario (especifica limitaciones en recursos del sistema y restricciones). Si se omite se asigna el perfil DEFAULT.

PASSWORD EXPIRE.
Fuerza al usuario a cambiar la clave antes de conectarse a la base de datos.

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

181

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

GESTIN DE USUARIOS Y RECURSOS

182

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. 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. 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

GRUPOS ESPACIOS TEMPORALES.


Asignar grupos por defecto: alter database default temporary tablespace <nombre_grupo>; Eliminar un temporal de un grupo: alter tablespace <nombre_temporal> tablespace group '';

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.
Los usuarios pueden cambiar sus propias claves, sin embargo para cambiar cualquier otro parmetro es necesario el privilegio ALTER USER. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

MODIFICACIN DE USUARIOS.
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). 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

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

GESTIN DE USUARIOS Y RECURSOS

186

BORRADO DE USUARIOS.
Al borrar un usuario el esquema asociado, con todos sus objeto, desaparecen. Una posible solucin para que permanezca el usuario y los objetos pero impedir la conexin es revocar el privilegio CREATE SESSION. 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). Es necesario tener el privilegio de sistemas DROP USER.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

BORRADO DE USUARIOS.
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.

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: Select occupant_name, schema_name, space_usage_kbytes, move_procedure from V$SYSAUX_OCCUPANTS;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

PERFILES

189

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

GESTIN DE USUARIOS Y RECURSOS

190

PERFILES.
Est constituido por un conjunto de lmites de recursos de la base de datos. Diferentes perfiles pueden ser asignados a diferentes usuarios. Habilitar o deshabilitar la limitacin de recursos mediante perfiles puede hacerse (no aplicable a los parmetros de contrasea que siempre estn habilitados):
- Mediante el parmetro de inicializacin RESOURCE_LIMIT (init.ora), asignando valores TRUE o FALSE (por defecto). - Mediante la sentencia ALTER RESOURCE_LIMIT = TRUE/FALSE.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CREACIN DE PERFILES.
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). 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. Sintaxis:
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

SYSTEM

SET

GESTIN DE USUARIOS Y RECURSOS

192

CREACIN DE PERFILES. PARMETROS DE RECURSOS.


Parmetros de recursos:
SESSIONS_PER_USER. Nmero de sesiones concurrentes. CPU_PER_SESSION. Tiempo de UCP por sesin (centsimas de segundo). CPU_PER_CALL. Tiempo de UCP para una llamada (parse, execute, o fetch) en centsimas de segundo. CONNECT_TIME. Tiempo total para una sesin (minutos). IDLE_TIME. Tiempo de inactividad continua en una sesin (minutos).

CREACIN DE PERFILES. PARMETROS DE RECURSOS.

LOGICAL_READS_PER_SESSION. Numero de bloques de datos ledos en una sesin (memoria o disco). LOGICAL_READS_PER_CALL. Numero de bloques de datos para una llamada de una SQL (parse, execute, o fetch). 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. 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).

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

GESTIN DE USUARIOS Y RECURSOS

193

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

GESTIN DE USUARIOS Y RECURSOS

194

CREACIN DE PERFILES. PARMETROS DE CONTRASEA.


Parmetros de contrasea:
FAILED_LOGIN_ATTEMPTS. Nmero de intentos fallidos de conexin antes del bloqueo. 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_GRACE_TIME. Periodo de gracia donde se permite la conexin pero se notifica la necesidad de cambiarla. PASSWORD_REUSE_TIME . Nmero de das en los cuales la contrasea no puede reutilizarse.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

CREACIN DE PERFILES. PARMETROS DE CONTRASEA.


PASSWORD_REUSE_MAX . Nmero de cambios de clave necesarios antes de poder reutilizar la clave actual.
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_LOCK_TIME. Nmero de das que la cuenta estar bloqueada despus de un cierto nmero de fallos de conexin indicado. 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.
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.
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.
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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

FUNCIN DE VERIFICACIN.

La funcin de verificacin de contrasea debe pertenecer al usuario SYS. Realiza las comprobaciones: La contrasea satisface un mnimo de longitud. La contrasea no coincide con el nombre de usuario.

Puede modificarse, siempre en el esquema SYS y conectando


como CONNECT SYS/password AS SYSDBA

197

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

GESTIN DE USUARIOS Y RECURSOS

198

MODIFICACIN DE PERFILES.

ASIGNACIN DE PERFILES.

Es necesario poseer el privilegio de sistema ALTER PROFILE. Los valores modificados no afectan a las sesiones en curso. Sintaxis:
ALTER PROFILE <perfil> LIMIT <parmetros> <valor>/UNLIMITED/DEFAULT;

Los perfiles no pueden asignarse a roles ni a otros perfiles, solo a usuarios. Se puede realizar durante la creacin del usuario (CREATE USER) o posteriormente (ALTER USER). Un usuario slo puede tener un perfil asignado a la vez. Las asignaciones de perfiles no afectan a las sesiones activas.

Administracin y Ajuste de Oracle 10g 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.
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. Sintaxis:
DROP PROFILE <perfil>; DROP PROFILE <perfil> CASCADE;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

VISTAS. USUARIOS Y PERFILES.


DBA_USERS ALL_USERS USER_USERS DBA_TS_QUOTAS USER_TS_QUOTAS USER_PASSWORD _LIMITS USER_RESOURCE_ LIMITS V$SESSION V$SESSTAT
201

Usuarios de la base de datos. Usuarios visibles al usuario actual. Describe el usuario actual. Cuotas de espacio para usuarios. Parmetros de contrasea asignados al usuario. Parmetros de recursos asignados al usuario. Informacin sobre sesiones. Estadsticas de V$STATNAME). sesin (ver tambin
202

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

GESTIN DE USUARIOS Y RECURSOS

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.
DATABASE.
ALTER DATABASE ALTER SYSTEM AUDIT SYSTEM

PRIVILEGIOS DE SISTEMA.
PROCEDURE
CREATE PROCEDURE CREATE ANY PROCEDURE ALTER ANY PROCEDURE DROP ANY PROCEDURE EXECUTE ANY PROCEDURE

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

PROFILES
CREATE PROFILE ALTER PROFILE DROP PROFILE

TABLAS INDICES
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
GESTIN DE USUARIOS Y RECURSOS

ROLES
CREATE ROLE ALTER ANY ROLE DROP ANY ROLE GRANT ANY ROLE
GESTIN DE USUARIOS Y RECURSOS

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

205

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

206

PRIVILEGIOS DE SISTEMA.
ROLLBACK SEGMENTS
CREATE ROLLBACK SEGMENT ALTER ROLLBACK SEGMENT DROP ROLLBACK SEGMENT

PRIVILEGIOS DE SISTEMA.

USUARIO
CREATE USER ALTER USER DROP USER

SESSIONS
CREATE SESSION ALTER SESSION

OTROS
ANALYZE ANY AUDIT ANY COMMENT ANY TABLE ...

TABLESPACES
CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE MANAGE TABLESPACE UNLIMITED TABLESPACE

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

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

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

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. Notas:
- 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

OTORGAR PRIVILEGIOS DE SISTEMA.


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. Sintaxis:
GRANT <privilegio>/ALL <usuario>/<rol>/PUBLIC; PRIVILEGES TO TO

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

Al especificar ALL PRIVILEGES se otorgan todos los privilegios de sistema (Peligro!). La clusula PUBLIC otorga el privilegio a todos los usuarios (Peligro!).
GESTIN DE USUARIOS Y RECURSOS

209

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

210

RESTRICCIONES EN 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). 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). Si su valor es TRUE, se permite el acceso a los objetos del esquema SYS (Error!).
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

REVOCAR PRIVILEGIOS DE SISTEMA.


Sintaxis: REVOKE <privilegio>/ALL <usuario>/<rol>/PUBLIC; 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.
GESTIN DE USUARIOS Y RECURSOS

211

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

212

PRIVILEGIOS SOBRE OBJETOS.


TABLAS
ALTER INDEX SELECT - DELETE - INSERT - UPDATE - FLASHBACK - REFERENCES

OTORGAR PRIVILEGIOS SOBRE OBJETOS.


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; Con ALL PRIVILEGES se otorgan todos los privilegios sobre el objeto (Peligro!).

VISTAS
DELETE REFERENCES - FLASHBACK - SELECT - INSERT - UPDATE

SECUENCIAS
ALTER - SELECT

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!).
GESTIN DE USUARIOS Y RECURSOS

FUNCIONES, PAQUETES Y PROCEDIMIENTOS


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

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

GESTIN DE USUARIOS Y RECURSOS

213

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

214

OTORGAR PRIVILEGIOS SOBRE OBJETOS.

REVOCAR PRIVILEGIOS SOBRE OBJETOS.


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

Ejemplos:
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;

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.
GESTIN DE USUARIOS Y RECURSOS

Administracin y Ajuste de Oracle 10g 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

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:

ROLES

- Pueden otorgarse a cualquier usuario o rol, pero no a si mismo y tampoco de forma circular. - 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y RECURSOS

217

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

GESTIN DE USUARIOS Y RECURSOS

218

ROLES. BENEFICIOS.
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. Mejora de la productividad. El uso de roles disminuye el numero de grants almacenados en el diccionario de datos.
GESTIN DE USUARIOS Y RECURSOS

ROLES PREDEFINIDOS.
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. IMP_FULL_DATABASE. Idem para importaciones completas.

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

219

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

GESTIN DE USUARIOS Y RECURSOS

220

ROLES PREDEFINIDOS.
DELETE_CATALOG_ROLE. Privilegio de borrado en la tabla de auditora de sistema (AUD$). EXECUTE_CATALOG_ROLE. Privilegio de ejecucin sobre objetos en el diccionario de datos. SELECT_CATALOG_ROLE. Privilegio de consulta sobre objetos del diccionario de datos.

CREACIN DE ROLES.
Debe poseerse el privilegio CREATE ROLE. El nombre debe ser diferente a cualquier nombre de rol o usuario existente. Sintaxis:
CREATE ROLE <rol> IDENTIFIED BY <contrasea>; CREATE ROLE <rol> NOT IDENTIFIED/<>;

Los roles CONNECT, RESOURCE y DBA se mantienen por compatibilidad con versiones anteriores de Oracle. No se asegura que sigan existiendo en un futuro. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

222

MODIFICACIN DE ROLES.
Un rol solo puede modificarse para cambiar su mtodo de autentificacin. Debe poseerse el privilegio de sistema ALTER ANY ROLE o haber sido sido otorgado el rol con la opcin ADMIN. No se ven afectadas las sesiones en las que el rol est ya activo. Sintaxis:
ALTER ROLE <rol> NOT IDENTIFIED/ IDENTIFIED BY <contrasea>;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

ASIGNAR ROLES A USUARIOS.


Sintaxis:
GRANT <rol> TO <usuario>/<rol>/PUBLIC; GRANT <rol> TO <usuario>/<rol>/PUBLIC WITH ADMIN OPTION;

Para que un usuario pueda otorgar un rol debe habrsele concedido con ADMIN OPTION, poseer el privilegio GRANT ANY ROLE, o haberlo creado. El usuario que crea el rol implcitamente lo tiene asignado con ADMIN OPTION.
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. 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. Sintaxis:
ALTER USER <usuario> DEFAULT ROLE <rol1>,<roln>/ ALL [EXCEPT rol1 [,role2]... ] / NONE;

Este parmetro est obsoleto y slo se mantiene por compatibilidad. Es preferible NO usarlo. 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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y RECURSOS

225

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

GESTIN DE USUARIOS Y RECURSOS

226

ROLES POR DEFECTO.


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. ALL hace que todos los roles sean por defecto excepto aquellos indicados en la clusula EXCEPT. EXCEPT indica que los roles que le siguen no sern por defecto. NONE hace que ninguno de los roles sea por defecto, y los nicos privilegios al efectuarse la conexin sern aquellos asignados directamente.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 GESTIN DE USUARIOS Y RECURSOS

DEASIGNACIN DE 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). Sintaxis:
REVOKE <rol1>, <roln> FROM <usuario>|<rol>|PUBLIC [, <usuario>|<rol>} ]...

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

BORRADO DE ROLES.

ACTIVACIN Y DESACTIVACIN 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.
GESTIN DE USUARIOS Y RECURSOS

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

GESTIN DE USUARIOS Y RECURSOS

229

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

230

ACTIVACIN Y DESACTIVACIN DE ROLES.


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

VISTAS.
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.
GESTIN DE USUARIOS Y RECURSOS

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).
GESTIN DE USUARIOS Y RECURSOS

231

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

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

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.
GESTIN DE USUARIOS Y RECURSOS

TEMA 8. TRABAJOS.

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

233

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

TRABAJOS

234

TEMA 8. TRABAJOS (JOBS).


DBMS_JOB vs. DBMS_SCHEDULER.

TEMA 8. TRABAJOS (JOBS).


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

MIGRACION A DBMS_SCHEDULER. CREACION DE TRABAJOS. MODIFICACION DE TRABAJOS. BORRADO DE TRABAJOS. PLANIFICADOR (SCHEDULER). ARQUITECTURA DEL PLANIFICADOR. NOMENCLATURA OBJETOS. PRIVILEGIOS PLANIFICADOR.
TRABAJOS

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

235

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

TRABAJOS

236

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.

DBMS_JOB vs. DBMS_SCHEDULER.


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.
TRABAJOS

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.
TRABAJOS

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

237

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

238

MIGRACION A DBMS_SCHEDULER (I). CREACION DE TRABAJOS.


Usando DBMS_JOB:
VARIABLE jobno NUMBER; BEGIN 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; /

MIGRACION A DBMS_SCHEDULER (II). MODIFICACION DE TRABAJOS.


Usando DBMS_JOB:
BEGIN DBMS_JOB.WHAT(31, 'INSERT INTO employees VALUES (7935, ''TOM'', ''DOGAN'', ''tom.dogan@xyzcorp.com'', NULL, SYSDATE,''AD_PRES'', NULL, NULL, NULL, NULL);'); COMMIT; END; /

Usando DBMS_SCHEDULER:
BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name => 'job1', job_type => 'PLSQL_BLOCK', job_action => 'INSERT INTO employees VALUES (7935, ''SALLY'', ''DOGAN'', ''sally.dogan@xyzcorp.com'', NULL, SYSDATE,''AD_PRES'', NULL, NULL, NULL, NULL);'); start_date => SYSDATE, repeat_interval => 'FREQ = DAILY; INTERVAL = 1'); END; /

Usando DBMS_SCHEDULER:
BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE( name => 'JOB1', attribute => 'job_action', value => 'INSERT INTO employees VALUES (7935, ''TOM'', ''DOGAN'', ''tom.dogan@xyzcorp.com'', NULL, SYSDATE, ''AD_PRES'', NULL, NULL, NULL, NULL);'); 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.


Usando DBMS_JOB:
BEGIN DBMS_JOB.REMOVE(14144); COMMIT; END; /

PLANIFICADOR (SCHEDULER).
Mediante el planificador puede controlarse cundo y dnde se ejecutarn los trabajos automatizados. Permite, por ejemplo:
Planificar trabajos de mantenimiento de la bd como copias de seguridad u otras tareas a realizar durante horas de menor actividad. Planificar la ejecucin de trabajos determinada o basndose en eventos. en una fecha

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

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TRABAJOS

242

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.


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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 TRABAJOS

ARQUITECTURA DEL PLANIFICADOR.


(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). ...

245

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

TRABAJOS

246

PLANIFICADOR. RAC.
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.

NOMENCLATURA OBJETOS.
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.
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;

PRIVILEGIOS PLANIFICADOR.

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 TRABAJOS

249

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

TRABAJOS

250

PRIVILEGIOS PLANIFICADOR.

PRIVILEGIOS PLANIFICADOR.

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

TRABAJOS

251

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

TRABAJOS

252

PROCEDIMIENTOS PLANIFICADOR.

DBMS_SCHEDULER. PROCEDIMIENTO CREATE_JOB.


Debe indicarse la accin, planificacin y atributos del trabajo. 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.
TRABAJOS

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

TRABAJOS

253

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

254

DBMS_SCHEDULER. PROCEDIMIENTO CREATE_JOB.


Sintaxis:
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);

DBMS_SCHEDULER. PROCEDIMIENTO CREATE_JOB.


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.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).

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

TRABAJOS

255

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

TRABAJOS

256

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). 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. event_condition. Expresin de eventos.
TRABAJOS

DBMS_SCHEDULER. PROCEDIMIENTO CREATE_JOB.


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. job_priority. Prioridad del trabajo entre los que integran la clase (de 1 -mxima- a 5 -mnima-, por defecto 3). comments. Comentarios.

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

257

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

TRABAJOS

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. 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.

DBMS_SCHEDULER. PROCEDIMIENTO CREATE_JOB.


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

259

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

TRABAJOS

260

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:
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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 TRABAJOS

INTERVALO EJECUCION.
b) Ultimo da del mes. FREQ=MONTHLY; BYMONTHDAY=-1; 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; g) Cada hora durante los tres primeros das del mes. FREQ=HOURLY; BYMONTHDAY=1,2,3;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

261

TRABAJOS

262

INTERVALO EJECUCION.
Mediante una expresin PL/SQL . Por ejemplo:
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; /

DBMS_SCHEDULER. PROCEDIMIENTO SET _ATTRIBUTE.


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>); 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. Cualquier parmetro, excepto job_name, puede modificarse.

Supone la ejecucin por primera vez el 15 de julio y luego cada 30 minutos hasta el 15 de septiembre.

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.


Algunos de los valores que pueden modificarse son: 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, ...-. restartable. Indica si un trabajo se rearranca en caso de fallo. Por defecto su valor es FALSE. 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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 TRABAJOS

DBMS_SCHEDULER. PROCEDIMIENTO SET _ATTRIBUTE.


job_action job_type repeat_interval start_date end_date comments auto_drop. Indica si el trabajo debe ser borrado despus de completar su ejecucin.

265

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

TRABAJOS

266

DBMS_SCHEDULER. PROC. SET _ATTRIBUTE_NULL.


Sintaxis:
DBMS_SCHEDULER.SET_ATTRIBUTE_NULL ( name IN VARCHAR2, attribute IN VARCHAR2); Este procedimiento asigna el valor NULL a un atributo.

DBMS_SCHEDULER. PROCEDIMIENTO COPY.


Sintaxis:
DBMS_SCHEDULER.COPY_JOB ( old_job IN VARCHAR2, new_job IN VARCHAR2); 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.

Administracin y Ajuste de Oracle 10g 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.


Sintaxis:
DBMS_SCHEDULER.ENABLE (name IN VARCHAR2);

DBMS_SCHEDULER. PROCEDIMIENTO DISABLE.


Sintaxis:
DBMS_SCHEDULER.DISABLE ( name IN VARCHAR2, force IN BOOLEAN DEFAULT FALSE); 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 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.
TRABAJOS

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. 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.

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

TRABAJOS

269

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

270

DBMS_SCHEDULER. PROCEDIMIENTO RUN_JOB.


Sintaxis:
DBMS_SCHEDULER.RUN_JOB ( job_name IN VARCHAR2, use_current_session IN BOOLEAN DEFAULT TRUE); 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.
TRABAJOS

DBMS_SCHEDULER. PROCEDIMIENTO STOP_JOB.


Sintaxis:
DBMS_SCHEDULER.STOP_JOB ( job_name IN VARCHAR2 force IN BOOLEAN DEFAULT FALSE); 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).
TRABAJOS

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

271

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

272

DBMS_SCHEDULER. PROCEDIMIENTO DROP_JOB.


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.

VISTAS.
DBA_SCHEDULER_JOB_ARGS. Argumentos de trabajos. DBA_SCHEDULER_JOB_LOG. Cambios de estado de trabajos. DBA_SCHEDULER_JOB_RUN_DETAILS. ejecucin de trabajos. Detalles sobre la

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.
TRABAJOS

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

TRABAJOS

273

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

274

TEMA 9. AUDITORA.
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.
AUDITORIA

TEMA 9. AUDITORA.

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

AUDITORIA

275

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

276

TEMA 9. AUDITORA.
Auditora de esquema. Opciones. Auditora y flashback. Auditora de grano fino. Paquete dbms_fga. Procedimientos. Desactivacin. Sentencia noaudit. Desactivacin de la auditora. Control y proteccin del audit trail. Auditora. Recomendaciones. Vistas.
AUDITORIA

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, ..) Detectar privilegios incorrectamente otorgados a usuarios (que permiten realizar acciones inapropiadas, las cuales son detectadas) Recoger datos sobre actividades concretas (tablas que se actualizan, usuarios concurrentes, ) Detectar problemas con la implementacin de polticas de seguridad (puntos dbiles que generan registros)

Puede ser ms o menos general, permitiendo auditar:


Ejecuciones de sentencias exitosas, fallidas o ambas. Ejecucin de sentencias por sesin o por lanzamiento de sentencia. Usuarios concretos o todos los usuarios.
277
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 AUDITORIA

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

278

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>). - 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

TIPOS DE AUDITORA.

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.

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: Usuario. Identificador de sesin y terminal Nombre del esquema accedido Operacin y cdigo de operacin Fecha y hora

REGISTROS DE AUDITORA. AUDIT TRAIL.


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. 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.
AUDITORIA

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$).
AUDITORIA

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

281

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

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;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 AUDITORIA

REGISTROS DE AUDITORA. AUDIT TRAIL.


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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

la

base

de

datos

con

privilegios

de
284

283

AUDITORIA

AUDITORA. PARAMETRO AUDIT_TRAIL.


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,

AUDITORIA DE USUARIOS ADMINISTRADORES.


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. Si su valor es TRUE (AUDIT_SYS_OPERATIONS=TRUE), se auditan dichas operaciones. Si su valor es FALSE, valor por defecto, no son auditadas (AUDIT_SYS_OPERATIONS=FALSE).

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.
AUDITORIA

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

285

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

AUDITORIA

286

AUDITORA BD vs SO.
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.

INFORMACION AUDIT TRAIL DE SISTEMA OPERATIVO.


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.

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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 AUDITORIA

287

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

AUDITORIA

288

AUDITORA DE SENTENCIAS.
Sintaxis:
AUDIT <sentencia1, sentencian>/ALL BY <usuario1, usuarion> BY SESSION/ACCESS WHENEVER SUCESSFUL/NOT SUCCESSFUL;

AUDITORA DE SENTENCIAS.
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. La clusula WHENEVER SUCESSFUL, permite auditar slo sentencias SQL y operaciones que surten efecto. La clusula WHENEVER NOT SUCESSFUL, permite auditar slo sentencias SQL y operaciones que fallan o generan errores. Si se omiten las dos opciones anteriores, se realiza la auditora independientemente del xito o fallo de la sentencia.
289
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 AUDITORIA

La clusula BY <usuario> permite restringir la auditora slo a aquellas sentencias ejecutadas por los usuarios indicados. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 AUDITORIA

290

AUDITORA DE SENTENCIAS.
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. 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.

AUDITORA DE SENTENCIAS. OPCIONES.


Opcion Database link Index Not exists Procedure Sentencias SQL auditadas. Create database link / drop database link Create / alter / analyze /drop index Todas las sentencias SQL que fallan por no existir un determinado objeto Create function / create package / create package body / create procedure / drop function / drop package / drop procedure Create public database link / drop public database link Create public synonym / Drop public synonym Create role / alter role / drop role / set role
AUDITORIA

Public database link Public synonym Role


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

291

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

292

AUDITORA DE SENTENCIAS. OPCIONES.


Opcin Sentencias SQL auditadas.

AUDITORA DE SENTENCIAS. OPCIONES.


Opcin Trigger User View Alter table Delete table Grant procedure Grant sequence Grant table Sentencias SQL auditadas. Create trigger / drop trigger /alter trigger Create user / alter user /drop user Create view /drop view Alter table Delete from <tabla>, <vista> Grant / revoke <privilegio> on <procedimiento, funcion, paquete> Grant / revoke <privilegio> on <secuencia> Grant / revoke <privilegio> on <tabla, vista, vista materializada>

Rollback Statement Create rollback segment/ alter rollback segment / drop rollback segment Sequence Session Synonym System audit System grant Table Tablespace Create sequence / drop sequence Conexiones
- valor por defecto y nico BY SESSION -

Create synonym / drop synonym Audit sentencias_sql / Noaudit sentencias_sql Grant y revoke privilegios_sistema y roles Create table / drop table / truncate table Create tablespace / drop tablespace / alter tablespace
AUDITORIA

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

293

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

AUDITORIA

294

AUDITORA DE SENTENCIAS. OPCIONES.


Opcin Insert table Lock table Select sequence Select table Update table Sentencias SQL auditadas. Insert into <tabla, vista> Lock table <tabla, vista> Cualquier sentencia que contenga sequence.CURRVAL o sequence.NEXTVAL Select from <tabla, vista, vista materializada> Update <tabla, vista>

AUDITORA DE PRIVILEGIOS.
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.
ALTER DATABASE ALTER SYSTEM AUDIT SYSTEM CREATE DATABASE LINK CREATE PUBLIC DATABASE LINK DROP PUBLIC DATABASE LINK CREATE PROCEDURE CREATE ANY PROCEDURE ALTER ANY PROCEDURE DROP ANY PROCEDURE EXECUTE ANY PROCEDURE CREATE PROFILE ALTER PROFILE DROP PROFILE CREATE ROLE ALTER ANY ROLE DROP ANY ROLE CREATE ROLLBACK SEGMENT ALTER ROLLBACK SEGMENT DROP ROLLBACK SEGMENT CREATE SESSION ALTER SESSION

PRIVILEGIOS AUDITABLES.
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

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

AUDITORIA

297

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

AUDITORIA

298

AUDITORA DE ESQUEMA.
Sintaxis:
AUDIT <clausula_objeto1, clausula_objeton>/ALL ON <esquema>.objeto_auditado/DEFAULT BY SESSION/ACCESS WHENEVER SUCESSFUL/NOT SUCCESSFUL;

AUDITORA DE ESQUEMA.
Puede auditarse todas las sentencias SELECT y DML permitidas por los privilegios de objetos. No pueden auditarse procedimientos paquetes, aunque s procedimientos individuales y tambin paquetes. incluidos en y funciones

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

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

299

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

AUDITORIA

300

AUDITORA DE ESQUEMA. OPCIONES.


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

AUDITORA Y 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
AUDITORIA

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

301

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

AUDITORIA

302

AUDITORA Y FLASHBACK.
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 :

AUDITORA Y FLASHBACK.
Clausula FLASHBACK:

informacin

travs

de

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-).
AUDITORIA

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.
AUDITORIA

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

303

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

304

AUDITORA Y RECUPERACION DE TABLAS. FLASHBACK TABLE.


Es posible restaurar una tabla a un estado anterior a aquel donde tuvieron lugar una serie de cambios mediante la sentencia FLASHBACK TABLE.

AUDITORA DE GRANO FINO.


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.
AUDITORIA

Nota: Esta posibilidad ser analizada en relacion a los mecanismos de copias de seguridad.

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

AUDITORIA

305

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

306

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. 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.

AUDITORA DE GRANO FINO.


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');

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.


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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 AUDITORIA

PAQUETE DBMS_FGA. PROCEDIMIENTO ADD_POLICY.

309

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

AUDITORIA

310

PAQUETE DBMS_FGA. PROCEDIMIENTO ADD_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);

PAQUETE DBMS_FGA. PROCEDIMIENTO DISABLE_POLICY.


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

311

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

AUDITORIA

312

PAQUETE DBMS_FGA. PROCEDIMIENTO ENABLE_POLICY.


Procedimiento ENABLE_POLICY. Habilita una poltica de auditora.
DBMS_FGA.ENABLE_POLICY( object_schema VARCHAR2, object_name VARCHAR2, policy_name VARCHAR2 enable BOOLEAN);

PAQUETE DBMS_FGA. PROCEDIMIENTO DROP_POLICY.


Procedimiento DROP_POLICY. Borra una poltica de auditora.
DBMS_FGA.DROP_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

313

Administracin y Ajuste de Oracle 10g 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. Para detener la auditora sobre un objeto, debe pertenecer al esquema o tener el privilegio AUDIT ANY. La sintaxis de NOAUDIT es igual a la de AUDIT (para cada sentencia de auditora es necesaria una sentencia NOAUDIT que la deshabilite).

DESACTIVACIN. SENTENCIA NOAUDIT.


Sintaxis:
NOAUDIT <sentencia1, sentencian>/ALL BY <usuario1, usuarion> WHENEVER SUCESSFUL/NOT SUCCESSFUL; NOAUDIT <priv_sistema1, priv_sisteman> /ALL PRIVILEGES BY <usuario1, usuarion> WHENEVER SUCESSFUL/NOT SUCCESSFUL; 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

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

AUDITORIA

316

DESACTIVACIN DE LA AUDITORA.
Mediante la sentencia NOAUDIT slo se desactivan opciones de auditora bsica. Para deshabilitar la auditora bsica debe modificarse el parmetro de inicializacin AUDIT_TRAIL.

CONTROL DEL 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

317

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

AUDITORIA

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 SYS.AUD$; - DELETE FROM <nombre_objeto>; SYS.AUD$ WHERE OBJ$NAME=

CONTROL DEL AUDIT TRAIL.


Despus del borrado de registros, las extensiones adquiridas para esta tabla permanecen. Este espacio puede reducirse: - Copiar el audit trail a otra tabla o exportarlo - Conectarse como usuario administrador y truncar SYS.AUD$ (sentencia TRUNCATE). - Cargar los datos anteriormente interese mantener accesibles. salvados que

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. La informacin del audit trail puede archivarse copindola a una tabla (INSERT INTO <tabla> SELECT ... FROM SYS.AUD$) o ser exportada.
AUDITORIA

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

319

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

AUDITORIA

320

PROTECCIN DEL AUDIT TRAIL.


Debe protegerse de borrados no autorizados:
- Otorgar el privilegio DELETE ANY TABLE solo a usuarios administradores. - Auditar cualquier cambio que se realice en el audit trail mediante la sentencia AUDIT SELECT, INSERT, UPDATE, DELETE ON SYS.AUD$ BY ACCESS;

AUDITORA. RECOMENDACIONES.
Es necesario seguir una serie de reglas a la hora de auditar la actividad de la base de datos:
- 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?). - 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AUDITORIA

321

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

AUDITORIA

322

AUDITORA. RECOMENDACIONES.
- 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.

AUDITORA. VISTAS.
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. Registros producidos por AUDIT NOT

DBA_AUDIT_OBJECT. Registros para todos los objetos en el sistema. DBA_AUDIT_SESSION. desconexiones. Registros relativos a conexiones y

DBA_AUDIT_STATEMENT. Registros para las sentencias GRANT, REVOKE, AUDIT, NOAUDIT, y ALTER SYSTEM. DBA_AUDIT_TRAIL. Registros de audit trail.
AUDITORIA

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

AUDITORIA

323

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

324

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. Informacin sobre

AUDITORA. VISTAS.
STMT_AUDIT_OPTION_MAP. Informacin cdigos de auditora.

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

AUDITORIA

325

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

AUDITORIA

326

TEMA 10. COPIAS DE SEGURIDAD.


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.
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

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

328

TEMA 10. COPIAS DE SEGURIDAD.


RECUPERACION DE TABLAS. RECYCLE BIN. RECUPERACION DE TABLAS. PURGE. FLASHBACK TO BEFORE DROP. COPIA LOGICA. DATA PUMP EXPORT/IMPORT. ARQUITECTURA DATA PUMP. DATA PUMP. VENTAJAS. EJECUCION. INFORMACION. FICHEROS. DATA PUMP EXPORT. PARAMETROS.
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. EXPORT/IMPORT vs. DATA PUMP UTILIDAD EXPORT. EXPORT MODO DIRECTO. CASOS PRACTICOS.
COPIAS DE SEGURIDAD

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

329

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

330

TEMA 10. COPIAS DE SEGURIDAD.


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.

MODOS DE OPERACION DE LA BD.


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

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.


Modo ARCHIVELOG. 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.
Pueden distinguirsen dos tipos de copias: 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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

333

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

COPIAS DE SEGURIDAD

334

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

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. La copia de los ficheros de base de datos se realiza de forma diaria. La copia del software de base de datos se realiza con frecuencia semanal, dado su menor nivel de actualizacin. 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.

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


Oracle recomienda usar la Optimal Flexible Architecture (O.F.A.) en las instalaciones de base de datos. O.F.A. tiene los siguientes beneficios:
Organiza grandes cantidades de software y datos en disco evitando cuellos de botella y bajas productividades. Facilita las tareas administrativas rutinarias. Gestiona de forma adecuada administracin de la base de datos.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

el

crecimiento

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

COPIAS DE SEGURIDAD

337

COPIAS DE SEGURIDAD

338

O.F.A. EN ENTORNOS UNIX.

O.F.A. EN ENTORNOS UNIX.


$ORACLE_BASE admin /<nombre_BD> adhoc arch Nombre base datos. Scripts SQL Ad hoc. Fich. archivados de redo log. Por defecto /u01/app/oracle

$ORACLE_BASE $ORACLE_HOME /bin /network /dbs

Por defecto /u01/app/oracle


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

Binarios. Ficheros NET. Comunicaciones. Enlaces a donde residen los ficheros de inicializacin. Ficheros de servidor y libreras bd requeridas.

/rdbms

bdump

Fich.de traza procesos background.

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

COPIAS DE SEGURIDAD

340

O.F.A. EN ENTORNOS UNIX.


$ORACLE_BASE admin /<nombre_BD> cdump create exp pfile udump
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIA FISICA. SISTEMAS DE FICHEROS.


Por defecto /u01/app/oracle

Los sistemas de ficheros a copiar diariamente son:


- 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. - 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. - 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>. - Sistema de ficheros /etc.
341
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

Nombre base datos. Ficheros core dump. Progr. creacin bd. Fich. Export bd. init.ora Fich. traza usuario.

COPIAS DE SEGURIDAD

342

COPIA FISICA. SISTEMAS DE FICHEROS.


Los sistemas de ficheros a copiar semanalmente son:
- Sistemas de ficheros que integran la estructura O.F.A. Bajo $ORACLE_BASE (/u01/app/oracle). - Todos los sistemas de ficheros que integran la copia diaria de la base de datos.

COPIA FISICA. COMANDO TAR (UNIX).


La copia se realizar tras:
Haber hecho la exportacin correspondiente de la base de datos. Haber cerrado cualquier comunicacin con la base de datos (proceso listener). 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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

FLASHBACK

345

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

COPIAS DE SEGURIDAD

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: 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-).
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

RECUPERACION DE TABLAS. FLASHBACK TABLE.


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. 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:
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.


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. 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-).

RECUPERACION DE TABLAS. FLASHBACK DROP.


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:
SELECT * FROM RECYCLEBIN;

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

El espacio libre en un espacio de almacenamiento puede consultarse en la vista DBA_FREE_SPACE.


COPIAS DE SEGURIDAD

349

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

350

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. Este modo de funcionamiento, habilitado por defecto, puede habilitarse o deshabilitarse mediante el parmetro de inicializacin RECYCLEBIN, o, dinmicamente mediante las sentencias: 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

RECUPERACION DE TABLAS. RECYCLE BIN.


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. AL emplear DROP USER...CASCADE. Se elimina el usuario y todos sus objetos (incluidos aquellos en el recycle bin.

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.


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 version es un nmero de version asignado a la bd.

RECUPERACION DE TABLAS. PURGE. FLASHBACK TO BEFORE DROP.


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):
PURGE TABLE/INDEX <nombre>; 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:


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.

PURGE RECYCLEBIN/DBA_RECYCLEBIN;

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

353

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

COPIAS DE SEGURIDAD

354

COPIA LGICA. DATA PUMP EXPORT/IMPORT.


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

COPIA LOGICA: DATAPUMP

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

exportaciones

importaciones

remotas

usando
358

357

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

COPIAS DE SEGURIDAD

DATA PUMP. VENTAJAS.


Los trabajos pueden asignar recursos dinmicamente segn la carga de trabajo. 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.

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. 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 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.


Esta tabla maestro tambin se emplea para reiniciar un trabajo. El destino final de la tabla maestro es diverso:
Si el trabajo finaliza correctamente, la tabla se borra. 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. Si un trabajo termina inesperadamente, se mantiene la tabla. Puede borrarse si no hay intencin de reiniciar el trabajo.

DATA PUMP. INFORMACIN.


Puede obtenerse informacin en las siguientes vistas:
DBA_DATAPUMP_JOBS y USER_DATAPUMP_JOBS. Identifican trabajos Data Pump activos. DBA_DATAPUMP_SESSIONS. Identifica sesiones de usuario asociadas a un trabajo. V$SESSION_LONGOPS. Informacin sobre el progreso del 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.
COPIAS DE SEGURIDAD

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

361

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

COPIAS DE SEGURIDAD

362

DATA PUMP. FICHEROS.


Existen tres tipos de ficheros gestionados por Data Pump:
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. Ficheros log. Contienen mensajes sobre la operacin realizada. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

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.
SQL> CREATE DIRECTORY DPUMP_VOLCADO AS '/datapump/ficheros';

Por defecto se asigna el valor para DATA_PUMP_DIR:


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

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.

363

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

COPIAS DE SEGURIDAD

364

DATA PUMP. LOCALIZACION DE FICHEROS.


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'; # EXPORT DATA_PUMP_DIR=<VARIABLE_FICHERO_VOLCADO>

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.
Modo ayuda en lnea: expdp HELP=y Modo interactivo: expdp directory=<localizacin> Modo fichero de parmetros: expdp PARFILE=<fichero_parametros>
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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

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

365

366

DATA PUMP EXPORT.


Existen cinco modos de trabajar con datapump export:
- 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. no rol

DATA PUMP EXPORT. PARMETROS.


CONTENT =<ALL | DATA_ONLY | METADATA_ONLY> Indica contenido a exportar: datos, metadatos o ambos. DIRECTORY =<DATA_PUMP_DIR> Localizacin para los ficheros de volcado y registro. DUMPFILE = <directorio_objeto:>nombre_fichero Fichero de volcado. Por defecto expdat.dmp ESTIMATE = <BLOCKS | STATISTICS> Mtodo de estimacin de espacio en disco necesario para cada tabla. 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

- Tablespace (parmetro TABLESPACES). Debe tenerse el rol EXP_FULL_DATABASE. - 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

368

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. FILESIZE Tamao mximo para ficheros de exportacin (por defecto ilimitado). 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.

DATA PUMP EXPORT. PARMETROS.


INCLUDE = tipo_objeto <:clusula> Filtrar metadatos exportados indicando objetos y tipos incluidos (consultar las vistas DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS y TABLE_EXPORT_OBJECTS). JOB_NAME 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 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

369

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

COPIAS DE SEGURIDAD

370

DATA PUMP EXPORT. PARMETROS.


PARALELL = n Grado de paralelismo en la ejecucin (por defecto 1). Su nmero debe ser igual al nmero de ficheros de volcado indicados. QUERY =<nombre_esquema.><nombre_tabla> | <clusula> Permite seleccionar filas a exportar segn condiciones a cumplir. No compatible con CONTENT=METADATA_ONLY, ESTIMATE_ONLY o TRANSPORT_TABLESPACES. SCHEMAS =<lista de esquemas> Permite indicar que se realizar una exportacin de esquemas, es el modo por defecto. Por defecto referencia el esquema de usuario.

DATA PUMP EXPORT. PARMETROS.


TABLES = <nombre_esquema.><nombre_tabla>, ... Indica exportacin en modo tabla (del propio esquema, por defecto). TABLESPACES = <nombre_espacioalmac>, ... Indica tbsp. a exportar en modo tablespace. 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). 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

STATUS = nn 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

372

DATA PUMP EXPORT. MODO INTERACTIVO.


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): /home/...> expdp attach=<nombre_trabajo> Los parmetros que pueden usarse en modo interactivo son:
ADD_FILE = <directorio:><nombre_fichero>, ... Permite aadir ficheros de volcado.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

DATA PUMP EXPORT. MODO INTERACTIVO.


CONTINUE_CLIENT. Salir de modo interactivo y entrar en modo registro. EXIT_CLIENT. Salir de sesin ejecutndose en el servidor. 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. 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.
373
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

cliente.

El

trabajo

contina

374

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.

DATA PUMP IMPORT.


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

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

COPIAS DE SEGURIDAD

375

376

DATA PUMP IMPORT. PARMETROS.


CONTENT =<ALL | DATA_ONLY | METADATA_ONLY> Indica contenido a importar: datos -filas, no se crean objetos-, metadatos -definiciones- o ambos. 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 Fichero de volcado. Por defecto expdat.dmp ESTIMATE = <BLOCKS | STATISTICS> Mtodo de estimacin de espacio en disco necesario para cada tabla (slo vlido si se indica tambin NETWORK_LINK).

DATA PUMP IMPORT. PARMETROS.


EXCLUDE = tipo_objeto <:clusula> 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. 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. 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.
377
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

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

COPIAS DE SEGURIDAD

378

DATA PUMP IMPORT. PARMETROS.


JOB_NAME 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 LOGFILE = <directorio_objeto:>nombre_fichero Fichero de registro, por defecto import.log. NOLOGFILE = <Y | N> No crear fichero de registro. PARALELL = n Grado de paralelismo en la ejecucin (por defecto 1).

DATA PUMP IMPORT. PARMETROS.


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. 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. 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).
379
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

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

COPIAS DE SEGURIDAD

380

DATA PUMP IMPORT. PARMETROS.


REMAP_TABLESPACE=tbsp_fuente : tbsp_destino Carga todos los objetos, incluso el usuario, del esquema fuente en el esquema destino. 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. SKIP_UNUSABLE_INDEXES=<Y | N> Permite indicar que no se carguen tablas que tengan ndices en estado no disponible. SQLFILE=<directorio_objeto:>nombre_fichero 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

DATA PUMP IMPORT. PARMETROS.


SCHEMAS =<lista de esquemas> 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. 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). 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):
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.
COPIAS DE SEGURIDAD

381

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

382

DATA PUMP IMPORT. PARMETROS.


TABLES = <nombre_esquema.><nombre_tabla><:particin>, ... Indica exportacin en modo tabla (por defecto del propio esquema; para tablas de otro esquema debe tenerse el rol IMP_FULL_DATABASE). TABLESPACES = <nombre_espacioalmac>, ... Indica tbsp. a exportar en modo tablespace. 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.

DATA PUMP IMPORT. PARMETROS.


TRANSPORT_DATAFILES Conjunto de ficheros a importar en el destino en modo transport tablespace. TRANSPORT_TABLESPACES = <nombre_espacioalmac>, ... Realizar una importacin en modo transport tablespace y espacios de almacenamiento a los que se aplica.

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.


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): /home/...> impdp attach=<nombre_trabajo> 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DATA PUMP IMPORT. MODO INTERACTIVO.


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. 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.

cliente.

El

trabajo

contina
385
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

COPIAS DE SEGURIDAD

386

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:
PROCESSES SESSIONS PARALLEL_MAX_SERVERS

COPIA LOGICA: EXPORT/IMPORT

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.


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.

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.
COPIAS DE SEGURIDAD

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

COPIAS DE SEGURIDAD

389

Administracin y Ajuste de Oracle 10g 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>).

UTILIDAD EXPORT.
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

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

COPIAS DE SEGURIDAD

392

UTILIDAD EXPORT.
Aunque puede ejecutarse la utilidad e ir indicando en el prompt diferentes opciones, se recomienda usar un fichero de parmetros. Sintaxis: exp HELP=Y exp Proporciona ayuda en lnea. Modo interactivo (sin modo directo).

UTILIDAD EXPORT.
Parmetro
BUFFER COMPRESS (Y/N) CONSISTENT (Y/N) CONSTRAINTS (Y/N) DIRECT (Y/N) FILE FULL (Y/N)

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. Exportar o no las restricciones sobre tablas. Modo directo o no -convencional- de exportacin. Nombre del fichero expdat.dmp. de export, por defecto

exp PARFILE=<fichero_parametros>

Exportacin de la base de datos completa o no.


COPIAS DE SEGURIDAD

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

COPIAS DE SEGURIDAD

393

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

394

UTILIDAD EXPORT.
Parmetro
GRANTS (Y/N) INDEXES (Y/N) LOG OWNER ROWS (Y/N) TABLES TABLESPACES TRANSPORT_TABLESPACE (Y/N)
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

UTILIDAD EXPORT.
Descripcin Parmetro
TRIGGERS (Y/N) USERID se guardarn los

Descripcin
Exportar o no disparadores. Usuario y contrasea del usuario que realiza la exportacin (Peligro!).

Exportar o no privilegios sobre objetos. Exportar o no ndices. Indica fichero mensajes. donde

Indica los usuarios de los que se realizara la copia. Exportar o no los datos de las tablas. Relacin de tablas a exportar (modo tabla). Lista de tablespaces a exportar. Permite exportacin de tablespaces.
COPIAS DE SEGURIDAD

395

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

COPIAS DE SEGURIDAD

396

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

EXPORT. MODO DIRECTO.


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.

397

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

COPIAS DE SEGURIDAD

398

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.
- Copias de seguridad de tablas antes de realizar operaciones delicadas como borrado masivo de datos, cargas de datos, actualizaciones, FILE=<nombre_tabla>.dmp TABLES=(<esquema>.<nombre_tabla>, ) LOG=<nombre_esquema_tabla>.log COMPRESS=Y

UTILIDAD IMPORT.
La utilidad import es complementaria de export. Los objetos se importan en el orden en que estn en el fichero de exportacin: Definicin de tipos. Definiciones de tablas. Datos de tablas. ndices. Restricciones de integridad, vistas, procedimientos disparadores. - ndices bitmap, funcionales y de dominio.

En tablas que ya existen es aconsejable deshabilitar las restricciones de integridad referenciales temporalmente.
COPIAS DE SEGURIDAD

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

COPIAS DE SEGURIDAD

401

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

402

UTILIDAD IMPORT.

UTILIDAD IMPORT.
Existen cuatro modos de realizar import: - Tabla. Cualquier usuario puede importar tablas indicadas del esquema de usuario. - Usuario. Cualquier usuario puede importar todos los objetos del esquema. - Tablespace. Permite mover tablespaces entre bases de datos. Slo usuarios privilegiados. - Full database. Slo IMP_FULL_DATABASE. posible con el privilegio

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. 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. Como resultado se obtiene un fichero .log con el informe de incidencias.

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

COPIAS DE SEGURIDAD

403

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

COPIAS DE SEGURIDAD

404

UTILIDAD IMPORT.
Aunque puede ejecutarse la utilidad e ir indicando en el prompt diferentes opciones, se recomienda usar un fichero de parmetros. Sintaxis: imp HELP=Y imp Proporciona ayuda en lnea. Modo interactivo.

UTILIDAD IMPORT.
Parmetro
BUFFER

Descripcin
Tamao bufer de datos (bytes) usado en la transferencia. 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. Importar o no las restricciones sobre tablas. Indica si los ficheros de datos existentes debe ser o no reutilizados. Nombre del fichero de export a importar, por defecto expdat.dmp. Lista de esquemas a importar (usado normalmente con TOUSER).
COPIAS DE SEGURIDAD

COMMIT (Y/N) CONSTRAINTS (Y/N) DESTROY (Y/N)

imp PARFILE=<fichero_parametros>

FILE FROMUSER

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

COPIAS DE SEGURIDAD

405

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

406

UTILIDAD IMPORT.
Parmetro
FULL (Y/N) GRANTS (Y/N)

UTILIDAD IMPORT.
Descripcin Parmetro
LOG ROWS (Y/N)

Descripcin
Indica fichero donde se guardaran los mensajes. Incluir datos en la importacin. 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. Lista de tablas a importar. Lista de espacios de almacenamiento a importar. Lista de esquemas donde importar. Se requiere IMP_FULL_DATABASE. Importar datos de espacios de almacenamiento.
COPIAS DE SEGURIDAD

Importar o no el fichero completo. Importar o no privilegios sobre objetos. 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. Importar o no ndices. Fichero de descarga para sentencias creacin de ndices, no son creados.
COPIAS DE SEGURIDAD

SHOW (Y/N)

IGNORE (Y/N)

TABLES TABLESPACES TO_USER

INDEXES (Y/N) INDEXFILE


Administracin y Ajuste de Oracle 10g

de

TRANSPORT_TABL ESPACE
407

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

408

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

CASOS PRACTICOS.
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 - 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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 ;. FILE=<nombre_fichero_export>.dmp FROMUSER=<esquema_origen> TOUSER=<esquema_destino> TABLES=(<nombre_tabla1>, ) LOG=<nombre_esquema_tabla>.log

COPIAS DE SEGURIDAD

409

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

COPIAS DE SEGURIDAD

410

CASOS PRACTICOS.
- 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. FILE=<nombre_fichero_export>.dmp FROMUSER=<esquema_origen> SHOW=Y GRANTS=N ROWS=N INDEXES=N LOG=<nombre_esquema_tabla>.log - 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

RENOMBRAR ESP. DE ALMACENAMIENTO.


Util en casos donde se emplea la utilidad para transportar esp. de almacenamiento (por ejemplo, recuperacin avanzada TSPITR). ALTER TABLESPACE user RENAME to u1;
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).

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

413

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

COPIAS DE SEGURIDAD

414

SQL*LOADER.

SQL*LOADER. FICHERO DE CONTROL.


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.


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: Fixed-record. Cuando todos los registros tiene la misma longitud. Variable-record. Se indica la longitud del registro al principio del mismo. Stream-record. No se indica longitud, la marca un terminador.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

SQL*LOADER. EJEMPLOS.
-- Ejemplo 1 de fichero de control load data infile 'example.dat' "fix 10 into table example fields terminated by ',' optionally enclosed by '" (col1, col2) example.dat: 0001, abcd, 0002,fghi, 0003,klmn,
417
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

418

SQL*LOADER. EJEMPLOS.
-- 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

SQL*LOADER. EJECUCION.

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. Sesiones de usuario

Administracin y Ajuste Avanzados de Oracle 10g

DBA_DIRECTORIES. Directorios definidos en bd. V$SESSION_LONGOPS. Informacin sobre desarrollo de trabajos.

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

COPIAS DE SEGURIDAD

421

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

TEMARIO
Instalacin de Oracle10g. Diseo y creacin de una base de datos. Estructuras de almacenamiento (bloque, fila, segmento). Nuevas funcionalidades de monitorizacin y ajuste de Oracle 10g. Monitorizacin y ajuste tradicional de Oracle en versiones anteriores. Oracle Net. MTS. Configuracin del archivado. Backup. Recovery.
423

OBJETIVOS
Saber instalar Oracle10g (servidor y BD) sobre Linux. Disear (memoria, CPU y disco) y crear una base de datos. Conocer el formato del bloque oracle, estructura de la fila, tipos de segmentos y tipos de ndices (B-tree vs IOT). Conocer la nueva infraestructura, as como las nuevas herramientas de monitorizacin y ajuste de Oracle 10g. 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. Configurar el software de red (Oracle Net) en el servidor y en el cliente. Saber activar y configurar MTS. Configurar el archivado de una BD Oracle10g. Conocer las cuestiones avanzadas del backup de una BD. Conocer las cuestiones avanzadas del recovery de una BD.
424

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

Administracin y Ajuste de Oracle 10g

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TEMA 1. INSTALACIN DE ORACLE10g


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.

TEMA 1 INSTALACIN DE ORACLE10g

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

425

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

426

ESQUEMA DEL PROCESO DE INSTALACIN


Descargar SW de Oracle:
http://www.oracle.com/technology/software/products/database/oracle10g/index

TIPO DE BASE DE DATOS


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
en consultas sencillas sobre pocos datos (tambin actualizaciones).

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
INSTALACIN DE ORACLE10g

http://www.oracle.com/pls/db102/homepage

Almacn de Datos (Data Warehouse): consultas complejas sobre


muchos datos (OnLine Analytical Processing).

Personalizada. Slo Software: no crea BD ni configura sqlnet.


INSTALACIN DE ORACLE10g

Administracin y Ajuste de Oracle 10g

427

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

428

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

ASISTENTES DE CONFIGURACIN

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).
INSTALACIN DE ORACLE10g

REQUERIMIENTOS HW Y SW (Linux)
HW:
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.

Database Configuration Assistant (dbca).

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 INSTALACIN DE ORACLE10g

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

429

430

PARMETROS DEL KERNEL Valores mnimos (Linux)


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).

PARMETROS DEL KERNEL Ejemplo con Linux FC3


(http://www.oracle-base.com/articles/10g/OracleDB10gR2InstallationOnFedora3.php)

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

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

INSTALACIN DE ORACLE10g

431

432

Paquetes necesarios FEDORA CORE 3 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* # 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 INSTALACIN DE ORACLE10g

PREINSTALACIN (Linux)
Crear puntos de montaje: uno para el sw y hasta seis para las bases de datos:
/u01 (sw) /u02 (datos), /u03 (ndices), /u04 (redo), /u05 (system), /u06 (temp) y /u07 (rollback)

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

433

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

INSTALACIN DE ORACLE10g

434

INSTALACIN
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

POSTINSTALACIN
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:

Nota: el punto de montaje del CDROM no tiene por qu ser /mnt/cdrom, puede ser otro (/media/cdrom, etc).
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 INSTALACIN DE ORACLE10g

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:

# 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

435

Comprobar parches de seguridad: http://www.oracle.com/technology/deploy/security/index.html


INSTALACIN DE ORACLE10g

http://www.oracle.com/technology/deploy/security/pdf/twp_security_checklist_db_database.pdf

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

436

REVISION DE SEGURIDAD
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
INSTALACIN DE ORACLE10g

COMPROBACIN FINAL
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.

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.

SQL> connect / as sysdba Connected.

Oracle Enterprise Manger: Arrancar el servidor web de OEM:


$ emctl start dbconsole

... Instance "MNCS", status READY, has 1 handler(s) for this service... ... The command completed successfully

Acceder a http://host:1158/em
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 INSTALACIN DE ORACLE10g

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

437

438

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

TEMA 2 DISEO Y CREACIN DE UNA BASE DE DATOS

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

INSTALACIN DE ORACLE10g

439

440

TEMA 2. DISEO Y CREACIN DE UNA BD


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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DISEO DE LA BASE DE DATOS Contiendas en la E/S

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

441

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

442

DISEO DE LA BASE DE DATOS Organizacin de los tablespaces



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.
DISEO Y CREACIN DE UNA BD

DIMENSIONAR MEMORIA EN 10G



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.
DISEO Y CREACIN DE UNA BD

Administracin y Ajuste de Oracle 10g

443

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

444

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

VER MEMORIA EN LINUX

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

DIMENSIONAR LA SGA y Buffer-Cach Shared-Pool El tamao aproximado de la SGA (SGA_TARGET


siguiente:

si >=10g) es el

Los segmentos de memoria compartida (SGAs) se ven con ipcs -m.


$ 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) DISEO Y CREACIN DE UNA BD

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

445

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

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. )

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

DIMENSIONAR LA SGA Shared Pool y Log Buffer

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

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.
$ sar 18:20:00 18:30:00 18:40:00 Media: 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

dinmica.

V$SGA_DYNAMIC_COMPONENTS

V$SGA_RESIZE_OPS.

Ver

gestin

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

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

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 (con MTS10g se puede usar shared_server_sessions para limitar Administracin y Ajuste de Oracle DISEO Y CREACIN DE UNA BD 448 esas sesiones).
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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).
DISEO Y CREACIN DE UNA BD

DIMENSIONAR FICHEROS Temp System, SYSTEM >=Sysaux, 260M. Activaremos el y autoextend con next=10M. SYSAUX. Estimar tamao Rollback $ORACLE_HOME/rdbms/admin/utlsyxsz.sql, o:

con

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).

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

449

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:40 368 16 338516 6 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FICHERO DE PARMETROS

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:
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.

EJEMPLO DE INIT.ORA
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

Los parmetros del spfile se modifican con:


ALTER SYSTEM SET SPFILE | BOTH] 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

DISEO Y CREACIN DE UNA BD

451

452

CREAR LA BASE DE DATOS


Para crear una BD necesitamos:
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.

EJEMPLO CON CREATE DATABASE


connect / as sysdba startup nomount

Para ubicar los ficheros que componen la BD:

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).
DISEO Y CREACIN DE UNA 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.

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;
rem *** CREACION DE LAS VISTAS DEL DD *** @$ORACLE_HOME/rdbms/admin/catalog.sql @$ORACLE_HOME/rdbms/admin/catproc.sql Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 DISEO Y CREACIN DE UNA BD

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

453

454

ORACLE MANAGED FILES (OMF)


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 (multiplexados) los ficheros redolog; donde N puede valer de 1 a 5.
Nota. Se pueden activar ambos parmetros o slo uno ellos.

DBCA (DataBase Configuration Assistant)


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.

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

455

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
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).
DISEO Y CREACIN DE UNA BD

PRACTICAS TEMA 2
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.
DISEO Y CREACIN DE UNA BD


457

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

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

458

TEMA 3. ESTRUCTURAS DE ALMACENAMIENTO Bloques, extensiones y segmentos.



459

TEMA 3 ESTRUCTURAS DE ALMACENAMIENTO

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.
460

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

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

BLOQUES, EXTENSIONES Y SEGMENTOS


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.
ESTRUCTURAS DE ALMACENAMIENTO

DIFERENTES TAMAOS DE BLOQUE EN LA MISMA BD


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.
ESTRUCTURAS DE ALMACENAMIENTO

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

461

Administracin y Ajuste de Oracle 10g

462

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

FORMATO DEL BLOQUE


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

GENERACION DE ESPACIO LIBRE Oracle recomienda el uso de la gestin automtica EN UN BLOQUE (>=9i).

del espacio libre

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.

Se hace al crear un tablespace con SEGMENT SPACE MANAGEMENT AUTO.

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

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

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.

EXTENSIONES Y SU ASIGNACIN
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:
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.

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;.
ESTRUCTURAS DE ALMACENAMIENTO

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

ESTRUCTURAS DE ALMACENAMIENTO

465

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

466

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).
ESTRUCTURAS DE ALMACENAMIENTO

GESTION AUTOMATICA DEL ESPACIO DE LOS SEGMENTOS


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.
ESTRUCTURAS DE ALMACENAMIENTO

Administracin y Ajuste de Oracle 10g

467

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

468

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMPRESION DE LOS SEGMENTOS DE DATOS


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.
ESTRUCTURAS DE ALMACENAMIENTO

METODOS DE ACCESO A DATOS B-TREE Y ,BITMAP INDICES Usaremos ndices B-tree en general, cuando

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): 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;

ALTER INDEX nombre MONITORING USAGE; (activa seguimiento) SELECT * FROM V$OBJECT_USAGE; (comprueba uso) ALTER INDEX nombre MONITORING USAGE; (desactiva seguimiento)

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

469

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 susde columnas forma parte de la PK), y que no van a tener Administracin y Ajuste Oracle 10g ESTRUCTURAS DE 470 ningn otro ndice.
Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ALMACENAMIENTO

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)

ENVIAR CORREO DESDE ORACLE Paquete UTL_MAIL


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.
ESTRUCTURAS DE ALMACENAMIENTO

PURGE RECYCLEBIN | DBA_RECYCLEBIN; PURGE TABLESPACE nomtsp [USER usuario]; Borrar directamente sin pasar por RECYCLEBIN: DROP TABLE tabla PURGE;
ESTRUCTURAS DE ALMACENAMIENTO

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

471

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

472

ENCOLAR Y SUSPENDER LA BD Quiesce y Suspend

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

VISTAS DEL DD
DBA_TABLESPACES (Tablespaces de la BD). DBA_SEGMENTS (Segmentos que hay en los tablespaces). 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).
ESTRUCTURAS DE ALMACENAMIENTO

473

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

474

PRACTICAS TEMA 3

PRACTICAS TEMA 3
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.
ESTRUCTURAS DE ALMACENAMIENTO

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. 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?

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

ESTRUCTURAS DE ALMACENAMIENTO

475

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

476

TEMA 4. NUEVAS FUNCIONALIDADES DE MONITORIZACIN Y AJUSTE.

TEMA 4 NUEVAS FUNCIONALIDADES DE MONITORIZACIN Y AJUSTE

Nueva infraestructura. AWR (Automatic Workload Repository). Vistas AWR. ADDM (Automatic Database Diagnostic Monitor). DBMS_ADVISOR. SQL Tuning Advisor. Segment Shrink. Segment Advisor. UNDO Advisor.

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

477

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

478

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 AJUSTE Y MONITORIZACION

AUTOMATIC WORKLOAD REPOSITORY (AWR)


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.
NUEVAS FUNCIONALIDADES DE AJUSTE Y MONITORIZACION

479

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

480

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.

AUTOMATIC DATABASE DIAGNOSTIC MONITOR (ADDM)


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
NUEVAS FUNCIONALIDADES DE AJUSTE Y MONITORIZACION

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

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

482

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 y Ajuste de Oracle 10g NUEVAS FUNCIONALIDADES DE RETURN tname; AJUSTE Y MONITORIZACION END; Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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' ); 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

483

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,
AJUSTE Y MONITORIZACION V$SQL, V$SQLAREA, V$SQLSTATS, V$SQL_BINDS. NUEVAS FUNCIONALIDADES DE

SQL TUNNING ADVISOR DBMS_SQLTUNE


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 NUEVAS FUNCIONALIDADES DE AJUSTE Y MONITORIZACION

Administracin y Ajuste de Oracle 10g DBA_SQLTUNE_PLANS.

485

486

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SQL TUNNING ADVISOR DBMS_SQLTUNE


Diferentes formas de crear tareas de ajuste SQL.
variable stmt_task VARCHAR2(64); -- 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'')'); -- Con el identificador (Sql_id en cursor cache) EXEC :stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'ay1m3ssvtrh24'); -- 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');

SQL TUNNING ADVISOR DBMS_SQLTUNE


-- Ejecuto la tarea de ajuste. EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:stmt_task); -- 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; -- Genero el script para aplicar las correcciones sugeridas por el -- informe anterior. SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK(:stmt_task) FROM DUAL; 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

487

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


Esta operacin compacta el contenido de un segmento y devuelve extensiones libres.
-- 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

SEGMENT ADVISOR Ejecucin manual


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:
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;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 NUEVAS FUNCIONALIDADES DE AJUSTE Y MONITORIZACION

489

490

SEGMENT ADVISOR Ver resultados


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:

UNDO ADVISOR DBMS_UNDO_ADV


-- 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

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 AJUSTE Y MONITORIZACION

491

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.

TEMA 5 MONITORIZACIN Y AJUSTE TRADICIONAL

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

NUEVAS FUNCIONALIDADES DE AJUSTE Y MONITORIZACION

493

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

494

TEMA 5. MONITORIZACIN Y AJUSTE TRADICIONAL.


EVENTOS DE ESPERA
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
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

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.

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

496

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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

VISTAS DINAMICAS INFORMACION DEL SISTEMA

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.

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

497

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

AJUSTE Y MONITORIZACIN DE LA INSTANCIA

498

VISTAS DINAMICAS INFORMACION DE SESIONES


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.

AJUSTE DE LA SHARED-POOL INTRODUCCION


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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 AJUSTE Y MONITORIZACIN DE LA INSTANCIA

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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

499

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

500

AJUSTE DE LA SHARED-POOL SENTENCIAS SQL


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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

AJUSTE DE LA SHARED-POOL GENERALIDADES


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:
SELECT * FROM V$SGASTAT WHERE NAME = 'free memory' AND POOL = 'shared pool'; POOL NAME BYTES ----------- -------------------------- ---------shared pool free memory 693036

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). 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.

Nota: en DSS es mejor darle mucha informacin al CBO q compartir el cdigo.

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

501

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 LIBRARY 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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

AJUSTE DE LA SHARED-POOL ROW CACHE


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

503

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

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

AJUSTE DE LA SHARED-POOL COMPARTIR CODIGO SQL


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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

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

505

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

506

AJUSTE DE LA SHARED POOL LATCHES DE LA LIBRARY CACHE


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%';
NAME GETS MISSES SLEEPS ----------------------------------------------- ---------- ---------- ---------library cache 97155739 42902 12272 library cache load lock 11705 0 0 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).

AJUSTE DE LA SHARED POOL ESPERAS POR LATCHES


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.
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%';

Tambin es interesante mirar slo en v$session_wait para ver si hay alguna otra causa de lentitud.
select * from v$session_wait where event != 'rdbms ipc message' and event not like '%Net%' and sid > 5;

Para detectar el proceso en cuestin (slo saldr algo si lo pillamos en el momento):


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


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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

AJUSTE DE LA BUFFER CACHE HIT RATIO


Consultando V$SYSSTAT:
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');

Si usamos varias cachs (keep, V$BUFFER_POOL_STATISTICS:

recycle,

etc),

partir

de

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;

Si activamos DB_CACHE_ADVICE, podremos consultar en V$DB_CACHE_ADVICE posibles estimaciones para la buffer cach.
select name,size_for_estimate,size_factor,ESTD_PHYSICAL_READ_FACTOR from v$db_cache_advice;
NAME SIZE_FOR_ESTIMATE SIZE_FACTOR ESTD_PHYSICAL_READ_FACTOR -------------------- ----------------- ----------- ------------------------DEFAULT 4 1 1 DEFAULT 8 2 .3228

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

509

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

AJUSTE Y MONITORIZACIN DE LA INSTANCIA

510

AJUSTE DE LA BUFFER CACHE OBJETIVOS


Hay que evitar lo siguiente:
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).

AJUSTE DEL REDO LOG BUFFER GENERALIDADES


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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

Administracin y Ajuste de Oracle 10g

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).
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

511

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

512

Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

AJUSTE DEL REDO LOG BUFFER DETECTAR PROBLEMAS


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).

AJUSTE DEL ROLLBACK GENERALIDADES


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.
Para cada RS, debemos asegurarnos de q la cabeza no alcance a la cola muy rpido, pues har q el RS se extienda.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

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.).
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

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

513

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

514

AJUSTE DEL ROLLBACK OPTIMIZACION


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).
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

AJUSTE DE SEGMENTOS DE SORT GENERALIDADES


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

515

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


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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

AJUSTE DE LOS CHECKPOINTS


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:
log_checkpoint_interval=0 log_checkpoint_timeout=0. FAST_START_MTTR_TARGET=0 (desactiva fast recovery instance).

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

517

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

AJUSTE Y MONITORIZACIN DE LA INSTANCIA

518

AJUSTE DE LAS CONSULTAS SQL


Si observamos que nuestras consultas SQL van lentas, debemos comprobar:
El valor de OPTIMIZER_MODE. Ej: si CHOOSE, probar RULE. Estn los ndices de las tablas afectadas en estado valid?
SELECT * FROM DBA_OBJECTS WHERE OBJECT_TYPE='INDEX' AND STATUS!='VALID'; ALTER SYSTEM SET OPTIMIZER_MODE=RULE | FIRST_ROWS | ALL_ROWS | CHOOSE;

AJUSTE DE LA CPU

Si, adems, estamos usando el optimizador por costes (CBO):

Hay alguna otra consulta SQL pesada en ejecucin?

Para el ajuste herramientas:

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?

de

sentencias

SQL

utilizaremos

las

siguientes

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.

AUTOTRACE de Sql*Plus:
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
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.

INSTALAR STATSPACK
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

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

522

RECOGIENDO DATOS 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. 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).

OBTENIENDO INFORMES CON STATSPACK

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

523

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


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

VISTAS DEL DD
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

spdrop.sql -> Desinstala STATSPACK ejecutando a su vez los scripts:

Informes (como usuario PERFSTAT):

spdtab.sql -> Borra las tablas spdusr.sql -> Borra el usuario PERFSTAT

Mantenimiento (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)

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
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

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

525

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

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.
AJUSTE Y MONITORIZACIN DE LA INSTANCIA

PRACTICAS TEMA 5

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

527

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.

TEMA 6. NET.

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

AJUSTE Y MONITORIZACIN DE LA INSTANCIA

529

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

COMUNICACIONES

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.
COMUNICACIONES

TEMA 6. NET.
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

531

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

COMUNICACIONES

532

ORACLE NET SERVICES.


Oracle Net Services proporciona soluciones de conectividad para entornos distribuidos y heterogneos. Est integrado por: Oracle Net. Listener. Oracle Connection Manager. Herramientas de comunicaciones.

ORACLE NET.
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. Existen distintas tipologas de conexin:
Conexiones cliente/servidor (C/S). Conexiones web cliente. Conexiones web cliente sin uso de servidor de aplicaciones (Application Server).

Oracle Net Configuration Assistant. Oracle Net Manager. Oracle Enterprise Manager.

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

COMUNICACIONES

533

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

COMUNICACIONES

534

ORACLE NET. CLIENTE/SERVIDOR.


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-.
COMUNICACIONES

ORACLE NET. CLIENTE/SERVIDOR.

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

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.
COMUNICACIONES

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

537

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

COMUNICACIONES

538

ORACLE NET. CLIENTE/SERVIDOR.

ORACLE NET. WEB y APP. SERVER.


La conexin de aplicaciones web cliente (con o sin Web Application Server) a una bd es similar al caso C/S.

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.
COMUNICACIONES

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

539

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.

ORACLE NET. WEB y APP. SERVER.

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

COMUNICACIONES

541

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

COMUNICACIONES

542

ORACLE NET. WEB SIN APP. SERVER.


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).

ORACLE NET. CONNECTION POOLING.


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

543

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

COMUNICACIONES

544

LISTENER.
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.

ORACLE CONNECTION MANAGER.


Permite que mltiples sesiones cliente sean multiplexadas a travs de una sola conexin a una bd.

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

COMUNICACIONES

545

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

COMUNICACIONES

546

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.
Una bd es un servicio desde el punto de vista de clientes. los

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.

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

549

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

COMUNICACIONES

550

CONCEPTOS. SERVICIO.
La informacin necesaria para una conexin se almacena en un repositorio (local o centralizado -LDAP-).

CONCEPTOS. INSTANCIA.
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

551

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

COMUNICACIONES

552

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:
Nombres de servicio para cada instancia de la bd. Nombres de instancia de la bd. Manejadores de servicio (dispatcher disponible para cada instancia. o servidor dedicado)

CONCEPTOS. REGISTRO DE SERVICIO.


Para asegurar que el registro de servicio funciona correctamentem el fichero de parmetros de inicializacin debera contener los parmetros: SERVICE_NAMES, para el nombre de servicio de la bd INSTANCE_NAME, para el nombre de la instancia 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.

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

553

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

COMUNICACIONES

554

CONCEPTOS. REGISTRO DE SERVICIO.


Los eventos relacionados con el registro de servicio se almacenan en el fichero listener.log: service_register. Recepcin de informacin de instancia por el listener. service_update. Recepcin de informacin actualizada de una instancia por parte del listener. 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.

CONCEPTOS. CONECTOR.
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>))) Tambin puede indicarse la conexin a una instancia especfica (Real Application Clusters): (DESCRIPTION= ... (INSTANCE_NAME=<nombre_instancia>)))

Los manejadores de servicio en el servidor pueden ser un dispatcher (modo servidor compartido) o un proceso servidor dedicado.
COMUNICACIONES

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

COMUNICACIONES

555

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

556

CONCEPTOS. CONECTOR.
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)))

CONCEPTOS. MAPEOS.
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: CONNECT username/password@host[:port][/service_name] External Naming. Emplea un sistema no Oracle.

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

557

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

COMUNICACIONES

558

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

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

559

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

COMUNICACIONES

560

CONFIGURACION. MODELO LOCAL.


Existen los siguientes ficheros de configuracin: 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. 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, ... tnsnames.ora ... En los clientes. Contiene net service names -nombre de servicio asociado a un descriptor de conexin-. Usado en los mapeos.

CONFIGURACION. MODELO LOCAL.


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: El directorio indicado por la variable TNS_ADMIN El directorio $ORACLE_HOME/network/admin

El orden de bsqueda tnsnames.ora es:

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

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

COMUNICACIONES

561

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

COMUNICACIONES

562

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

TNSNAMES.ORA

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))))

LISTENER.ORA

donde ADDRESS define la localizacin de CONNECT_DATA define el servicio al cual conectar.


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

listener

COMUNICACIONES

565

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

COMUNICACIONES

566

LISTENER.ORA
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))

LISTENER.ORA

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.
COMUNICACIONES

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.

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

567

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

COMUNICACIONES

568

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. 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-.

LISTENER.ORA
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;

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

569

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

COMUNICACIONES

570

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:
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 COMUNICACIONES

LISTENER.ORA
El registro dinmico de servicios configuracin del fichero listener.ora no requiere ninguna

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-).
COMUNICACIONES

571

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

572

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. 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. 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
COMUNICACIONES

LISTENER.ORA. SECCION PROTOCOLO.


Define las peticiones. direcciones de las que el listener acepta

LISTENER_NOMBRE= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)) (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

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..
LISTENER_NOMBRE= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host) (PORT=1521)(QUEUESIZE=20)))

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

573

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

COMUNICACIONES

574

LISTENER.ORA. SECCION PROTOCOLO.


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.
LISTENER_NOMBRE = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521) (RECV_BUF_SIZE=11784)) (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)(RECV_BUF_SIZE=11784)))

LISTENER.ORA. SECCION REGISTRO SERVICIO.


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

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))))

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

COMUNICACIONES

575

576

LISTENER.ORA SECCION REGISTRO SERVICIO.


Donde:
SID_LIST ... lista de descripciones. SID_DESC ... informacin de servicio. SDU ... Optimizar la transferencia de datos usando un tamao indicado de session data unit (SDU). 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. ORACLE_HOME ... localizacin del servicio (opcional en UNIX). PROGRAM ... Nombre del programa de servicio ejecutable. SID_NAME ... SID de la instancia (parmetro INSTANCE_NAME).

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 LOG_FILE_<nombre_listener> indica el nombre del fichero de log para el listener. Por defecto listener.log TRACE_DIRECTORY_<nombre_listener> indica el directorio de destino de los ficheros de traza del listener. Por defecto $ORACLE_HOME/network/trace TRACE_FILE_<nombre_listener> indica el nombre del fichero de traza del listener. Por defecto listener.trc TRACE_LEVEL_<n_listener>. Nivel de detalle de la traza (0, sin traza, a 16, mximo nivel de traza). TRACE_FILELEN_<n_listener>. Tamao de los ficheros de traza (KB). Al alcanzarlo, traza se escribe en el siguiente fichero. TRACE_FILENO_<n_listener>. Nmero de ficheros de traza.

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

COMUNICACIONES

577

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

COMUNICACIONES

578

LISTENER.ORA Y JSERVER.
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. listener= (DESCRIPTION_LIST= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales1server)(PORT=2481)) (PROTOCOL_STACK= (PRESENTATION=giop) (SESSION=raw))))
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COMUNICACIONES

CONTROL DEL LISTENER.


La utilidad para control del listener (Listener Control Utility) permite administrar este componente. La sintaxis es: S.O.> LSNRCTL <sentencia> [nombre_listener] 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.


Pueden combinarse distintas rdenes en un fichero de texto y ejecutarlas de la forma: 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>

CONTROL DEL LISTENER.


Mediante la orden SERVICES se obtiene informacin sobre los servicios e instancias registradas, y los manejadores asociados a cada instancia.
LSNRCTL SERVICES lsnr

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

COMUNICACIONES

581

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

COMUNICACIONES

582

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). de localizacin

SQLNET.ORA

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
Indicar el intervalo, en segundos, que media para el envio de una confirmacin para verificar que la conexin est activa. 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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COMUNICACIONES

SQLNET.ORA
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.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

585

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

COMUNICACIONES

586

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): SQLNET.RECV_TIMEOUT Si un cliente no enva datos se generan en el fichero sqlnet.log los errores: ORA-12535: TNS:operation timed out y ORA-12609: TNS: Receive timeout occurred

SQLNET.ORA
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). LOG_DIRECTORY_SERVER. Directorio destino para ficheros de log del servidor (por defecto $ORACLE_HOME/network/log). LOG_FILE_SERVER. No aplicable. Hace referencia al fichero de log del servidor: sqlnet.log

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
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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COMUNICACIONES

SQLNET.ORA
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

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

COMUNICACIONES

590

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:

CONFIGURACION BASICA NET

Servidor BD y cliente en la misma red. 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.


1.- Confirmar conexin de red. Realizar un loopback test para comprobar que el servidor de bd puede comunicar con si mismo ping <nombre_maquina> o ping <direccion_IP> Comprobar que existe comunicacin entre el cliente y la bd (por ejemplo, con ping).

CONFIGURACION BASICA NET.


2.- Arrancar ellistener y la bd. Desde s.o.:
lsnrctl LSNRCTL> start <nombre_listener> Nombre_listener debe estar definido en el fichero listener.ora. Debe aparecer un mensaje indicando que el listener ha arrancado.

Arrancar la bd.
sqlplus /nolog SQL> CONNECT / as sysdba SQL> STARTUP
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COMUNICACIONES

593

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

COMUNICACIONES

594

CONFIGURACION BASICA NET.


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.

CONFIGURACION BASICA NET. SERVICIOS.

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COMUNICACIONES

597

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

COMUNICACIONES

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.
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:
sales= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com)))

CONFIGURACION BASICA NET.


El descriptor de conexin contiene:
La ruta de red hacia la bd, incluyendo la localizacin del listener a travs de un protocolo -seccin ADDRESS-. 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)))
599
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COMUNICACIONES

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

COMUNICACIONES

600

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): CONNECT username/password@[//]host[:port][/service_name] Por ejemplo: CONNECT :1521/sales.us.acme.com username/password@sales-server

CONFIGURACION BASICA NET.


4.- Conectar a bd. Desde el cliente:
Arrancar SQL*Plus: sqlplus Conectar a bd: CONNECT username/password@nombre_servicio_red

Este cadena se convierte en el descriptor: (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com))) Para conexiones URL o JDBC: CONNECT username/password@[//][host][:port][/service_name]
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COMUNICACIONES

601

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

COMUNICACIONES

602

DATABASE LINK.
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. el global

DATABASE LINK

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

COMUNICACIONES

603

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

COMUNICACIONES

604

TEMA 7. SHARED SERVER.


MANEJADORES DE SERVICIO. SERVIDOR DEDICADO. SERVIDOR COMPARTIDO. DISPATCHER. VENTAJAS SHARED SERVER. DISPATCHER.

605

TEMA 7. ARQUITECTURA 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.
SHARED SERVER.

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

SHARED SERVER.

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

606

TEMA 7. SHARED SERVER.


VERIFICAR CONFIGURACION. PARAR DISPATCHERS. FORZAR CONFIGURACION. COMPARTIDA. DEDICADA. DESHABILITAR MODO SERVIDOR COMPARTIDO. VISTAS.

MANEJADORES DE SERVICIO.
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.
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: (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=nombre_servicio) (SERVER=shared/dedicated))) 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.
COMUNICACIONES

SERVIDOR DEDICADO.
El listener arranca un proceso dedicado exclusivo para cada peticin cliente, que permanece hasta la finalizacin de la misma. Pueden darse dos opciones
protocolo): (seleccionada en funcin del S.O. y el

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.

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

609

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

SHARED SERVER.

610

SERVIDOR DEDICADO.

SERVIDOR DEDICADO.

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

SHARED SERVER.

611

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

SHARED SERVER.

612

SERVIDOR DEDICADO.
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). Al usar Recovery Manager (RMAN) para hacer copias, restaurar o recuperar una bd.

SERVIDOR COMPARTIDO.
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-.
SHARED SERVER.

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

SHARED SERVER.

613

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

614

SERVIDOR COMPARTIDO.

SERVIDOR COMPARTIDO: DISPATCHER.

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

SHARED SERVER.

615

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

SHARED SERVER.

616

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.

SERVIDOR COMPARTIDO: DISPATCHER.


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).

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

SHARED SERVER.

617

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

SHARED SERVER.

618

VENTAJAS SHARED SERVER.


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.

DISPATCHER.
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.

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).
SHARED SERVER.

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

620

NUMERO 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: Nmero de dispatchers = CEIL ( n mx. sesiones concurrentes / conexiones por dispatcher ) 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.

CONFIGURACION DE DISPATCHER.
Configuracin Tpica. DISPATCHERS="(PROTOCOL=TCP) (DISPATCHERS=2) DISPATCHERS=(PROTOCOL=IPC) (DISPATCHERS=1)" Forzar los puertos usados. DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5000))" DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5001))" 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

621

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

SHARED SERVER.

622

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 SHARED_SERVERS = <nmero>
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 SHARED SERVER.

PROCESOS SERVIDOR COMPARTIDOS.


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.

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. 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.

AJUSTE DEL NUMERO 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';

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

SHARED SERVER.

625

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

SHARED SERVER.

626

AJUSTE DEL NUMERO SHARED SERVER.


Tambin puede determinarse cuntos shared servers estn ejecutndose en un instante:
SELECT COUNT(*) "PROCESOS SHARED SERVER FROM V$SHARED_SERVER WHERE STATUS != 'QUIT';

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: ALTER SYSTEM SET SHARED_SERVERS = 4;

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

SHARED SERVER.

627

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

SHARED SERVER.

628

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: 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 SHARED SERVER.

OTROS PARAMETROS.
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. 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.

629

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

SHARED SERVER.

630

OTROS PARAMETROS.
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. 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.

CONNECTION POOLING.
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).
CONNECTIONS ... Mximo nmero de conexiones de red permitidas por dispatcher. Valor por defecto dependiente del s.o. 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.
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:
DISPATCHERS="(PROTOCOL=tcp)(DISPATCHERS=5)" DISPATCHERS="(PROTOCOL=tcps)(DISPATCHERS=3)"

SERVICIOS Y DISPATCHER.
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)"

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)"

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

SHARED SERVER.

633

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

SHARED SERVER.

634

AJUSTE DEL NUMERO DISPATCHERS.


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.
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.

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

636

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). Si en el fichero de inicializacin se indica:

DISPATCHERS. CLAUSULA INDEX.


Ejecutando lsnrctl services (lsnrctl services listener_v9205):
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
637
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 SHARED SERVER.

dispatchers = "(ADDRESS=(PROTOCOL=TCP) (host=host)(port=5100))" dispatchers = "(ADDRESS=(PROTOCOL=TCP) (host=host)(port=2480))"

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

SHARED SERVER.

638

DISPATCHERS. CLAUSULA INDEX.


Asignemos ahora el puerto 3500 al dispatcher D000's:
SQL> alter system shutdown immediate 'D000'; System altered. 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 SHARED SERVER.

DISPATCHERS. CLAUSULA INDEX.


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
639
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 SHARED SERVER.

640

VERIFICAR CONFIGURACION.
Al usar shared server, debe arrancarse en primer lugar el listener y despus la bd. Puede verificarse el estado del dispatcher ejecutando: lsnrctl services 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;

PARAR DISPATCHERS.
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-.
SELECT NAME, NETWORK FROM V$DISPATCHER; 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 parar el dispatcher D002:


ALTER SYSTEM SHUTDOWN IMMEDIATE 'D002';

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

SHARED SERVER.

641

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

SHARED SERVER.

642

PARAR DISPATCHERS.
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.

FORZAR CONFIGURACION COMPARTIDA.


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.


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 servicio contiene la clausula SERVER=DEDICATED.
sales= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=servicio)(SERVER=dedicated)))

FORZAR CONFIGURACION DEDICADA.


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-.

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

SHARED SERVER.

645

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

SHARED SERVER.

646

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.

DESHABILITAR MODO SERVIDOR COMPARTIDO.


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
SHARED SERVER.

TEMA 8. ARCHIVADO DE BASE DE DATOS.

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

649

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

ARCHIVADO DE BASE DE DATOS

650

TEMA 8. ARCHIVADO.
MODOS DE FUNCIONAMIENTO DE LA BD. MODOS NOARCHIVELOG Y ARCHIVELOG. REDO LOG ARCHIVADO. INFORMACION DE ARCHIVADO. 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

TEMA 8. ARCHIVADO.
INFORMACION PROCESO ARCHIVADO. FLASH RECOVERY AREA Y ARCHIVELOG. CAMBIO A MODO NOARCHIVELOG. VISTAS.

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.


La bd puede funcionar en dos modos distintos: modo noarchivelog y modo archivelog. 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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARCHIVADO DE BASE DE DATOS

MODO NOARCHIVELOG.
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. 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. Deben hacerse peridica y frecuentemente copias completas y coherentes de la bd (con la bd cerrada consistentemente).

653

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

ARCHIVADO DE BASE DE DATOS

654

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

MODO ARCHIVELOG.

655

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

ARCHIVADO DE BASE DE DATOS

656

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. 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. El proceso log writer (LGWR) no puede reutilizar ni sobreescribir un grupo de redo log hasta que ha sido archivado.

REDO LOG ARCHIVADO.


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). 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.

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

ARCHIVADO DE BASE DE DATOS

657

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

ARCHIVADO DE BASE DE DATOS

658

INFORMACION DE ARCHIVADO.
La orden de SQL*Plus ARCHIVE LOG LIST se emplea, entre otras cosas, para mostrar informacin de archivado para una determinada instancia. 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.

MODO DE ARCHIVADO INICIAL.


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 }...;
659
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARCHIVADO DE BASE DE DATOS

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.


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).

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.
661
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARCHIVADO DE BASE DE DATOS

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

ARCHIVADO DE BASE DE DATOS

662

CAMBIO A MODO ARCHIVELOG.


El cambio de modo actualiza el fichero de control. Tras cambiarlo, debe realizarse una copia todos los ficheros de la base de datos. 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).

ARCHIVELOG. ARCHIVADO MANUAL.


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:
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.


Para realizar el archivado manual es necesario estar conectado AS SYSDBA o tener el privilegio ALTER SYSTEM. La sentencia: alter system archive log all; guarda todos los ficheros an no archivados. 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.

ARCHIVELOG. DESTINO DE ARCHIVADO.


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:
LOG_ARCHIVE_DEST_1='LOCATION=/u06/oradata/CURSOxx'

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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARCHIVADO DE BASE DE DATOS

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

ARCHIVADO DE BASE DE DATOS

666

ARCHIVELOG. DESTINO DE ARCHIVADO.


Para especificar el destino de archivado debe pararse la instancia de base de datos -shutdown- e:
Indicar en fichero de parmetros destinos 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.

ARCHIVELOG. DESTINO DE ARCHIVADO.


El nombre de los archivados se compone de una cadena de caracteres combinada con variables: %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"
ARCHIVADO DE BASE DE DATOS

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

ARCHIVADO DE BASE DE DATOS

667

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

668

ARCHIVELOG. DESTINO DE ARCHIVADO.


Los valores de dichos parmetros pueden encontrarse en:
Nmero de secuencia de log (%s ): Vista V$ARCHIVED_LOG, columna SEQUENCE# Nmero de thread (%t). Vista V$ARCHIVED_LOG, columna THREAD# Identificacin de activacin (%a). Es el nmero asignado a la instancia de bd. Vista V$DATABASE, columna ACTIVATION# Identificacin de bd (%d). Vista V$DATABASE, columna DBID Identificacin de resetlog (%r). Vista V$ARCHIVED_LOG, columna RESETLOGS_ID

ARCHIVELOG. DESTINO DE ARCHIVADO.


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:
/u06/oradata/CURSOxx/LOGxxx_yyy_zzz.ARC /u07/oradata/CURSOxx/LOGxxx_yyy_zzz.ARC

Cada destino tiene una serie de caractersticas que determinan su estado (ver vista v$ARCHIVE_DEST):
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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARCHIVADO DE BASE DE DATOS

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

ARCHIVADO DE BASE DE DATOS

670

ARCHIVELOG. DESTINO DE 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:
Enabled (por defecto). Destino vlido y que puede usarse. Defer. Destino excluido temporalmente hasta que sea habilitado. Alternate. No habilitado pero puede llegar a estarlo si el resto de destinos fallan.

ARCHIVELOG. FALLOS DESTINO 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. 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-.

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

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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARCHIVADO DE BASE DE DATOS

ARCHIVELOG. CONTROL DE PROCESOS ARCn.


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>;

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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARCHIVADO DE BASE DE DATOS

674

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>;

ARCHIVELOG. CONTROL DE PROCESOS ARCn.

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.


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
ARCHIVADO DE BASE DE DATOS

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)

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). Al fijar el valor por defecto, cero, Oracle continuar ARCHIVADO DEy BASE DE DATOS generando entradas en el fichero de alert trazas en 678 respuesta a condiciones de error. Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008
Administracin y Ajuste de Oracle 10g

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

677

INFORMACION PROCESO ARCHIVADO.


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.

FLASH RECOVERY AREA.


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

679

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

ARCHIVADO DE BASE DE DATOS

680

FLASH RECOVERY AREA.


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 de

FLASH RECOVERY AREA Y ARCHIVELOG.


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. Realizar el archivado en el rea de flash recovery y fijar otros destinos de archivado (LOG_ARCHIVE_DEST_n) externos al rea. No usar el rea flash recovery para archivar.

DB_RECOVERY_FILE_DEST_SIZE ... Cantidad mxima

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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

ARCHIVADO DE BASE DE DATOS

681

ARCHIVADO DE BASE DE DATOS

682

FLASH RECOVERY AREA Y ARCHIVELOG.


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
LOG_ARCHIVE_DEST_1 = 'LOCATION=<USE_DB_RECOVERY_FILE_DEST>'

CAMBIO A MODO NOARCHIVELOG.


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.
ARCHIVADO DE BASE DE DATOS

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

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 ARCHIVADO DE BASE DE DATOS

TEMA 9. COPIAS DE SEGURIDAD.

685

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

COPIAS DE SEGURIDAD

686

TEMA 9. COPIAS DE SEGURIDAD.


COPIA Y RECUPERACION: METODOS. COPIAS FISICAS/LOGICAS. ESTRATEGIAS DE COPIA. CONSIDERACIONES. FLASH RECOVERY AREA. ARCHIVADO. COPIAS COMPLETAS/PARCIALES. ESTRATEGIA MANUAL DE COPIA.
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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

TEMA 9. COPIAS DE SEGURIDAD.


COPIA OTROS FICHEROS. COPIA MODO SUSPEND.

RESTAURACION DE COPIAS. DBVERIFY. VALIDACION FICHEROS Y SEGMENTOS. FLASHBACK DATABASE


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.


Para realizar la copia y recuperacin fsicas Oracle proporciona dos soluciones: Recovery Manager, una herramienta propia de Oracle que puede gestionarse a travs de un interfaz lnea de comandos o grfica. Copia y recuperacin gestionada por usuario, que emplea una mezcla de rdenes de s.o. y SQL*Plus. 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.

COPIA Y RECUPERACION: METODOS.


No obstante, los mtodos manuales tambin son tiles y diferentes circunstancias pueden justificar el uso de los mismos:
Migracin de bd a una versin actualizada conservando an los script de copia actuales. pero

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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

689

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

COPIAS DE SEGURIDAD

690

COPIAS FISICAS/LOGICAS.
Debe permitir, en caso de prdida de los datos originales, recuperarlos. Pueden clasificarse en: Fsicas. Copias de los ficheros que integran la bd, ficheros

ESTRATEGIAS DE COPIA. CONSIDERACIONES.


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. 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.
691
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

de control y ficheros archive log hechas con utilidades del gestor de bd -Recovery Manager, RMAN- o del s.o..

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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

692

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.

ESTRATEGIAS DE COPIA. CONSIDERACIONES.


Es necesario anotar la configuracin hw y sw del servidor.
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

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

COPIAS DE SEGURIDAD

693

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

COPIAS DE SEGURIDAD

694

ESTRATEGIAS DE COPIA. CONSIDERACIONES.


Conjunto de Redundancia. 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. 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.

ESTRATEGIAS DE COPIA. CONSIDERACIONES.


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, ...).
695
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

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

COPIAS DE SEGURIDAD

696

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.
COPIAS DE SEGURIDAD

ESTRATEGIAS DE COPIA. CONSIDERACIONES.


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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

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

698

FLASH RECOVERY AREA.


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).
COPIAS DE SEGURIDAD

FLASH RECOVERY AREA

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

COPIAS DE SEGURIDAD

699

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

700

FLASH RECOVERY AREA.


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. 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.
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

FLASH RECOVERY AREA. ARCHIVADO.


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. 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'

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

701

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

COPIAS DE SEGURIDAD

702

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.
Una copia completa puede ser: 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.
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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

COPIAS COMPLETAS/PARCIALES.
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. 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.

705

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

COPIAS DE SEGURIDAD

706

COPIAS COMPLETAS/PARCIALES.
Parciales. 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

COPIAS COMPLETAS/PARCIALES.
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).
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 Actuacin
cp <nombre_fichero> <nombre_fichero.fecha> cp <nombre_fichero> <nombre_fichero.fecha> alter database backup controlfile to <nombre_fichero> create pfile= <init.ora.fecha> from spfile; cp tnsnames.ora tnsnames.ora.fecha

ESTRATEGIA MANUAL DE COPIA

Ficheros de datos F.redo archivado F. control F. parmetros F. red

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

COPIAS DE SEGURIDAD

709

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

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). 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

OBTENCION DE INFORMACION DE COPIA.


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';

711

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

COPIAS DE SEGURIDAD

712

COPIA COMPLETA BD.


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). En modo archivelog se recomienda hacer copia del f.control con:

COPIA COMPLETA BD. PROCESO.


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. SQL> STARTUP

ALTER DATABASE BACKUP CONTROLFILE TO <fichero>;

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

COPIAS DE SEGURIDAD

713

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

COPIAS DE SEGURIDAD

714

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). No puede ponerse fuera de lnea el tbsp SYSTEM o un tbsp con segmentos de rollback activos. 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.

COPIA TBSP FUERA LINEA. PROCESO.

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 = '...';

TABLESPACE <nombre_tbsp> OFFLINE NORMAL;).

Poner el tbsp fuera de lnea con prioridad normal (ALTER Realizar copia de los f.datos (cp).

ONLINE;).

Poner el tbsp en lnea (ALTER TABLESPACE <nombre_tbsp>

Forzar el archivado de redo, de forma que aquel necesario para recuperar la copia del tbsp est disponible (ALTER SYSTEM ARCHIVE LOG CURRENT;).
COPIAS DE SEGURIDAD

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

COPIAS DE SEGURIDAD

715

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

716

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. Identificar los f.datos que pertenecen al tbsp.
SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM SYS.DBA_DATA_FILES WHERE TABLESPACE_NAME = '...';

COPIA TBSP LECTURA/ESCRITURA EN LINEA. PROCESO.


Realizar la copia (cp). Indicar fin de copia:
SQL> ALTER TABLESPACE <NOMBRE_TBSP> END BACKUP;

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

717

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

COPIAS DE SEGURIDAD

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.

COPIA TBSP LECTURA/ESCRITURA EN LINEA.


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;

Paralela. 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.

Y en lugar de usar ALTER TABLESPACE ... END BACKUP; puede utilizarse:


SQL> ALTER DATABASE END BACKUP;

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:


La copia ha terminado pero no se indica su fin (end backup). 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'

Abandonar el modo de copia (slo si se est seguro de que los ficheros estn en la fecha actual).
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.

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. en

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

COPIAS DE SEGURIDAD

721

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

COPIAS DE SEGURIDAD

722

COPIA TBSP SOLO LECTURA EN LINEA. PROCESO.


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.
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-.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

COPIA FICHERO CONTROL.


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. 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.


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: 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

COPIA REDO ARCHIVADO.


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;

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).

725

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

COPIAS DE SEGURIDAD

726

COPIA OTROS FICHEROS.


Como norma general, cada vez que se modifiquen deben copiarse adems el fichero de parmetros de inicializacin, los de interconexin y el de contraseas. 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).

COPIA MODO SUSPEND.


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.
COPIAS DE SEGURIDAD

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

727

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

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.

METODOS DE VERIFICACION DE COPIA: RESTAURACION DE COPIAS DBVERIFY


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

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

COPIAS DE SEGURIDAD

729

COPIAS DE SEGURIDAD

730

RESTAURACION DE COPIAS.
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.

DBVERIFY: DATABASE VERIFICATION UTILITY.


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

731

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

COPIAS DE SEGURIDAD

732

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. 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> Por ejemplo, dbv FILE=nomina.dbf FEEDBACK=100
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

DBVERIFY. VALIDACION FICHEROS.


Los parmetros tienen el siguiente significado:
USERID ... Nombre de usuario y contrasea. Slo en el caso de ficheros ASM. 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.

733

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

COPIAS DE SEGURIDAD

734

DBVERIFY. VALIDACION FICHEROS.


LOGFILE ... Fichero donde se guarda informacin (por defecto el terminal). 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.

DBVERIFY. VALIDACION FICHEROS.


/home/oracle> dbv file=/u02/.../.../users01.dbf feedback=100 ... 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

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

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.


Pages = bloques 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

DBVERIFY. VALIDACION SEGMENTOS.


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).

737

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

COPIAS DE SEGURIDAD

738

DBVERIFY. VALIDACION SEGMENTOS.


dbv USERID = usuario/contrasea | SEGMENT_ID = tsn.segfile.segblock | LOGFILE = <nombre_fichero> | FEEDBACK = integer | HELP = { Y | N } | PARFILE = <nombre_fichero> 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). LOGFILE ... Fichero donde se guarda informacin (por defecto el terminal).
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

DBVERIFY. VALIDACION SEGMENTOS.


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; ... USERS DEPT ... 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 Total Pages Failing Total Pages Failing :2

Total Pages Processed (Data) : 1 (Data) : 0 (Index): 0 Total Pages Processed (Index): 0 Total Pages Processed (Other): 0 Total Pages Processed (Seg) : 1 Total Pages Failing Total Pages Empty Total Pages Influx (Seg) : 0 :0 :0 :0

FLASHBACK DATABASE

Total Pages Marked Corrupt

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

COPIAS DE SEGURIDAD

741

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

COPIAS DE SEGURIDAD

742

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

FLASHBACK DATABASE.
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.
COPIAS DE SEGURIDAD

743

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

744

FLASHBACK DATABASE.
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.

PUNTOS RESTAURACION.
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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

745

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

COPIAS DE SEGURIDAD

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. 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).

PUNTOS RESTAURACION.
La vista V$RESTORE_POINT restauracin definidos: permite ver los puntos de

SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE FROM V$RESTORE_POINT;

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';

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.
COPIAS DE SEGURIDAD

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

COPIAS DE SEGURIDAD

747

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

748

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.
1.- Montar la bd SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT; 2.- Indicar ventana de recuperacin (por defecto 1440 minutos -24h-). SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320; 3.- Activar Flashback Database para la bd al completo. SQL> ALTER DATABASE FLASHBACK ON; Para desactivar flashback: SQL> ALTER DATABASE FLASHBACK OFF;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

ACTIVAR FLASHBACK DATABASE.


Puede habilitarse/deshabilitarse especficos el flashback para tbsp.

SQL> ALTER TABLESPACE <nombre_tbsp> FLASHBACK ON/OFF;

Si se deshabilita Flashback para un tbsp., deben ponerse fuera de lnea sus ficheros de datos antes de ejecutar FLASHBACK DATABASE. 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;

Nota: Debe aadirse el espacio indicado en ESTIMATED_FLASHBACK_SIZE al rea de flash.


749
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

750

VENTANA FLASHBACK DATABASE.


El SCN ms antiguo puede determinarse de la forma siguiente:
SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;

MONITORIZACION FLASHBACK DB.


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). Consultar la vista V$SYSSTAT (columnas physical write I/O request, physical read I/O request, redo writes y flashback log writes).

El SCN ms reciente puede obtenerse:


SQL> SELECT CURRENT_SCN FROM V$DATABASE;

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

COPIAS DE SEGURIDAD

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.


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

COPIA LOGICA

753

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

COPIAS DE SEGURIDAD

754

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. 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 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

DATA PUMP. EJECUCIN.


Esta tabla maestro tambin se emplea para reiniciar un trabajo. El destino final de la tabla maestro es diverso:
Si el trabajo finaliza correctamente, la tabla se borra. 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. 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.
COPIAS DE SEGURIDAD

755

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

756

DATA PUMP. INFORMACIN.


Puede obtenerse informacin en las siguientes vistas:
DBA_DATAPUMP_JOBS y USER_DATAPUMP_JOBS. Identifican trabajos Data Pump activos. DBA_DATAPUMP_SESSIONS. Identifica sesiones de usuario asociadas a un trabajo. V$SESSION_LONGOPS. Informacin sobre el progreso del trabajo.

DATA PUMP. FICHEROS.


Existen tres tipos de ficheros gestionados por Data Pump:
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. Ficheros log. Contienen mensajes sobre la operacin realizada. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

757

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

COPIAS DE SEGURIDAD

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.
SQL> CREATE DIRECTORY DPUMP_VOLCADO AS '/datapump/ficheros';

DATA PUMP. LOCALIZACION DE FICHEROS.


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'; # EXPORT DATA_PUMP_DIR=<VARIABLE_FICHERO_VOLCADO>

Por defecto se asigna el valor para DATA_PUMP_DIR:


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

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.

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

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

COPIAS DE SEGURIDAD

759

760

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.
Modo ayuda en lnea: expdp HELP=y Modo interactivo: expdp directory=<localizacin> Modo fichero de parmetros: expdp PARFILE=<fichero_parametros>
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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

DATA PUMP EXPORT.


Existen cinco modos de trabajar con datapump export:
- 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. no rol

- Tablespace (parmetro TABLESPACES). Debe tenerse el rol EXP_FULL_DATABASE. - 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

761

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.
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.

DATA PUMP IMPORT.


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

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

COPIAS DE SEGURIDAD

763

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: 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 COPIAS DE SEGURIDAD

TBSP TRANSPORTABLES

765

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

COPIAS DE SEGURIDAD

766

TBSP TRANSPORTABLES. LIMITACIONES.


Ambas bbdd deben usar el mismo juego de caracteres -character set- y el mismo juego de caracteres nacional -national character set-. 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 ...

TBSP TRANSPORTABLES. COMPATIBILIDAD.


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

767

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

COPIAS DE SEGURIDAD

768

TBSP TRANSPORTABLES. PROCESO 1/6.


Determinar la compatibilidad de las plataformas. Slo es necesario si se trabaja con plataformas origen y destino diferentes. Debe ejecutarse la sentencia:
SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

TBSP TRANSPORTABLES. PROCESO 2/6.


Seleccionar un conjunto de tbsp autocontenidos. 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.

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

COPIAS DE SEGURIDAD

769

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

COPIAS DE SEGURIDAD

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).
DBMS_TTS.TRANSPORT_SET_CHECK ( ts_list IN CLOB, incl_constraints IN BOOLEAN DEFAULT FALSE, full_check IN BOOLEAN DEFAULT FALSE); 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

TBSP TRANSPORTABLES. DBMS_TTS.


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); SQLPLUS> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

COPIAS DE SEGURIDAD

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.


Generar un conjunto de tbsp. transportables. Cambiar el estado de los tbsp a slo lectura.
ALTER TABLESPACE <nombre_tbsp> READ ONLY;

TBSP TRANSPORTABLES. PROCESO 3/6.


Si el autocontenido debe ser estricto:
DUMPFILE = expdat.dmp DIRECTORY = dpump_dir TRANSPORT_TABLESPACES = (NOMINA, PAGOS) TRANSPORT_FULL_CHECK=Y

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)

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

COPIAS DE SEGURIDAD

773

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

COPIAS DE SEGURIDAD

774

TBSP TRANSPORTABLES. PROCESO 3/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=...) 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

TBSP TRANSPORTABLES. PROCESO 4/6.


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, ...

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.


Integrar el conjunto de tbsp transportados. Importar la informacin relativa a los tbsp.

TBSP TRANSPORTABLES. PROCESO 6/6.


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.
ALTER TABLESPACE <nombre_tbsp>READ WRITE;

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 los ficheros de datos

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.
COPIAS DE SEGURIDAD

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

777

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

COPIAS DE SEGURIDAD

778

TBSP TRANSPORTABLES. PROCESO 6/6.


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. 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. 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.

TBSP TRANSPORTABLES. RESUMEN.


Proceso. Cambiar los espacios de almacenamiento al estado de slo lectura. Trasladar la informacin almacenada en el diccionario (exportacin de metadatos) a la bd destino. 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
COPIAS DE SEGURIDAD

TEMA 10. RECUPERACION.

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

781

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

RECUPERACION

782

TEMA 10. RECUPERACION.


RECUPERACION. ESTRUCTURAS DE RECUPERACION. PRINCIPIOS DE RECUPERACION. TIPOS DE RECUPERACION. COMPLETA. INCOMPLETA. FLASHBACK. ESTRATEGIAS DE RECUPERACION. RESTAURACION DE FICHEROS. FICHEROS DE COPIA. REDO ARCHIVADO. RESTAURAR Y RECREAR F. CONTROL.
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. RECUPERACION INCOMPLETA. CANCEL BASED. TIME BASED. CHANGE BASED. RECUPERACION PARALELA. APERTURA BD TRAS RECUPERACION.
784


783

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

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

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

785

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

RECUPERACION

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. 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

RECUPERACION.
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.
787
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

788

ESTRUCTURAS DE RECUPERACION.
Ficheros de datos (datafiles) y bloques de datos. 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). 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. La copia fsica de los datafiles es fundamental en cualquier estrategia de copia y recuperacin.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

ESTRUCTURAS DE RECUPERACION.
Redo Log. 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). 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.
789
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

790

ESTRUCTURAS DE RECUPERACION.
Registros de undo. 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.

ESTRUCTURAS DE RECUPERACION.
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.

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.
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).

PRINCIPIOS Y TIPOS DE RECUPERACION

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

RECUPERACION

793

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

RECUPERACION

794

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.


Si se pretende recuperar un tbsp o fichero de datos, debe: 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).

TIPOS DE RECUPERACION: INCOMPLETA.


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: 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

797

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

RECUPERACION

798

TIPOS DE RECUPERACION: INCOMPLETA.


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. 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.

INCONVENIENTES RECUPERACION TRADICIONAL


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.

Las utilidades flashback proporcionadas por Oracle son ms eficientes que la recuperacin tradicional en la mayora de los casos.
RECUPERACION

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

RECUPERACION

799

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

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: Oracle Flashback Query. Consultar contenido de bd en un
tiempo anterior.

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:
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: SQL> SELECT CURRENT_SCN FROM V$DATABASE; SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;
801
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

Oracle Flashback Version Query. Ver estados anteriores


de datos.

Oracle Flashback Transaction Query. Ver transacciones


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. Fl. Table, Fl. Query, Fl. Trans. Query y Fl. Version Query estn relacionadas con undo. Fl. Drop se basa en el recycle bin.
RECUPERACION

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

802

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'); 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

ESTRATEGIAS DE RECUPERACION

803

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

RECUPERACION

804

ESTRATEGIAS DE RECUPERACION.
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. 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

ESTRATEGIAS DE RECUPERACION.
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.

805

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

RECUPERACION

806

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: 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.

RESTAURACION Y RECUPERACION

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 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 FROM V$DATAFILE UNION ALL SELECT MEMBER FROM V$LOGFILE UNION ALL SELECT NAME FROM V$CONTROLFILE;

RESTAURAR FICHEROS DE COPIA.


Localizacin redo archivado. SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME LIKE log_archive_dest% AND VALUE IS NOT NULL ; Formato de redo archivado. SHOW PARAMETER LOG_ARCHIVE_FORMAT Listado de redo archivado. SELECT NAME FROM V$ARCHIVED_LOG;

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

RECUPERACION

809

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

RECUPERACION

810

FICHEROS A RESTAURAR.
La vista V$RECOVER_FILE muestra el estado de los ficheros que necesitan recuperacin, el motivo, el SCN donde debe comenzar, ... SELECT * FROM V$RECOVER_FILE;
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.

RESTAURAR REDO ARCHIVADO.


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: 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

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#

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

RECUPERACION

812

RESTAURAR REDO ARCHIVADO.


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).

RESTAURAR FICHEROS DE COPIA.


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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

813

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

RECUPERACION

814

RESTAURAR Y RECREAR F. CONTROL.


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. 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.

RECUPERAR F. CONTROL. PERDIDA DE MIEMBRO MULTIPLEXADO.


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 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.


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' Arrancar la bd: STARTUP
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

RECUPERAR F. CONTROL. PERDIDA DE TODOS MIEMBROS.


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. Si se tiene copia del fichero de control. 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.

'/u02/.../control01.ctl',

817

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

RECUPERACION

818

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: RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL 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-.

RECUPERAR F. CONTROL. PERDIDA DE TODOS MIEMBROS.


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.

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. 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

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

821

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

RECUPERACION

822

RECUPERAR F. CONTROL. PERDIDA DE MIEMBROS Y COPIAS.


Existen distintas opciones para crear el fichero de control: 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

RECUPERAR F. CONTROL. PERDIDA DE MIEMBROS Y COPIAS.


Si no existe copia del fichero de control, debe crearse manualmente (sentencia CREATE CONTROLFILE).

823

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

RECUPERACION

824

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). 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.
RECUPERACION

CONDICIONES RECUPERACION.
Hay dos formas de automatizar la aplicacin de los redo necesarios en la recuperacin: Ejecutando SET AUTORECOVERY ON antes de RECOVER. Startup mount Set autorecovery on Recover database alter database open; Indicando la clasula AUTOMATIC como opcin de la sentencia RECOVER. Startup mount Recover automatic database alter database open;
825
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

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

826

RECUPERACION COMPLETA.
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.

RECUPERACION COMPLETA. BD CERRADA.


1.- Preliminares. 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.


3.- Recuperar la bd. 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): RECOVER DATABASE; RECOVER TABLESPACE users; RECOVER DATAFILE '/.../tbs.dbf';
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

RECUPERACION COMPLETA. BD CERRADA.


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. Abrir la bd: ALTER DATABASE OPEN;

829

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

RECUPERACION

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: 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

RECUPERACION COMPLETA. BD ABIERTA.


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. 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

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

RECUPERACION

832

RECUPERACION COMPLETA. BD ABIERTA.


3.- Recuperar los tbsp. fuera de lnea. Conectar con privilegios de administrador. Recuperar todos los automticamente): tbsp. afectados (aconsejable

RECUPERACION INCOMPLETA.
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. Cancel-based ... Recupera hasta el empleo de la sentencia CANCEL. Change-based ... Recupera hasta un SCN especfico. Tras una recuperacin incompleta siempre debe abrirse la bd con resetlogs.

RECOVER TABLESPACE users, sales La recuperacin contina hasta que todo el redo archivado y en lnea se ha aplicado. Poner los tbsp. en lnea: ALTER TABLESPACE users ONLINE; ALTER TABLESPACE sales ONLINE;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

833

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

RECUPERACION

834

RECUPERACION INCOMPLETA.
1.- Preliminares. 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. 2.- Restaurar una copia completa de la bd. 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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

RECUPERACION INCOMPLETA.
Montar la bd: STARTUP MOUNT Si algn fichero fue restaurado alternativa anteriormente, indicarlo: a una localizacin

ALTER DATABASE RENAME FILE '/.../df2.dbf' TO '/.../df2.dbf'; Obtener el nombre y estado de todos ficheros de datos: SELECT NAME,STATUS FROM V$DATAFILE; 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: 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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

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. 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;
837
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

838

RECUPERACION INCOMPLETA. TIME BASED.


Ejecutar RECOVER DATABASE UNTIL TIME para comenzar. El tiempo siempre se indica usando el formato: 'YYYY-MM-DD:HH24:MI:SS'. Por ejemplo: RECOVER DATABASE UNTIL TIME '2004-12-31:12:47:30' 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;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

RECUPERACION INCOMPLETA. CHANGE BASED.


Indicar el SCN de terminacin. Por ejemplo: RECOVER DATABASE UNTIL CHANGE 10000; 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. Abrir bd en modo RESETLOGS: ALTER DATABASE OPEN RESETLOGS;

839

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

RECUPERACION

840

RECUPERACION PARALELA.
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.

APERTURA BD TRAS RECUPERACION.


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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

RECUPERACION

841

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

RECUPERACION

842

APERTURA BD TRAS RECUPERACION.

APERTURA BD TRAS RECUPERACION.


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.
RECUPERACION

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

RECUPERACION

843

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

844

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.

APERTURA BD TRAS 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).

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

RECUPERACION

845

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

RECUPERACION

846

TSPITR (Tbsp. Point in time recovery).


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: 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

RECUPERACION

847

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

RECUPERACION

848

TSPITR.
El desarrollo bsico de un TSPITR consta de varios pasos: 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. Borrado de los tbsp que requieran TSPITR (bd en uso). Transporte del conjunto de tbsp. desde la bd auxiliar hasta la bd en uso.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

TSPITR. PRELIMINARES.
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. 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. - 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;).
849
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

850

TSPITR. PRELIMINARES.
- Ficheros de datos del tbsp SYSTEM y del conjunto de recuperacin (tbsp a recuperar).
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');

TSPITR. PRELIMINARES.
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 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;

- Ficheros de datos del tbsp de UNDO.


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;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

851

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

RECUPERACION

852

TSPITR. PRELIMINARES.
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.

TSPITR. CREACION BD AUXILIAR.


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 = /.../.

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

RECUPERACION

853

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

RECUPERACION

854

TSPITR. CREACION BD AUXILIAR.


3.- Montar la bd auxiliar usando la clasula CLONE (pone todos los ficheros de datos offline de forma automtica). ALTER DATABASE MOUNT CLONE DATABASE; 4.- Ejecutar la consulta siguiente para descartar cualquier error en el nombre de los ficheros de datos: SELECT NAME FROM V$DATAFILE UNION ALL SELECT MEMBER FROM V$LOGFILE UNION ALL SELECT NAME FROM V$CONTROLFILE; En caso de haber algn error debern renombrarse (si no se ha usado DB_FILE_NAME_CONVERT y LOG_FILE_NAME_CONVERT).

TSPITR. CREACION BD AUXILIAR.


5.- Poner todos los ficheros de datos en lnea.
ALTER ALTER ALTER ALTER 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. 6.- Recuperar la bd a un instante concreto con la opcin USING BACKUP CONTROLFILE. Por ejemplo:
RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE

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.


1.- Colocar los tbsp en modo slo lectura.
ALTER TABLESPACE ventas1 READ ONLY; ALTER TABLESPACE ventas2 READ ONLY;

TSPITR. TRANSPORTAR TBSP. OPERACIONES BD EN USO.


1.- Borrar los tbsp. del conjunto de recuperacin.
DROP TABLESPACE ventas1 INCLUDING CONTENTS; DROP TABLESPACE ventas2 INCLUDING CONTENTS;

2.- Comprobar que el conjunto es autocontenido.


EXECUTE SYS.DBMS_TTS.TRANSPORT_SET_CHECK('ventas1,ventas2',TRUE,TRUE); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;

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). 3.- Importar el conjunto transportado (utilidad Data Pump import). 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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 RECUPERACION

857

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

RECUPERACION

858

TSPITR. TRANSPORTAR TBSP. OPERACIONES BD EN USO.


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.

VISTAS.

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

859

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

RECUPERACION

860

APENDICE A. Recursos Oracle en Internet.


www.orafaq.org (Underground Oracle FAQs) otn.oracle.com (Oracle Tecnology Network) otn.oracle.com/oramag (Oracle Magazine) www.oracle.com (Web de Oracle) metalink.oracle.com (Soporte Tcnico Oracle) asktom.oracle.com (Gur de Oracle)
Portal oficial de Oracle. Soporte tcnico para usuarios con contrato de mantenimiento. Artculos y preguntas a uno de los gurs de Oracle Artculos muy interesantes sobre Oracle 10g (incluida instalacin) Artculos muy buenos sobre instalacin de Oracle sobre Linux Revista electrnica mensual especializada en Oracle Para mejorar el rendimiento de Oracle sobre Unix
861

APENDICE B. Novedades Oracle 9i


undo tablespace y gestin automtica de undo database default temporary tablespace drop tablespace DATAFILES; INCLUDING CONTENTS AND

Sitio no oficial sobre Oracle (FAQs, foros, artculos, scripts, etc). Descargas de sw, documentacin, foros, artculos, scripts, etc. Registro gratuito. Revista Oracle Magazine.

SGA dinmica: sga_max_size, db_cache_size db_nk_cache_size (cachs con tamao de bloque no estndard) desaparece connect internal, ahora es connect / as sysdba spfile (fichero de parmetros binario, mantenido con alter system set ...) OMF tablespaces con gestin automtica de segmentos
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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)

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

862

APENDICE B. Novedades Oracle 10g


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.
863

APENDICE C. Arquitectura Oracle


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

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

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

865

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

866

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.

3 1 4 2 4

1 3
868

Administracin y Ajuste de Oracle 10g 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

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.
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

APENDICE G. SOPORTE DE GLOBALIZACIN


4 3 1 7 2 7 5
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

6 1 3
869

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

870

APENDICE H. NLS_SESSION_PARAMETERS
Para consultar las variables NLS asociadas a una sesin: 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 Se pueden cambiar con ALTER SESSION SET variable=valor;
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

APENDICE H. NLS_TERRITORY Y NLS_LANGUAGE


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 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.

871

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

872

APENDICE H. NLS_DATE_LANGUAGE
Podemos modificar el idioma de la fecha con NLS_DATE_LANGUAGE: 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

APENDICE I INTRODUCCION A ORACLE RAC


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.
INTRODUCCIN A ORACLE RAC

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

873

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

874

ARQUITECTURA RAC.

REQUISITOS DE LOS NODOS


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).
INTRODUCCIN A ORACLE RAC


Administracin y Ajuste de Oracle 10g 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

876

CLUSTER-READY SERVICES (CRS)


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) 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).
INTRODUCCIN A ORACLE RAC

ORACLE CLUSTERWARE.
Oracle Clusterware, OCW, requiere dos componentes, residentes ambos en un almacenamiento compartido: 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). 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
Administracin y Ajuste de Oracle 10g Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008 INTRODUCCIN A ORACLE RAC

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

878

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. 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

COMPONENTES CLUSTERWARE. PROCESOS.


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.

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.


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). 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.

COMPONENTES CLUSTERWARE. PROCESOS.


A lograr el funcionamiento anteriormente mencionado contribuyen el Global Resource Directory (GRD) y los procesos especficos de RAC: LMS, proceso Global Cache Service LMD, proceso Global Enqueue Service LMON, proceso Global Enqueue Service Monitor LCK0, proceso Instance Enqueue

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.

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.
INTRODUCCIN A ORACLE RAC

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

INTRODUCCIN A ORACLE RAC

881

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

882

CACHE FUSION
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.
INTRODUCCIN A ORACLE RAC

INTALAR 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: 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

883

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


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: 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.

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.

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

INTRODUCCIN A ORACLE RAC

885

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

INTRODUCCIN A ORACLE RAC

886

FLASH RECOVERY AREA

EJEMPLO DE INSTALACION ORACLE RAC


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.

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 Juan Luis Serradilla Amarilla y Francisco Fernndez Martnez 2008

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.
INTRODUCCIN A ORACLE RAC

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

889

Вам также может понравиться